Dev Fuel – Telegram
Dev Fuel
144 subscribers
41 photos
12 videos
28 links
تو این چنل قراره در مورد تکنولوژی های مختلف برنامه نویسی ، خصوصا JS با هم کلی چیز یاد بگیریم.
(بیشتر حول محور بک اند).
Download Telegram
به عنوان یک شهروند ایرانی ، وظیفه من هست که این موضوع رو به اشتراک بذارم.

وضعیت آب ایران اللخصوص تهران اصلا خوب نیست 💔
طبق بررسی های انجام شده تهران تا چند هفته دیگه بیشتر آب نداره !💧

بعضی از دوستان فکر می‌کنند کاهش مصرف آب از طرف آنها هیچ تاثیری ندارد ، و یا در صورت کاهش مصرف به دولت کمکی کرده‌اند.

ولی در حال حاضر در صورتی که همین روند ادامه پیدا کنه تا چند هفته دیگه شاهد روز صفر آب خواهیم بود!

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

اطلاعات تکمیلی رو می‌توانید با یک سرچ در اینترنت پیدا کنید و یا این ویدیو رو مشاهده کنید تا متوجه عمق فاجعه بشید 💔

https://youtu.be/kcZ1AoHKhcI?si=GZRV3CIzbNP2A7aH

ممنون از همه دغدغه مندانی که به زندگی خود و دیگران ، ارزش قائل‌اند ❤️
👍4
وقتی ما میگیم پروژه ماژولاره یعنی چی؟🤔
ماژولار یعنی پروژه به چند بخش تقسیم شده. و هر بخش مسئولیت مشخص خودشو داره. مثلا بخش user , auth , payment و ... .
هر ماژول می‌تونه شامل کنترلر، سرویس، مدل، روتر، middleware خودش باشه. کد ها از هم مستقل هستند و وابستگی ها مدیریت شده است.

یه مثال از یک پروژه ای که ماژولار نیست :

controllers/
userController.js
productController.js

routes/
userRoutes.js
productRoutes.js

models/
user.js
product.js

در این ساختار همه چیز در دایرکتوری های مختلف پخش شده.

پروژه ماژولار :

src/
modules/
user/
user.controller.js
user.service.js
user.routes.js
user.model.js
product/
product.controller.js
product.service.js
product.routes.js
product.model.js


هر ماژول به صورت مستقل و جداگانه قابل توسعه و نگهداریه.
در نگاه اول شاید با یک معماری اشتباه گرفته بشه ولی ماژولار بودن یک معماری نیست.ماژولار بودن یک ویژگی از طراحی ساختار پروژه‌ست، ولی به‌تنهایی معماری محسوب نمی‌شه.
معماری یعنی: کل فلسفه و ساختار اصلی سیستم، از نحوه لایه‌بندی گرفته تا ارتباط اجزا با هم.
و ماژولار بودن می‌تونه در معماری های مختلف (Clean Architecture، Onion، Hexagonal , ...) پیاده سازی بشه.

مثلا معماری پیشفرض NestJS معماریه لایه‌ای (Layered Architecture) هست و ساختار ماژولار داره.

#architecture #modular
👍31
تفاوت بین fs.readFileSync و fs.readFile در NodeJs چیه؟🤔
هر دو تابع از promises ماژول fs ایمپورت شدن و برای خوندن فایل هستند. اما تفاتشون توی نحوه اجرا ، و تأثیرشون روی برنامه خیلی زیاده!

یعنی این کد :

fs.readFileSync('file.txt')


با این کد :

await fs.readFile('file.txt')


تفاوت زیادی داره!
بیشتر وقت‌ها فکر می‌کنیم چون await استفاده کردیم، یعنی کدمون مثل fs.readFileSync عمل می‌کنه.
اما متد readFile یک متد asynchronous و non-blocking هست. و پشت صحنه میره داخل Thread Pool اجرا میشه ، و باعث نمیشه کل برنامه برای اجرای این کد متوقف بمونه.
اما متد readFileSync یک synchronous و blocking هست! یعنی مستقیما روی main thread اجرا میشه و کل برنامه تا خوندن فایل تموم نشه متوقف میمونه!

برای درک بهتر این موضوعا باید یکم با مفاهیمی مثل Event Loop، Thread Pool , I/O و Event Queue آشنا باشید.
اگه آشنا نیستید یا متوجه نشدید، کامل این مفاهیم رو هم توضیح می‌دم 💁‍♂️
👍1
تا الان اسم بان (Bun) رو شنیده بودم ولی تا حالا باهاش کار نکرده بودم.
تو این پست می‌خوام درباره تجربه استفاده خودم از بان بگم.

اول از همه بان چیه؟🤔
بان یک JavaScript runtime مثل Node.js هست که سرعت خیلی بالایی داره.

من برای شروع، یه API ساده با Elysia نوشتم.(Elysia یه فریمورک سبک و ultra-fast برای Bun هستش).

