Md Daily – Telegram
Md Daily
725 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
چرا یادگیری یه چیز جدید تو سال ۲۰۲۴ انقدر سخته؟

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

مطمئنم که تو هم یه لیست بلندبالا از دوره‌هایی که می‌خوای بگذرونی، کتاب‌هایی که می‌خوای بخونی و ویدیوهایی که می‌خوای "بعداً تماشا کنی" داری. یه جورایی انگار یه کتابخونه‌ی بزرگ روبروت داری، ولی نمی‌تونی از هیچکدوم از کتاب‌هاش استفاده کنی.

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

تو این پست می‌خوام یه کم درباره این موضوع صحبت کنم که چرا انتخاب کردن انقدر سخت شده و چیکار کنیم که انتخاب های بهتری انجام بدیم

انقدر انتخاب هست که آدم گیج می‌شه

این مشکل فقط واسه محتوای آموزشی نیست، تو خیلی از زمینه‌های دیگه زندگی هم وجود داره. مثلاً یه تحقیق نشون داده که کاربرای نتفلیکس به طور میانگین 17.8 دقیقه وقت صرف می‌کنن تا یه فیلم یا سریال انتخاب کنن.

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

پیتر دراکر، یه آدم معروف تو زمینه‌ی مدیریت، یه حرف خیلی قشنگ درباره این موضوع زده:

برای اولین بار تو تاریخ، یه عده آدم خیلی زیاد حق انتخاب دارن. ولی جامعه هیچ آمادگی‌ای واسه این موضوع نداره.

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

چرا انتخاب کردن انقدر سخت شده؟

دو تا دلیل اصلی واسه این موضوع وجود داره:

1. تولید محتوا خیلی راحت‌تر شده.
2. محتوا به آدم‌های خیلی بیشتری می‌رسه.

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

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

هزینه‌ی واقعی یه دوره‌ی بد

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

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

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


خلاصه کلام: چطور یه چیز جدید یاد بگیریم؟

یادگیری یه چیز جدید هیچ‌وقت آسون نبوده، با این حال، چند تا راهکار هست که می‌تونه بهمون کمک کنه تا بهتر یاد بگیریم:

انتخاب‌های الکی نکن:

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

تمرکزت رو حفظ کن:

👈 وقتی داری یه دوره یا ویدیو می‌بینی، بقیه‌ی تب‌ها و برنامه‌ها رو ببند. فقط روی یه کار تمرکز کن.

هدف‌های واقع‌بینانه بذار:

👈 یه برنامه‌ واقعی با هدف‌هایی که می‌تونی بهشون برسی، تنظیم کن.
👈 دنبال هدف‌های الکی نباش که فقط باعث می‌شن فکر کنی داری کار خیلی مهمی انجام می‌دی.

محتوای خوب انتخاب کن:

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

تمرین کن:

👈 برای هر چیزی که یاد می‌گیری، یه جوری تمرین کن. اینطوری یادگیریت عمیق‌تر می‌شه و مطمئن می‌شی که واقعاً یاد گرفتی.
👈 هر چند وقت یک بار مرور کنید.

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



🆔 @MdDaily
❤‍🔥17👍41🔥1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
پروژه MoneyPrinter

کاربری با نام اینترنتی FujiwaraChoki میبینه که توی یوتیوب شورت هایی با یه قالب خاصی دارن خیلی بازدید میگیرن. پس میگه چرا این فرایند رو خودکار نکنیم؟

نتیجش میشه پروژه MoneyPrinter که از MoviePy استفاده میکنه برای تولید ویدیو، از یه ای پی ای غیر رسمی تیک تاک برای تبدیل متن به صدا استفاده میشه که رباتیک نباشه، برای تولید متن طبق اون موضوعی که بهش میدین از gpt و در نهایت برای تولید تصاویر از pexels استفاده می کنه . کد خیلی بامزه ای داره و چیز خیلی پیچیده ایم نیست.

دموش رو توی ویدیوی پست میتونید ببینید.

🔗 لینک یوتیوب ویدیو

🔗 گیت هاب پروژه:
https://github.com/FujiwaraChoki/MoneyPrinter/


🆔 @MdDaily
8
چطوری یه README.md خوب بسازیم؟

فایل README چیه؟

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

چرا مهمه؟

این
کاربر میتونه یه استخدام کننده یا کلاینت باشه.

پس خیلی مهمه که README پروژه شما به سوالات "چیه"، "چرا" و "چطوری" پروژه جواب بده.

یعنی باید:

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

چی توی README بذاریم؟

با خودتون فکر کنید:

👈پروژه شما چیه؟
👈چرا این پروژه رو ساختید؟
👈چه مشکلی رو حل میکنه؟
👈شما توی این پروژه چی یاد گرفتید؟
👈چه چیزی باعث میشه پروژه شما از بقیه پروژه ها متمایز باشه؟

بعد جواب این سوالات رو توی README بنویسید.

ساختار پیشنهادی

👈معرفی: یه توضیح کوتاه و مختصر از پروژه که کاربر توی چند ثانیه اول بفهمه پروژه شما چیه.
👈تکنولوژی: زبان های برنامه نویسی، کتابخانه ها و فریم ورک های استفاده شده توی پروژه (مثلا پایتون، React و...).
👈طراحی: عکس، فیلم یا GIF از رابط کاربری پروژه (اگه رابط کاربری داره).
👈ویژگی ها: اگه پروژه شما ویژگی های زیادی داره، یه لیست ازشون توی این بخش بذارید.

راه اندازی:
👈توضیح بدید که چطوری میشه پروژه رو نصب و اجرا کرد.
👈اگه راه اندازی پروژه ساده است، توی README توضیحش بدید و اگه راه اندازی پروژه پیچیده است، یه لینک به یه فایل دیگه توی پروژه بدید که توش توضیح دادید چطوری میشه پروژه رو راه اندازی کرد.


ریپوی awesome-readme اومده لیستی از README ها را به همراه توضیحات کوتاهی راجب اینکه چرا خوب نوشته شدن رو جمع آوری کرده که می تونید ازشون ایده بگیرید :
🔗 https://github.com/matiassingers/awesome-readme

برای نوشتن و ویرایش فایل های Markdown هم marktext یا obsidian رو پیشنهاد میکنم.

🆔 @MdDaily
👍8❤‍🔥5👎1🔥1👌1
Sudoer
یکی از دولوپر‌ها و میننینر‌های اصلی انجینکس از تیم انجینکس جدا شده و از دیروز تصمیم گرفته که یه فورکی از انجینکس منتشر کنه به اسم freenginx این توضیحاتش رو بخونید خیلی جالبه https://www.phoronix.com/news/Nginx-Forked-To-Freenginx
دلیلش رو میخوندم خیلی جالب بود، می گفت Maxim Dounin که یکی از دولوپر های اصلی به مدت زمان زیادی بوده بعد از اینکه شرکت F5 توی سال 2019 میاد و nginx رو میخره باهاشون به اختلاف نظر میخوره و وقتی سال 2022 شرکت F5 دفتر مسکو رو تعطیل میکنه دیگه Maxim برای این شرکت کار نمیکنه ولی باهاشون به توافق می رسه که صورت داوطلبانه و رایگان برای بهبود Nginx و بهتر کردنش همه کاری بکنه.

اما بعضی از مدیران جدید غیر فنی تو F5 دارن تصمیماتی میگیرن که با سیاست امنیتی که Nginx سالها ازش استفاده کرده ، مداخله کنن و هم سیاست و هم موضع توسعه دهندگان رو نادیده بگیرن.

نتیجش چیه ؟ با توجه به تغییرات تو F5 ممکنه تصمیماتی گرفته بشه که دیگه Nginx پروژه ای متن باز و رایگان که برای منافع عمومی توسعه و نگهداری میشه نباشه. پس Maxim به همین دلیل Nginx رو تحت عنوان Freenginx فورک کرده تا توسط توسعه دهندگان مدیریت بشه و نه شرکتی که طرز تفکر مدیرانش با اهداف nginx در تضاد هست .

وبسایت پروژه: http://freenginx.org
🆔 @MdDaily
👍13
چنتا تا از بهترین ریپو های گیت هاب
🔗 30 Days Of JavaScript

این ریپو یک چالش برنامه نویسی 30 روزه جاوا اسکریپت رو ارائه میکنه که میتونید با تمرین عملی به بهبود مهارت های جاوا اسکریپتتون کمک کنید.

🔗 30 seconds of code

