🎄 DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.41K photos
361 videos
6 files
4.15K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.iss.one/5

DevBooks Channel:
https://t.iss.one/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
توی پروژه‌های Django معمولاً وقتی می‌خوای فیلترهای داینامیک بسازی (مثلاً برای API یا صفحه جستجو)، مدیریت query stringها یه دردسر تکراریه.
برای همین یه پکیج نوشتم به اسم django-query-string-parser که کارش اینه query string رو مستقیم تبدیل کنه به Q object، با یه سینتکس خوانا و امن.

چند تا قابلیت مهمش:
- پشتیبانی از عملگرهای مختلف مثل :, !=, >, <, >=, <=, ~=
- ترکیب منطقی با AND / OR و پرانتز
- تعریف فیلدهای مجاز (whitelist) برای امنیت بیشتر
- پشتیبانی از استرینگ، عدد، بولین و null
- خروجی نهایی: یه Q object تمیز برای .filter() یا .exclude()

به درد جاهایی می‌خوره که بخوای فیلترهای پیچیده ولی قابل خواندن بسازی — مثل APIها، داشبوردها یا پنل ادمین.

نصب:
pip install django-query-string-parser

گیت‌هاب:
https://github.com/sepehr-mohseni/django-query-string-parser

@DevTwitter | <Nima Naseri/>
👍175👎4🔥1
منطق پشت کلاستر این CockroachDB چقدر قشنگه.
نوعی دیتابیس SQL که به صورت Master Master کلاستر میشه و از پروتکل RAFT استفاده میکنه.

اما چی!؟ ، مگه RAFT ساختارش به صورت Master Slave ایی تعریف نمیشد؟ پس چجوری توی دیتابیس Master Master داره استفاده‌ میشه؟
شاید اونجوری که CockroachDB میگه اصلا Master Master ایی در کار نیست یا تعریف ما متفاوته .
خلاصه اگه علاقه مند هستین چجوری توی CockroachDB ما RAFT داریم، خوشحال میشم مقاله ایی رو که نوشتم مطالعه کنین، حدودا هم ۵ دقیقه وقتتون رو میگیره.

https://medium.com/@parsagheiratian/the-mentality-behind-cockroachdb-0ed524fcc7ec

@DevTwitter | <Parsa Gheiratian/>
️️
👍10👎32🔥1
به اون کاری که امروز کردی نگو "ریفکتور" (Refactor). اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جمله‌ی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ‍️ تو یه پروژه‌ی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکه‌تیکه‌اش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفه‌ای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطق‌های تجاری پنهان و وابستگی‌های زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کم‌بهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تله‌ی کد تمیز"ئه. مهم‌ترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تست‌های مشخصه‌یابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همه‌ی باگ‌هاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.

@DevTwitter | <Hossein Moradi/>
👍81👎119🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
این پروژه اپن سورس جالب strix رو یه نگاه بندازین. یه جورایی انگار یه تیم هکر هوش مصنوعی اپن‌سورس استخدام کردین که شبانه‌روزی حواسشون به اپلیکیشن‌هاتون هست.
این ایجنت‌های AI دقیقاً مثل هکرهای واقعی رفتار می‌کنن. کد شما رو به صورت داینامیک اجرا می‌کنن، آسیب‌پذیری‌ها رو پیدا می‌کنن و برای اینکه ثابت کنن الکی نمیگن، براتون PoC (اثبات مفهومی) واقعی می‌سازن.

بهترین بخشش اینه که دیگه از شر اون همه false positive (هشدارهای الکی) که ابزارهای اسکن استاتیک میدن خلاص میشید. Strix واقعاً باگ رو پیدا می‌کنه و بهتون نشون میده.
یه جعبه ابزار کامل هکری هم داره:
- پراکسی HTTP
- اتوماسیون مرورگر
- محیط ترمینال
- و حتی ران‌تایم پایتون

تازه، می‌تونه تو CI/CD شما هم ادغام بشه و جلوی کدهای آسیب‌پذیر رو قبل از اینکه اصلاً به پروداکشن برسن بگیره.
به جای اینکه هفته‌ها منتظر تست نفوذ دستی بمونید، با Strix می‌تونید تو چند ساعت یه تست کامل بگیرید.
Github: https://github.com/usestrix/strix

