Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
آشنایی با ابزار قدرتمندی به نام Bit 💀

‏Bit یک پلتفرم برای ایجاد و مدیریت کامپوننت‌های قابل استفاده مجدد هست که به دولوپرا امکان ساخت، اشتراک‌گذاری و همکاری در پروژه‌های نرم‌افزاری ماژولار رو میده.

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

🔵کامپوننت‌های ماژولار: Bit امکان ایجاد کامپوننت‌هایی رو فراهم می‌کنه که میشه از اونها در پروژه های مختلف استفاده کرد. این ویژگی باعث افزایش کارآیی و کاهش تکرار در کدنویسی میشه.

🔵محیط‌های توسعه قابل سفارشی‌سازی: دولوپرا می‌تونن محیط توسعه خودشون رو با ابزارها و تنظیمات دلخواه سفارشی‌سازی کنن.

🔵پیش‌نمایش و مستندسازی خودکار: Bit به طور خودکار پیش‌نمایش و مستندات کامپوننت‌ها رو تولید می‌کنه، که استفاده و نگهداری از کامپوننت‌ها رو ساده‌تر می‌سازه.

🔵پلتفرم Harmony‏: Bit‏ شامل یک چارچوب ترکیبی به نام Harmony هست که به دولوپرا این امکان رو میده، که ویژگی‌های مختلف رو در یک پلتفرم واحد ترکیب و یکپارچه کنن. این ویژگی به تسهیل همکاری تیمی و ادغام سریع‌تر ویژگی‌های جدید کمک می‌کنه.

🔵مدیریت وابستگی ها: وابستگی‌ها به طور خودکار شناسایی و بروزرسانی میشن. این ویژگی باعث میشه پروژه‌ها مستقل باقی بمونن و همزمان به خوبی با یکدیگر یکپارچه بشن.

🔵پشتیبانی از CI/CD: این پلتفرم از فرآیندهای پیوسته یکپارچه‌سازی و استقرار (CI/CD) پشتیبانی می‌کنه، که امکان تست و استقرار خودکار کامپوننت‌ها رو فراهم می‌کنه و باعث افزایش کیفیت و سرعت توسعه میشه.


برای کسب اطلاعات بیشتر و نحوه استفاده از امکانات Bit.dev، به داکیومنتش مراجعه کنید.

Document 🌐

#bit
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥13😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁123👌3
تجربه های کاری 🦦

یه سایت کاربردی پیدا کردم که با استفاده از اون میتونید، تجربه سایر دولوپرا در مورد شرکت مد نظرتون رو بخونید (مصاحبه، کار و ...)

همچنین این پروژه اوپن سورسه و شما هم میتونید در گسترش اون نقشی داشته باشید‌.

🔗 https://tajrobe.github.io/

#work
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌12🔥4😁1
پکیج های منسوخ شده رو پیدا کن ❗️

به تازگی یکی از دوستان پکیجی منتشر کرده که با استفاده از اون، میتونید یک ریپورت از آخرین باری که پکیج های پروژتون پابلیش شده بگیرید، و بهتون به صورت میانگین میگه اون پکیج چند روز یک بار داره آپدیت میشه.

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

در صورت تمایل برای کسب اطلاعات بیشتر و نحوه نصب و استفاده، میتونید به داکیومنتش مراجعه کنید.
⛽️ npm

🌪 github


همچنین با سازنده این پکیج، جناب آقای مهدی شیبک هم میتونید در ارتباط باشید🩶

#npm
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥6😁1
چالش داریم چه چالشی 😄

تو چالش امروز شما باید یک سیستم سفارش غذا برای یک رستوران طراحی کنید که به مشتریان اجازه میده، تا هر طور که دوست دارن سفارش غذا بدن. این سیستم باید دارای اجرای مختلفی باشه، مانند:

1⃣اجزای غذا:

- غذا: نام، اندازه،
- نوشیدنی ها: نام، نوع (به عنوان مثال، نوشابه، آبمیوه).

2⃣سفارش غذا:

- یک سفارش غذا میتونه شامل چندین نمونه از هر جزء باشه (به عنوان مثال،1 ​غذای اصلی، 3 تا نوشیدنی).

- سفارش باید به گونه ای نمایش داده بشه که به راحتی قابل خواندن و تغییر باشد.

3⃣توسعه پذیری:

- سیستم رو طوری طراحی کنید که به راحتی قابل تغییر باشه. به عنوان مثال، افزودن یک نوع کامپوننت جدید (مثلاً قرمه سبزی) باید به حداقل تغییرات نیاز داشته باشه.

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

#challenge
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥4😁1
حق داشتی طلاق بگیری، حق داشتی 😔

#fun
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25👌3💔1
پیاده سازی تکست ادیتور در ۳ سوت 🔵

‏SlateJS یک کتابخانه برای ساخت و مدیریت تکست ادیتور یا ویرایشگرهای متن در پروژه های React هست. این کتابخانه به دولوپرا اجازه میده تا ویرایشگرهای متن سفارشی‌سازی‌شده و قدرتمندی ایجاد کنن.

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


Document 🌐

#textEditor
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥4😁1
‏Event-Driven Programming در Node.js 🤟

برنامه‌نویسی رویداد محور، یک پارادایم برنامه‌نویسی هست که در آن جریان برنامه توسط ایونت هایی مانند اقدامات کاربر (کلیک‌ها، فشار دادن کلیدها)، خروجی‌های حسگر یا پیام‌های دیگر programs/thread تعیین میشه. Node.js از این پارادایم به طور گسترده برای مدیریت کارآمد عملیات های ناهمزمان استفاده می‌کنه.

اما این پارادایم چجوری کار میکنه؟ 🪲

1⃣Initialization: هنگامی که یک برنامه Node.js شروع میشه، ایونت لوپ رو مقداردهی اولیه میکنه و شروع به اجرای اسکریپت میکنه.

2⃣Event Registration: ایونت ها و کالبک ها (ایونت هندلر ها) با استفاده از "EventEmitter" یا سایر API ها مانند "http" یا "fs" ثبت میشن.

3⃣Event Emission: هنگامی که یک ایونت رخ میده (به عنوان مثال درخواست HTTP، تکمیل شدن خواندن یک فایل)، Node.js ایونت رو منتشر میکنه و کالبک رو فراخوانی میشه.

4⃣Event Loop: ایونت لوپ ایونت ها رو بررسی و کالبک هارو اجرا میکنه. همچنین task رو در یک حلقه پیوسته پردازش میکنه تا زمانی که کار دیگری برای انجام وجود نداشته باشه.

به صورت کلی Event-Driven Programming در Node.js برای ساخت برنامه های مقیاس پذیر، کارآمد و real-time خوب و قدرتمنده. در صورت تمایل برای کسب اطلاعات بیشتر، مقالات زیر رو میتونید مطالعه کنید.

- Article
- Article
- Article

#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👌3
97 نکته و موردی که هر دولوپر باید از اونها اطلاع داشته باشه 🦦

ریپازیتوری زیر بر اساس کتاب 97 Things Every Programmer Should Know project، ‏۹۷ چیز یا نکته به درد بخور برای دولوپرا رو ترجمه و لیست کرده. پیشنهاد میکنم از دست ندید.

🌪 Repository

#tips
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥94
مبارکت باشه به خوشی استفاده کنی 😔

#fun
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🔥2💔2
پروتکل TCP چیه؟

‏TCP (Transmission Control Protocol) یکی از پروتکل‌های اصلی در مجموعه پروتکل‌های اینترنتی (Internet Protocol Suite) هست که برای انتقال داده‌ها بین دستگاه‌ها، در شبکه‌های مختلف مورد استفاده قرار می‌گیره. TCP اطمینان حاصل میکنه که داده‌ها به صورت صحیح و بدون خطا از مبدأ به مقصد انتقال پیدا کنن. این پروتکل از مکانیزم‌هایی مانند تصحیح خطا، ترتیب‌دهی بسته‌ها و کنترل جریان برای ارائه یک ارتباط قابل اعتماد استفاده می‌کنه.

کاربردهای TCP در Node.js 🤟

در نودجی‌اس، TCP به عنوان یک پروتکل پایه‌ای برای ساخت سرور و کلاینت‌های شبکه استفاده میشه. با استفاده از ماژول net در Node.js، میشه به راحتی سرورهای TCP و کلاینت‌های TCP ساخت. این ماژول امکان ارتباطات همزمان و با کارایی بالا رو فراهم میکنه و برای کاربردهایی مانند چت سرورها، انتقال فایل، و هر نوع ارتباط real-time بین دستگاه‌ها بسیار مناسبه.

به عنوان مثال میتونیم با استفاده از ماژول net به این صورت یک سرور TCP بسازیم:

var net = require('net');

var server = net.createServer(function(socket) {
socket.write('Echo server\r\n');
socket.pipe(socket);
});

server.listen(1337, '127.0.0.1');


به صورت کلی پروتکل TCP یک ابزار قدرتمند و مطمئن برای انتقال داده‌ها در شبکه‌های مختلف هست، که این برای دولوپر ها بسیار مفیده. استفاده از TCP در Node.js میتونه به بهبود عملکرد و قابلیت اطمینان برنامه‌های شبکه‌ای کمک کنه. برای کسب اطلاعات بیشتر مقالات زیر رو پیشنهاد میکنم.

- Article
- Article
- Article

#nodejs #tcp
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥3
الگو دکوراتور چیه؟ 🤔

در برنامه‌نویسی شی‌گرا، الگوی دکوراتور یک الگوی طراحی(design pattern) هست که اجازه میده رفتار جدیدی به یک شیء خاص به صورت پویا اضافه بشه، بدون اینکه بر رفتار سایر اشیاء از همان کلاس تأثیر بزاره. این الگو به اصل مسئولیت تک (Single Responsibility Principle) پایبنده، چون امکان تقسیم وظایف بین کلاس‌های مختلف رو فراهم میکنه و همچنین به اصل باز-بسته (Open-Closed Principle) کمک میکنه، چون میتونه کارکرد کلاس‌ها رو بدون تغییرشون افزایش بده.

توجه داشته باشید این الگو با دکوراتور ها در پایتون یکی نیست‼️

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

* هسته: درواقع قهوه شما جزء اصلی هست و فرقی نداره چه قهوه ای باشه.

* دکوراتورها: ممکنه بخوایید به قهوه خودتون اجزای مختلفی اضافه کنید، که به عنوان دکوراتور عمل میکنن. به عنوان مثال این دکوراتور:

‏* MilkDecorator: شیر رو به قهوه شما اضافه میکنه.
‏* SugarDecorator: شکر رو به قهوه شما اضافه میکنه.
‏* SyrupDecorator: شربت های طعم دار رو اضافه میکنه.

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

برخی از ویژگی های این الگو⬇️

🔵نگهداری آسون‌تر: هسته اصلی برنامه بدون تغییر باقی میمونه، که نگهداری و درک کد رو آسون‌تر میکنه.

🔵پایبندی به اصل باز-بسته: میتونید عملکردهای جدیدی به برنامه اضافه کنید بدون اینکه کدهای موجود رو تغییر بدین.

🔵پایبندی به اصل مسئولیت تک: با تقسیم وظایف به کلاس‌های کوچک‌تر و مستقل، کد رو قابل فهم‌تر و قابل مدیریت‌تر میکنه.

به صورت کلی الگوی دکوراتور، یکی از الگوهای مهم و معروف در زمینهٔ طراحی نرم‌افزاره که به عنوان یک الگوی ساختاری (Structural Pattern) در الگوهای طراحی GoF شناخته میشه. این الگو اهمیت زیادی در توسعه‌ی نرم‌افزار داره، پس پیشنهاد میکنم برای درک بهترش مقالات زیر رو بخونید.

- Article
- Article
- Article

#design_pattern
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73
This media is not supported in your browser
VIEW IN TELEGRAM
همه چی آرومه، من چقدر خوشبختم 😣

#fun
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9
با این ابزار خلاقیت رو به اوج برسون 🚀

‏Bennett Feely یک وبسایت هست که ابزارهای خلاقانه و کاربردی بهتون ارائه میده، که با استفاده از این ابزارها میتونید به سادگی و بدون نیاز به دانش تخصصی، ایده‌های خودتون رو به واقعیت تبدیل کنید.

برخی از ابزارهای Bennett Feely ⬇️

‏* ztext.js: تایپوگرافی 3 بعدی رو به هر وب‌سایت و فونت دلخواهی اضافه کنید.

‏* CSS Scales: این ابزار به شما امکان میده مقیاس‌های رنگی رو از ColorBrewer و van der Walt، Smith و Firing به صورت گرادیانت دریافت کنید.

‏* CSS Pie Chart: با استفاده از گرادیانت‌های مخروطی، نمودارهای دایره‌ای رو به سادگی بسازید.

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


#tools #css
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥2
با ماژول dgram در Node.js آشنا بشید 🐲

ماژول «dgram» در Node.js ابزارهایی رو برای کار با سوکت‌های UDP (User Datagram Protocol) فراهم میکنه. UDP یک پروتکل بدون اتصاله، به این معنی که تبادل short-lived داد ها (داده گرام) رو بین برنامه ها بدون نیاز به اتصال مداوم برقرار می‌کنه.

این ماژول چه کاربردی داره؟ 🤔

* ساخت سوکت های UDP: تابع dgram.createSocket() به شما امکان میده سوکت های UDP رو برای ارسال و دریافت دیتاگرام بسازین. میتونید نوع سوکت رو مشخص کنید (مثلاً «udp4» برای IPv4) و به‌صورت اختیاری یک کالبک برای مدیریت ایونت ها ارائه بدید.

* ارسال و دریافت دیتاگرام: هنگامی که یک سوکت دارید، میتونین از متد «send()» برای انتقال دیتاگرام به یک آدرس و پورت خاص استفاده کنید. متد «send()» داده‌های ارسالی، آدرس مقصد و پورت، و یک کالبک اختیاری برای مدیریت رو می‌پذیره. listener ایونت "message" در سوکت به شما امکان میده دیتاگرام های دریافتی رو دریافت کرده و داده ها رو پردازش کنید.

