🚀 نسخه جدید کدنایت منتشر شد!
سلام به همه بچههای کدنایت 👋
نسخه جدید سایت CodeNight با کلی تغییر و قابلیت جدید در دسترس قرار گرفته و سعی کردیم تجربه یادگیری و ارتباط با تیم کدنایت رو خیلی بهتر و منظمتر کنیم.
🎫 از این به بعد برای پشتیبانی از تیکتینگ استفاده کنید
لطفاً سوالات، مشکلات فنی، مشکلات مربوط به دورهها و درخواستهای پشتیبانی رو بهجای تلگرام، از طریق سیستم تیکتینگ داخل سایت ارسال کنید. اینطوری پیامها گم نمیشن، بهتر پیگیری میشن و سریعتر میتونیم بهتون پاسخ بدیم.
📄 رزومه حرفهای خودتون رو بسازید
داخل پروفایل کاربری، بخش جدید ساخت رزومه اضافه شده. میتونید اطلاعات، مهارتها و سوابق خودتون رو تکمیل کنید و یک رزومه حرفهای برای خودتون بسازید. پیشنهاد میکنم حتماً این بخش رو تکمیل کنید، مخصوصاً اگر در حال آمادهشدن برای ورود به بازار کار هستید.
🎬 پلیر اختصاصی دورهها
برای مشاهده دورهها هم پلیر اختصاصی کدنایت در نظر گرفته شده تا تجربه دیدن آموزشها بهتر و منظمتر باشه. خوشحال میشیم بعد از استفاده، نظرتون درباره پلیر و تجربه جدید مشاهده دورهها رو با ما در میون بذارید.
💡 چه دورهای دوست دارید در کدنایت ببینید؟
اگر موضوع یا تکنولوژی خاصی مدنظرتونه و دوست دارید دورهای براش منتشر بشه، حتماً از طریق تیکتینگ یا بخش تماس با ما پیشنهادتون رو ارسال کنید. پیشنهادهای شما مستقیماً میتونه روی دورههای بعدی کدنایت تأثیر بذاره.
🎓 علاقهمند به تدریس هستید؟
اگر در یک حوزه تخصص و تجربه کافی دارید و فکر میکنید میتونید دانش و تجربهتون رو به بقیه منتقل کنید، خوشحال میشیم باهاتون همکاری کنیم. از طریق بخش همکاری با ما اطلاعاتتون رو ارسال کنید تا برای همکاری در زمینه تولید دوره و محتوای آموزشی باهاتون در ارتباط باشیم.
❤️ در نهایت، نسخه جدید هنوز هم با کمک بازخوردهای شما بهتر میشه. اگر جایی از سایت مشکلی دیدید یا پیشنهادی برای بهترشدن تجربه کاربری، دورهها یا امکانات کدنایت داشتید، حتماً بهمون بگید.
🌐 نسخه جدید کدنایت:
codenight.ir
ممنون که همراه کدنایت هستید 🧡
CodeNight | یادگیری برای ساختن
سلام به همه بچههای کدنایت 👋
نسخه جدید سایت CodeNight با کلی تغییر و قابلیت جدید در دسترس قرار گرفته و سعی کردیم تجربه یادگیری و ارتباط با تیم کدنایت رو خیلی بهتر و منظمتر کنیم.
🎫 از این به بعد برای پشتیبانی از تیکتینگ استفاده کنید
لطفاً سوالات، مشکلات فنی، مشکلات مربوط به دورهها و درخواستهای پشتیبانی رو بهجای تلگرام، از طریق سیستم تیکتینگ داخل سایت ارسال کنید. اینطوری پیامها گم نمیشن، بهتر پیگیری میشن و سریعتر میتونیم بهتون پاسخ بدیم.
📄 رزومه حرفهای خودتون رو بسازید
داخل پروفایل کاربری، بخش جدید ساخت رزومه اضافه شده. میتونید اطلاعات، مهارتها و سوابق خودتون رو تکمیل کنید و یک رزومه حرفهای برای خودتون بسازید. پیشنهاد میکنم حتماً این بخش رو تکمیل کنید، مخصوصاً اگر در حال آمادهشدن برای ورود به بازار کار هستید.
🎬 پلیر اختصاصی دورهها
برای مشاهده دورهها هم پلیر اختصاصی کدنایت در نظر گرفته شده تا تجربه دیدن آموزشها بهتر و منظمتر باشه. خوشحال میشیم بعد از استفاده، نظرتون درباره پلیر و تجربه جدید مشاهده دورهها رو با ما در میون بذارید.
💡 چه دورهای دوست دارید در کدنایت ببینید؟
اگر موضوع یا تکنولوژی خاصی مدنظرتونه و دوست دارید دورهای براش منتشر بشه، حتماً از طریق تیکتینگ یا بخش تماس با ما پیشنهادتون رو ارسال کنید. پیشنهادهای شما مستقیماً میتونه روی دورههای بعدی کدنایت تأثیر بذاره.
🎓 علاقهمند به تدریس هستید؟
اگر در یک حوزه تخصص و تجربه کافی دارید و فکر میکنید میتونید دانش و تجربهتون رو به بقیه منتقل کنید، خوشحال میشیم باهاتون همکاری کنیم. از طریق بخش همکاری با ما اطلاعاتتون رو ارسال کنید تا برای همکاری در زمینه تولید دوره و محتوای آموزشی باهاتون در ارتباط باشیم.
❤️ در نهایت، نسخه جدید هنوز هم با کمک بازخوردهای شما بهتر میشه. اگر جایی از سایت مشکلی دیدید یا پیشنهادی برای بهترشدن تجربه کاربری، دورهها یا امکانات کدنایت داشتید، حتماً بهمون بگید.
🌐 نسخه جدید کدنایت:
codenight.ir
ممنون که همراه کدنایت هستید 🧡
CodeNight | یادگیری برای ساختن
❤4⚡1🔥1
اول حل مسئله یاد بگیر، بعد کدنویسی
برنامهنویسی یعنی تبدیل یک مسئله بزرگ به چند مسئله کوچکتر. قبل از نوشتن کد از خودت بپرس: «ورودی چیه؟ خروجی چیه؟ برای رسیدن از ورودی به خروجی چه مراحلی دارم؟»
قرار نیست همهچیز رو حفظ کنی
برنامهنویس حرفهای هم Syntax، اسم توابع و نحوه استفاده از ابزارها رو سرچ میکنه یا از AI کمک میگیره. مهم اینه که مفهوم رو بفهمی و بدونی دنبال چی باید بگردی.
مفاهیم پایه رو جدی بگیر
قبل از رفتن سراغ فریمورکها، چیزهایی مثل
فقط ویدیو نبین؛ کد بزن
اگر یک ساعت آموزش میبینی، حداقل یک ساعت هم خودت تمرین کن. دیدن کدنویسی با توانایی کدنویسی فرق داره.
کدها رو Copy/Paste نکن
حتی اگر کدی از ChatGPT یا اینترنت گرفتی، خطبهخط بررسی کن و بفهم چرا کار میکنه. بعد سعی کن بدون نگاه کردن دوباره خودت بنویسیش.
از خطاها نترس
Error دشمن برنامهنویس نیست؛ بخشی از فرایند یادگیریه. متن خطا رو بخون، محل خطا رو پیدا کن، فرضیه بساز و مرحلهبهمرحله Debug کن.
خیلی زود وارد پروژه شو
منتظر نباش JavaScript رو «کامل» یاد بگیری. بعد از یادگیری مفاهیم اولیه پروژههای خیلی کوچک بساز؛ مثلاً ماشین حساب، Todo List، بازی حدس عدد یا مدیریت لیست دانشجوها.
همزمان ده تا تکنولوژی یاد نگیر
امروز JavaScript، فردا Python، پسفردا React و هفته بعد AI مسیر خوبی نیست. یک مسیر مشخص انتخاب کن و تا رسیدن به یک سطح قابل قبول ادامه بده.
از AI استفاده کن، ولی وابسته به AI نشو
بهجای «این پروژه رو برام بنویس»، بپرس:
«این مسئله رو چطور تحلیل کنم؟ راهنماییم کن خودم حلش کنم.»
AI باید سرعت یادگیریت رو بیشتر کنه، نه اینکه جای فکر کردنت رو بگیره.
هر چیزی یاد گرفتی، تغییرش بده
مثلاً اگر مدرس یک تابع جمع دو عدد نوشت، خودت تبدیلش کن به تفریق، ضرب، محاسبه میانگین و… . همین تغییرات کوچک باعث میشن بفهمی واقعاً مفهوم رو یاد گرفتی یا فقط کد رو تقلید کردی.
از روزهای اول Git و GitHub رو یاد بگیر
لازم نیست حرفهای باشی؛ همین که
انگلیسی رو کنار برنامهنویسی تقویت کن
لازم نیست اول انگلیسیات عالی بشه. اصطلاحاتی مثل
Documentation خوندن رو یاد بگیر
هدف این نیست که همیشه آموزش فارسی پیدا کنی. کمکم عادت کن مستندات رسمی تکنولوژیها رو بخونی و مثالهاشون رو اجرا کنی.
پیوستگی از ساعت مطالعه مهمتره
روزی ۱ ساعت برای چند ماه معمولاً خیلی بهتر از اینه که یک روز ۸ ساعت بخونی و یک هفته کلاً برنامهنویسی رو کنار بذاری.
خودت رو با برنامهنویسهای چندساله مقایسه نکن
معیار بهتر اینه که ببینی نسبت به یک ماه قبل چه چیزهایی رو الان میتونی بدون کمک حل کنی.
یک قانون خیلی مهم برای شروع:
«کمتر آموزش ببین، بیشتر کد بزن، بیشتر خراب کن، بیشتر Debug کن و پروژه بساز.»
این دقیقاً همون فرایندیه که کمکم طرز فکر برنامهنویسی رو میسازه.
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
برنامهنویسی یعنی تبدیل یک مسئله بزرگ به چند مسئله کوچکتر. قبل از نوشتن کد از خودت بپرس: «ورودی چیه؟ خروجی چیه؟ برای رسیدن از ورودی به خروجی چه مراحلی دارم؟»
قرار نیست همهچیز رو حفظ کنی
برنامهنویس حرفهای هم Syntax، اسم توابع و نحوه استفاده از ابزارها رو سرچ میکنه یا از AI کمک میگیره. مهم اینه که مفهوم رو بفهمی و بدونی دنبال چی باید بگردی.
مفاهیم پایه رو جدی بگیر
قبل از رفتن سراغ فریمورکها، چیزهایی مثل
Variable، انواع داده، if/else، حلقهها، توابع، آرایهها، Objectها، Scope و Errorها رو خوب یاد بگیر. پایه ضعیف، بعداً خودش رو نشون میده.فقط ویدیو نبین؛ کد بزن
اگر یک ساعت آموزش میبینی، حداقل یک ساعت هم خودت تمرین کن. دیدن کدنویسی با توانایی کدنویسی فرق داره.
کدها رو Copy/Paste نکن
حتی اگر کدی از ChatGPT یا اینترنت گرفتی، خطبهخط بررسی کن و بفهم چرا کار میکنه. بعد سعی کن بدون نگاه کردن دوباره خودت بنویسیش.
از خطاها نترس
Error دشمن برنامهنویس نیست؛ بخشی از فرایند یادگیریه. متن خطا رو بخون، محل خطا رو پیدا کن، فرضیه بساز و مرحلهبهمرحله Debug کن.
خیلی زود وارد پروژه شو
منتظر نباش JavaScript رو «کامل» یاد بگیری. بعد از یادگیری مفاهیم اولیه پروژههای خیلی کوچک بساز؛ مثلاً ماشین حساب، Todo List، بازی حدس عدد یا مدیریت لیست دانشجوها.
همزمان ده تا تکنولوژی یاد نگیر
امروز JavaScript، فردا Python، پسفردا React و هفته بعد AI مسیر خوبی نیست. یک مسیر مشخص انتخاب کن و تا رسیدن به یک سطح قابل قبول ادامه بده.
از AI استفاده کن، ولی وابسته به AI نشو
بهجای «این پروژه رو برام بنویس»، بپرس:
«این مسئله رو چطور تحلیل کنم؟ راهنماییم کن خودم حلش کنم.»
AI باید سرعت یادگیریت رو بیشتر کنه، نه اینکه جای فکر کردنت رو بگیره.
هر چیزی یاد گرفتی، تغییرش بده
مثلاً اگر مدرس یک تابع جمع دو عدد نوشت، خودت تبدیلش کن به تفریق، ضرب، محاسبه میانگین و… . همین تغییرات کوچک باعث میشن بفهمی واقعاً مفهوم رو یاد گرفتی یا فقط کد رو تقلید کردی.
از روزهای اول Git و GitHub رو یاد بگیر
لازم نیست حرفهای باشی؛ همین که
commit، push، pull و مفهوم Repository رو بفهمی، کافیه که از همون ابتدا عادت درستی بسازی.انگلیسی رو کنار برنامهنویسی تقویت کن
لازم نیست اول انگلیسیات عالی بشه. اصطلاحاتی مثل
request، response، function، return، error، documentation و… کمکم برات عادی میشن.Documentation خوندن رو یاد بگیر
هدف این نیست که همیشه آموزش فارسی پیدا کنی. کمکم عادت کن مستندات رسمی تکنولوژیها رو بخونی و مثالهاشون رو اجرا کنی.
پیوستگی از ساعت مطالعه مهمتره
روزی ۱ ساعت برای چند ماه معمولاً خیلی بهتر از اینه که یک روز ۸ ساعت بخونی و یک هفته کلاً برنامهنویسی رو کنار بذاری.
خودت رو با برنامهنویسهای چندساله مقایسه نکن
معیار بهتر اینه که ببینی نسبت به یک ماه قبل چه چیزهایی رو الان میتونی بدون کمک حل کنی.
یک قانون خیلی مهم برای شروع:
«کمتر آموزش ببین، بیشتر کد بزن، بیشتر خراب کن، بیشتر Debug کن و پروژه بساز.»
این دقیقاً همون فرایندیه که کمکم طرز فکر برنامهنویسی رو میسازه.
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
👍3
دوستان سلام حالتون چطوره ❤️
از ورژن جدید سایت کدنایت راضی هستید 😁
هر مورد پیشنهادی یا انتقادی هم بود حتما برام ارسال کنید
با چند مدرس جدید و کار درست صحبت شده ببینیم همکاری رو با مجموعه قبول میکنن که وبسایت کدنایت رو رنگین تر کنیم
خلاصه ممنون بابت پیشنهاداتون که باعث شدید کدنایت به این نقطه برسه ❤️🙏
از ورژن جدید سایت کدنایت راضی هستید 😁
هر مورد پیشنهادی یا انتقادی هم بود حتما برام ارسال کنید
با چند مدرس جدید و کار درست صحبت شده ببینیم همکاری رو با مجموعه قبول میکنن که وبسایت کدنایت رو رنگین تر کنیم
خلاصه ممنون بابت پیشنهاداتون که باعث شدید کدنایت به این نقطه برسه ❤️🙏
❤15
اخبار داغ این هفتهی دنیای کد و AI 🚀
سه تا خبر مهمی که این چند روز اومدن رو براتون جمع کردم:
🔹 شرکت OpenAI مدل GPT-6 Astra رو معرفی کرد (۴ سپتامبر). این مدل جدید ادعای رکورد در استدلال، کدنویسی، ریاضی و حتی امنیت سایبری رو داره و بهصورت مرحلهای در اختیار سازمانهای محدود قرار میگیره. برای برنامهنویسها یعنی دستیارهای کدنویسی احتمالاً یک پله دیگه قویتر میشن، هم در حل باگهای پیچیده هم در ریویو امنیتی کد.
🔹 برنامه ی VS Code با نسخهی 1.136 منتشر شد (۲ سپتامبر) با قابلیت پیشنمایش «Agent Merge» — یعنی ایجنتها میتونن خودشون فیدبک روی PR یا کانفلیکتهای مرج رو حل کنن، بدون دخالت مستقیم شما. پشتیبانی از ایجنت در ورکاسپیسهای چندریشهای هم اضافه شده. اگه با ایجنتهای کدنویسی کار میکنید حتماً امتحانش کنید.
🔹 پایتون 3.15.0 وارد مرحلهی RC2 شد (۱ سپتامبر)، آخرین کاندید انتشار قبل از نسخهی پایدار در اکتبر ۲۰۲۶. اگه پروژهای دارید که با نسخههای جدید پایتون سر و کار داره، الان بهترین زمانه برای تست سازگاری کدتون.
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
سه تا خبر مهمی که این چند روز اومدن رو براتون جمع کردم:
🔹 شرکت OpenAI مدل GPT-6 Astra رو معرفی کرد (۴ سپتامبر). این مدل جدید ادعای رکورد در استدلال، کدنویسی، ریاضی و حتی امنیت سایبری رو داره و بهصورت مرحلهای در اختیار سازمانهای محدود قرار میگیره. برای برنامهنویسها یعنی دستیارهای کدنویسی احتمالاً یک پله دیگه قویتر میشن، هم در حل باگهای پیچیده هم در ریویو امنیتی کد.
🔹 برنامه ی VS Code با نسخهی 1.136 منتشر شد (۲ سپتامبر) با قابلیت پیشنمایش «Agent Merge» — یعنی ایجنتها میتونن خودشون فیدبک روی PR یا کانفلیکتهای مرج رو حل کنن، بدون دخالت مستقیم شما. پشتیبانی از ایجنت در ورکاسپیسهای چندریشهای هم اضافه شده. اگه با ایجنتهای کدنویسی کار میکنید حتماً امتحانش کنید.
🔹 پایتون 3.15.0 وارد مرحلهی RC2 شد (۱ سپتامبر)، آخرین کاندید انتشار قبل از نسخهی پایدار در اکتبر ۲۰۲۶. اگه پروژهای دارید که با نسخههای جدید پایتون سر و کار داره، الان بهترین زمانه برای تست سازگاری کدتون.
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
❤2👍1
ریاکت کامپایلر:
پایان دوران useMemo و useCallback دستی
اگه تا حالا با ریاکت کار کردی، حتماً درگیر بهینهسازی رندرهای اضافه با
دقیقا React Compiler همین مشکل رو حل میکنه. این کامپایلر در زمان build، کد کامپوننتها و هوکهای شما رو آنالیز میکنه و بهصورت خودکار memoization لازم رو اضافه میکنه؛ بدون اینکه شما دستی چیزی بنویسید. تیم ریاکت این پروژه رو مدتها بهصورت تجربی روی خود facebook.com تست کرد و حالا با انتشار نسخه پایدار ۱.۰، برای پروژههای production آمادهست.
نکته مهم: کامپایلر فقط زمانی درست کار میکنه که کد شما از Rules of React پیروی کنه (مثلاً موقع رندر، state یا props رو mutate نکنید). برای همین eslint-plugin-react-hooks هم قوانین مخصوص کامپایلر رو داره تا قبل از build مشکلات رو نشونتون بده.
نصبش در Next.js خیلی سادهست:
برای پروژههای Vite یا هر ابزار دیگهای هم کافیه پکیج زیر رو نصب کنید و به کانفیگ Babel اضافه کنید:
بعد از فعالسازی، دیگه لازم نیست نگران رندرهای اضافهی کامپوننتهای فرزند باشید؛ کامپایلر خودش تشخیص میده کجا نیاز به memoization هست.
#برنامه_نویسی #ریاکت #فرانت_اند #React #WebDev
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
پایان دوران useMemo و useCallback دستی
اگه تا حالا با ریاکت کار کردی، حتماً درگیر بهینهسازی رندرهای اضافه با
useMemo، useCallback و React.memo شدی. این کار هم وقتگیره هم جای خطا داره؛ یه دیپندنسی رو جا بندازی، کل بهینهسازی بیاثر میشه.دقیقا React Compiler همین مشکل رو حل میکنه. این کامپایلر در زمان build، کد کامپوننتها و هوکهای شما رو آنالیز میکنه و بهصورت خودکار memoization لازم رو اضافه میکنه؛ بدون اینکه شما دستی چیزی بنویسید. تیم ریاکت این پروژه رو مدتها بهصورت تجربی روی خود facebook.com تست کرد و حالا با انتشار نسخه پایدار ۱.۰، برای پروژههای production آمادهست.
نکته مهم: کامپایلر فقط زمانی درست کار میکنه که کد شما از Rules of React پیروی کنه (مثلاً موقع رندر، state یا props رو mutate نکنید). برای همین eslint-plugin-react-hooks هم قوانین مخصوص کامپایلر رو داره تا قبل از build مشکلات رو نشونتون بده.
نصبش در Next.js خیلی سادهست:
// next.config.js
module.exports = {
reactCompiler: true,
}
برای پروژههای Vite یا هر ابزار دیگهای هم کافیه پکیج زیر رو نصب کنید و به کانفیگ Babel اضافه کنید:
npm install babel-plugin-react-compiler
بعد از فعالسازی، دیگه لازم نیست نگران رندرهای اضافهی کامپوننتهای فرزند باشید؛ کامپایلر خودش تشخیص میده کجا نیاز به memoization هست.
#برنامه_نویسی #ریاکت #فرانت_اند #React #WebDev
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
❤6
الگوی Dependency Injection در NestJS؛
معماری تمیز و قابل تست
NestJS از همون ابتدا حول محور Dependency Injection طراحی شده (الهامگرفته از معماری Angular). بهجای اینکه توی هر کلاس دستی یه سرویس رو
قلب ماجرا دو چیز هست:
دکوریتور
نکتهای که خیلیا بلد نیستن، custom providerها هستن. با
فایده بزرگ دیگهاش تستپذیریـه. توی تستها با
توی NestJS v12 (منتشرشده اوت ۲۰۲۶)، همین معماری DI حالا با پکیجهای ESM-ready و پشتیبانی رسمی از Standard Schema برای validation ترکیب شده و پایهی بخش جدید observability هم همینه.
#برنامه_نویسی #جاوااسکریپت #NestJS #بک_اند #تایپ_اسکریپت
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
معماری تمیز و قابل تست
NestJS از همون ابتدا حول محور Dependency Injection طراحی شده (الهامگرفته از معماری Angular). بهجای اینکه توی هر کلاس دستی یه سرویس رو
new کنی، فقط اعلام میکنی به چی نیاز داری، و NestJS خودش نمونهٔ مناسب رو در زمان اجرا بهت تزریق میکنه.قلب ماجرا دو چیز هست:
دکوریتور
@Injectable() که یه کلاس رو بهعنوان provider معرفی میکنه، و تزریق از طریق constructor. این کار باعث میشه سرویسها از هم decoupled بمونن و وابستگیها بهجای پنهون شدن توی کد، توی امضای کلاس واضح و قابل مشاهده باشن.نکتهای که خیلیا بلد نیستن، custom providerها هستن. با
useValue، useClass یا useFactory میتونی یه توکن سفارشی تعریف کنی و بسته به شرایط (مثلاً محیط dev یا prod) پیادهسازی متفاوتی بهش وصل کنی، بدون اینکه کد مصرفکننده تغییری کنه.فایده بزرگ دیگهاش تستپذیریـه. توی تستها با
overrideProvider میتونی یه سرویس واقعی (مثلاً اتصال به دیتابیس) رو با یه mock جایگزین کنی، دقیقاً مثل الگوی مشابهش توی فریمورکهای دیگه.@Injectable()
export class UsersService {
findOne(id: number) {
return { id, name: 'Ali' };
}
}
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get(':id')
findOne(@Param('id') id: number) {
return this.usersService.findOne(id);
}
}
توی NestJS v12 (منتشرشده اوت ۲۰۲۶)، همین معماری DI حالا با پکیجهای ESM-ready و پشتیبانی رسمی از Standard Schema برای validation ترکیب شده و پایهی بخش جدید observability هم همینه.
#برنامه_نویسی #جاوااسکریپت #NestJS #بک_اند #تایپ_اسکریپت
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 @codenight_ir
❤3
الگوی طراحی Strategy: وقتی if/else شما را له میکند 🎯
وقتی توی کدت به تابعی میرسی که پر از
احتمالاً وقتشه سراغ الگوی Strategy بری.
ایده اصلی ساده است:
بهجای اینکه منطق تصمیمگیری رو توی یک کلاس یا تابع بزرگ قایم کنی، هر رفتار رو توی یک کلاس جدا (یک «استراتژی») پیادهسازی میکنی که همه از یک قرارداد مشترک (interface) پیروی میکنن. کلاس اصلی فقط یکی از این استراتژیها رو نگه میداره و در زمان اجرا صداش میزنه، بدون اینکه بدونه دقیقاً چه الگوریتمی پشتش هست.
فایدهاش کجاست؟ اضافه کردن یک روش پرداخت جدید یا یک الگوریتم تخفیف جدید یعنی فقط یک کلاس جدید بنویسی، بدون دستزدن به کد قبلی. این دقیقاً همون اصل Open/Closed از SOLID هست:
باز برای توسعه، بسته برای تغییر.
یک مثال ساده با تخفیف:
#برنامه_نویسی #DesignPatterns
#طراحی_نرمافزار #TypeScript #Clean_Code
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 https://t.me/codenight_ir
وقتی توی کدت به تابعی میرسی که پر از
if/else یا switch-case هست و هر بار رفتار متفاوتی اجرا میکنه (مثلاً روشهای مختلف پرداخت، الگوریتمهای مختلف مرتبسازی، یا استراتژیهای مختلف تخفیف)، احتمالاً وقتشه سراغ الگوی Strategy بری.
ایده اصلی ساده است:
بهجای اینکه منطق تصمیمگیری رو توی یک کلاس یا تابع بزرگ قایم کنی، هر رفتار رو توی یک کلاس جدا (یک «استراتژی») پیادهسازی میکنی که همه از یک قرارداد مشترک (interface) پیروی میکنن. کلاس اصلی فقط یکی از این استراتژیها رو نگه میداره و در زمان اجرا صداش میزنه، بدون اینکه بدونه دقیقاً چه الگوریتمی پشتش هست.
فایدهاش کجاست؟ اضافه کردن یک روش پرداخت جدید یا یک الگوریتم تخفیف جدید یعنی فقط یک کلاس جدید بنویسی، بدون دستزدن به کد قبلی. این دقیقاً همون اصل Open/Closed از SOLID هست:
باز برای توسعه، بسته برای تغییر.
یک مثال ساده با تخفیف:
interface DiscountStrategy {
apply(price: number): number;
}
class NoDiscount implements DiscountStrategy {
apply(price: number) { return price; }
}
class PercentageDiscount implements DiscountStrategy {
constructor(private percent: number) {}
apply(price: number) {
return price * (1 - this.percent / 100);
}
}
class Cart {
constructor(private strategy: DiscountStrategy) {}
checkout(price: number) {
return this.strategy.apply(price);
}
}
const cart = new Cart(new PercentageDiscount(20));
console.log(cart.checkout(100)); // 80یک نکته: Strategy رو با Factory اشتباه نگیر؛Factoryبرای ساختن آبجکتهاست، ولیStrategyبرای انتخاب رفتار (الگوریتم) در زمان اجراست. خیلی وقتها هم این دو کنار هم استفاده میشن.
#برنامه_نویسی #DesignPatterns
#طراحی_نرمافزار #TypeScript #Clean_Code
کانال آموزشی کدنایت | آموزش برنامه نویسی
🆔 https://t.me/codenight_ir
👍5❤2
مجموعه ای از آموزش های روزانه جاوااسکریپت و گولنگ رو اماده کردم که هر روز یک قسمتی از اونا رو توی کانال میذارم
از مبتدی تا پیشرفته
از مبتدی تا پیشرفته
❤3
#جاوااسکریپت - درس اول
معرفی جاوااسکریپت و کاربردهاش
جاوااسکریپت یکی از پرکاربردترین زبانهای برنامهنویسی دنیاست و اولین قدم مسیر یادگیری ماست. تقریباً هر سایتی که باز میکنی یهجوری داره ازش استفاده میکنه.
• تو مرورگر اجرا میشه و صفحات وب رو تعاملی میکنه (کلیک، فرم، انیمیشن) • با Node.js همین زبان رو سمت سرور هم میشه استفاده کرد • زبانی داینامیک و تفسیریه، یعنی نیازی به کامپایل جداگانه نداره • استاندارد رسمیش ECMAScript هست و هر سال آپدیت میشه • فریمورکهای معروفی مثل React، Vue و Express روش ساخته شدن
همین یک خط رو میتونی تو کنسول مرورگر (با زدن F12) امتحان کنی. فردا میریم سراغ متغیرها و انواع دادهایی که پایه هر برنامهایه.
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
معرفی جاوااسکریپت و کاربردهاش
جاوااسکریپت یکی از پرکاربردترین زبانهای برنامهنویسی دنیاست و اولین قدم مسیر یادگیری ماست. تقریباً هر سایتی که باز میکنی یهجوری داره ازش استفاده میکنه.
• تو مرورگر اجرا میشه و صفحات وب رو تعاملی میکنه (کلیک، فرم، انیمیشن) • با Node.js همین زبان رو سمت سرور هم میشه استفاده کرد • زبانی داینامیک و تفسیریه، یعنی نیازی به کامپایل جداگانه نداره • استاندارد رسمیش ECMAScript هست و هر سال آپدیت میشه • فریمورکهای معروفی مثل React، Vue و Express روش ساخته شدن
// اولین خط کد جاوااسکریپت
console.log("سلام، دنیای جاوااسکریپت!");
همین یک خط رو میتونی تو کنسول مرورگر (با زدن F12) امتحان کنی. فردا میریم سراغ متغیرها و انواع دادهایی که پایه هر برنامهایه.
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
❤5
#گولنگ - درس اول
معرفی زبان Go و کاربردهاش
امروز اولین قدم رو تو مسیر یادگیری Go (گولنگ) برمیداریم؛ زبانی که گوگل برای سادگی، سرعت و کارایی بالا طراحی کرده.
• زبان Go یه زبان کامپایلی و بهشدت سریعه، نزدیک به سرعت زبانهای سطح پایین • برای ساخت بکاند، ابزارهای CLI و زیرساخت (مثل Docker و Kubernetes) خیلی محبوبه • سینتکس ساده و خواناست، برای همین یادگیریش برای مبتدیها راحته • برنامههای Go به یه فایل اجرایی مستقل کامپایل میشن، بدون نیاز به نصب چیز اضافه رو سیستم مقصد • همزمانی (Concurrency) یکی از نقاط قوت اصلی Go هست که جلوتر باهاش آشنا میشیم
این سادهترین برنامه ممکن تو Go هست: هر برنامه با
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
معرفی زبان Go و کاربردهاش
امروز اولین قدم رو تو مسیر یادگیری Go (گولنگ) برمیداریم؛ زبانی که گوگل برای سادگی، سرعت و کارایی بالا طراحی کرده.
• زبان Go یه زبان کامپایلی و بهشدت سریعه، نزدیک به سرعت زبانهای سطح پایین • برای ساخت بکاند، ابزارهای CLI و زیرساخت (مثل Docker و Kubernetes) خیلی محبوبه • سینتکس ساده و خواناست، برای همین یادگیریش برای مبتدیها راحته • برنامههای Go به یه فایل اجرایی مستقل کامپایل میشن، بدون نیاز به نصب چیز اضافه رو سیستم مقصد • همزمانی (Concurrency) یکی از نقاط قوت اصلی Go هست که جلوتر باهاش آشنا میشیم
package main
import "fmt"
func main() {
fmt.Println("Hello, Codenight!") // اولین خروجی ما
}
این سادهترین برنامه ممکن تو Go هست: هر برنامه با
package main و تابع main شروع میشه. فردا با ساختار کلی یه برنامه Go بیشتر آشنا میشیم.کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
❤5
معماری رویداد-محور؛ وقتی سرویسها بهجای «دستور دادن» به هم «خبر می
دن»
در معماریهای سنتی، سرویسها مستقیم با هم صحبت میکنن:
سرویس سفارش، سرویس انبار رو صدا میزنه، انبار هم سرویس ارسال رو... یعنی وابستگی زنجیرهای؛ اگه یکی از حلقهها کند یا خراب بشه، کل زنجیره میلنگه.
در Event-Driven Architecture (EDA) این رابطه عوض میشه. سرویسها بهجای صدا زدن مستقیم هم، فقط «رویداد» (event) منتشر میکنن؛ مثلاً وقتی سفارشی ثبت میشه، سرویس سفارش یه رویداد OrderPlaced رو روی یه message broker (مثل Kafka یا NATS) پابلیش میکنه. هر سرویسی که به این خبر نیاز داره (انبار، پرداخت، اعلان) بهش subscribe میکنه و مستقل از بقیه واکنش نشون میده.
مزیت اصلیاش decoupling واقعیه:
سرویس سفارش اصلاً نمیدونه چند تا سرویس دیگه به رویدادش گوش میدن، و میشه بدون تغییر کد قدیمی یه consumer جدید (مثلاً آنالیتیکس) اضافه کرد. مقیاسپذیری و تحمل خطا هم بهتره، چون اگه یه سرویس مصرفکننده موقتاً از کار بیفته، رویدادها توی broker میمونن و بعداً پردازش میشن.
نمونه سادهش:
نکته مهم: EDA پیچیدگی جدیدی هم میاره؛ دیباگ کردن جریان رویدادها سختتره و باید به idempotency (جلوگیری از پردازش تکراری یه رویداد) و event ordering فکر کنی. برای سیستمهای ساده شاید لازم نباشه؛ بیشتر برای میکروسرویسهایی که نیاز به مقیاسپذیری و استقلال بالا دارن مناسبه.
#معماری_نرم_افزار #برنامه_نویسی #میکروسرویس #EventDriven #Kafka
منابع:
• Event-Driven Architecture in 2026: Patterns, Tools, and When to Use It – Encore
• Event-Driven Architecture in 2026: Kafka, NATS, and Building Reactive Microservices | ZeonEdge
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
دن»
در معماریهای سنتی، سرویسها مستقیم با هم صحبت میکنن:
سرویس سفارش، سرویس انبار رو صدا میزنه، انبار هم سرویس ارسال رو... یعنی وابستگی زنجیرهای؛ اگه یکی از حلقهها کند یا خراب بشه، کل زنجیره میلنگه.
در Event-Driven Architecture (EDA) این رابطه عوض میشه. سرویسها بهجای صدا زدن مستقیم هم، فقط «رویداد» (event) منتشر میکنن؛ مثلاً وقتی سفارشی ثبت میشه، سرویس سفارش یه رویداد OrderPlaced رو روی یه message broker (مثل Kafka یا NATS) پابلیش میکنه. هر سرویسی که به این خبر نیاز داره (انبار، پرداخت، اعلان) بهش subscribe میکنه و مستقل از بقیه واکنش نشون میده.
مزیت اصلیاش decoupling واقعیه:
سرویس سفارش اصلاً نمیدونه چند تا سرویس دیگه به رویدادش گوش میدن، و میشه بدون تغییر کد قدیمی یه consumer جدید (مثلاً آنالیتیکس) اضافه کرد. مقیاسپذیری و تحمل خطا هم بهتره، چون اگه یه سرویس مصرفکننده موقتاً از کار بیفته، رویدادها توی broker میمونن و بعداً پردازش میشن.
نمونه سادهش:
// وقتی سفارش ثبت میشه
publish("OrderPlaced", { orderId, userId, items })
// سرویس انبار
subscribe("OrderPlaced", (event) => {
reserveInventory(event.items)
})
// سرویس اعلان
subscribe("OrderPlaced", (event) => {
sendConfirmationEmail(event.userId)
})
نکته مهم: EDA پیچیدگی جدیدی هم میاره؛ دیباگ کردن جریان رویدادها سختتره و باید به idempotency (جلوگیری از پردازش تکراری یه رویداد) و event ordering فکر کنی. برای سیستمهای ساده شاید لازم نباشه؛ بیشتر برای میکروسرویسهایی که نیاز به مقیاسپذیری و استقلال بالا دارن مناسبه.
#معماری_نرم_افزار #برنامه_نویسی #میکروسرویس #EventDriven #Kafka
منابع:
• Event-Driven Architecture in 2026: Patterns, Tools, and When to Use It – Encore
• Event-Driven Architecture in 2026: Kafka, NATS, and Building Reactive Microservices | ZeonEdge
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
#جاوااسکریپت - درس دوم
متغیرها و انواع دادهای در جاوااسکریپت
تو درس قبلی با جاوااسکریپت و کاربردهاش آشنا شدیم. حالا وقتشه یاد بگیریم چطور دادهها رو تو کد نگه داریم: با متغیرها.
• برای تعریف متغیر از
نکته: همیشه اول با
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
متغیرها و انواع دادهای در جاوااسکریپت
تو درس قبلی با جاوااسکریپت و کاربردهاش آشنا شدیم. حالا وقتشه یاد بگیریم چطور دادهها رو تو کد نگه داریم: با متغیرها.
• برای تعریف متغیر از
let و const استفاده میکنیم؛ var قدیمیتره و کمتر توصیه میشه • let مقداری قابل تغییره، ولی const بعد از تعریف دیگه عوض نمیشه • جاوااسکریپت چند نوع داده اولیه (primitive) داره: عدد (number)، رشته (string) و بولین (boolean) • null یعنی «عمداً خالی»، undefined یعنی «هنوز مقداری نگرفته» • برای دیدن نوع یه متغیر از typeof استفاده میکنیمlet name = "Erfan"; // یه رشته
const age = 25; // یه عدد ثابت
let isStudent = true;
console.log(typeof name); // "string"
console.log(typeof age); // "number"
نکته: همیشه اول با
const شروع کن و فقط وقتی واقعاً نیاز به تغییر مقدار داری، از let استفاده کن. فردا با عملگرها و اولویت اجراشون آشنا میشیم.کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
👍2
مفهوم Agent Skills چیست و چرا مهم است؟
یکی از مفاهیم جدید و کاربردی در دنیای ایجنتهای هوش مصنوعی، Agent Skills است؛ روشی که آنتروپیک برای مدلهای Claude معرفی کرده تا ایجنتها بتونن دانش تخصصی و رویهای (procedural knowledge) رو به شکل ماژولار یاد بگیرن، بدون اینکه همیشه توی context window اشغالکننده باشه.
هر Skill یه پوشهست که حداقل یک فایل به اسم
مثلاً یک Skill برای ساخت فایل اکسل میتونه شامل یه اسکریپت آماده برای فرمولنویسی باشه، یا یک Skill برای ریویو کد میتونه یه چکلیست استاندارد داشته باشه.
نکتهی جالب اینه که Skillها قابل حمل بین محصولات مختلف Claude هستن (مثل کلود اپ، Claude Code، و API)، و میتونن ترکیبی (composable) باشن؛ یعنی چند Skill با هم فعال بشن و مکمل کار کنن.
ساختار خیلی سادهی یک Skill معمولاً این شکلیه:
اگه با ایجنتهای AI کار میکنی، این الگو رو مقایسه کن با RAG یا fine-tuning:
به جای اینکه دانش رو توی وزن مدل جا بدی یا هر بار سند بازیابی کنی، دانش رویهای رو به شکل فایل و بهصورت on-demand در اختیار ایجنت میگذاری.
#هوش_مصنوعی #AI_Agent #برنامه_نویسی #Claude #تکنولوژی
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
یکی از مفاهیم جدید و کاربردی در دنیای ایجنتهای هوش مصنوعی، Agent Skills است؛ روشی که آنتروپیک برای مدلهای Claude معرفی کرده تا ایجنتها بتونن دانش تخصصی و رویهای (procedural knowledge) رو به شکل ماژولار یاد بگیرن، بدون اینکه همیشه توی context window اشغالکننده باشه.
هر Skill یه پوشهست که حداقل یک فایل به اسم
SKILL.md داره؛ توش یه توضیح کوتاه (metadata) هست که همیشه لود میشه، و محتوای کامل دستورالعمل فقط وقتی لود میشه که ایجنت واقعاً به اون کار نیاز داره. به این تکنیک میگن progressive disclosure یعنی افشای تدریجی اطلاعات، دقیقاً برعکس اینکه همهچیز رو یکجا بریزی توی پرامپت.یک Skill میتونه علاوه بر متن، اسکریپت پایتون، تمپلیت، یا حتی فایلهای کمکی دیگه هم داشته باشه که ایجنت در حین اجرا ازشون استفاده میکنه.
مثلاً یک Skill برای ساخت فایل اکسل میتونه شامل یه اسکریپت آماده برای فرمولنویسی باشه، یا یک Skill برای ریویو کد میتونه یه چکلیست استاندارد داشته باشه.
نکتهی جالب اینه که Skillها قابل حمل بین محصولات مختلف Claude هستن (مثل کلود اپ، Claude Code، و API)، و میتونن ترکیبی (composable) باشن؛ یعنی چند Skill با هم فعال بشن و مکمل کار کنن.
ساختار خیلی سادهی یک Skill معمولاً این شکلیه:
my-skill/
SKILL.md # name + description + دستورالعمل
scripts/
helper.py
اگه با ایجنتهای AI کار میکنی، این الگو رو مقایسه کن با RAG یا fine-tuning:
به جای اینکه دانش رو توی وزن مدل جا بدی یا هر بار سند بازیابی کنی، دانش رویهای رو به شکل فایل و بهصورت on-demand در اختیار ایجنت میگذاری.
#هوش_مصنوعی #AI_Agent #برنامه_نویسی #Claude #تکنولوژی
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
👍2
🤖 ساخت AI Agentها یک مرحله سادهتر شد
شرکت OpenAI در ۱۰ سپتامبر Agents API را بهصورت Public Beta معرفی کرد؛ API جدیدی که بخش مهمی از زیرساخت Agent را خودش مدیریت میکند:
از اجرای Agent Loop و مدیریت Context گرفته تا Sessionهای طولانی، Tool Calling و هماهنگی Subagentها.
نکته جذابتر اینجاست که Agent میتواند داخل Sandbox خود OpenAI، زیرساخت خودتان یا Providerهای دیگر اجرا شود.
برای AI Engineerها این یعنی بهجای ساخت دوبارهی بخش بزرگی از Agent Runtime، میتوان تمرکز را روی Tools، Knowledge Base و Business Logic گذاشت.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
شرکت OpenAI در ۱۰ سپتامبر Agents API را بهصورت Public Beta معرفی کرد؛ API جدیدی که بخش مهمی از زیرساخت Agent را خودش مدیریت میکند:
از اجرای Agent Loop و مدیریت Context گرفته تا Sessionهای طولانی، Tool Calling و هماهنگی Subagentها.
نکته جذابتر اینجاست که Agent میتواند داخل Sandbox خود OpenAI، زیرساخت خودتان یا Providerهای دیگر اجرا شود.
برای AI Engineerها این یعنی بهجای ساخت دوبارهی بخش بزرگی از Agent Runtime، میتوان تمرکز را روی Tools، Knowledge Base و Business Logic گذاشت.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
👨🏻💻💚 روز برنامهنویس مبارک!
امروز از همهی برنامهنویسهای خلاق و پرتلاش تشکر میکنیم؛ کسانی که با دانش و پشتکار، ایدهها را به راهکارهای واقعی تبدیل میکنند و از هر خطا، فرصتی برای رشد میسازند. 🚀
برایتان یادگیری مداوم، پیشرفت حرفهای و موفقیتهای بزرگ آرزو داریم! 💻❤️
امروز از همهی برنامهنویسهای خلاق و پرتلاش تشکر میکنیم؛ کسانی که با دانش و پشتکار، ایدهها را به راهکارهای واقعی تبدیل میکنند و از هر خطا، فرصتی برای رشد میسازند. 🚀
برایتان یادگیری مداوم، پیشرفت حرفهای و موفقیتهای بزرگ آرزو داریم! 💻❤️
❤7
🔥 ورژن NestJS 12 منتشر شده؛ فقط یک آپدیت معمولی نیست
ورژن NestJS 12 با چند تغییر مهم آمده:
✅ پکیجهای ESM-ready ✅ پشتیبانی از Standard Schema برای Validation و Serialization ✅ ابزار CLI بازطراحیشده ✅ پکیج های Observability بومی با
نکته مهم: مهاجرت پروژه فعلی شما به ESM اجباری نیست و CommonJS همچنان پشتیبانی میشود.
همچنین برای NestJS 12 حداقل Node.js
قبل از Upgrade هم میتوانید اجرا کنید:
تا تغییرات را بدون دستکاری پروژه ببینید.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
ورژن NestJS 12 با چند تغییر مهم آمده:
✅ پکیجهای ESM-ready ✅ پشتیبانی از Standard Schema برای Validation و Serialization ✅ ابزار CLI بازطراحیشده ✅ پکیج های Observability بومی با
@nestjs/observe ✅ تست نویسی با Vitest و oxlint بهعنوان انتخابهای جدید برای پروژههای تازهنکته مهم: مهاجرت پروژه فعلی شما به ESM اجباری نیست و CommonJS همچنان پشتیبانی میشود.
همچنین برای NestJS 12 حداقل Node.js
20.19+ یا 22.12+ لازم است.قبل از Upgrade هم میتوانید اجرا کنید:
nest upgrade --dry-run
تا تغییرات را بدون دستکاری پروژه ببینید.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
Telegram
️ CodeNight | آموزش برنامه نویسی
🚀 کدنایت | آموزش برنامهنویسی از صفر تا صد
گولنگ، جاوااسکریپت، نودجی اس، وب، اپلیکیشن و الگوریتم
🧑🏻💻 آموزش پروژهمحور و رایگان
🤖آموزش هوش مصنوعی و vibe coding و Ai engineering
💻 مناسب مبتدی تا پیشرفته
🌐 codenight.ir
گولنگ، جاوااسکریپت، نودجی اس، وب، اپلیکیشن و الگوریتم
🧑🏻💻 آموزش پروژهمحور و رایگان
🤖آموزش هوش مصنوعی و vibe coding و Ai engineering
💻 مناسب مبتدی تا پیشرفته
🌐 codenight.ir
❤4
یکی از دردسرهای Production در Go: Goroutine Leak
در Go 1.27 قابلیت جدیدی برای Goroutine Leak Profiling اضافه شده که تشخیص Goroutineهایی را که ایجاد شدهاند اما دیگر عملاً پیشرفتی ندارند سادهتر میکند.
در Go 1.27 همچنین Generic Methodها، encoding/json/v2، پکیج UUID و بهبودهایی در Runtime و Memory Allocation آورده است.
چرا مهم است؟
یک سرویس ممکن است ظاهراً درست کار کند، اما بهمرور تعداد Goroutineها بالا برود و مصرف Memory و Resource افزایش پیدا کند.
برای Backend Developerها، Monitoring تعداد Goroutineها باید بخشی از Observability سرویس باشد.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
در Go 1.27 قابلیت جدیدی برای Goroutine Leak Profiling اضافه شده که تشخیص Goroutineهایی را که ایجاد شدهاند اما دیگر عملاً پیشرفتی ندارند سادهتر میکند.
در Go 1.27 همچنین Generic Methodها، encoding/json/v2، پکیج UUID و بهبودهایی در Runtime و Memory Allocation آورده است.
چرا مهم است؟
یک سرویس ممکن است ظاهراً درست کار کند، اما بهمرور تعداد Goroutineها بالا برود و مصرف Memory و Resource افزایش پیدا کند.
برای Backend Developerها، Monitoring تعداد Goroutineها باید بخشی از Observability سرویس باشد.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
وقتی سیستم شما به ۷۰ میلیون Request در ثانیه برسد چه اتفاقی میافتد؟
شرکت OpenAI جزئیات معماری Habitat، پلتفرم Online Storage خودش را منتشر کرده؛ سیستمی که بیش از 70M درخواست در ثانیه و بیش از 500PB داده را مدیریت میکند.
یکی از نکات جالب معماری این سیستم:
شرویس Habitat ابتدا یک Library ساده بود، اما با رشد سیستم به یک Service مستقل تبدیل شد.
در مسیر Scale هم موضوعاتی مثل:
Connection Pool Management Load Balancing Rate Limiting Tail Latency Downstream Protection
اهمیت زیادی پیدا کردند.
حتی OpenAI بازنویسی Python به Rust را حدود یک سال عقب انداخت تا ابتدا Bottleneckهای مهمتر را حل کند.
📌 درس مهم معماری:
همیشه اولین راهحل پرفورمنس Rewrite نیست.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
شرکت OpenAI جزئیات معماری Habitat، پلتفرم Online Storage خودش را منتشر کرده؛ سیستمی که بیش از 70M درخواست در ثانیه و بیش از 500PB داده را مدیریت میکند.
یکی از نکات جالب معماری این سیستم:
شرویس Habitat ابتدا یک Library ساده بود، اما با رشد سیستم به یک Service مستقل تبدیل شد.
در مسیر Scale هم موضوعاتی مثل:
Connection Pool Management Load Balancing Rate Limiting Tail Latency Downstream Protection
اهمیت زیادی پیدا کردند.
حتی OpenAI بازنویسی Python به Rust را حدود یک سال عقب انداخت تا ابتدا Bottleneckهای مهمتر را حل کند.
📌 درس مهم معماری:
همیشه اولین راهحل پرفورمنس Rewrite نیست.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
👍2
درس دوم - #گولنگ
ساختار یک برنامه Go
تو درس قبلی با زبان Go و کاربردهاش آشنا شدیم. حالا وقتشه اولین قدم عملی رو برداریم و ببینیم یه برنامه ساده Go از چه بخشهایی تشکیل شده.
• هر فایل Go با
با
نکته مهم اینه که Go خیلی به ساختار و نظم اهمیت میده؛ برخلاف خیلی از زبانهای دیگه نمیشه بخشهایی مثل
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
ساختار یک برنامه Go
تو درس قبلی با زبان Go و کاربردهاش آشنا شدیم. حالا وقتشه اولین قدم عملی رو برداریم و ببینیم یه برنامه ساده Go از چه بخشهایی تشکیل شده.
• هر فایل Go با
package main شروع میشه که میگه این برنامه قابل اجراست •با
import پکیجهای موردنیاز رو وارد برنامه میکنیم، مثلاً fmt برای چاپ خروجی • تابع func main() نقطه شروع اجرای هر برنامه Go هست • برای نمایش خروجی از fmt.Println() استفاده میکنیم • برنامه رو با دستور go run file.go تو ترمینال اجرا میکنیمpackage main
import "fmt"
func main() {
// این پیام موقع اجرای برنامه چاپ میشه
fmt.Println("سلام از Go!")
}
نکته مهم اینه که Go خیلی به ساختار و نظم اهمیت میده؛ برخلاف خیلی از زبانهای دیگه نمیشه بخشهایی مثل
package رو نادیده گرفت. فردا با متغیرها و انواع دادهای تو Go آشنا میشیم.کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
❤1🔥1
#جاوااسکریپت - درس سوم
عملگرها و عملیاتها در جاوااسکریپت
تو درس قبلی با متغیرها و انواع دادهای آشنا شدیم. حالا وقتشه یاد بگیریم چطور با اون مقادیر کار کنیم و روشون عملیات انجام بدیم.
• عملگرهای ریاضی:
(باقیمانده تقسیم) برای محاسبات عددی •
• عملگرهای مقایسهای:
• عملگرهای منطقی:
• عملگرهای انتسابی مثل
اولویت اجرا مهمه: ضرب و تقسیم قبل از جمع و تفریق انجام میشن، دقیقاً مثل ریاضی مدرسه
یه اشتباه رایج بین تازهکارها استفاده از
کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
عملگرها و عملیاتها در جاوااسکریپت
تو درس قبلی با متغیرها و انواع دادهای آشنا شدیم. حالا وقتشه یاد بگیریم چطور با اون مقادیر کار کنیم و روشون عملیات انجام بدیم.
• عملگرهای ریاضی:
+، -، *، / و % (باقیمانده تقسیم) برای محاسبات عددی •
• عملگرهای مقایسهای:
== و != فقط مقدار رو مقایسه میکنن، ولی === و !== مقدار و نوع داده رو هر دو چک میکنن • عملگرهای منطقی:
&& (و)، || (یا) و ! (نقیض) برای ترکیب شرط ها• عملگرهای انتسابی مثل
+= و -= کار نوشتن کد رو کوتاهتر میکنن اولویت اجرا مهمه: ضرب و تقسیم قبل از جمع و تفریق انجام میشن، دقیقاً مثل ریاضی مدرسه
let price = 50000;
let discount = 5000;
let finalPrice = price - discount;
console.log(finalPrice); // 45000
console.log(finalPrice === 45000); // true
console.log(price > 10000 && discount > 0); // true
یه اشتباه رایج بین تازهکارها استفاده از
== بهجای === هست که میتونه نتایج غیرمنتظره بده؛ همیشه سعی کن از === استفاده کنی. فردا سراغ ساختارهای شرطی میریم و میبینیم چطور از همین عملگرها برای تصمیمگیری تو کد استفاده کنیم.کانال آموزشی کدنایت | آموزش برنامهنویسی
https://t.me/codenight_ir
❤1
یک کامپوننت داخلی React برای انیمیشنهای نرم، بدون هیچ کتابخانهی اضافه
اگر تا حالا برای انیمیت کردن ورود و خروج کامپوننتها سراغ
در React نسخهی ۱۹.۳ (منتشرشده ۹ سپتامبر ۲۰۲۶) کامپوننت
این کامپوننت روی View Transitions API خود مرورگر سوار شده و خودش تشخیص میده که تغییر درخت کامپوننتها چه نوعیه:
اضافهشدن (enter)، حذفشدن (exit)، تغییر محتوا یا استایل (update)، یا جابهجایی یک المان بین دو مکان مختلف (share).
رفتار پیشفرضش یک کراسفید نرمه، ولی کاملاً قابل شخصیسازی با CSS View Transition Classes یا Web Animations API هست.
نکتهی جالبتر، تابع
این کامپوننت با
#React #فرانت_اند #برنامه_نویسی #جاوااسکریپت #وب
Sources:
• React 19.3
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
اگر تا حالا برای انیمیت کردن ورود و خروج کامپوننتها سراغ
framer-motion یا کدنویسی دستی با CSS transition رفتهاید، خبر خوب اینه که دیگه لازم نیست. در React نسخهی ۱۹.۳ (منتشرشده ۹ سپتامبر ۲۰۲۶) کامپوننت
ViewTransition رو بهصورت رسمی و پایدار عرضه کرده؛ یعنی بعد از یک دورهی طولانی experimental بودن، حالا میشه توی پروژهی پروداکشن ازش استفاده کرد.این کامپوننت روی View Transitions API خود مرورگر سوار شده و خودش تشخیص میده که تغییر درخت کامپوننتها چه نوعیه:
اضافهشدن (enter)، حذفشدن (exit)، تغییر محتوا یا استایل (update)، یا جابهجایی یک المان بین دو مکان مختلف (share).
رفتار پیشفرضش یک کراسفید نرمه، ولی کاملاً قابل شخصیسازی با CSS View Transition Classes یا Web Animations API هست.
نکتهی جالبتر، تابع
addTransitionType هست که میذاره انیمیشن رو بر اساس علت تغییر state مشخص کنید؛ مثلاً برای اسلایدر بگید حرکت به جلو از راست بیاد و حرکت به عقب از چپ.import { ViewTransition, startTransition, addTransitionType } from 'react';
function nextSlide() {
startTransition(() => {
addTransitionType('next');
setCurrentSlide(c => c + 1);
});
}
<ViewTransition
enter={{ next: 'from-right', previous: 'from-left' }}
exit={{ next: 'to-left', previous: 'to-right' }}
>
<Page />
</ViewTransition>این کامپوننت با
startTransition، Suspense و useDeferredValue هم بهخوبی کار میکنه، یعنی میتونید حتی fallback یک Suspense رو هم به محتوای نهایی بهشکل نرم انیمیت کنید.#React #فرانت_اند #برنامه_نویسی #جاوااسکریپت #وب
Sources:
• React 19.3
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
❤5