مفهوم 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
👋 به کدنایت خوش اومدی 💚
کدنایت یک پلتفرم آموزش برنامهنویسی و توسعه نرمافزاره؛ از شروع مسیر تا مباحث حرفهای.
اینجا درباره این موضوعات محتوا داریم:
💻 مباحث Backend و Frontend
🤖 هوش مصنوعی و vibe coding و AI Engineering
🟢 آموزش Node.js و NestJS
🐹 آموزش پایه تا پیشرفته Golang
🏗 مهندسی و معماری نرمافزار
📄 رزومه، بازار کار و مسیر شغلی
🛠 ابزارها و تکنولوژیهای جدید
در وبسایت کدنایت هم میتونی به دورهها، مقالات، آموزشهای رایگان و ابزارهای آموزشی دسترسی داشته باشی.
🌐 codenight.ir
📢 @codenight_ir
از شروع برنامهنویسی تا حرفهای شدن، کنار کدنایت باش.
کدنایت یک پلتفرم آموزش برنامهنویسی و توسعه نرمافزاره؛ از شروع مسیر تا مباحث حرفهای.
اینجا درباره این موضوعات محتوا داریم:
💻 مباحث Backend و Frontend
🤖 هوش مصنوعی و vibe coding و AI Engineering
🟢 آموزش Node.js و NestJS
🐹 آموزش پایه تا پیشرفته Golang
🏗 مهندسی و معماری نرمافزار
📄 رزومه، بازار کار و مسیر شغلی
🛠 ابزارها و تکنولوژیهای جدید
در وبسایت کدنایت هم میتونی به دورهها، مقالات، آموزشهای رایگان و ابزارهای آموزشی دسترسی داشته باشی.
🌐 codenight.ir
📢 @codenight_ir
از شروع برنامهنویسی تا حرفهای شدن، کنار کدنایت باش.
❤6
🛡️ اعتبارسنجی ورودیها در Express.js با Zod
یکی از مهمترین بخشهای ساخت API امن و قابل اعتماد، بررسی دادههای ورودی کاربره.
با استفاده از Zod میتونیم خیلی ساده مشخص کنیم هر ورودی چه ساختاری داشته باشه، چه فیلدهایی اجباری باشن و چه محدودیتهایی روی دادهها اعمال بشه.
مثلاً قبل از اینکه اطلاعات وارد منطق برنامه یا دیتابیس بشن، میتونیم بررسی کنیم:
• ایمیل معتبره یا نه
• مقدارها نوع درستی دارن یا نه
• فیلدهای ضروری ارسال شدن یا نه
• دادهها محدودیتهای تعریفشده رو رعایت میکنن یا نه
در این مقاله نحوه پیادهسازی Validation در Express.js با Zod رو بررسی کردیم 👇
https://codenight.ir/articles/express-validation-zod
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
یکی از مهمترین بخشهای ساخت API امن و قابل اعتماد، بررسی دادههای ورودی کاربره.
با استفاده از Zod میتونیم خیلی ساده مشخص کنیم هر ورودی چه ساختاری داشته باشه، چه فیلدهایی اجباری باشن و چه محدودیتهایی روی دادهها اعمال بشه.
مثلاً قبل از اینکه اطلاعات وارد منطق برنامه یا دیتابیس بشن، میتونیم بررسی کنیم:
• ایمیل معتبره یا نه
• مقدارها نوع درستی دارن یا نه
• فیلدهای ضروری ارسال شدن یا نه
• دادهها محدودیتهای تعریفشده رو رعایت میکنن یا نه
در این مقاله نحوه پیادهسازی Validation در Express.js با Zod رو بررسی کردیم 👇
https://codenight.ir/articles/express-validation-zod
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
codenight.ir
اعتبارسنجی ورودی در Todo List با Express و Zod | ولیدیشن در اکسپرس با Zod
آموزش اعتبارسنجی دادههای ورودی در API با Express.js و Zod؛ بخش ششم سری آموزشی ساخت Todo List، همراه با مثال کد کامل و middleware آماده
❤3
️ CodeNight | آموزش برنامه نویسی pinned «👋 به کدنایت خوش اومدی 💚 کدنایت یک پلتفرم آموزش برنامهنویسی و توسعه نرمافزاره؛ از شروع مسیر تا مباحث حرفهای. اینجا درباره این موضوعات محتوا داریم: 💻 مباحث Backend و Frontend 🤖 هوش مصنوعی و vibe coding و AI Engineering 🟢 آموزش Node.js و NestJS 🐹 آموزش…»
🔓 ریسک امنیتی که Vibe Coding با خودش میآورد
سرعت وسوسهانگیز Vibe Coding یک قیمت پنهان دارد: کد تولیدشده اغلب کار میکند، اما امن نیست. این فاصلهی بین «کار کردن» و «امن بودن» همین حالا موضوع داغ تحقیقات امنیتی است.
📊 عدد نگرانکننده
پژوهش Carnegie Mellon نشان داد ۶۱٪ کدهای تولیدشده با AI بهدرستی اجرا میشوند، اما فقط ۱۰.۵٪ از بازبینی امنیتی سربلند بیرون میآیند. یعنی اکثر کدهایی که «کار میکنند»، حفره امنیتی هم دارند.
⚖️ چرا اینطور میشود؟
تست Veracode نشان داد وقتی مدل بین یک پیادهسازی امن و یک ناامن حق انتخاب دارد، در ۴۵٪ موارد گزینه ناامنتر را پیشنهاد میدهد؛ چون رایجترین الگو در دادههای آموزشی همیشه امنترین الگو نیست.
🔬 شاهد میدانی
تیم Georgia Tech با ابزار Vibe Security Radar روی بیش از ۴۳ هزار گزارش امنیتی، دهها آسیبپذیری بحرانی (command injection، bypass احراز هویت، SSRF) را ردیابی کرد که مستقیماً از کد AI-generated آمده بود — و روند در سال ۲۰۲۶ بهشدت صعودی است.
💻 مثال ملموس (NestJS + TypeORM):
🎯 نکته طلایی: هیچوقت کدی که AI نوشته را بدون یک پاس امنیتی جدا (SAST یا review دستی روی auth و input) مرج نکن. سرعت Vibe Coding نباید جای Code Review را بگیرد.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
#VibeCoding #کدنایت #امنیت_کد #AI_Agent #برنامه_نویسی #NestJS
.
سرعت وسوسهانگیز Vibe Coding یک قیمت پنهان دارد: کد تولیدشده اغلب کار میکند، اما امن نیست. این فاصلهی بین «کار کردن» و «امن بودن» همین حالا موضوع داغ تحقیقات امنیتی است.
📊 عدد نگرانکننده
پژوهش Carnegie Mellon نشان داد ۶۱٪ کدهای تولیدشده با AI بهدرستی اجرا میشوند، اما فقط ۱۰.۵٪ از بازبینی امنیتی سربلند بیرون میآیند. یعنی اکثر کدهایی که «کار میکنند»، حفره امنیتی هم دارند.
⚖️ چرا اینطور میشود؟
تست Veracode نشان داد وقتی مدل بین یک پیادهسازی امن و یک ناامن حق انتخاب دارد، در ۴۵٪ موارد گزینه ناامنتر را پیشنهاد میدهد؛ چون رایجترین الگو در دادههای آموزشی همیشه امنترین الگو نیست.
🔬 شاهد میدانی
تیم Georgia Tech با ابزار Vibe Security Radar روی بیش از ۴۳ هزار گزارش امنیتی، دهها آسیبپذیری بحرانی (command injection، bypass احراز هویت، SSRF) را ردیابی کرد که مستقیماً از کد AI-generated آمده بود — و روند در سال ۲۰۲۶ بهشدت صعودی است.
💻 مثال ملموس (NestJS + TypeORM):
// ❌ الگویی که مدلها گاهی پیشنهاد میدهند
const user = await this.repo.query(
`SELECT * FROM users WHERE email='${email}'`
);
// ✅ همیشه پارامتری بنویس
const user = await this.repo.query(
"SELECT * FROM users WHERE email = ?",
[email]
);
🎯 نکته طلایی: هیچوقت کدی که AI نوشته را بدون یک پاس امنیتی جدا (SAST یا review دستی روی auth و input) مرج نکن. سرعت Vibe Coding نباید جای Code Review را بگیرد.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
#VibeCoding #کدنایت #امنیت_کد #AI_Agent #برنامه_نویسی #NestJS
.
❤3
👨🏻💻 مفاهیمی که هر وایبکدری باید بدونه
اگه با Codex، Claude Code، Cursor یا Copilot کد میزنی، این ۳ مفهوم رو باید بشناسی:
🔹 Token
مدلهای AI متن، کد و فایلها رو به تکههای کوچیکی به اسم Token تبدیل میکنن. هرچی اطلاعات بیشتری به مدل بدی، Token بیشتری مصرف میشه.
🔹 Context
تمام اطلاعاتیه که AI در اون لحظه برای تصمیمگیری در اختیار داره؛ مثل Prompt، پیامهای قبلی، فایلهای پروژه، کدها، Skillها و خروجی ابزارها.
🔹 Context Window
حداکثر حجمی از Tokenهاست که مدل میتونه همزمان پردازش کنه. وقتی این فضا پر بشه، ممکنه اطلاعات قدیمیتر از Context خارج بشن و AI بعضی جزئیات قبلی پروژه رو فراموش کنه.
💡 پس در Vibe Coding فقط Prompt مهم نیست؛ باید یاد بگیری Context رو درست مدیریت کنی، اطلاعات اضافه رو حذف کنی و اطلاعات مهم پروژه رو در دسترس AI نگه داری.
این یکی از تفاوتهای مهم بین «کد زدن با AI» و مهندسی نرمافزار با AI هست.
کانال آموزشی کدنایت | آموزش برنامه نویسی 👇👇
https://t.me/codenight_ir
https://t.me/codenight_ir
#AI #VibeCoding #Context #Token #LLM #Programming
اگه با Codex، Claude Code، Cursor یا Copilot کد میزنی، این ۳ مفهوم رو باید بشناسی:
🔹 Token
مدلهای AI متن، کد و فایلها رو به تکههای کوچیکی به اسم Token تبدیل میکنن. هرچی اطلاعات بیشتری به مدل بدی، Token بیشتری مصرف میشه.
🔹 Context
تمام اطلاعاتیه که AI در اون لحظه برای تصمیمگیری در اختیار داره؛ مثل Prompt، پیامهای قبلی، فایلهای پروژه، کدها، Skillها و خروجی ابزارها.
🔹 Context Window
حداکثر حجمی از Tokenهاست که مدل میتونه همزمان پردازش کنه. وقتی این فضا پر بشه، ممکنه اطلاعات قدیمیتر از Context خارج بشن و AI بعضی جزئیات قبلی پروژه رو فراموش کنه.
💡 پس در Vibe Coding فقط Prompt مهم نیست؛ باید یاد بگیری Context رو درست مدیریت کنی، اطلاعات اضافه رو حذف کنی و اطلاعات مهم پروژه رو در دسترس AI نگه داری.
این یکی از تفاوتهای مهم بین «کد زدن با AI» و مهندسی نرمافزار با AI هست.
کانال آموزشی کدنایت | آموزش برنامه نویسی 👇👇
https://t.me/codenight_ir
https://t.me/codenight_ir
#AI #VibeCoding #Context #Token #LLM #Programming