این ریپو، مجموعه ای عالی از قطعه کدهای مفید توی مباحث مختلف که میتونید اون ها رو تو 30 ثانیه یا کمتر یاد بگیرید.

🔗 App Ideas

توی این ریپو به صورت دسته بندی شده از Beginner تا Advanced ایده ی پروژه های مختلفی به شما میده

🔗 Beautiful Docs

این ریپو مجموعه ای از مثال های عالی و نکاتی از زبان های برنامه نویسی و تکنولوژی های مختلفه که کمک میکنه تا برای پروژه هاتون مستندات زیبایی ایجاد کنید :)

🔗 Build your own X

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

🔗 Free-certifications

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

🔗 Free for dev & Free Programming Books

توی این دوتا ریپو می تونید مجموعه از خدمات،‌ نرم افزار ها، وبسایت ها و کتاب های رایگان رو پیدا کنید. ریپو Free Programming Books کتاب های به زبان فارسی هم داره.

🔗 Project Based Learning

این ریپو هم کار جالبی کرده اومده بر اساس زبان های برنامه نویسی مختلف دسته بندی انجام داده و وقتی یه زبان یا تکنلوژی را انتخاب می کنید نمونه پروژه هایی که میشه باهاش ساخت را لیست کرده به همراه اموزش ساختشون که اکثرا ویدیو های یوتیوب هستند

🔗 Public APIs

لیستی از APIهای رایگان

🔗 Devops Eexercises

این ریپو شامل سؤالات و تمرین‌هایی در مورد موضوعات فنی مختلف مثل DevOps و SRE هستش و در حال حاضر میتونید 2624 تا سوال و تمرین توش پیدا کنید



شما دیگه چه ریپو هایی رو میشناسید که جاشون توی این لیست خالیه؟


🆔 @MdDaily
❤‍🔥7👍1🔥1👌1
#میم

چطوری حملات brute force رو خنثی کنیم؟😁

🆔 @Mddaily
🤣18🔥1😁1🗿1
animation.gif
11.7 MB
تست و اجرای برنامه های اندرویدی در دستگاه های واقعی بدون نیاز به استفاده از منابع شما در نسخه ی جدید اندروید استودیو ممکن شد!

همونطور که توی گیف مشخصه توی آپدیت جدید Jellyfish در کانال Canary اندروید استودیو این امکان فراهم شده که شما بتونید توی دیوایس های واقعی و API Level های مختلف برنامه هاتون رو اجرا کنید و تست بگیرید. این سرویس از سمت فایربیس پشتیبانی میشه و فعلا رایگان هست و استفاده ازش محدودیتی نداره. توی این آپدیت دیگه مجبور نیستید برای تست اپ هاتون از گوشی واقعی خودتون یا شبیه ساز هایی که منابع سیستمون رو اشغال میکنند استفاده کنید.

ویژگی ها:

👈 عدم استفاده از منابع سیستم شما
👈 دسترسی به Logcat
👈 دسترسی به ADB
👈 امکان اجرا و تست روی چندین دیوایس به صورت هم زمان

میتونید نسخه ی Jellyfish رو از لینک زیر دانلود کنید:
🔗 https://developer.android.com/studio/preview

اطلاعات بیشتر در:
🔗 https://firebase.blog/posts/2024/02/device-streaming-android

🆔 @MdDaily
🔥4👍2
سیستم مدیریت محتوای Headless چیه؟

بذار یه مثال ساده بزنم. فرض کن میخوای یه ساختنی با لگو بسازی. تو دو تا راه داری:

1. از یه مجموعه لگوی آماده استفاده کنی:

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

2. خودت با لگو یه چیز جدید بسازی:

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

پس Headless CMS مثل روش دومه.

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

مزیت Headless CMS چیه؟

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

👈خلاقیت بیشتر: میتونی از خلاقیت خودت استفاده کنی و یه وب سایت یا اپلیکیشن منحصر به فرد بسازی.

👈انعطاف پذیری بیشتر: میتونی به راحتی محتوایت رو به روز رسانی کنی و تغییرات جدیدی ایجاد کنی.


در نتیجه Headless CMS برای چه کسانی مناسبِ؟

وقتی شما از چیزی مثل وردپرس استفاده می کنید بهتون یه پکیج کامل میده که می تونید وب سایت خودتون را باهاش ایجاد کنید ولی بعضی وقتا ما نیاز به CMS ای داریم که فقط مدیریت سمت بکند را انجام بده و ما بتونیم ازش توی کلاینت های مختلف استفاده کنیم پس Headless CMS یه راه حله که آزادی عمل و انعطاف پذیری بیشتری برای ساخت وب سایت یا اپلیکیشن میده.

معرفی Strapi:

یکی از قدرتمند ترین ابزار های Headless CMS پروژه ی Strapi است که با کمترین میزان کد نویسی ممکن در سمت بکند به شما یه پنل مدیریت کامل برای مدیریت محتوا به همراه API میده که توی هر کلاینتی می تونید بهش متصل بشید و برای فلاتر و react و ... هم پکیج داره.

🔗 وبسایت پروژه: https://strapi.io/
🔗 گیت هاب پروژه: https://github.com/strapi/strapi

🆔 @MdDaily
👍3🔥1
احتمالا فردا یا سه شنبه پست سیستم دیزاین Uber که چطوری با یک میلیون درخواست در ثانیه نزدیکترین راننده رو پیدا میکنه آماده و منتشر میشه :) قرار با نحوه ی کار H3 library اشنا بشیم
🔥7👍3
#ام_دی_کورس

چطوری اوبر با ۱ میلیون درخواست در ثانیه رانندگان نزدیک رو پیدا می کنه؟

پیدا کردن رانندگان نزدیک با دقت و مقیاس‌پذیری بالا، کار سختیه و بریم ببینیم که اوبر چطوری این مشکل را حل کرده:

۱. فهرست‌بندی موقعیت مکانی (Location Indexing)
پیدا کردن رانندگان نزدیک فقط با استفاده از طول و عرض جغرافیایی دشوار هست، پس، اوبر موقعیت‌های مکانی را فهرست‌بندی یا ایندکس میکنه تا رانندگان نزدیک را به‌طور کارآمد پیدا کنه.

اوبر برای فهرست‌بندی یا ایندکس موقعیت مکانی از کتابخانه‌ی H3 استفاده میکنه. H3 یک سیستم فهرست‌بندی یا ایندکسینگ مکانی سلسله‌مراتبی با شکل شش‌ضلعی است که در اوبر ساخته شده. H3 سطح زمین را به سلول‌هایی روی یک شبکه‌ی مسطح تقسیم میکنه و به هر سلول یک شناسه‌ی منحصر به فرد با یک عدد صحیح ۶۴ بیتی اختصاص میده....


ادامه در:

https://mddaily.web.app/blog/how-does-uber-find-nearby-drivers/

🆔 @MdDaily
🔥83❤‍🔥1👌1
🚫 چیز هایی که هرگز نباید به برنامه نویس های تازه کار بگید

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


👈 "این خیلی آسونه" یا "این که کاری نداره."
گفتن این جمله خیلی وسوسه‌کنندست - چون با سال‌ها تجربه، ممکنه یک کار خاص واقعاً آسون باشه! (خودم این رو بیشتر از حد لازم به طور اتفاقی گفتم.) یادتون باشه که حتی اگه انجام کاری برای شما ساده به نظر برسه باید بپذیریم برخی کارها ممکنه برای برنامه‌نویسان جدید چالش برانگیز باشه!

👈 "تو باید اینو از قبل می‌دونستی" یا "خودت باید بفهمیش" یا "چرا هنوز نفهمیدی؟"

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

👈 "چطور تونستی این اشتباه رو بکنی؟" یا "من این کار رو اینجوری انجام نمی‌دادم" یا "شاید تو واسه این کار ساخته نشدی."

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

👈 "خیلی طول می‌کشی" یا "اگه من انجامش بدم زودتر تمومه"

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

👈 "فقط اینجوری انجامش بده" یا "اینجا اینجوری کار می‌کنیم."

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

👈 "تو برای این کار خیلی تازه‌کاری"، "تو فقط یک توسعه‌دهنده junior هستی"، یا "تا تجربه بیشتری کسب نکنی، نمی‌فهمی."