@DevTwitter | <Mehdi Allahyari/>
15👍6👎3🔥1
نمی دونم این چقدر به کار بقیه میاد ولی اگر Vibe-Coding می کنید و ایجنت کلی روی پروژتون کامنت های بیخود نوشت می تونید با استفاده از این اسکریپت پایتونی که نوشتم کامنت هایی که نیاز ندارید رو پاک کنید

https://github.com/naseridev/vibecleaner

@DevTwitter | <Nima Naseri/>
👎31👍14🔥1
امسال Black Hat 2025 اروپا در انگلستان برگزار می‌شود.

می‌دونیم که تب استفاده از AI الان زیاد است که این قاعدتا بد نیست و در این کنفرانس هم چندین AI در زمینه کمک به امنیت معرفی خواهند شدند که زودتر از کنفرانس می‌توانید، آن ها را نصب و آزمایش کنید.
https://medium.com/@Ethansalan/black-hat-europe-2025-arsenal-8-ai-security-tools-transforming-cybersecurity-ccd08c472aaa

@DevTwitter | <VAHID NAMENI/>
7🍌6
به MVC میگه Clean Architecture !!
شاید من معنی Clean Architecture را بد متوجه شدم.

https://youtube.com/watch?v=H9Blu0kWdZE

@DevTwitter | <Babak.uk/>
👎30👍8🍌51
کشف نوع جدیدی از حمله‌ی سایبری: وقتی الگوهای ترافیک، راز گفتگوی شما با چت‌بات‌ها را لو می‌دهند!

باورتان می‌شود که هکرها می‌توانند از گفتگوهای شما با چت‌ چی‌پی‌تی (یا هر هوش مصنوعی مشابهی) مطلع شوند؟ البته این موضوع شرایط خاصی دارد که در ادامه توضیح می‌دهیم:

مایکروسافت در یک گزارشی پژوهشی جدید از یک حمله جدید با نام «Whisper Leak» خبر داده که می‌تواند بدون شکستن رمزنگاری، موضوع مکالمات کاربران با مدل‌های زبانی بزرگ (LLM) را شناسایی کند.

این حمله، به خاطر ضعف در پروتکل‌های رمزنگاری مانند HTTPS نیست، بلکه یک حمله‌ی تحلیل ترافیک (Side-Channel) محسوب می‌شود.

بر اساس این گزارش، زمانی که کاربر با یک چت‌بات هوش مصنوعی گفتگو می‌کند و پاسخ‌ها به صورت استریم (تکه‌تکه و لحظه‌ای) ارسال می‌شوند، الگوهای قابل تحلیلی در ترافیک شبکه شکل می‌گیرد؛ از جمله:

- اندازه بسته‌های داده
- فاصله زمانی میان ارسال بسته‌ها

گروه تحقیقاتی مایکروسافت نشان داده که یک مهاجم ناظر بر ترافیک رمزنگاری‌شده (برای مثال در سطح اپراتور، شبکه سازمانی، یا وای‌فای عمومی) می‌تواند با استفاده از این الگوها و با کمک مدل‌های یادگیری ماشینی، تشخیص دهد که آیا مکالمه کاربر درباره یک موضوع حساس مشخص است یا خیر؛ بدون آن‌که به متن واقعی گفتگو دسترسی داشته باشد.

در این مدل حمله، مهاجم به‌دنبال تشخیص مستقیم محتوای پیام‌ها نیست، بلکه بررسی می‌کند آیا گفتگو حول محور موضوعاتی خاص مانند مسائل سیاسی، مالی و… می‌چرخد یا نه.

آزمایش‌ها نشان داده‌اند که در برخی سناریوها، دقت این تشخیص به حدود ۹۸ درصد می‌رسد. این موضوع به‌ویژه از منظر حریم خصوصی نگران‌کننده است.

مایکروسافت تأکید می‌کند که این یافته‌ها به معنی ناامن بودن رمزنگاری نیست، بلکه نشان می‌دهد نحوه پیاده‌سازی استریم پاسخ در سرویس‌های هوش مصنوعی می‌تواند اطلاعات فراداده‌ای (متادیتا) حساسی را افشا کند.

توصیه‌هایی برای کاربران و سازمان‌ها
- از اتصال به وای‌فای عمومی یا شبکه‌های غیرقابل‌اعتماد خودداری کنند.

- استفاده از VPN معتبر می‌تواند تحلیل ترافیک را برای مهاجم دشوارتر کند.

- استفاده از حالت‌هایی که پاسخ‌ها را یکجا و غیر استریمی ارسال می‌کنند، به کاهش الگوهای قابل تحلیل کمک می‌کند.

- سازمان‌ها و نهادها هنگام به‌کارگیری LLMها (ابری یا داخلی) باید حملات مبتنی بر تحلیل ترافیک را نیز در مدل تهدید خود لحاظ کرده، تست‌های امنیتی تکمیلی انجام دهند و از مکانیزم‌های دفاعی مناسب استفاده کنند.

این گزارش بار دیگر نشان می‌دهد که در عصر هوش مصنوعی، حفاظت از حریم خصوصی تنها به رمزنگاری محتوا محدود نمی‌شود و الگوهای رفتاری ترافیک نیز می‌توانند به منبع افشای اطلاعات تبدیل شوند.

جالب‌تر اینجا است که اینجا از یک هوش مصنوعی برای رمزگشایی از یک هوش مصنوعی دیگر استفاده می‌شود!

@DevTwitter | <NooshDaroo/>
👍15🔥86🍌3
فقط در ۷۶ دقیقه، خلاصه‌ی تمام دانسته‌های مهندسی هوش مصنوعی

اگه واقعا می‌خوای بفهمی AI Engineering یعنی چی، این ویدیو رو از دست نده.
نه یه آموزش سطحی‌ه، نه یه ویدیوی تبلیغاتی.
یه خلاصه‌ی فشرده از مفاهیمیه که هر کسی که با هوش مصنوعی کار می‌کنه باید بدونه، اونم فقط توی ۷۶ دقیقه.

در این ویدیو درباره‌ی چیزهایی صحبت می‌شه که نگاهت رو به AI برای همیشه تغییر می‌دن

چرا نباید از صفر مدل بسازی (و چطور باید از مدل‌های آماده استفاده کنی)
چطور (Self-supervised learning) همه‌چیز رو عوض کرده
چرا داده‌های آموزشی همیشه سوگیرانه‌ان و چطور باید باهاش کنار بیای
چرا طولانی‌تر بودن پرامپت همیشه به معنی نتیجه‌ی بهتر نیست
این‌که مدل بزرگ‌تر الزاماً مدل هوشمندتر نیست
چطور یه پرامپت خوب می‌تونه جای هفته‌ها فاین‌تیونینگ رو بگیره RAG چیه و چرا باید جزو ابزار اصلی هر تیم AI باشه

اگه توی مسیر ساخت محصول، رهبری تیم یا توسعه‌ی پروژه‌های هوش مصنوعی هستی،
این ویدیو احتمالاً یکی از مفیدترین ۷۶ دقیقه‌هایی خواهد بود که می‌گذرونی.

https://www.youtube.com/watch?v=JV3pL1_mn2M

@DevTwitter | <Mohsen Rad/>
🔥179👍3🍌1
وقتی نیاز شخصی‌ات میشه محصول ۵۰۰ میلیون دلاری

سپتامبر ۲۰۲۴، یه برنامه‌نویس به اسم Boris Cherny تازه به Anthropic جوین شده بود. داشت با مدل Claude ور می‌رفت که خودش رو با APIهاشون بیشتر آشنا کنه. اولین ابزارش یه چیز خیلی ساده بود: یه برنامه ترمینال که بهش می‌گفتی الان چه آهنگی داری گوش میدی! خیلی basic، خیلی شخصی، ولی جالب بود. بعد یه روز یهو به ذهن Boris خطور کرد که چرا فقط AppleScript؟ چرا نذاریم فایل‌سیستم رو ببینه؟ چرا نذاریم bash commands بزنه؟