* مدیریت سوکت: ماژول «dgram» متد های مختلفی رو برای مدیریت سوکت‌های شما ارائه میکنه، از جمله اتصال تنها به یک پورت خاص، پیوستن به گروه‌های چندپخشی برای دریافت پیام‌ها از چندین منبع، و تنظیم ویژگی‌هایی مانند (Time-To-Live (TTL) ) برای دیتاگرام ها.

البته باید توجه داشته باشیم که دیتاگرام های UDP تضمینی برای تحویل ندارن، اگر برنامه شما به تحویل پیام قابل اطمینان و سفارشی نیاز داره، TCP انتخاب بهتریه.


به صورت کلی ماژول dgram در Node.js این مکان رو میده که از سرعت و سادگی UDP برای ارتباط real-time و... استفاده کنید. برای اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید ⚡️

#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103
🖥 لینکدین و 🌐 گیتهاب دو پلتفرم عالی برای شبکه سازی هستن و همون‌طور که میدونید، دولوپری که شبکه سازی خوبی نداشته باشه، مثل نوازنده‌ایه ک ساز نداره.

در بخش کامنت های این پست لینک گیتهاب و لینکدین خودتون رو بفرستید، تا با بقیه دولوپر‌ها آشنا بشید و کانکشن‌های جدید پیدا کنید 💬

#connection
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
11👌4🔥2
میکروسرویس چیه؟ 🦦

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

میکروسرویس ها چجوری کار می کنن؟ 💀

میکروسرویس ها با تجزیه یک برنامه پیچیده به قطعات کوچکتر و مستقل کار میکنن، با هم ارتباط برقرار میکنن و کار میکنن و در نتیجه انعطاف پذیری، مقیاس پذیری، تعمیر و نگهداری آسون تر رو فراهم میکنن. مثل ساخت یک شهر از اجزای ماژولار و به هم پیوسته.

به عنوان مثال فرض کنید ❗️

یک برنامه کوچک داریم که وظیفه اون ارسال ایمیل‌های خوش‌آمدگویی به کاربران جدید هست . این برنامه میتونه به سه میکروسرویس تقسیم بشه⬇️

1. میکروسرویس ثبت‌نام کاربر: مسئول ثبت‌نام کاربران جدید و ذخیره اطلاعات اون‌ها در دیتابیس.

2. میکروسرویس تولید ایمیل: مسئول تولید محتوای ایمیل خوش‌آمدگویی بر اساس اطلاعات کاربر.

3. میکروسرویس ارسال ایمیل: مسئول ارسال ایمیل به آدرس کاربر.

اما این میکروسرویس‌ها به چه صورت با هم کار می‌کنن؟😄

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

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

- Article
- Article
- Article

#microservice
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥4❤‍🔥1
‏AbortController در جاوااسکریپت ✌️

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

AbortController چیه؟ 🤔

‏AbortController یک قابلیته که اجازه میده خیلی راحت بتونیم یک یا چند عملیات Async رو در زمان لزوم متوقف کنیم.

فرض کنید می‌خوایم اطلاعاتی روی سرور آپلود کنیم:
(async function () { 
const res = await fetch('/upload', ... );
const data = await res.json();

return data;
})();

گاهی اوقات می‌بینیم که آپلود بیش از حد معمول طول می‌کشه و می‌خوایم اون رو کنسل کنیم تا برای مثال، دکمه‌ای تحت عنوان «تلاش مجدد» نشون بدیم تا کاربر بیش از اندازه منتظر نمونه. fetch به تنهایی چنین قابلیتی رو نداره. اما برای حل این مسئله AbortController به کارمون میاد.

برای اینکه بتونیم عملیات مد نظرمون رو کنترل کنیم، ابتدا باید با استفاده از AbortController یک کنترلر بسازیم:

const controller = new AbortController(); 

همه کنترلرها یک پراپرتی به اسم signal دارن، که به عنوان یک رابط بین کنترلر و عملیاتی که می‌خوایم اون رو کنسل کنیم هست.


مرحلهٔ بعد اینه که این کنترلر رو به شکل زیر به fetch بشناسونیم. آرگومان دوم fetch که یک آبجکت برای کانفیگ کردن این درخواست هست، یک پراپرتی به اسم signal داره. مقدار اون رو برابر با پراپرتی signal از کنترلر قرار میدیم:

const controller = new AbortController(); 

(async function () {
const res = await fetch('/upload', {
// ...
signal: controller.signal,
});

const data = await res.json();

return data;
})();

حالا هر زمانی که لازم داشتیم می‌تونیم این عملیات رو کنسل کنیم. برای این کار کافیه متد abort از کنترلر رو صدا بزنیم:
const controller = new AbortController(); 

document.getElementById("cancel").onclick = () => {
controller.abort();
}


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

#javascript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥173