مجموعه ای از آموزش های روزانه جاوااسکریپت و گولنگ رو اماده کردم که هر روز یک قسمتی از اونا رو توی کانال میذارم
از مبتدی تا پیشرفته
از مبتدی تا پیشرفته
❤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
یکی از قابلیتهایی که Go Developerها مدتها منتظرش بودند: Generic Methods
در Go 1.27 امکان تعریف Methodهایی با Type Parameterهای خودشان را اضافه کرده است؛ یعنی Genericها دیگر فقط محدود به Type و Function نیستند.
این قابلیت مخصوصاً هنگام طراحی Library و APIهای reusable میتواند کدهای تمیزتری ایجاد کند.
اما یک هشدار مهم:
در گو Generic بودن لزوماً به معنی معماری بهتر نیست.
اگر Type Parameter فقط باعث پیچیدهتر شدن API شود و مزیت واقعی Type Safety یا Reusability نداشته باشد، Interface یا حتی Function ساده ممکن است انتخاب بهتری باشد.
📌 قانون خوب:
اول سادهترین API ممکن را طراحی کن؛ Generic را وقتی اضافه کن که واقعاً duplication یا type-safety problem را حل میکند.
منبع رسمی: Go Blog
#گولنگ #گو #go
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
در Go 1.27 امکان تعریف Methodهایی با Type Parameterهای خودشان را اضافه کرده است؛ یعنی Genericها دیگر فقط محدود به Type و Function نیستند.
این قابلیت مخصوصاً هنگام طراحی Library و APIهای reusable میتواند کدهای تمیزتری ایجاد کند.
اما یک هشدار مهم:
در گو Generic بودن لزوماً به معنی معماری بهتر نیست.
اگر Type Parameter فقط باعث پیچیدهتر شدن API شود و مزیت واقعی Type Safety یا Reusability نداشته باشد، Interface یا حتی Function ساده ممکن است انتخاب بهتری باشد.
📌 قانون خوب:
اول سادهترین API ممکن را طراحی کن؛ Generic را وقتی اضافه کن که واقعاً duplication یا type-safety problem را حل میکند.
منبع رسمی: Go Blog
#گولنگ #گو #go
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
go.dev
The Go Blog - The Go Programming Language
هر چیزی را نباید داخل Context Window نگه داریم
یکی از اشتباهات رایج در ساخت AI Agent این است که تمام تاریخچه گفتگو، نتایج Toolها و اطلاعات قبلی را دائماً داخل Context مدل قرار دهیم.
با طولانیشدن Session، سه مشکل ایجاد میشود:
Token Cost ↑
Latency ↑
Noise ↑
معماری بهتر، حافظه Agent را به چند لایه تقسیم میکند:
Working Memory → Short-term Context
Conversation Summary → Compressed Memory
Long-term Memory → Database / Vector DB
Business Data → Source of Truth
نکته مهم این است که Vector Database هم نباید به «محل ذخیره همهچیز» تبدیل شود. اطلاعات ساختاریافته مثل سفارش، پروفایل یا وضعیت پروژه بهتر است همچنان از Database اصلی خوانده شوند.
📌 خود Context Window حافظه دائمی Agent نیست؛ یک Working Memory محدود و گرانقیمت است.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
یکی از اشتباهات رایج در ساخت AI Agent این است که تمام تاریخچه گفتگو، نتایج Toolها و اطلاعات قبلی را دائماً داخل Context مدل قرار دهیم.
با طولانیشدن Session، سه مشکل ایجاد میشود:
Token Cost ↑
Latency ↑
Noise ↑
معماری بهتر، حافظه Agent را به چند لایه تقسیم میکند:
Working Memory → Short-term Context
Conversation Summary → Compressed Memory
Long-term Memory → Database / Vector DB
Business Data → Source of Truth
نکته مهم این است که Vector Database هم نباید به «محل ذخیره همهچیز» تبدیل شود. اطلاعات ساختاریافته مثل سفارش، پروفایل یا وضعیت پروژه بهتر است همچنان از Database اصلی خوانده شوند.
📌 خود Context Window حافظه دائمی Agent نیست؛ یک Working Memory محدود و گرانقیمت است.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
👍2👎1
🟢 اگر از Stream استفاده میکنی؟ پس باید Backpressure را هم بشناسی
فرض کنید در Node.js یک فایل بزرگ را میخوانیم و داده را به مقصد دیگری میفرستیم.
اگر Producer سریعتر از Consumer داده تولید کند:
Producer >>> Consumer
داده شروع به جمعشدن در Memory میکند.
اینجاست که مفهوم Backpressure اهمیت پیدا میکند.
در Node.js Streamها مکانیزمهایی دارند که به Producer اجازه میدهند وقتی Consumer عقب افتاده، سرعت تولید را کاهش دهد.
بهجای مدیریت دستی:
read → write → buffer → memory pressure
در بسیاری از سناریوها بهتر است از:
stream.pipeline()
استفاده شود تا جریان داده، Error Handling و Cleanup قابلکنترلتر شوند.
📌 در Stream فقط برای «کمکردن Memory» نیست؛ Flow Control بخش مهمتر ماجراست.
مستندات نودجی اس درباره Stream در کدنایت
کانال آموزشی کدنایت | آموزش برنامه نویس
https://t.me/codenight_ir
فرض کنید در Node.js یک فایل بزرگ را میخوانیم و داده را به مقصد دیگری میفرستیم.
اگر Producer سریعتر از Consumer داده تولید کند:
Producer >>> Consumer
داده شروع به جمعشدن در Memory میکند.
اینجاست که مفهوم Backpressure اهمیت پیدا میکند.
در Node.js Streamها مکانیزمهایی دارند که به Producer اجازه میدهند وقتی Consumer عقب افتاده، سرعت تولید را کاهش دهد.
بهجای مدیریت دستی:
read → write → buffer → memory pressure
در بسیاری از سناریوها بهتر است از:
stream.pipeline()
استفاده شود تا جریان داده، Error Handling و Cleanup قابلکنترلتر شوند.
📌 در Stream فقط برای «کمکردن Memory» نیست؛ Flow Control بخش مهمتر ماجراست.
مستندات نودجی اس درباره Stream در کدنایت
کانال آموزشی کدنایت | آموزش برنامه نویس
https://t.me/codenight_ir
❤2👍1
سیستم Cache میتواند Database را نجات دهد؛ یا یکدفعه همه Requestها را روی آن بریزد!
فرض کنید یک Query پرمصرف را ۵ دقیقه Cache کردهایم.
Cache Expire میشود و همان لحظه ۱۰۰۰ Request میرسد.
اگر همه ببینند Cache خالی است:
این مشکل را Cache Stampede مینامند.
یکی از Patternهای کاربردی، Request Coalescing یا Single Flight است:
اولین Request داده را Refresh میکند و بقیه منتظر همان نتیجه میمانند.
راهکارهای دیگر:
📌 در Cache Strategy فقط انتخاب TTL نیست؛ باید رفتار سیستم هنگام Cache Miss همزمان را هم طراحی کنیم.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
فرض کنید یک Query پرمصرف را ۵ دقیقه Cache کردهایم.
Cache Expire میشود و همان لحظه ۱۰۰۰ Request میرسد.
اگر همه ببینند Cache خالی است:
1000 Requests → Databaseاین مشکل را Cache Stampede مینامند.
یکی از Patternهای کاربردی، Request Coalescing یا Single Flight است:
اولین Request داده را Refresh میکند و بقیه منتظر همان نتیجه میمانند.
1000 Requests → 1 DB Query → Cache → 1000 Responsesراهکارهای دیگر:
TTL Jitter Stale-While-Revalidate Distributed Lock📌 در Cache Strategy فقط انتخاب TTL نیست؛ باید رفتار سیستم هنگام Cache Miss همزمان را هم طراحی کنیم.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
👍5❤1🔥1
مصرف CPU پایین است، ولی API کند شده؛ مشکل شاید Event Loop باشد
در Node.js یک Request میتواند بدون مصرف عجیب CPU، Event Loop را برای مدت زیادی Block کند.
مثلاً:
JSON پردازش بسیار بزرگ
اجرای Regex سنگین
اجرای Loop محاسباتی
کار CPU-bound داخل Request
نتیجه؟
حالا Request های دیگر باید منتظر بمانند.
در توسعه ی اپ های مبتنی بر نودجی اس فقط اینها کافی نیستند:
CPU + RAM + Request Count
در Production بهتر است Event Loop Delay / Utilization هم مانیتور شود.
در Node.js برای این کار APIهایی مثل:
monitorEventLoopDelay()
و
eventLoopUtilization()
را در perf_hooks ارائه میدهد.
📌 اگر کار CPU-heavy دارید، راهحل همیشه افزایش Replica نیست؛ گاهی باید Task را به Worker Thread یا Background Worker منتقل کنید.
دوره رایگان مرتبط با پرفورمنس و worker thread در کدنایت
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
در Node.js یک Request میتواند بدون مصرف عجیب CPU، Event Loop را برای مدت زیادی Block کند.
مثلاً:
JSON پردازش بسیار بزرگ
اجرای Regex سنگین
اجرای Loop محاسباتی
کار CPU-bound داخل Request
نتیجه؟
حالا Request های دیگر باید منتظر بمانند.
در توسعه ی اپ های مبتنی بر نودجی اس فقط اینها کافی نیستند:
CPU + RAM + Request Count
در Production بهتر است Event Loop Delay / Utilization هم مانیتور شود.
در Node.js برای این کار APIهایی مثل:
monitorEventLoopDelay()
و
eventLoopUtilization()
را در perf_hooks ارائه میدهد.
📌 اگر کار CPU-heavy دارید، راهحل همیشه افزایش Replica نیست؛ گاهی باید Task را به Worker Thread یا Background Worker منتقل کنید.
دوره رایگان مرتبط با پرفورمنس و worker thread در کدنایت
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
codenight.ir
دوره Multi Threading در Node.js | آموزش Worker Threads و پردازش موازی | مالتی تردینگ در نودجی اس
در دوره Multi Threading در Node.js یاد میگی چطور با Worker Threads پردازشهای سنگین و CPU Intensive رو بهینه کنی، پردازش موازی انجام بدی و Performance برنامههای Node.js رو افزایش بدی
❤4
🎯 این اسم ها یا سه واژه این روزا خیلی قاطی استفاده میشن، ولی هرکدوم یه سطح متفاوت از کنترل و مسئولیت رو نشون میدن. فرقشون رو بدونی، انتخاب درستی تری برای هر تسک میکنی.
🧩 AI-Assisted Coding
کلیترین اصطلاح: هر جایی که AI بهصورت نقطهای کمکت میکنه (اتوکامپلیت، توضیح کد، ریفکتور یک تابع). خط به خط دست خودته، AI فقط دستیاره.
🌀 Vibe Coding
طبق تعریف اصلی Karpathy: با زبان طبیعی به AI میگی چی میخوای، کد رو کامل ریویو نمیکنی، فقط نتیجه رو تست میکنی. مالکیت کد میفته دست AI. عالیه برای پروتوتایپ و MVP، خطرناکه برای production.
🤖 Agentic Engineering
تو هدف و قیدها (constraints) رو مشخص میکنی، ایجنتها plan/code/test رو خودشون انجام میدن، ولی زیر نظارت ساختاریافتهی تو: code review، تست خودکار، معماری همچنان مسئولیت خودته.
مثال یه پرامپت برای همون تسک با دو رویکرد:
💡 نکته طلایی: مشکل کلمهها نیست، مشکل جاییه که سبک اشتباه رو برای تسک اشتباه انتخاب کنی. برای production همیشه سمت Agentic Engineering برو، نه Vibe Coding خام.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
#VibeCoding #کدنایت #Agentic_Engineering #AI_Assisted_Coding #هوش_مصنوعی
🧩 AI-Assisted Coding
کلیترین اصطلاح: هر جایی که AI بهصورت نقطهای کمکت میکنه (اتوکامپلیت، توضیح کد، ریفکتور یک تابع). خط به خط دست خودته، AI فقط دستیاره.
🌀 Vibe Coding
طبق تعریف اصلی Karpathy: با زبان طبیعی به AI میگی چی میخوای، کد رو کامل ریویو نمیکنی، فقط نتیجه رو تست میکنی. مالکیت کد میفته دست AI. عالیه برای پروتوتایپ و MVP، خطرناکه برای production.
🤖 Agentic Engineering
تو هدف و قیدها (constraints) رو مشخص میکنی، ایجنتها plan/code/test رو خودشون انجام میدن، ولی زیر نظارت ساختاریافتهی تو: code review، تست خودکار، معماری همچنان مسئولیت خودته.
مثال یه پرامپت برای همون تسک با دو رویکرد:
# به سبک 👇Vibe Coding
"یه endpoint برای ثبت سفارش بساز که کار کنه"
# به سبک 👇Agentic Engineering
"یه POST /orders در NestJS با TypeORM بساز:
- DTO با class-validator
- تراکنش روی MySQL برای کسر موجودی
- تست unit برای rollback در خطا
بعد از ساخت، diff رو نشونم بده."
💡 نکته طلایی: مشکل کلمهها نیست، مشکل جاییه که سبک اشتباه رو برای تسک اشتباه انتخاب کنی. برای production همیشه سمت Agentic Engineering برو، نه Vibe Coding خام.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
#VibeCoding #کدنایت #Agentic_Engineering #AI_Assisted_Coding #هوش_مصنوعی
👏1
تیم Node.js درحال وارد کرد جدی تر Benchmarking در Runtime میباشد
ورژن Node.js 26.9.0 در ۱۶ سپتامبر منتشر شد و یکی از قابلیتهای جالبش API آزمایشی جدید node:bench است.
در همین نسخه چند قابلیت مهم دیگر هم آمده:
چند قابلیت جدید و مهم در Node.js:
• پکیج node:bench برای Benchmark
برای تست و مقایسه سرعت کدها؛ مثلاً بفهمیم کدام الگوریتم یا روش پیادهسازی سریعتر اجرا میشود.
• Web Workers Support
برای اجرای کارهای سنگین در Threadهای جدا و جلوگیری از بلاک شدن برنامه.
• FFI بهصورت پیشفرض
برای ارتباط مستقیمتر Node.js با توابع و کتابخانههای Native مثل C/C++.
• Virtual File System برای CJS و ESM
امکان مدیریت و شبیهسازی فایلها برای هر دو سیستم ماژول CommonJS و ES Modules.
• Generic MAC API در Crypto
یک API عمومیتر برای تولید Message Authentication Code و کارهای امنیتی مرتبط با رمزنگاری.
همچنین APIهای جدیدی برای تحلیل Histogram در perf_hooks اضافه شدهاند.
برای Backend Developerها، node:bench میتواند مسیر Benchmarkهای قابلتکرار را سادهتر کند.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
ورژن Node.js 26.9.0 در ۱۶ سپتامبر منتشر شد و یکی از قابلیتهای جالبش API آزمایشی جدید node:bench است.
در همین نسخه چند قابلیت مهم دیگر هم آمده:
چند قابلیت جدید و مهم در Node.js:
• پکیج node:bench برای Benchmark
برای تست و مقایسه سرعت کدها؛ مثلاً بفهمیم کدام الگوریتم یا روش پیادهسازی سریعتر اجرا میشود.
• Web Workers Support
برای اجرای کارهای سنگین در Threadهای جدا و جلوگیری از بلاک شدن برنامه.
• FFI بهصورت پیشفرض
برای ارتباط مستقیمتر Node.js با توابع و کتابخانههای Native مثل C/C++.
• Virtual File System برای CJS و ESM
امکان مدیریت و شبیهسازی فایلها برای هر دو سیستم ماژول CommonJS و ES Modules.
• Generic MAC API در Crypto
یک API عمومیتر برای تولید Message Authentication Code و کارهای امنیتی مرتبط با رمزنگاری.
همچنین APIهای جدیدی برای تحلیل Histogram در perf_hooks اضافه شدهاند.
برای Backend Developerها، node:bench میتواند مسیر Benchmarkهای قابلتکرار را سادهتر کند.
📌 نکته: Node.js 26 ورژن Current است؛ برای Production بدون بررسی compatibility مستقیماً Upgrade نکنید و حتما از ورژن LTS استفاده کنید
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir