Dev Fuel – Telegram
Dev Fuel
144 subscribers
41 photos
12 videos
28 links
تو این چنل قراره در مورد تکنولوژی های مختلف برنامه نویسی ، خصوصا JS با هم کلی چیز یاد بگیریم.
(بیشتر حول محور بک اند).
Download Telegram
دانشگاه برای آموزش اصول بنیادی علوم کامپیوتر ساخته شده، نه برای یاد دادن ابزارها و فریم‌ورک‌های مد روز مثل React یا HTML/CSS.
اگه کسی انتظار داره توی رشته‌ی کامپیوتر در دانشگاه، نحوه‌ی ساختن صفحات وب با React یا Vue رو یاد بگیره، هدف اصلی این رشته رو اشتباه فهمیده.

🔹 دانشگاه می‌خواد بهت تفکر الگوریتمی، مدیریت حافظه، درک عمیق از ساختار داده‌ها، و مبانی برنامه‌نویسی رو یاد بده — نه چیزهایی که با دیدن ویدیو تو یوتیوب می‌تونی یاد بگیری.
🔹 زبان‌هایی مثل C و ++C رو انتخاب می‌کنن چون تمرکز روی مفاهیم پایه و بهینه‌سازیه، نه راحتی یا سرعت یادگیری.

در نهایت:

> دانشگاه مهندس حل مسئله تربیت می‌کنه، نه صرفاً کدنویس با دانش یه ابزار خاص.

🤖خلاصه سازی شده یک دیدگاه با هوش مصنوعی
👍2
منطقی مثل Js 👀
3
‏Node.js با وجود Single thread بودنش، چطور تسک‌های سنگین رو انجام میده؟🤔
(مدیونید اگه احساس کنید پست طولانیه و نخونید. خدا شاهده از سر و تهش کلی زدم طولانی نیست بخون به درد میخوره 😂❤️)

این بزرگوار (Node.js) با وجود اینکه تک‌نخ (Single Thread) هست، پشت صحنه یه Thread Pool داره که عصای دستشه. یعنی چی حالا؟

ما می‌دونیم که Node.js یک ران‌تایم غیرهمزمان (asynchronous) هست. یعنی وقتی داره خط به خط کدها رو اجرا می‌کنه، اگه به یه عملیات سنگین یا زمان ‌بر برسه، کل نخ اصلی رو نگه نمیداره تا اون عملیات تموم بشه. پس چی کار می‌کنه؟

(پیام بازرگانی :
ببینید تسک‌های زمان بر کلاً دو دسته اند. یه سری‌شون که سنگینن و نیاز به پردازش CPU دارن (مثل خوندن فایل یا رمزنگاری)، میرن به Thread Pool. یه سری دیگه که بیشتر منتظر I/O هستن (مثل درخواست HTTP یا اتصال به دیتابیس)، به سیستم‌عامل سپرده می‌شن و اصلاً به Thread Pool نیازی ندارن. مثلاً Promise‌ هاتوی خود نخ اصلی توسط Event Loop مدیریت می‌شن و به Thread Pool نمیرن، مگه اینکه داخلشون یه عملیات سنگین (مثل رمزنگاری) باشه. خلاصه که Node.js هر تسک رو می‌فرسته جای درستش. خودش هم میره سراغ اجرای خط بعدی کد. )

‏Event Loop‌‏ چیه؟

‏Event Loop‏ قلب تپنده‌ی Node.js هست. یه حلقه‌ی بی انتهاست که مدام چک می‌کنه آیا تسک جدیدی توی Event Queue (صف رویدادها) هست یا نه. اگه باشه، اون تسک رو بر میداره و اجرا می‌کنه. اگه نباشه، منتظر می‌مونه تا یه تسک جدید بیاد. یعنی بیچاره نخ اصلی هیچوقت بیکار نمی‌مونه.

‏Event Queue چیه؟

اینطوری در نظر بگیریم که یه صف هست که تمام کارهایی که منتظر اجرا هستن توش وایستادن. هر وقت یه عملیات غیرهمزمان (مثل پاسخ یه درخواست HTTP یا خوندن یه فایل) تموم می‌شه، نتیجه‌ش میاد تو این صف و Event Loop اونو بر میداره و اجرا می‌کنه.

‏Thread Pool چطور کار می‌کنه؟اینهمه پیش زمینه گفتیم که برسیم به اصل موضوع این پست.

برای عملیات سنگین (مثل دسترسی به فایل‌سیستم، فشرده‌سازی داده‌ها یا رمزنگاری)، Node.js از یه Thread Pool که معمولاً ۴ تا نخ داره استفاده می‌کنه. این نخ‌ها جدا از نخ اصلی هستن و توسط libuv (یک لایبرری نوشته شده با C) مدیریت میشن. وقتی یه تسک سنگین به Node.js میدیم ، اونو می‌فرسته به Thread Pool، و وقتی کار تموم شد، نتیجه رو برمی‌گردونه به Event Queue تا نخ اصلی بتونه پردازشش کنه.

این معماری باعث می‌شه Node.js برای برنامه‌هایی که ورودی/خروجی (I/O) زیادی دارن (مثل وب‌سرورها) خیلی سریع و بهینه باشه. اما اگه تسک‌ها خیلی سنگین باشن (مثل محاسبات پیچیده)، ممکنه Thread Pool پر بشه و عملکرد افت کنه. برای اینجور کارا معمولاً از ابزارهای دیگه یا Worker Threads استفاده می‌شه.
#nodejs
1
بله؟😐
قسم خورد؟ از تجربه‌اش گفت ؟
یکی جلوی سم آلتمن رو بگیرههه
چقدر غم انگیزه واقعا...
گناه ما واقعا چی بود؟
چقدر هممون هر روز داریم تلاش می‌کنیم توی این جامعه زنده بمونیم. چقدر تلاش می‌کنیم که فعال بمونیم. اون از بیرون این از درون... هم درون داره نابودمون می‌کنه هم بیرون باهامون مشکل داره.
این تصاویر برای هممون عادیه مثل خیلی چیزای دیگه که نباید عادی می‌بود.
روزانه کلی زمان می‌ذاریم که توی این فضای لعنتی بگیم ایرانی نیستیم بابا نترس ، اجازه بده وارد بشم.
یه نظر سنجی داشته باشیم ببینم بیشتر دوست دارید پست ها تو چه زمینه ای باشه
Anonymous Poll
35%
Js
38%
NodeJs
23%
NestJs
50%
همه چی
15%
پهپ
Forwarded from Digiato | دیجیاتو
💢مدیرعامل گیت‌هاب کناره‌گیری کرد؛ پروژه‌ها تحت نظارت تیم CoreAI مایکروسافت قرار می‌گیرد

🔺«توماس دومکه» (Thomas Dohmke)، پس از مدت‌ها فعالیت به‌عنوان مدیرعامل #گیت_هاب، از این مسئولیت کنار رفت و گیت‌هاب اکنون ارتباط و تعامل عمیق‌تری با تیم CoreAI مایکروسافت دارد.

🔺#مایکروسافت پس از خروج دومکه که نزدیک به ۴ سال در این جایگاه بود، تصمیم گرفته است گیت‌هاب را به‌صورت مستقیم‌ در ساختار تیم CoreAI ادغام کند. دومکه اعلام کرده قصد دارد بار دیگر وارد دنیای استارتاپ‌ها شود و فرصت‌های جدیدی را خارج از مایکروسافت و گیت‌هاب دنبال کند.

🔺از زمانی که مایکروسافت در سال ٢٠١٨ با پرداخت ٧.۵ میلیارد دلار گیت‌هاب را خرید، این پلتفرم به‌عنوان یک شرکت مستقل فعالیت می‌کرد. اما استعفای دومکه بخشی از یک تغییر سازمانی بزرگ است که نحوه مدیریت گیت‌هاب را دگرگون می‌کند. مایکروسافت تصمیم گرفته جایگزینی برای مدیرعاملی گیت‌هاب تعیین نکند و تیم مدیریت گیت‌هاب حالا مستقیماً به تیم CoreAI گزارش خواهند داد.