مقایسه افراد junior با افراد senior، به خصوص به روش منفی، نه تنها میتونه اعتماد به نفس افراد junior رو تضعیف کنه، بلکه منجر به محیط کاری ناسالم و رقابتی میشه که توش افراد junior برای «اثبات خود» تلاش می‌کنن. به جای این کار، سعی کنید با کمک به افراد junior برای تعیین اهداف حرفه‌ای ایشون صحبت و کمک کنید.

👈 "چه سوال مسخره ای!"

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

👈 "برنامه‌نویس‌های واقعی از فلان نرم‌افزار استفاده نمی‌کنن"

توسعه‌دهندگان ترجیحاتی دارن و ما اونقدر به ترجیحات خودمون پایبند هستیم که گاهی اوقات شروع به باور می‌کنیم که روش ترجیحی ما، در واقع تنها راه درست برای انجام کارهاست . میدونم که منم میتونم در این مورد گناهکار باشم :) با این حال، خراب کردن ابزار یا انتخاب‌های فناوری افراد junior میتونه به سندروم خودویرانگر (Imposter syndrome) کمک کنه و تمایلشون رو برای کشف چیزهای جدید از بین ببره

نظر شما چیه؟

🆔 @MdDaily
🔥6👍5❤‍🔥3😢2👎1
Audio
🎧 پلی لیست #موزیک مناسب برای زمان برنامه نویسی

🆔 @MdDaily
🔥4❤‍🔥2👌1
💡دستور docker Init چیه و چه زمانی باید ازش استفاده کرد؟

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

خبر خوب اینه که یه راه حل ساده وجود داره: نسخه‌های جدید داکر یه دستور به اسم docker init دارن. این دستور به شما کمک می‌کنه تا خیلی سریع داکر رو به پروژه خودتون اضافه کنید. docker init یه سری فایل‌های پیکربندی استاندارد رو به پروژه شما اضافه می‌کنه که برای زبان برنامه‌نویسی شما مناسب هستن. این کار باعث می‌شه که در زمان صرفه‌جویی بشه و کارتون هم تمیزتر و اصولی‌تر انجام بشه.

خب docker init دقیقا چیکار می‌کنه؟

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

قبل از اینکه یه برنامه بتونه توی یه کانتینر داکر اجرا بشه، باید یه ایمیج داکر (Docker Image) ازش ساخته بشه. ایمیج، کد و وابستگی‌های شما رو توی یه بسته قابل حمل قرار می‌دن که سیستم فایل اولیه کانتینر شما رو هم مشخص می‌کنه. ایمیج ها از یه چیز به اسم Dockerfile ساخته می‌شن. Dockerfile یه سری دستورالعمل داره که مشخص می‌کنه چه فایل‌هایی باید کپی بشن و چه دستورهایی باید اجرا بشن تا سیستم فایل مونتاژ بشه.

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

1. انتخاب یه ایمیج پایه مناسب که سیستم عامل و محیط اجرای برنامه‌نویسی کانتینر شما رو فراهم می‌کنه. مثلا می‌تونید از ubuntu:22.04 یا node:20 استفاده کنید.
2. نصب هر بسته سیستم عامل، زبان برنامه‌نویسی و چارچوب اضافی که پروژه شما نیاز داره.
3. دریافت وابستگی‌های زبان برنامه‌نویسی پروژه شما (مثلا با استفاده از npm، Rust یا Gradle).
4. کپی کردن کد منبع شما
5. انجام هرگونه تغییر در سیستم فایل یا محیط که برنامه شما نیاز داره.

پس docker init یه سری الگوی Dockerfile داره که شامل این مراحل و یه سری نکات دیگه هم هستن. این الگوها از برنامه‌های سرور ASP.NET، Go، Node، پایتون و Rust پشتیبانی می‌کنن. (تو نسخه جدید پشتیبانی از برنامه‌های جاوا و PHP هم اضافه شده).

وقتی از docker init استفاده می‌کنید، یه Dockerfile آماده به همراه یه سری فایل دیگه به پروژه شما اضافه می‌شه. با این کار شما می‌تونید خیلی سریع ایمیج خودتون رو بسازید و یه کانتینر رو اجرا کنید.

دستور docker init چه فایل هایی ایجاد می کنه؟

توی پروژه‌های داکر شما سه تا فایل اضافه می‌کنه:

1. Dockerfile:

این فایل به داکر می‌گه که چطوری سیستم‌فایلِ ایمیج شما رو بسازه. توش بهترین روش‌ها و نیازمندی‌های رایجِ زبان برنامه‌نویسیِ شما هم نوشته شده.

2. compose.yaml:

این یه فایل پیکربندی برای داکر کامپوزِه. با این فایل می‌تونید برنامه‌تون و وابستگی‌هاش (مثل اتصال به پایگاه داده) رو به عنوان یه stack از چند تا کانتینرِ مستقل اجرا کنید.

3. .dockerignore:

این فایل به داکر می‌گه که چه مسیرهایی تو پروژه‌تون نیازی نیستن که تو ساختِ ایمیج کپی بشن. این کار باعث می‌شه که ساختِ ایمیج سریع‌تر انجام بشه و فضای کمتری اشغال بشه.

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

تفاوتِ docker init و docker-init

بعضی‌ها docker init رو با docker-init اشتباه می‌گیرن. docker init و docker-init دو تا ابزارِ کاملاً جدا هستن. شما از docker init می‌تونید برای ایجادِ پیکربندیِ اولیه تو پروژه‌های جدیدِ داکر استفاده کنید ولی docker-init یه ابزارِ داخلیِ داکر که به عنوان فرآیندِ پیش‌فرضِ کانتینرهای جدید استفاده می‌شه.

💻خب تئوری کافیه، بریم توی عمل ببینیم:

توی این مثال ساده قرار docker init رو تو یه پروژه ی ساده flask اجرا کنیم. پس فقط کافیه یه فولدر جدید بسازیم مثلا من اینجا فولدری بنام mdflask ساختم و دو تا فایل به نام های app.py و requirements.txt توش ایجاد کردم که محتویات این فایل ها به این اینطوریه:

# app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_docker():
return '<h1> hello world </h1'

if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')


# requirements.txt
Flask


حالا فقط کافیه که دستور docker init رو اجرا کنیم و در نهایت بعد از پرسیدن چنتا سوال خروجیه compose.yaml و Dockerfile رو بهمون میده.

برای استفاده از ویژگی docker init حتما باید از اخرین نسخه ی docker desktop استفاده کنید


🔗 مستندات docker init
🆔 @MdDaily
🐳5❤‍🔥1🔥1
داریم کم کم به روز های پایانی سال نزدیک میشیم و چه قدر خوبه که با نوشتن یه Personal Development Plan یا همون برنامه توسعه فردی برای سال آینده برنامه ریزی کنیم

اکثر اوقات زندگی تو ایران با اتفاقات غیر منتظر همراهه ولی در کل خوبه که یه دیدی از سال آیندمون داشته باشیم. آخر این پستم منابعی که میتونه کمک کننده باشه رو قرار دادم پس با من همراه باشید :)


خب خیلی خلاصه و متخصر برنامه توسعه فردی دقیقا چیه؟ ما یه برنامه می نویسیم که بفهمیم از سال آینده چی میخوایم و قرار چیکار کنیم

۱. یه چارچوب درست و حسابی برای برنامه ریزی انتخاب کردن

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

شغل: اهداف کلیدی شغلتون چیه؟
سلامتی: برنامه شما برای تمرکز بر روی سلامتیتون چیه؟
مالی: اهداف کلیدی، نقاط عطف یا تمرکزتون بر روی امور مالی چیه؟
میراث: دوست دارید میراث شما چی باشه و چطوری به یاد آورده بشید؟

🔗 تصویر

۲. براساس یک جدول زمانی برنامه ریزی کردن

اول چند تا ایده ی کلی تو هر کدوم از این چهار تا محور بنویسید. بعد یه سند جداگونه درست کنید و این ایده ها رو تو یه جدول زمانی مشخص بچینید. این جدول زمانی دو تا بخش داره: شغلی و شخصی. یه محور عمودی هم میتونه داشته باشه که سنتون رو نشون بده اگه برنامه ریزی بلند مدت بخوایند انجام بدید.

این جدول زمانی خیلی بهتون کمک میکنه تا برنامه اتون رو شکل بدید. چون مشخص میکنه که چه اتفاقاتی تو زندگی شخصی ممکنه روی شغلتون تاثیر بذارن و باید به چه چیزهایی توجه کنید.

🔗 تصویر

۳. شناسایی موانع و عوامل تسهیل کننده

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

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

🔗 تصویر

🤝 منابعی که میتونه بهتون کمک کنه:

امیدوارم تونسته باشم با این پست یه ایده ی اولیه از نحوه ی نوشتن Personal Development Plan و اهمیتش بهتون داده باشم. توی منابع ویدیویی چند وقت پیش یه ویدیو و پلی لیست خوب از کانال Cafe.Amuzesh دیدم که خیلی میتونه بهتون دید خوبی بده:

https://www.youtube.com/watch?v=_GNc4b6QChw
https://www.youtube.com/playlist?list=PLjp3IP_pXtAq4hku0Nt5eEPkOHs4PC8Ji

و توی منابع صوتی هم اپیزود های این پلی لیست خیلی میتونن کمک کننده باشن:
https://castbox.fm/epl/104723




نظر شما چیه؟

🆔 @MdDaily
👍4🔥4🤔21❤‍🔥1👌1💯1
#فان

در سال ۴۰۳ شما نمیتونید وارد چیزی بشید :)))

@MdDaily
🤣15😁2🤔1
سال نو همگی مبارک 🫂❤️

یک سال دیگه هم گذشت ، به امید روزهای روشن و اتفاقای خوب به همراه سلامتی و پروژ های بی باگ تر برای همتون. ان شاءالله ۱۴۰۳ سالی باشه که به آرزوها و هدف هاتون برسید ❤‍🔥

ممنون از تمام دوستانی که تو این یک سال همراه MdDaily بودند ❤️

🆔 @MdDaily
❤‍🔥112
#معرفی

وبسایت OSS Insight

وبسایت OSS Insight یه ابزار قدرتمند که با تحلیل بیش از 7 میلیارد داده گیت هاب، بینش های جامع، ارزشمند و رو به رشدی رو در مورد دنیای متن باز ارائه میده و یه جستوگر خیلی کاربردی هم داره که شما میتونید سوالتون رو به زبان ساده بپرسید و GitHub Data Explorer برای شما یه SQL تولید میکنه و بعد از پیدا کردن نتایج داده ها را به صورت بصری بهتون نشون میده.

چه امکاناتی داره؟

👈 جستجوگر داده گیت هاب: با زبان ساده سوال بپرسید و داده های تحلیل شده رو به صورت بصری بهتون میده.

👈 تجزیه و تحلیل زمینه های فنی: اطلاعات کاملی از پایگاه داده های متن باز، فریم‌ورک ها، ابزارهای توسعه و ...

👈 تجزیه و تحلیل توسعه دهندگان: اطلاعات کاملی از بهره وری، ریتم کاری و نحوه همکاری توسعه دهنده ها.

👈 تجزیه و تحلیل ریپوزیتوری: اطلاعات کاملی از به روزرسانی کد و میزان محبوبیت هر ریپوزیتوری.

👈مقایسه پروژه ها: امکان مقایسه پروژه ها بر اساس فیلد ها و دسته بندی های انتخابی.

👈 و...

در کل OSS Insight یه ابزار خیلی خوبه که میتونه بهتون کمک کنه اطلاعات جالبی از دنیای متن باز به دست بیارید.

🔗 لینک وبسایت
🆔 @MdDaily
2👍2🤔1👨‍💻1
‏امروز یه چیز جالب در مورد cloudflare خوندم. کلادفلر برای تولید کلیدهای encryption کاملا رندوم که قابل پیش‌بینی توسط هیچ هکری نباشه یه سری lava lamp گذاشته روی یه شلف با دوربین حرکات این‌ها مانیتور میشه و این حرکات رندوم سورس ایجاد کلیدهای encryption هست.
جالبه که این اتاق اصلا سکرت نیست راحت اجازه میدن بری بهشون دست بزنی چون به randomness بودن حرکات مایع لاوا توی چراغ‌ها کمک میکنه.

برای جزییات بیشتر گوگل کنید the wall of entropy


</احسان>

🆔 @MdDaily
👍10🤯7😁1
پس از ۸ سال پشتیبانی از rtl به onlyoffice به صورت ازمایشی اضافه شد!

پروژه ی onlyoffice یکی از نزدیک ترین تجربه های ms office رو مخصوصا با لینوکس میده ولی مدت خیلی طولانی ای بود که از rtl پشتیبانی نمی کرد و بالاخره بعد از ۸ سال به صورت آزمایشی توی نسخه ی v8.0 این ویژگی اضافه شده.

🔗 ONLYOFFICE Desktop Editors v8.0: PDF forms, RTL


🆔 @MdDaily
10👍3😐2
بحث داغ زبان‌های برنامه‌نویسی: چرا اصلاً مهم نیست؟


یه بحث همیشگی توی دنیای برنامه‌نویسی هست که توی انجمن‌ها، جلسات تکنولوژی و حتی تو خواب و خیال برنامه‌نویس‌ها هم ول نمی‌کنه: آخرش کدوم زبان برنامه‌نویسی از همه بهتره؟ بشینید پای صحبت های کسایی که از وقتی اینترنت با خط تلفن وصل می‌شد کد می‌نوشتن، تا حالا میگن که کلی زبان برنامه‌نویسی اومده و رفته. از اسکریپت‌های Perl که مثل وردهای جادویی بودن تا TypeScript امروزی که مثل آب خوردن می‌مونه، احتمالا همه جور کدی نوشتن. بعد از شنیدن حرف های ریش سفید های این کار میتونیم بفهمیم: وقتی میخوایم یه مشکلی رو حل کنیم، اصلاً مهم نیست از چه زبانی استفاده می‌کنیم. بله، درست شنیدید!

اول یه چیزی رو روشن کنم: بله، یه سری زبان‌ها برای یه کارهایی بهتر از بقیه هستن. مثلاً اگه می‌خواید یه پلتفرم معاملاتی پر سرعت بسازید، بعید می‌دونم از PHP استفاده کنید. یا اگه می‌خواید یه برنامه iOS بنویسید، Swift بهترین دوست شما می‌تونه باشه. ولی نکته اینجاست که موفقیت پروژه‌تون بیشتر به نحوه استفاده از زبان بستگی داره تا خود زبان. مثلاً اینکه چکش بهتره یا پیچ‌گوشتی، بستگی به این داره که می‌خواید با میخ کار کنید یا پیچ.

یهویی چی شد؟ یهو همه گیر دادن به پرفورمنس!

طرفدارای یه زبان میگن: "زبان X از زبان Y سریع‌تره!" آره بابا، یه سری تست و بنچمارک نشون میده که یه ذره سرعت اجرا یا مصرف حافظه تو زبونا فرق می‌کنه. ولی بیخیال، واسه 99 درصد برنامه‌ها این فرق‌ها مثه اینه که موقع کدنویسی جوراب قرمز بپوشی یا آبی! مهم معماری، الگوریتم و استراتژی بهینه‌سازیه که کارو راه میندازه. یه سیستم بد طراحی‌شده، چه با Rust نوشته بشه چه با Ruby، آخرش بد و ناکار آمد هستش.

یادگیری زبون برنامه‌نویسی سخته؟

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

لاتاری کتابخونه

یکی از دلایلی که خیلی‌ها یه زبان برنامه‌نویسی رو به یه زبان دیگه ترجیح می‌دن، به خاطر امکانات و ابزارهای اون زبونه. یه زبان خوب، کتابخونه‌ها، فریم‌ورک‌ها و ابزارهای قوی و باکیفیتی داره که می‌تونه سرعت و کیفیت کار شما رو خیلی بالا ببره. اما یه رازِ قشنگ هم هست: اکثر زبان‌های محبوب، امکانات و ابزارهای خیلی خوبی دارن. اگه یه کتابخونه یا ابزار برای یه زبان وجود داشته باشه که برای یه زبان دیگه نباشه، این یه فرصته که شما به جامعه اون زبان کمک کنید. یادتون باشه، یه برنامه‌نویس خوب، مشکل‌حل‌کنه؛ نه اینکه بشینه منتظر بمونه تا یه نفر دیگه مشکلش رو حل کنه.

حرف آخر

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

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


🆔 @MdDaily
❤‍🔥10👍61🔥1👌1
نرم‌افزار کامل تشخیص پلاک ایرانی در هر شرایطی (صبح، شب، بارون و بی‌کیفیت)، راه‌حل کامل و قابل استفاده
تقدیم به جامعه متن‌باز 🌍

🔗https://github.com/mtkarimi/persian-license-plate-recognition

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

<متیو کریمی/>

🆔 @MdDaily
👍11🔥4