سوالات مصاحبه ای شرکت های بزرگ 🦦
استخدام شدن در یک شرکت بزرگ برنامه نویسی کار بسیار پر چالش و سختیه. دلیلش هم اینه که اونا به دنبال کسی هستن که بتونه، الگوریتمها و سوالات پیچیدهای که مفاهیم عمیق برنامه نویسی رو هدف قرار میده، به خوبی پاسخ بده.
در ریپازیتوری Coding Interview University، شما میتونید مجموعه عظیمی از سوالات و منابع آموزشی رو پیدا کنید که در هنگام مواجه با استخدام در یک شرکت بزرگ مانند گوگل، فیسبوک و مایکروسافت درگیر اونها خواهید شد.
🌪 Repository
#work
@CodeModule
استخدام شدن در یک شرکت بزرگ برنامه نویسی کار بسیار پر چالش و سختیه. دلیلش هم اینه که اونا به دنبال کسی هستن که بتونه، الگوریتمها و سوالات پیچیدهای که مفاهیم عمیق برنامه نویسی رو هدف قرار میده، به خوبی پاسخ بده.
در ریپازیتوری Coding Interview University، شما میتونید مجموعه عظیمی از سوالات و منابع آموزشی رو پیدا کنید که در هنگام مواجه با استخدام در یک شرکت بزرگ مانند گوگل، فیسبوک و مایکروسافت درگیر اونها خواهید شد.
تمام موضوعاتی که در این ریپازیتوری مطرح شده، به صورت قدم به قدم بوده و بهتره که به صورت مرتب منابع اون رو مطالعه کرده و شاخه به شاخه نشید.
#work
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡2
با این پترن پل درست کنید! 🦦
پترن Bridge یک دیزاین پترن Structural و جزو 23 الگو GoF هست، که در مهندسی نرمافزار استفاده میشه و به معنای جدا کردن یک انتزاع از اجرای اون میباشد به طوری که این دو میتونن به طور مستقل، متفاوت باشن. به عبارت دیگه الگوی Bridge یک انتزاع (what) را از اجرای اون (how) جدا میکنه.
این جدا سازی باعث ترویج:
🟠 انعطاف پذیری: به راحتی با افزودن پیاده سازی های جدید سازگار میشه.
🟠 قابلیت نگهداری: انتزاع یا پیاده سازی ها رو به طور مستقل تغییر میده.
🟠 قابلیت استفاده مجدد: انتزاعات به خوبی تعریف شده استفاده مجدد از کد رو ترویج میکنن.
🟠 تست پذیری: تمرکز بر رفتار انتزاعی، تست رو ساده میکنه.
برای اینکه بهتر این پترن رو درک کنید، مثال زیر رو بخونید:
به کلید و پریز تو اتاقتون نگاه کنید. خود کلید (انتزاع) یک راه استاندارد برای روشن یا خاموش کردن لامپ (operations) ارائه میده. با این حال، سیم کشی برق و نوع لامپ (implementation) میتونه بسته به محل (location) و محل نصب متفاوت باشه. شما میتونید یک لامپ (implementation) رو بدون تأثیر بر نحوه استفاده از کلید (انتزاع) تعویض کنید. به طور مشابه، انواع مختلف کلید ها (اجرا با مکانیزم های مختلف) رو میشه با یک لامپ ثابت (انتزاعی) استفاده کرد.
این پترن چه مشکلاتی رو حل کنه؟ منبع
فرض کنید یک کلاس Shape با دو کلاسی که از اون ارث میبرن به اسم های Circle و Square دارید. شما میخواید این سلسله مراتب کلاس رو برای ترکیب رنگ ها گسترش بدین، بنابراین قصد دارید ساب کلاس های شکل قرمز و آبی بسازین. با این حال، از اونجایی که شما در حال حاضر دو کلاس فرعی دارید، باید چند کلاس مانند BlueCircle و RedSquare نیز بسازید.(خسته کننده هست😶🌫️)
افزودن انواع شکل ها و رنگ های جدید سلسله مراتب اون رو به صورت تصاعدی رشد میده. به عنوان مثال، برای اضافه کردن یک شکل مثلث، باید دو زیر کلاس جدید معرفی کنین، و هر چه جلوتر میریم بدتر میشه. اینجا هست که پترن Bridge به کمکون میاد.
پترن Bridge چجوری کمک میکنه؟
الگوی Bridge سعی میکنه این مشکل رو با تغییر از وراثت به composition حل کنه. به این معنی هست که به جای اینکه تمامی ابعاد و رفتارها در یک سلسله مراتب کلاس واحد نگهداری بشن، این الگو میاد یکی از ابعاد رو به صورت جداگانه در یک سلسله مراتب کلاس مستقل استخراج میکنه. به این ترتیب، کلاسهای اصلی به جای اینکه تمام وضعیتها و رفتارها رو در خود داشته باشن، به یک شی از سلسله مراتب جدید ارجاع میدن.
به صورت کلی پترن Bridge به شما این امکان رو میده که بتونید تغییرات رو به راحتی مدیریت کرده و از کد خود به طور مؤثری استفاده مجدد کنید. برای کسب اطلاعات بیشتر در مورد این پترن، به مقالات زیر مراجعه کنید.
- Article
- Article
- Article
#design_pattern
@CodeModule
پترن Bridge یک دیزاین پترن Structural و جزو 23 الگو GoF هست، که در مهندسی نرمافزار استفاده میشه و به معنای جدا کردن یک انتزاع از اجرای اون میباشد به طوری که این دو میتونن به طور مستقل، متفاوت باشن. به عبارت دیگه الگوی Bridge یک انتزاع (what) را از اجرای اون (how) جدا میکنه.
این جدا سازی باعث ترویج:
برای اینکه بهتر این پترن رو درک کنید، مثال زیر رو بخونید:
به کلید و پریز تو اتاقتون نگاه کنید. خود کلید (انتزاع) یک راه استاندارد برای روشن یا خاموش کردن لامپ (operations) ارائه میده. با این حال، سیم کشی برق و نوع لامپ (implementation) میتونه بسته به محل (location) و محل نصب متفاوت باشه. شما میتونید یک لامپ (implementation) رو بدون تأثیر بر نحوه استفاده از کلید (انتزاع) تعویض کنید. به طور مشابه، انواع مختلف کلید ها (اجرا با مکانیزم های مختلف) رو میشه با یک لامپ ثابت (انتزاعی) استفاده کرد.
این پترن چه مشکلاتی رو حل کنه؟ منبع
فرض کنید یک کلاس Shape با دو کلاسی که از اون ارث میبرن به اسم های Circle و Square دارید. شما میخواید این سلسله مراتب کلاس رو برای ترکیب رنگ ها گسترش بدین، بنابراین قصد دارید ساب کلاس های شکل قرمز و آبی بسازین. با این حال، از اونجایی که شما در حال حاضر دو کلاس فرعی دارید، باید چند کلاس مانند BlueCircle و RedSquare نیز بسازید.
افزودن انواع شکل ها و رنگ های جدید سلسله مراتب اون رو به صورت تصاعدی رشد میده. به عنوان مثال، برای اضافه کردن یک شکل مثلث، باید دو زیر کلاس جدید معرفی کنین، و هر چه جلوتر میریم بدتر میشه. اینجا هست که پترن Bridge به کمکون میاد.
پترن Bridge چجوری کمک میکنه؟
الگوی Bridge سعی میکنه این مشکل رو با تغییر از وراثت به composition حل کنه. به این معنی هست که به جای اینکه تمامی ابعاد و رفتارها در یک سلسله مراتب کلاس واحد نگهداری بشن، این الگو میاد یکی از ابعاد رو به صورت جداگانه در یک سلسله مراتب کلاس مستقل استخراج میکنه. به این ترتیب، کلاسهای اصلی به جای اینکه تمام وضعیتها و رفتارها رو در خود داشته باشن، به یک شی از سلسله مراتب جدید ارجاع میدن.
به صورت کلی پترن Bridge به شما این امکان رو میده که بتونید تغییرات رو به راحتی مدیریت کرده و از کد خود به طور مؤثری استفاده مجدد کنید. برای کسب اطلاعات بیشتر در مورد این پترن، به مقالات زیر مراجعه کنید.
- Article
- Article
- Article
#design_pattern
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥3
با Reflect در جاوااسکریپت بیشتر آشنا بشید ✌️
آبجکت یا شئ Reflect، شامل متدهای استاتیک برای فراخوانی متدهای داخلی interceptable اشیاء جاوااسکریپته. برخلاف اکثر گلوبال آبجکت ها، Reflect یک constructor نیست، یعنی شما نمیتونید از اون با اوپراتور new استفاده کنید یا شیء Reflect رو به عنوان یک تابع کال کنید. تمام ویژگیها و متدهای Reflect استاتیک هستن (مثل آبجکت Math).
✅ آبجکت Reflect مجموعهای از توابع استاتیک رو فراهم میکنه که نامهای مشابهی با متدهای هندلر پروکسی دارن.
مهم ترین استفاده ای که از Reflect میتونیم کنیم، اینه که default behavior رو در traps های (تابعی که رفتار متد داخلی مربوط به شیء یا آبجکتو تعریف میکنه) هندلر پروکسی مشخص کنیم.
یک trap برای متوقف کردن یک عملیات بر روی یک آبجکت استفاده میشه. برای مثال کدی که در خط های پایین تر میبینید، یک پروکسی با trap یک deleteProperty ایجاد میکنه که متد داخلی [[Delete]] رو متوقف میکنه. ()Reflect.deleteProperty برای فراخوانی رفتار پیشفرض [[Delete]] بر روی targetObject بهطور مستقیم استفاده میشه، که میتونید اونو با delete هم جایگزین کنید.
🚀 متدهای
اگر از اپراتور
تقریباً رفتار هر متد
برای کسب اطلاعات بیشتر و درک عمیق تر Reflect و static method هاش، میتونید به منبع زیر مراجعه کنید🏖️
Document🌕
#javascript #reflect
@CodeModule
آبجکت یا شئ Reflect، شامل متدهای استاتیک برای فراخوانی متدهای داخلی interceptable اشیاء جاوااسکریپته. برخلاف اکثر گلوبال آبجکت ها، Reflect یک constructor نیست، یعنی شما نمیتونید از اون با اوپراتور new استفاده کنید یا شیء Reflect رو به عنوان یک تابع کال کنید. تمام ویژگیها و متدهای Reflect استاتیک هستن (مثل آبجکت Math).
مهم ترین استفاده ای که از Reflect میتونیم کنیم، اینه که default behavior رو در traps های (تابعی که رفتار متد داخلی مربوط به شیء یا آبجکتو تعریف میکنه) هندلر پروکسی مشخص کنیم.
یک trap برای متوقف کردن یک عملیات بر روی یک آبجکت استفاده میشه. برای مثال کدی که در خط های پایین تر میبینید، یک پروکسی با trap یک deleteProperty ایجاد میکنه که متد داخلی [[Delete]] رو متوقف میکنه. ()Reflect.deleteProperty برای فراخوانی رفتار پیشفرض [[Delete]] بر روی targetObject بهطور مستقیم استفاده میشه، که میتونید اونو با delete هم جایگزین کنید.
const p = new Proxy({}, {
deleteProperty(targetObject, property) {
// Custom functionality: log the deletion
console.log("Deleting property:", property);
// Execute the default introspection behavior
return Reflect.deleteProperty(targetObject, property);
},
},
);
Reflect
کنترل بیشتری بر نحوه فراخوانی متدهای داخلی فراهم میکنن. برای مثال، ()Reflect.construct
تنها راهیه که میتونید یک تابع تارگت رو با یک مقدار خاص برای new.target
بسازید. اگر از اپراتور
new
برای فراخوانی یک تابع استفاده کنید، مقدار new.target
همیشه خود تابع خواهد بود. این موضوع تأثیرات مهمی بر روی subClass ها داره. برای مثال، ()Reflect.get
به شما اجازه میده تا یک getter رو با یک مقدار this
کاستوم اجرا کنید، در حالی که دسترسی به ویژگیها، همیشه از شیء فعلی به عنوان مقدار this
استفاده میکنه.تقریباً رفتار هر متد
Reflect
رو میشه با بعضی دیگه از سینتکسها یا متدها انجام داد. بعضی از این متدها، متدهای استاتیک هم اسم تو کلاس Object
دارن، هرچند که تفاوتهای ظریفی وجود داره.برای کسب اطلاعات بیشتر و درک عمیق تر Reflect و static method هاش، میتونید به منبع زیر مراجعه کنید
Document
#javascript #reflect
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥3
دورهمی های کدماژول، قسمت سوم
موضوع: همه چیز راجب لینکدین🌐
امشب ساعت 10 این گفتگو و دورهمی رو از دست ندید😄
@CodeModule
موضوع: همه چیز راجب لینکدین
به جرات میتونیم بگیم که «ارتباط» یکی از مهمترین فاکتورهای موفقیت در دنیای امروز و برنامه نویسی هست. شما هرچقدر هم که متخصص و حرفهای باشید، تا کسی از وجود شما خبر نداشته باشه و کانکشن های خوب نداشته باشید، نمیتونید به موفقیت برسید. بنابراین نیاز دارید که برای شناخته شدن در عرصه کاری (نه فقط ایران بلکه در سطح جهان) و برقراری ارتباط با حرفهایها تلاش کنید؛ و کجا بهتر از لینکدین؟!
امشب ساعت 10 این گفتگو و دورهمی رو از دست ندید
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6⚡5
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔵 Link
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡13🔥5
با ماژول async_hooks آشنا بشید! 🪐
ماژول async_hooks در Node.js، ابزار قدرتمندیه که برای کمک به دولوپر ها در ردیابی عملیات ناهمزمان در طول lifecycle یک برنامه طراحی شده. Asynchronous operations ها در Node.js بسیار مهم هستن، و عملیات و I/O کارآمد، ریکوست ها و موارد دیگه رو ممکن میسازن. با این حال، مدیریت و ردیابی این عملیات میتونه چالش برانگیز باشه. ماژول «async_hooks» چارچوبی رو برای ردیابی منابع ناهمزمان فراهم میکنه و بینشهایی رو درباره lifecycle و تعاملات اون ها ارائه میده.
از این ماژول چه زمانی استفاده میشه؟🤔
ماژول «async_hooks» به دولوپر ها اجازه میده تا هوکهای سفارشی بسازن که در طول lifecycle عملیات ناهمزمان فراخوانی میشن. این شامل زمانی هست که اون ها ساخته، اجرا و نابود میشن. با استفاده از این هوک ها، دولوپر ها میتونن درک عمیق تری از نحوه تعامل عملیات ناهمزمان در برنامه های خود به دست بیارن، که میتونه برای دیباگ، نظارت بر عملکرد و context propagation بسیار ارزشمند باشه.
این ماژول چه ویژگی هایی داره؟
1⃣ ردیابی منابع ناهمزمان: دولوپر ها میتونن زمان ساخت، نابودی منابع ناهمگام (مانند تایمرها، پرامیس ها و عملیات I/O) وضعیت فعلی اون ها رو نظارت کنن.
2⃣ مدیریت زمینه: با «async_hooks»، میتونید اطلاعات propagate context رو در سراسر boundaries ناهمزمان منتشر کنین.
3⃣ دیباگ: با اتصال هوک ها به ایونت های ناهمزمان مختلف، میتونید اطلاعات دقیقی در مورد رفتار برنامه خود جمعآوری کنید که برای شناسایی باگ ها، میتونه مفید باشه.
به صورت کلی ماژول async_hooks، به دولوپر ها توانایی ردیابی و مدیریت عملیات ناهمزمان رو با دقت بیشتری ارائه میده. برای کسب اطلاعات بیشتر به داکیومنت اصلی ماژول مراجعه کنید.
#nodejs
@CodeModule
ماژول async_hooks در Node.js، ابزار قدرتمندیه که برای کمک به دولوپر ها در ردیابی عملیات ناهمزمان در طول lifecycle یک برنامه طراحی شده. Asynchronous operations ها در Node.js بسیار مهم هستن، و عملیات و I/O کارآمد، ریکوست ها و موارد دیگه رو ممکن میسازن. با این حال، مدیریت و ردیابی این عملیات میتونه چالش برانگیز باشه. ماژول «async_hooks» چارچوبی رو برای ردیابی منابع ناهمزمان فراهم میکنه و بینشهایی رو درباره lifecycle و تعاملات اون ها ارائه میده.
از این ماژول چه زمانی استفاده میشه؟
ماژول «async_hooks» به دولوپر ها اجازه میده تا هوکهای سفارشی بسازن که در طول lifecycle عملیات ناهمزمان فراخوانی میشن. این شامل زمانی هست که اون ها ساخته، اجرا و نابود میشن. با استفاده از این هوک ها، دولوپر ها میتونن درک عمیق تری از نحوه تعامل عملیات ناهمزمان در برنامه های خود به دست بیارن، که میتونه برای دیباگ، نظارت بر عملکرد و context propagation بسیار ارزشمند باشه.
این ماژول چه ویژگی هایی داره؟
به صورت کلی ماژول async_hooks، به دولوپر ها توانایی ردیابی و مدیریت عملیات ناهمزمان رو با دقت بیشتری ارائه میده. برای کسب اطلاعات بیشتر به داکیومنت اصلی ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3
موقعیت های شغلی لینکدین رو دریاب! 💀
همونطور که تو میتینگ امشبمون مطرح شد، همکار عزیزمون جناب آقای صالح میرباقری، یک چنل داره که میاد آخرین پوزیشن و موقعیتهای شغلی برنامه نویسی(حوزه های مختلف) رو جمع، و در اون منتشر میکنه.
با عضویت در این چنل، خیلی راحت میتونید از آخرین موقعیت های شغلی لینکدین مطلع باشید و در صورت داشتن توانایی، اپلای کنید 🍻
🔗 Channel
#linkedin
@CodeModule
همونطور که تو میتینگ امشبمون مطرح شد، همکار عزیزمون جناب آقای صالح میرباقری، یک چنل داره که میاد آخرین پوزیشن و موقعیتهای شغلی برنامه نویسی(حوزه های مختلف) رو جمع، و در اون منتشر میکنه.
با عضویت در این چنل، خیلی راحت میتونید از آخرین موقعیت های شغلی لینکدین مطلع باشید و در صورت داشتن توانایی، اپلای کنید 🍻
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥5
موضوع دورهمی بعدی؟ 👆
Anonymous Poll
50%
سفر در رودمپ فرانتاند
22%
بررسی توزیعهای لینوکسی
22%
بلاکچین
6%
موضوعهای بهتری هست، تو کامنتا مطرح میکنم 🦦
🔥7😁1
خروجی کد بالا؟ 🤔
Anonymous Quiz
10%
undefined, NaN, 3, 1
13%
undefined, 3, 3, 1
41%
1, 3, 3, 1
7%
undefined, undefined, 3, 1
28%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
⚡6🔥3
Data Lakes چیه و چه کاربردی داره؟😄
دیتا لیک (دریاچه داده) یک مخزن متمرکز هست برای ذخیره انواع داده ها به شکل خام و پردازش نشده. بر خلاف دیتابیس های سنتی، که نیاز به تمیز کردن و سازماندهی دادهها قبل از ذخیرهسازی دارن، دیتا لیک ها میتونن دادهها رو همونطور که هستن ذخیره کنن و به انعطافپذیری و مقیاسپذیری بیشتری اجازه بدن. این باعث میشه که دیتا لیک برای ذخیره حجم زیادی از داده های متنوع از چندین منبع ایده آل باشن.
انواع داده های ذخیره شده در دیتا لیک ها🦦
- داده های ساختاریافته: داده هایی که در ردیف ها و ستون ها سازماندهی میشن، معمولاً در دیتابیس های رابطه ای (مثل دیتابیس های SQL) یافت میشن. به عنوان مثال میشه به سوابق مشتری، گزارش تراکنش ها و... اشاره کرد.
- داده های نیمه ساختاریافته: داده هایی که با یک طرح دقیق مطابقت ندارن اما دارای برخی ویژگی های سازمانی هستند. به عنوان مثال میشه به فایل های CSV، لاگ فایل ها، XML و JSON اشاره کرد.
- داده های بدون ساختار: داده هایی که فاقد قالب یا ساختار از پیش تعریف شده هستند. به عنوان مثال میشه به ایمیل ها، دایکومنت های Word، فایل های PDF اشاره کرد.
- داده های باینری: داده هایی که در فرمت باینری ذخیره میشن مانند تصاویر، فایل های صوتی و ویدئو.
برای درک بهترش به مثال زیر توجه کنید:
یک شرکت بزرگ مثل آمازون رو تصور کنید. آمازون هر روز حجم عظیمی از داده ها رو از منابع مختلف جمع آوری و تولید میکنه، از جمله:
1⃣ داده های مشتری: داده های ساختاریافته از پروفایل های مشتری، تاریخچه خرید و اطلاعات پرداخت ذخیره شده در دیتابیس (فرض بر اینکه از دیتابیس های SQL استفاده میکنه)
2⃣ گزارش های وب: داده های نیمه ساختار یافته از گزارش های سرور که رفتار کاربر در وب سایت رو ردیابی میکنه، مانند صفحات بازدید شده، زمان صرف شده در هر صفحه، و عبارت های جستجو.
3⃣ کامنت در مورد محصول: داده های بدون ساختار از نظرات مشتریان و بازخورد ارسال شده در صفحات محصول، که ممکنه شامل متن، تصاویر و ویدئو باشه.
4⃣ داده های حسگر: داده های دستگاه های IoT(اینترنت اشیا) که در انبارها برای ردیابی سطوح موجودی و حرکت استفاده میشه، و ممکنه در قالب JSON باشن.
5⃣ فایل های چند رسانه ای: داده های باینری از جمله تصاویر محصول، فیلم های تبلیغاتی، و ضبط های صوتی برای تماس های خدمات مشتری.
به طور خلاصه دیتالیک راهحلی انعطافپذیر و مقیاسپذیر برای ذخیرهسازی و تجزیه و تحلیل حجم زیادی از دادههای متنوع ارائه میکنن، که اون ها رو به ابزاری ارزشمند برای سازمانهای مبتنی بر دادههای مدرن تبدیل میکنه. برای کسب اطلاعات بیشتر، پیشنهاد میکنم مطالب زیر رو بخونید:
- Data Swamp
- Data Lakehouse
- Data warehouse
#data_lake
@CodeModule
دیتا لیک (دریاچه داده) یک مخزن متمرکز هست برای ذخیره انواع داده ها به شکل خام و پردازش نشده. بر خلاف دیتابیس های سنتی، که نیاز به تمیز کردن و سازماندهی دادهها قبل از ذخیرهسازی دارن، دیتا لیک ها میتونن دادهها رو همونطور که هستن ذخیره کنن و به انعطافپذیری و مقیاسپذیری بیشتری اجازه بدن. این باعث میشه که دیتا لیک برای ذخیره حجم زیادی از داده های متنوع از چندین منبع ایده آل باشن.
انواع داده های ذخیره شده در دیتا لیک ها
- داده های ساختاریافته: داده هایی که در ردیف ها و ستون ها سازماندهی میشن، معمولاً در دیتابیس های رابطه ای (مثل دیتابیس های SQL) یافت میشن. به عنوان مثال میشه به سوابق مشتری، گزارش تراکنش ها و... اشاره کرد.
- داده های نیمه ساختاریافته: داده هایی که با یک طرح دقیق مطابقت ندارن اما دارای برخی ویژگی های سازمانی هستند. به عنوان مثال میشه به فایل های CSV، لاگ فایل ها، XML و JSON اشاره کرد.
- داده های بدون ساختار: داده هایی که فاقد قالب یا ساختار از پیش تعریف شده هستند. به عنوان مثال میشه به ایمیل ها، دایکومنت های Word، فایل های PDF اشاره کرد.
- داده های باینری: داده هایی که در فرمت باینری ذخیره میشن مانند تصاویر، فایل های صوتی و ویدئو.
برای درک بهترش به مثال زیر توجه کنید:
یک شرکت بزرگ مثل آمازون رو تصور کنید. آمازون هر روز حجم عظیمی از داده ها رو از منابع مختلف جمع آوری و تولید میکنه، از جمله:
به طور خلاصه دیتالیک راهحلی انعطافپذیر و مقیاسپذیر برای ذخیرهسازی و تجزیه و تحلیل حجم زیادی از دادههای متنوع ارائه میکنن، که اون ها رو به ابزاری ارزشمند برای سازمانهای مبتنی بر دادههای مدرن تبدیل میکنه. برای کسب اطلاعات بیشتر، پیشنهاد میکنم مطالب زیر رو بخونید:
- Data Swamp
- Data Lakehouse
- Data warehouse
#data_lake
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3
با قانون dry بیشتر آشنا بشید 🙃
🔵 قانون DRY (Don't Repeat Yourself) یکی از اصول مهم در برنامهنویسی و توسعه نرمافزاره که به معنای "تکرارش نکن" هست.
این اصل بر این باور استواره که هر قطعه اطلاعات یا منطق باید تنها یک بار در کد وجود داشته باشه و در صورت نیاز به استفاده مجدد، باید به اون ارجاع داده بشه. در ادامه به توضیح بیشتر این قانون و مزایاش میپردازیم:
✅ مزایای رعایت کردن قانون DRY:
1️⃣ کاهش خطا: با کاهش روند تکرار کد، احتمال بروز خطا کمتر میشه. اگر یک منطق یا تابع در چندین جا تکرار بشه و نیاز به تغییر داشته باشه، ممکنه بر اثر فراموشی تغییرات در همه قسمتها اعمال نشه و این باعث بروز باگهایی در پروژه بشه.
2️⃣ کد هایی با قابلیت نگهداری بیشتر: کدهای غیر تکراری، برای نگهداری و بهروزرسانی مناسب تر هستن. اگر نیاز به تغییر یک بخش از کد باشه، تنها کافیه اون رو فقط در یک جا تغییر بدید.
3️⃣ بهبود خوانایی: کدهای تمیز و غیر تکراری معمولاً خواناتر هستن و برای سایر دولوپرا یا حتی خود شما در آینده، فهمیدن و درکشون آسون تره.
4️⃣ استفاده مجدد از کد: با پیروی از قانون DRY میتونید از توابع، کلاسها یا ماژولهای مشترک استفاده کنید که باعث صرفهجویی در زمان و تلاش میشه.
❓ نحوه پیادهسازی و پیروی از قانون DRY :
◀️ استفاده از توابع و متدها: منطق مشترک رو در توابع یا متدها قرار بدید و به جای تکرار آن در کد، از اونا استفاده کنید.
◀️ استفاده از کلاسها و ارث بری: در زبانهای شیءگرا، میتونید از وراثت برای ایجاد کلاسهای فرزند استفاده کنید تا کدهای تکراری رو کاهش بدید.
◀️ ماژولار کردن کد: کد رو به ماژولها یا بستههای کوچک تقسیم کنید که هر کدوم وظیفه خاصی رو انجام میدن. این کار باعث میشه که هر ماژول بتونه بهطور مستقل مورد استفاده قرار بگیره.
◀️ استفاده از دیزاین پترن ها: الگوهای طراحی یا Design Patterns میتونن به شما کمک کنن، تا بهترین شیوهها رو در ساختاردهی کد خود پیادهسازی کنید و از تکرار جلوگیری کنید.
قانون DRY یکی از اصول بنیادین برنامهنویسیه که به کاهش تکرار و افزایش کیفیت کد کمک میکنه. با پیروی از این اصل، میتونید نرمافزار و پروژههایی با کیفیت بالاتر و قابلیت نگهداری بیشتر ایجاد کنید🏖️
#programming #dry
@CodeModule
این اصل بر این باور استواره که هر قطعه اطلاعات یا منطق باید تنها یک بار در کد وجود داشته باشه و در صورت نیاز به استفاده مجدد، باید به اون ارجاع داده بشه. در ادامه به توضیح بیشتر این قانون و مزایاش میپردازیم:
قانون DRY یکی از اصول بنیادین برنامهنویسیه که به کاهش تکرار و افزایش کیفیت کد کمک میکنه. با پیروی از این اصل، میتونید نرمافزار و پروژههایی با کیفیت بالاتر و قابلیت نگهداری بیشتر ایجاد کنید
#programming #dry
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3
با فریمورک LoopBack.js آشنا بشید! 🦦
LoopBack.js یک فریمورک بسیار قدرتمند Node.js هست، که برای ساخت API و اتصال اون ها به منابع داده بک اند طراحی شده. LoopBack.js به دولوپر ها این امکان رو میده تا APIهای REST رو با حداقل کدنویسی، بسازن.
LoopBack.js در چه مواردی استفاده میشه؟🤔
1⃣ تعریف مدل و دسترسی به داده: LoopBack به دولوپر ها اجازه میده تا مدل هایی رو بر اساس اسکیما ها تعریف کنن و به طور خودکار API های REST رو برای عملیات CRUD تولید کنن. از انواع منابع داده، از جمله دیتابیس ها مانند MySQL، PostgreSQL، MongoDB پشتیبانی میکنه.
2⃣ ادغام با GraphQL: این مورد برای دولوپر هایی که به کوئری انعطاف پذیرتر و کارآمدتر نیاز دارن، کاربردیه. LoopBack از ادغام با GraphQL پشتیبانی میکنه و جایگزین قدرتمندی برای REST هست.
3⃣ احراز هویت و مجوز: پشتیبانی داخلی برای احراز هویت کاربر و کنترل دسترسی مبتنی بر نقش (RBAC)، تضمین میکنه که API های شما ایمن هستن و از داده های کاربر محافظت میشه.
LoopBack.js یک انتخاب قانع کننده برای دولوپر هایی هست که به دنبال ساخت API های قدرتمند، مقیاس پذیر و انعطاف پذیر هستن. مجموعه جامع ویژگی های اون، همراه با یک کامیونیتی فعال و داکیومنت گسترده، اون رو به ابزاری عالی برای توسعه برنامه های کاربردی وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت LoopBack مراجعه کنید.
#nodejs #loopback
@CodeModule
LoopBack.js یک فریمورک بسیار قدرتمند Node.js هست، که برای ساخت API و اتصال اون ها به منابع داده بک اند طراحی شده. LoopBack.js به دولوپر ها این امکان رو میده تا APIهای REST رو با حداقل کدنویسی، بسازن.
LoopBack.js در چه مواردی استفاده میشه؟
LoopBack.js یک انتخاب قانع کننده برای دولوپر هایی هست که به دنبال ساخت API های قدرتمند، مقیاس پذیر و انعطاف پذیر هستن. مجموعه جامع ویژگی های اون، همراه با یک کامیونیتی فعال و داکیومنت گسترده، اون رو به ابزاری عالی برای توسعه برنامه های کاربردی وب تبدیل میکنه.
برای کسب اطلاعات بیشتر به داکیومنت LoopBack مراجعه کنید.
#nodejs #loopback
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥6❤🔥3
شاید برای شما هم سوال باشه که برنامههای بزرگ چطور ساخته میشن؟ 🤔
تو این پست یک ریپازیتوری بهتون معرفی میکنم که دقیقا به همین مسائل پرداخته. در این مخزن شما لیستی از برنامه های بزرگی رو مشاهده میکنید، که با کلیک روی هر کدوم میتونید قدم به قدم فرایند ساخت اونها و منابع آموزشی مربوطه رو مشاهده کنید.
🌐 Repository
#tips
@CodeModule
برای مثال اگه قصد داشته باشیم که یک سیستم عامل درست کنیم باید چه چیزهایی رو بدونیم؟ یا اگه بخوایم کتابخانه جاوا اسکریپتی خودمون رو داشته باشیم، باید چه کارهایی انجام بدیم؟
تو این پست یک ریپازیتوری بهتون معرفی میکنم که دقیقا به همین مسائل پرداخته. در این مخزن شما لیستی از برنامه های بزرگی رو مشاهده میکنید، که با کلیک روی هر کدوم میتونید قدم به قدم فرایند ساخت اونها و منابع آموزشی مربوطه رو مشاهده کنید.
#tips
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - codecrafters-io/build-your-own-x: Master programming by recreating your favorite technologies from scratch.
Master programming by recreating your favorite technologies from scratch. - codecrafters-io/build-your-own-x
🔥14⚡7
ماژولیتیای عزیز 🦦
♨️ آیا میدونستید با ریکشن زدن رو پستا، به ادمینهای کدماژول انرژی میدید؟
♨️ آیا میدونستید برنامه هایی برای سایت اوپن سورس کد ماژول داریم؟
♨️ آیا میدونستید ما هر پنجشنبه ساعت ۱۰، میتینگ و دورهمی های فوقالعاده کاربردی داریم؟ (شما هم میتونید ارائه دهنده باشید)
♨️ آیا میدونستید با فوروارد کردن پستا، از ما و کامیونیتی برنامه نویسی حمایت میکنید؟
♨️ آیا میدونستید گپ کد ماژول، یکی از فعال ترین گپ های حال حاضر برنامه نویسیه؟
♨️ آیا میدونستید روی حمایت ″کدماژول″ از پروژه های اوپن سورستون، میتونید حساب کنید؟
در کنار هم پیشرفت کنیم💙
@CodeModule
و در آخر آیا میدونستید اگه انتقاد یا نظری دارید، میتونید پیوی شاهین، ماهان و مهدی مطرح کنید؟
در کنار هم پیشرفت کنیم
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡34❤🔥11👌5
با Preact و تفاوت هاش با React آشنا بشید
🟣 Preact یک کتابخانه جاوا اسکریپتیه که به عنوان یک جایگزین سریع و سبک برای React طراحی شده. این کتابخانه با React سازگاری داره، بنابراین دولوپرا میتونن یک MVP (محصول حداقلی قابل قبول) رو به یک برنامه کامل React توسعه بدن.
🚀 Preact یک Virtual DOM کوچیک داره که فقط ۳ کیلوبایت حجمشه، که این موضوع باعث انتقال سریعتر از سرور به کلاینت و بهینهسازی loadtime میشه.
Preact همچنین یک compatibility layer با React فراهم میکنه و به عنوان یک جایگزین مناسب عمل میکنه. این باعث میشه که دولوپرا به راحتی بتونن اونو تو برنامههاشون بگنجونن و از همون کد و کتابخانهها استفاده کنن، اما با عملکرد بهتر.
✅ ویژگی های کلیدی و تفاوت های React و Preact
انتخاب بین React و Preact بستگی به نیازها و الزامات خاص پروژه شما داره. هرچند این دوتا کتابخانه دارای ویژگیهای مشابهی هستن، اما تفاوتهای کلیدی بینشون وجود داره.
برای تعیین اینکه کدومشون گزینه بهتریه، باید در نظر بگیرید که آیا عملکرد Preact کافیه یا اگر به ویژگیهای بیشتری که React ارائه میده نیاز دارید. عوامل دیگه ای مثل complexity، اندازه و عملکرد پروژه هم میتونه در این تصمیم تاثیرگذار باشن.
🔢 Complexity: اگر پروژه شما به API پیچیدهتر و بیشتری نیاز داره، React ممکنه انتخاب بهتری باشه. Preact دارای API سادهتریه و ممکنه تمام ویژگیهای پیشرفته React رو نداشته باشه.
🔢 Size : Preact دارای باندل سایز کوچیکتری نسبت به React هست که این میتونه، برای بهینهسازی loadtime برنامه و کاهش استفاده از پهنای باند مفید باشه. اگر سایز یکی از موارد کلیدی پروژه شماست، Preact ممکنه انتخاب بهتری باشه.
برای این که پست زیاد طولانی نشه، ادامه مقاله رو در تلگرافمون بخونید.
#preact #react #different
@CodeModule
Preact همچنین یک compatibility layer با React فراهم میکنه و به عنوان یک جایگزین مناسب عمل میکنه. این باعث میشه که دولوپرا به راحتی بتونن اونو تو برنامههاشون بگنجونن و از همون کد و کتابخانهها استفاده کنن، اما با عملکرد بهتر.
انتخاب بین React و Preact بستگی به نیازها و الزامات خاص پروژه شما داره. هرچند این دوتا کتابخانه دارای ویژگیهای مشابهی هستن، اما تفاوتهای کلیدی بینشون وجود داره.
برای تعیین اینکه کدومشون گزینه بهتریه، باید در نظر بگیرید که آیا عملکرد Preact کافیه یا اگر به ویژگیهای بیشتری که React ارائه میده نیاز دارید. عوامل دیگه ای مثل complexity، اندازه و عملکرد پروژه هم میتونه در این تصمیم تاثیرگذار باشن.
برای این که پست زیاد طولانی نشه، ادامه مقاله رو در تلگرافمون بخونید.
#preact #react #different
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡17🔥4👌1
با ماژول 💀
ماژول «string_decoder» در Node.js روشی کارآمد برای رمزگشایی اشیاء بافر به استرینگ ها، و در عین حال با حفظ یکپارچگی UTF-8 و UTF-16 رو ارائه میکنه.
از این ماژول چه زمانی باید استفاده کنیم؟
کلاس اصلی «StringDecoder» هست. این کلاس برای رمزگشایی بافرها به رشته ها با تمرکز بر مدیریت صحیح رمزگذاری کاراکترهای چند بایتی طراحی شده. اما این کلاس چه کاربردی داره؟ به عنوان مثال:
1⃣ وارد کردن ماژول: ابتدا برای استفاده باید ماژول «string_decoder» رو ایمپورت کنید. به این صورت:
2⃣ ایجاد یک نمونه StringDecoder: میتونید با تعیین رمزگذاری مورد نظر، نمونهای از «StringDecoder» بسازین (به عنوان مثال، «utf8»، «utf16le»، «base64»).
3⃣ بافرها: از متد "write" برای رمزگشایی بافر ها و از متد "end" برای مدیریت بایت های باقی مانده استفاده کنید.
متد «end» تضمین میکنه بایتهای باقی مونده در بافر به درستی رمزگشایی میشن.
به صورت کلی ماژول «string_decoder» در Node.js یک ابزار کاربردی برای دولوپر هایی هست، که با دادههای باینری که باید به رشتهها تبدیل بشن. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
string_decoder
آشنا بشید! ماژول «string_decoder» در Node.js روشی کارآمد برای رمزگشایی اشیاء بافر به استرینگ ها، و در عین حال با حفظ یکپارچگی UTF-8 و UTF-16 رو ارائه میکنه.
از این ماژول چه زمانی باید استفاده کنیم؟
کلاس اصلی «StringDecoder» هست. این کلاس برای رمزگشایی بافرها به رشته ها با تمرکز بر مدیریت صحیح رمزگذاری کاراکترهای چند بایتی طراحی شده. اما این کلاس چه کاربردی داره؟ به عنوان مثال:
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');
const buffer = Buffer.from([0xE2, 0x82, 0xAC]);
const decodedString = decoder.write(buffer);
console.log(decodedString);// output-> €
متد «end» تضمین میکنه بایتهای باقی مونده در بافر به درستی رمزگشایی میشن.
const restingBytes = decoder.end();
console.log(remainingBytes);
به صورت کلی ماژول «string_decoder» در Node.js یک ابزار کاربردی برای دولوپر هایی هست، که با دادههای باینری که باید به رشتهها تبدیل بشن. برای کسب اطلاعات بیشتر در مورد این ماژول، به داکیومنتش مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡3
توسعه dApp با Wagmi و React 🔵
Wagmi یک کتابخانه برای توسعه برنامههای غیرمتمرکز (dApps) در اکوسیستم اتریوم با استفاده از React هست. این کتابخانه برای سادهسازی ارتباطات با کیفپولهای رمزنگاری، مدیریت وضعیت شبکه و تراکنشها، و دسترسی به قراردادهای هوشمند طراحی شده.
برخی از ویژگی های کاربردی Wagmi⬇️
🔵 مدیریت کیفپولها: Wagmi به دولوپرا این امکان رو میده تا به راحتی کیفپولهای مختلف (مثل MetaMask، WalletConnect و غیره) رو به برنامههاشون متصل کنن.
🔵 مدیریت شبکه و وضعیت: این کتابخانه ابزارهایی برای مدیریت شبکههای مختلف اتریوم، بررسی وضعیت اتصال، و سوئیچ کردن بین شبکهها فراهم میکنه.
🔵 ارتباط با قراردادهای هوشمند: Wagmi امکاناتی برای فراخوانی توابع قراردادهای هوشمند، ارسال تراکنشها، و خوندن دادهها از بلاکچین به ما میده.
🔵 ساختار آسون و یکپارچه: با استفاده از React hooks و context، Wagmi یکپارچگی و سادگی رو برای دولوپرا ایجاد میکنه.
برای کسب اطلاعات بیشتر، به داکیومنت این کتابخانه مراجعه کنید.
#ethereum
@CodeModule
Wagmi یک کتابخانه برای توسعه برنامههای غیرمتمرکز (dApps) در اکوسیستم اتریوم با استفاده از React هست. این کتابخانه برای سادهسازی ارتباطات با کیفپولهای رمزنگاری، مدیریت وضعیت شبکه و تراکنشها، و دسترسی به قراردادهای هوشمند طراحی شده.
برخی از ویژگی های کاربردی Wagmi
در اصل کار این کتابخانه تعامل برقرار کردن با اسمارت کانترکت های شبکه های EVM ای هست. نوشتن و خوندن اطلاعات روی این شبکه ها و Contract هاشون.
برای کسب اطلاعات بیشتر، به داکیومنت این کتابخانه مراجعه کنید.
#ethereum
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡4❤🔥1