همین که این قابلیت‌ها رو اضافه کرد، دنیاش عوض شد. Claude شروع کرد به explore کردن کد، خوندن فایل‌ها، دنبال کردن importها، و پیدا کردن جواب‌ها. Boris خودش میگه: "این همون لحظه‌ای بود که فهمیدم یه چیز بزرگ داره میشه." ابزاری که برای خودش ساخته بود، یهو تبدیل شد به چیزی که همکاراش هم می‌خواستن ازش استفاده کنن. تا روز پنجم، ۵۰٪ تیم مهندسی Anthropic داشتن باهاش کار می‌کردن!

حالا Claude Code یه ماشین درآمدزایی ۵۰۰ میلیون دلاری شده. یه تیم کامل داره، features جدید هر روز اضافه میشه، و داستانش شبیه همون چیزیه که Ken Thompson درباره Unix گفته بود:
"Unix was built for me. I didn't build it as an operating system for other people, I built it to do games, and to do my stuff."
یعنی Unix هم اول یه ابزار شخصی بود، بعد شد اساس سیستم‌عامل‌های امروزی.

نکته داستان چیه؟ وقتی چیزی می‌سازی که واقعاً نیاز خودت رو رفع کنه، احتمالش خیلی زیاده که برای دیگرانی که نیاز مشابه دارن هم مفید باشه. Boris داشت یه مشکل شخصی حل می‌کرد، نه یه محصول تعریف‌شده. تیم Claude Code الانم با همین فلسفه کار می‌کنه: کمترین کد ممکن، ساده‌ترین معماری، و اجازه بده مدل کارشو بکنه. حتی ۹۰٪ کد Claude Code با خود Claude Code نوشته شده! پس دفعه بعد که احساس می‌کنی یه ابزاری لازمه، نشین منتظر شرکت‌ها یا استارتاپ‌ها. خودت بساز. شاید امروز فقط برای خودته، ولی فردا میشه یکی از بهترین ابزارهای دنیا.

https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built

@DevTwitter | <Hossein Nazari/>
👍4715🔥4👎1
کمپانی OpenAI مدل GPT-5-Codex-Mini را معرفی کرد؛ کدنویسی با هزینه کمتر

کمپانی OpenAI نسخه جدیدی از مدل کدنویسی خود با نام GPT-5-Codex-Mini را معرفی کرده است که نسخه‌ای کوچک‌تر و مقرون‌به‌صرفه‌تر نسبت به GPT-5-Codex محسوب می‌شود. این مدل امکان چهار برابر استفاده بیشتر را با کاهش جزئی در قابلیت‌ها فراهم می‌کند و در بنچمارک SWE-bench Verified امتیاز ٧١.٣ درصد کسب کرده است. عملکرد آن در مقایسه با نسخه اصلی قابل‌توجه و رضایت‌بخش ارزیابی شده است.

مدل GPT-5-Codex برای بهبود توانایی در کارهای واقعی مهندسی نرم‌افزار طراحی شده بود و وظایفی مانند ایجاد پروژه‌های جدید، افزودن قابلیت‌ها، تست‌های تازه و بازسازی گسترده کد را پوشش می‌داد. نسخه مینی برای وظایف سبک‌تر یا زمانی که توسعه‌دهندگان به محدودیت‌های مدل اصلی نزدیک می‌شوند توصیه شده است. این مدل اکنون در CLI و افزونه IDE در دسترس است و پشتیبانی API آن نیز به‌زودی فعال خواهد شد.

@DevTwitter | <Digiato/>
13👎8👍3
اگر دات‌نت کار هستی و علاقه داری هوش مصنوعی رو تو پروژه‌هات استفاده کنی، این پست مال توعه!
همه می‌دونیم که هوش مصنوعی داره با سرعت وارد همه حوزه‌ها میشه، اما ترکیبش با توسعه Backend در دات‌نت واقعا یه سطح بالاتر از کار روزمره‌ست.
یکی از ابزارهایی که حتما باید بشناسید، MCP یا Model Context Protocol هست.
پروتکل MCP یه پروتکل استاندارد برای ارتباط بین مدل‌های زبانی (LLM) و ابزارها یا منابع خارجیه.
با MCP می‌تونیم:
مدل‌های زبانی رو به APIها، دیتابیس‌ها یا ابزارهای دلخواه وصل کنیم.
چند ابزار مختلف رو با هم چین کنیم و فرآیندهای پیچیده بسازیم.
مطمئن باشیم که ارتباط بین Agent و ابزارها استاندارد، قابل اطمینان و قابل توسعه هست.
به زبان ساده:
پروتکل MCP پلیه بین هوش مصنوعی و دنیای واقعی داده‌ها.

چرا تو دات‌نت کاربردیه؟
با Microsoft Agent Framework در دات‌نت، شما می‌تونید:
- ایجنت‌های هوشمند بسازید که قادرن چندمرحله‌ای تصمیم بگیرن.
- ابزارهای خارجی (Tools) رو به Agent اضافه کنید، مثل جستجوی اطلاعات شرکت‌ها، گرفتن جزئیات، تحلیل و جمع‌بندی.
- با MCP، Agent رو مستقل از API خاص بسازید، فقط با رعایت پروتکل JSON-RPC.
- فرآیندهای پیچیده هوشمندانه بسازید: جستجو → تحلیل → پاسخ به کاربر.
مثال کاربردی

فرض کنید می‌خواید یه چت‌بات تجاری هوشمند بسازید که اطلاعات شرکت‌های ایرانی رو از Rasmio بگیره و تحلیل کنه، کد نوشته شده در عکس با Microsoft Agent Framework و MCP.
جمع‌بندی
ابزار MCP یه ابزار فوق‌العاده برای هر کسیه که می‌خواد:
- هوش مصنوعی رو به پروژه‌های واقعی دات‌نت بیاره
- ایجنت‌های چندمرحله‌ای و هوشمند بسازه
- داده‌ها و ابزارهای خارجی رو به راحتی با AI ترکیب کنه

نکته نهایی:
اگه دنبال یه راهکار مدرن، استاندارد و قدرتمند برای AI در .NET هستید، MCP بهترین گزینه‌ست.
با همین ابزار می‌تونید از یک CLI ساده تا یک سیستم هوشمند تجاری واقعی بسازید.

@DevTwitter | <nahid moradi/>
21👎12🔥2👍1
اگر مثل من حوصله ندارید که فرانت بزنید

برید
https://stitch.withgoogle.com

یه سری توضیحات بدید براتون UI طراحی میکنه که هم فیگما میده و هم html

بعد html صفحات رو دانلود کنید.
حالا Vue, React... هرچی که میخواید رو init کنید.

به واسطه‌ی cursor, Cline,Kilo... بگید که تبدیل کنه براتون

@DevTwitter | <Mahmoud Eskandari/>
36👎26👍3🍌2
با این ریپو می‌تونید داکر ایمیج رو به فایل اجرایی ویندوز تبدیل کنید
https://github.com/rzane/docker2exe

@DevTwitter
👍265🔥1
اینترنت طبقاتی = اینترنت تخصصی

@DevTwitter
👍71👎38🔥1
یکی از چالش‌های کار با کتابخانه‌های مختلف به کمک هوش مصنوعی به‌روز نبودن یا در فرمت مناسب نبودن مستنداته. یک سرویس رایگان و به‌روز هست به اسم Context7 که تقریباً همه چیز رو داره و راحت می‌تونید به فرآیند کاری‌تون در کدنویسی با AI اضافه‌اش کنید.

https://context7.com/

@DevTwitter | <Hamed/>
10👍1🔥1
توی این ریپو یه لیست خیلی خوب از پادکست های برنامه نویسی و تکنولوژی جمع کردن، به زبان انگلیسی و آلمانی و روسی و... هستش، هم برای یادگیری زبان تخصصی خوبه هم خود اون تکنولوژی

https://github.com/rShetty/awesome-podcasts

@DevTwitter | <MEHDI Homeily/>
10🔥3👍1
اینکه بعضی وقت ها یه مشکلی داری و اون رو با یک پکیج حل میکنی و دیگران هم از اون خوششون میاد و استفاده می کنند واقعا حس خوبی داره