و واقعاً نتیجه‌ش خیره‌کننده بود!
سرعت اجرای کد خیلی بالا بود، و در حالت development وقتی تغییری می‌دادم، تو کسری از ثانیه ران می‌شد.
توی همین روند یه کم هم با Hono کار کردم. اونم فریمورک خیلی سبکیه که روی پلتفرم‌های مختلف مثل Cloudflare Workers, Fastly Compute, Deno, Bun و ... کار می‌کنه.
‏Hono‏ هم عملکرد خیلی خوبی داشت، من روی Bun تست گرفتم و نتیجه اون هم خیره کننده بود.

در کل تجربه‌ی اولم با Bun خیلی مثبت بود و واقعاً به آینده‌ش امیدوار شدم.
پیشنهاد می‌کنم شما هم حتما امتحانش کنید و نظر خودتون رو بگید.

در ادامه ، پست بعدی از نتایج بنچ مارک ها رو می‌ذارم تا تفاوت ها رو ببینید.
1
عکس اول مقایسه سرعت بان با سایر تکنولوژی ها بر واحد Request Per Second هست.
طبق این مقایسه ، بان 2 برابر سریع تر از NodeJs ( با فریمورک Fastify ) ، و حتی با Go هم تقریبا برابری می‌کنه.

عکس دوم هم مقایسه فریمورک های Js هست. ElysiaJs بر پایه ران تایم Bun تقریبا 18 برابر سریع تر از اکسپرس بر پایه ران تایم NodeJs هست!

منبع :
https://dev.to/jthanh8144/frameworks-of-bunjs-elysiajs-and-hono-4all
2
نصفه شبی یه موضوع به ذهنم زد راجع بهش تحقیق کنم!
درباره اینکه برنامه نویس ها چطور آدم هایی هستند؟ افراد برنامه نویس ، گیک توی تکنولوژی و ... واقعا چطور عمل می‌کنن؟
آیا همه این افراد همیشه از خلق کردن لذت می‌برن؟ اینکار همیشه براشون لذت بخشه؟

آیا واقعا اینطوریه که توی فیلما نشون میدن؟ یه هودی میپوشی یه کافی می‌زنی بر بدن و می‌ری 24 ساعته می‌چسبی به سیستم؟

دارم راجع بهش تحقیق می‌کنم و به امید خدا فردا یه پست راجع بهش می‌ذارم. راستی نظر شما چیه؟ خود شما چه حسی نسبت به این کار دارید و دیدتون نسبت به کار چطوریه؟

❗️نظر و تجربیات شما در کامنت برامون ارزشمنده ، بهره می‌بریم و در پست بعدی استفاده میشه.
👍5😁1
یه بار داشتم تو سیستم کد می‌زدم ، پسر خاله 9 ساله ام پرسید چیکار داری می‌کنی؟
گفتم هیچی ، دارم کار می‌کنم.

یکم شلوغ کاری کرد، به شوخی تهدیدش کردم گفتم اگه بیشتر از این شلوغ کنی گوشی باباتو هک می‌کنم.

برگشت یه نگاه خردمندانه کرد و گفت :
هه ، تو فقط یه برنامه نویسی هکر نیستی که هک کنی 😶

خواستم بگم یه بچه 9 ساله فرق برنامه نویس و هکر رو فهمید ، خیلی ها هنوز نفهمیدن 😂

پ.ن:روی صحبتم با اوناییه که تا می‌بینن یکی برنامه نویسه میگن : پیج فلان یارو رو برام هک می‌کنی؟🤦‍♂
👍51
🧩 برنامه‌نویسی، ساخت چیزهای جدید، گیک بودن و سر و کله زدن با کلی تکنولوژی آیا همیشه لذت‌ بخشه؟

آیا اصل داستان همون چیزیه که توی فیلما نشون میدن؟ یه هودی می‌پوشی یه کافی هم می‌زنی بر بدن و 24 ساعت توی سیستم؟(البته که شدنیه فقط توی اون کافی یه چیز باید بندازی)

چند روز پیش، یه تسک داشتم که نه سخت بود و نه چالش‌برانگیز. ولی واقعاً حوصله‌شو نداشتم.فقط می‌خواستم سیستمو خاموش کنم و بخوابم.
توی اون لحظه یه سوالی برام پیش اومد . اینکه برنامه نویس های دیگه هم دچار این حس میشن؟ اگه آره در اون لحظه چیکار می‌کنن؟

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

خیلی از برنامه‌نویس‌های معروف و حرفه‌ای دنیا هم دقیقاً همین حس رو داشتن.
چند تا مثال از افراد معروف این حوزه پیدا کردم : ( مثال ها با هوش مصنوعی پیدا شده اند )


👤 Dan Abramov (عضو تیم React – سازنده Redux)

گاهی فقط می‌خوام لپ‌تاپمو ببندم و دیگه هیچ‌وقت برنگردم به برنامه‌نویسی. مخصوصاً وقتی حس می‌کنم هیچ چیزو درست نمی‌فهمم.

👤 Kent C. Dodds (مدرس React و از چهره‌های معروف انجمن JS)

وقتی بچه‌دار شدم، یه مدت واقعاً علاقه‌ای به برنامه‌نویسی نداشتم. حس می‌کردم شاید دیگه هیچ‌وقت نتونم برگردم بهش.