جزئیات بیشتر
🔸🔸🔸
🟣 Digiato
🎞 Digiatoofficial
🤖 Digiato
💭 @Digiato
Please open Telegram to view this post
VIEW IN TELEGRAM
💔3
خب دوستان به نظر باید دنبال جایگزین گیت هاب باشیم که مایکروسافت قراره تو اینم گند بزنه
😐2
از فردا بابت هر کامیت باید پول بدیم 😂
‏داینامیک ماژول در NestJS چیست؟

ماژول‌های NestJS معمولاً ثابت‌اند. یعنی یه چیزی مثل UserModule می‌سازیم، و فقط یک بار import می‌کنیم و تمام.

ولی اگه بخوایم ماژولی بسازیم که در هر پروژه با کانفیگ خودش کار کنه چی؟
مثلاً یه دیتابیس ماژول که تو یه پروژه با Postgres وصل شه، تو یکی دیگه با MySQL!
اینجاست که Dynamic Module میاد وسط.

‏ Dynamic Module یعنی ماژولی که موقع import شدن می‌تونی بهش option بدی تا خودش رو همون‌جا بر اساس اون option پیکربندی کنه.

مثال:

@Module({})
export class DatabaseModule {
static register(options: DbOptions): DynamicModule {
return {
module: DatabaseModule,
providers: [
{ provide: 'DB_OPTIONS', useValue: options },
],
exports: ['DB_OPTIONS'],
};
}
}

حالا هر جا که خواستیم:

imports: [
DatabaseModule.register({ host: 'localhost', port: 5432 }),
]

این کد یعنی DatabaseModule رو تو چند جای مختلف با کانفیگ‌های مختلف استفاده می‌کنیم بدون اینکه کدشو تغییر بدیم.

‏ NestJS پشت صحنه این رو به عنوان یه ماژول جدید می‌شناسه و Provider های‌اون رو مطابق چیزی که دادیم تزریق می‌کنیم.

میشه از این ویژگی در Logger، Auth، Database یا هر سرویس Shareable که تو پروژه‌های مختلف با تنظیمات مختلف کار می‌کنه استفاده کنیم.
#nestjs
Dev Fuel
نست کوئیز:در NestJS اگر یک ماژول معمولی را در چند FeatureModule مختلف import کنیم، NestJS چه رفتاری با سرویس‌های آن ماژول دارد؟
نکته:
بچه ها FeatureModule چیزی نیست که مختص به نست باشه.
مفهوم FeatureModule یعنی ماژولی که برای یک کار خاص ساخته میشه و یک قابلیتی ارائه میده. در نست هم در نهایت زیر مجموعه App Module هستند.
Dev Fuel
نست کوئیز:در NestJS اگر یک ماژول معمولی را در چند FeatureModule مختلف import کنیم، NestJS چه رفتاری با سرویس‌های آن ماژول دارد؟
خب بچه ها الان راجع به این کوئیز یک توضیح مفصل ریز خدمتتون میدم.
جواب کوئیز رو با توضیحات زیر می‌تونید پیدا کنید 👇
چه زمانی سرویس‌های NestJS دیگر Singleton نیستند؟

در NestJS، تمام provider ها به‌صورت پیش‌فرض Singleton هستند.
یعنی فقط یک بار ساخته می‌شوند و همه‌ جا share می‌شوند حتی اگر چند جا import کنیم.

اما دو حالت وجود داره که provider دیگه singleton نیست.

1- وقتی Scope رو تغییر بدیم. اسکوپ یعنی چی؟

‏ Scope مشخص می‌کنه طول عمر (lifecycle) یک provider چقدره و NestJS چه زمانی نمونه جدید ازش می‌سازه.و نست 3 مدل اسکوپ داره:

‏ Singleton (پیش‌فرض): یه بار ساخته میشه و همه استفاده میشه.

‏ Request: برای هر درخواست HTTP یه نمونه جدید ساخته میشه.

‏ Transient: هر بار inject شدن یه نمونه جدید ساخته میشه.

مثال:
@Injectable({ scope: Scope.REQUEST })
export class MyRequestService {}

این سرویس دیگه singleton نیست چون برای هر request دوباره ساخته میشه.

2- وقتی ماژول Dynamic باشه. که چند پست بالاتر راجع بهش توضیح دادیم.

#nestjs
تا به حال براتون پیش اومده که بخواین داکیومنت یک تکنولوژی رو بخونین ، و احساس کنید که براتون سخت یا حوصله سر بره؟

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

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

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

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

پس پیشنهاد می‌کنم که واقعا روی انگلیسیتون کار کنید. خودتون مشاهده خواهید کرد که چقدر سرعت پیشرفتتون افزایش پیدا می‌کنه.
👍2
شما هم تا حالا شده که در نام گذاری فانکشن ، متغییر ها و ... به مشکل بخورین؟
قبل از ظهور AI وقتی به این مشکل میخوردم کلی بابتش فکر می‌کردم و گاها حسابی وقت می‌گرفت.
بعد که AI اومد ، این روند تسریع پیدا کرد و من ازش برای نام گذاری ها وقتی واقعا گیر می‌کردم ، کمک می‌گرفتم.

چند روز پیش سر انتخاب نام یک فانکشن به مشکل خوردم و خواستم از یک AI کمک بگیرم دلم نیومد😂.
چون همانطور که میدونید سریع لیمیت می‌خورن. این شد که به سرم زد یک ابزار توسعه بدم!
ابزاری که توی کامند لاین همیشه دم دستته ، و وسط کار وقتی گیر کردی کافیه فقط صداش بزنی و بگی مشکلت چیه.
من برای نام گذاری هر کدوم از این موارد : function , variable , constants , class ، یک پرامپت مخصوص نوشتم که نام های مخصوص بده.

و از اونجایی که ollama خیلی معروف شده (برنامه ای که به شما این امکان رو میده تا از بین کلی مدل هوش مصنوعی که داره هر کدوم رو خواستین روی سیستم خودتون نصب کنید و آفلاین و رایگان از هوش مصنوعی استفاده کنید)، من هم از ollama استفاده کردم و هم از openai api key. یعنی اگه api key دارید که هیچ ، اگه ندارید کافیه فقط یکی از مدل های ollama توی سیستمون نصب باشه.

در حال حاضر این ابزار قابلیت تولید نام با توضیحات رو داره و ابتداییه.
اما به نظرم پتانسیل خوبی داره و میتونه گامی در شروع استفاده از مدل های لوکال و رایگان ، در برنامه نویسی باشه! و کلی فیچر بهش اضافه کرد.

اسم این ابزار نامورا (namora) هست و برای استفاده کافیه از npm با دستور زیر نصبش کنید :
npm i -g namora-cli

و بعد دستور namora رو بزنید.

Git Hub :

https://github.com/rezadev8/namora
🔥4
از تجربه در یک مصاحبه بگم که بهم بر خورد واقعاً.
چند روز پیش تماس گرفتن و دعوت شدم برای مصاحبه حضوری.
امروز تایمم رو برای ساعت 2 و نیم ظهر خالی کردم و رفتم برای مصاحبه ، یک فرم دادن که یک سری سوالاش کلا عجیب بود
اطلاعات نزدیک ترین خویشاوندان هم توش پرسیده بودن 🤦‍♂
ده دقیقه نشستم فرم پر کردم ، یکی فرم رو گرفت گفت دانشجویی ؟ گفتم در آینده خیلی نزدیک بله.
گفت ما دانشجو قبول نمی‌کنیم فقط فول تایم.
اگه فکر می‌کنی قراره بری دانشگاه و فول تایم نیستی فرم رو ندم مهندس 😐

یکی نیست بگه عزیز من مگه تو رزومه من رو نخوندی ؟ من که توش همه چیز رو ذکر کرده بودم.
اینهمه هم وقت ما رو گرفتی.
هیچی نگفتم بهشون ولی ای کاش یه چیزی می‌گفتم.
حداقل شاید در ادامه در روند مصاحبشون تاثیر می‌ذاشت🤦‍♂
👍2
Wooow!

یادش بخیر ، من هم سن ایشون بودم داشتم تو نوکیا مار بازی می‌کردم.
(فقط خداکنه هیچ پدر ایرانی این ویدیو رو نبینه 😂)
🤣1