از اینکه اولین پکیجی که نوشتم با اینکه چیز خاصی نبود ولی تا الان 1300 دانلود داشته خیلی خوشحالم. ممنون از حمایت و استفاده تون

دیروز داکیومنت رو آپدیت کردم و فهرست مطالب هم اضافه کردم راحت تر بشه استفاده ازش

پکیج فیکر فارسی برای PHP - لینک گیت هاب
https://github.com/amyavari/persian-faker-php

@DevTwitter | <Ali Mohammad Yavari/>
26👍6🔥6🍌1
شکنجه‌ای به نام XAMPP !

اولین بار که خواستم با PHP و لاراول کار کنم، رفتم سراغ XAMPP.
نتیجه؟ بیشتر حس می‌کردم دارم با سیستم کشتی می‌گیرم تا کدنویسی کنم
پورت قاطی می‌کرد، MySQL قطع میشد، سرعت پایین بود، یه چیز درست می‌کردم یه جای دیگه خراب می‌شد. خلاصه هر بار پروژه بالا می‌آوردم، خودمم پایین می‌اومدم ‍️

بعد یه روز کاملاً اتفاقی با Laragon آشنا شدم...
اون لحظه شبیه سوییچ کردن از پراید به تسلا بود
یه کلیک = پروژه جدید
هیچ خبری از قاطی کردن پورت‌ها و Shut down شدن MySQL نبود.
بلاخره حس می‌کردم دارم واقعاً کد میزنم، نه پشتیبانی فنی برای XAMPP !

- لاراگون برخلاف XAMPP کاملا با ویندوز ۱۱ سازگاره و مدام MySQL رو Shut down نمیکنه.
- سرویس‌های خیلی بیشتری از XAMPP داره که میشه ازش استفاده کرد. (مثل Nginx، Redis، Mailpit، PostgreSQL و...)
- امکان نصب کلی افزونه و ابزار و... برای هرکردوم از سرویس هاش وجود داره.
- کلی امکانات مثل بک‌آپ گیری از تمام دیتابیس‌ها و... داره.
- و اینکه برخلاف XAMPP امکان نصب و استفاده از ورژن های مختلفی از هر سویس رو داره. (مثلا میشه هم PHP ورژن ۸ رو داشت و هم ۷ و بینشون سوییچ کرد)

علاوه بر این‌ها خیلی سبکه و کمتر از ۱۰ مگابایت رم اشغال میکنه. پیشنهاد میکنم حتما امتحانش کنید
https://laragon.org

نگران منتقل کردن دیتابیس‌ها و فایل‌هاتون هم نباشید. با یک خط دستور میتونید تمام دیتابیس‌هاتون و اطلاعاتتون رو از XAMPP منتقل کنید (داخل داکیومنت خودش توضیح داده).

الان دیگه وقتی یکی میگه "من هنوز XAMPP دارم"، یاد روزای پر از ارور و اعصاب‌خوردی خودم میفتم و دوباره اعصابم خورد میشه

@DevTwitter | <Aida Mortazavi/>
1👍60👎187🍌5
آیا در Next.js (App Router) بیش از حد از 'use client' استفاده می‌کنید؟
یکی از بزرگترین تغییرات پارادایم در توسعه React با Next.js، معرفی Server Components به عنوان پیش‌فرض است. این یک تغییر شگرف برای پرفورمنس است، اما نیازمند یک تغییر فکری است.

- کامپوننت‌های سرور (Server Components) - (پیش‌فرض):
روی سرور رندر می‌شوند.
هیچ JavaScript-ای به کلاینت (مرورگر) ارسال نمی‌کنند.
نتیجه: لود اولیه فوق‌العاده سریع (FCP/LCP عالی).
بهترین مکان برای: فچ کردن دیتا (Data Fetching)، دسترسی مستقیم به دیتابیس، و نمایش UI استاتیک.
محدودیت: نمی‌توانند از هوک‌هایی مثل useState، useEffect یا رویدادهای onClick استفاده کنند.
- کامپوننت‌های کلاینت (Client Components) - (با 'use client'):
مانند کامپوننت‌های سنتی React در مرورگر رندر می‌شوند.
برای هرگونه تعامل (Interactivity) ضروری هستند.
باید از 'use client' در بالای فایل استفاده کنید.
مکان استفاده: دکمه‌ها، فرم‌ها، منوهای Dropdown، و هرجایی که به useState یا useEffect نیاز دارید.

اشتباه رایج این است که به محض نیاز به یک دکمه تعاملی، کل صفحه (page.jsx) را به 'use client' تبدیل کنیم.
​راه‌حل بهتر: «پایین بردن تعامل» (Pushing Interactivity Down)
​صفحه اصلی (page.jsx) خود را یک Server Component نگه دارید تا دیتا را فچ کند.
​کامپوننت تعاملی خود (مثلاً LikeButton.jsx) را جداگانه بسازید و در آن از 'use client' استفاده کنید.
​حالا آن کامپوننت کلاینت را در کامپوننت سرور (صفحه) خود Import کنید.

@DevTwitter | <Maysam Ghaysari/>
👍327🍌2🔥1
اول Javascript یاد بگیر!!

دوستان سلام , امیدوارم حالتون خوب باشه هرجا که هستید.
امروز اومدم راجع به یه مبحثی صحبت کنم که احساس میکنم برای دوستانی که حتی تا نیمه مسیر هم هستن به درد بخوره.
در ادامه میپردازم بهش.

در سالهای اخیر , زمانی که تبلیغات و فروش دوره های متنوع خیلی زیاد شد, بیشتر تمرکز بر یادگیری ReactJS بود. (اصلا نمیخوام وارد این موضوع بشم که خیلی هاشون حتی میگفتن: "ببین , سریع React رو که یاد گرفتی برو سراغ NextJS" که همین هم خودش فاجعه ای بود)

ببینید دوستان , اگر هدفتون این باشه که به سطح قابل ارائه و با کیفیتی از فیلد کاری که داخلش هستید برسید , این موضوع مستلزم تلاش هستش. اشتباه کنید , کد بی کیفیت بزنید , و ادامه بدید این مسیر رو. شما با اصلاح مسیر خودتون میتونید واقعا اون راهی رو پیمایش کنید که شمارو به چیزی که میخواهید برسونه.

در اثر همین تبلیغات طوفانی خود من به شخصه یکی از کسانی بودم که JS رو خیلی آبکی یاد گرفتم و جلو بردم و این باعث صدمه زدن به خودم شد, چرا؟ چون React چیز جدیدی نبود! اگر مفاهیم JS رو خوب یاد میگرفتم , علاوه بر اینکه کد های کارآمدتری میتونستم بزنم , حتی میتونستم دیدگاه خوبی داشته باشم نسبت به کاری که دارم میکنم.

مثلا چی؟ بیایید از مثال خیلی ساده شروع کنیم : React Client Component ها چی هستن؟ اگر به خوده Javascript برگردیم متوجه میشیم مفهومی مشابه مثل Function Composion رو داره ارائه میده. چون ما داریم داخل یک تابع که همون کامپوننت ما هست , از توابع و متد های دیگه ای هم استفاده میکنم که حالا به نام Component Composion داریم باهاشون کار میکنیم.

یا یه مثال خیلی ساده و کلاسیک دیگه همون هوک های ری اکت هستن مثل useState و useEffeect , این هوک ها هم خودشون Function Composion هستن.

حرف من اینه که اگر شما در JS به دیدگاه درستی برسید , زمانی که با React دارید کار میکنید و کد میزنید دیگه به چشم یک چیز کاملا جدید بهش نگاه نمیکنید چرا که درصد خیلی زیادی از کاری که دارید میکنید همون چیزی بوده که در JS باهاش سر و کار داشتید.

به نظر من برای یادگرفتن اصولی هیچوقت دیر نیست بلکه این به تعویق انداختن و سرسری گرفتن اصل کدنویسی هست که باعث میشه در سال های آینده هم وابستگی کامل به ابزار های دیگه داشته باشیم و نتونیم از شخص خودمون یک روش فکری داشته باشیم.

@DevTwitter | <Shayan Sharifi/>
1👍6117👎4🔥1