👤 John Carmack (خالق Doom و Quake)

بخش زیادی از زندگی‌مو با اشتیاق برای کدنویسی گذروندم، ولی گاهی دچار خستگی و تکرار شدم. اون موقع‌ها انگیزه‌مو از دست می‌دادم.

خب حالا راهکار چیه؟ در این مدت چه کار هایی کنیم خوبه؟🤔

واقعیت اینه که هیچ راهکار مشخص و قطعی وجود نداره برای هر کسی ممکنه متفاوت باشه.
اما یک سری راهکار های کلی هستند که در این موقعیت می‌تونن کمک کنند :

1⃣ استراحت آگاهانه: گاهی مغز خسته است و یه استراحت کوتاه می‌تونه کمک کننده باشه.(بی هدف در سوشال مدیا گشتن استراحت نیست)


2⃣ یادآوری هدف‌ها: به خودت یادآوری کن چرا شروع کردی. حتی نوشتن یا مرورش می‌تونه شوق اولیه رو زنده کنه.


3⃣ انجام کارهای کوچک و فوری: یه تسک ساده رو کامل کن. حتی یه قدم کوچیک باعث می‌شه دوباره به حرکت بیفتی.

4⃣ صحبت با آدم‌های هم‌مسیر: گپ با کسی که شرایط مشابهی داشته باعث می‌شه بفهمی تنها نیستی و این حس طبیعیه
3🆒2👍1
شما هم مثل من فکر می‌کردین معماری نرم افزار ، فقط در همین حد خلاصه میشد که می‌گفتیم برنامه Microservice, Layered یا ... است؟

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

مثلا اگه شخصی بپرسه معماری که در این برنامه پیاده سازی کردی چیه ، احتمالا بگیم که مثلا معماری این برنامه Microservice , Layered یا ... است. اما در معماری نرم افزار اینها فقط ساختار هستند!

پس معماری نرم افزار دقیقا یعنی چی؟
معماری نرم‌افزار یک هدف دائماً در حال حرکت (تغییرپذیر) است، چون اکوسیستم توسعه‌ی نرم‌افزار به‌سرعت در حال تحول است.
ماهیت معماری نرم افزار به قدری پویاست که حتی ممکنه تعریف خودش هم تغییر کنه!
برخلاف تصور سنتی که معماری رو یه تصمیم‌گیری اولیه و تغییرناپذیر می‌دونه، معماری مدرن باید انعطاف‌پذیر، قابل تغییر و پویا باشه. سبک‌هایی مثل میکروسرویس‌ها این نگاه رو عملی کردند. پس معمارها باید دائماً خودشون و تصمیمات‌شون رو با تغییرات دنیای نرم‌افزار به‌روز کنن.

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

معماری = ساختار + تصمیمات + ویژگی‌ها + اصول طراحی

یعنی معماری شامل این‌هاست:
1-ساختار سیستم (Structure): مثل Microservices یا Layered

2-ویژگی‌های معماری (Architectural Characteristics): مثل مقیاس‌پذیری، در دسترس بودن، امنیت، کارایی و ...

3-تصمیمات معماری (Architecture Decisions): مثلاً چرا فلان تکنولوژی انتخاب شده؟ چرا از این سبک استفاده شده؟ چرا فلان ویژگی مهم‌تر از اون یکیه؟

4-اصول طراحی (Design Principles): مثل Loose Coupling، High Cohesion، Separation of Concerns و ...

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

برگرفته از کتاب Fundamentals of Software Architecture

#architecture
🔥3
متاستفانه یا خوشبختانه من کلا تا حالا روی لینکداین هم نگاه نکردم 😂

امروز بعد مدتها به اکانتم یه نگاه انداختم دیدم کویره ، برای شروع یه چندتا از پست های اینجا رو اونجا می‌ذارم.
لینکش رو هم تو کامنت می‌فرستم شما هم بفرستید همگی با هم ارتباط بگیریم اونور.
(اگه نکته ای چیزی هم راجع بهش میدونید تو کامنت بگید دمتون گرم ❤️)
3👍1
دانشگاه برای آموزش اصول بنیادی علوم کامپیوتر ساخته شده، نه برای یاد دادن ابزارها و فریم‌ورک‌های مد روز مثل 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
بله؟😐
قسم خورد؟ از تجربه‌اش گفت ؟
یکی جلوی سم آلتمن رو بگیرههه
چقدر غم انگیزه واقعا...
گناه ما واقعا چی بود؟
چقدر هممون هر روز داریم تلاش می‌کنیم توی این جامعه زنده بمونیم. چقدر تلاش می‌کنیم که فعال بمونیم. اون از بیرون این از درون... هم درون داره نابودمون می‌کنه هم بیرون باهامون مشکل داره.
این تصاویر برای هممون عادیه مثل خیلی چیزای دیگه که نباید عادی می‌بود.
روزانه کلی زمان می‌ذاریم که توی این فضای لعنتی بگیم ایرانی نیستیم بابا نترس ، اجازه بده وارد بشم.