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
احتمالا فردا یا سه شنبه پست سیستم دیزاین 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
داشتم فکر میکردم برای دروغ ۱۳ چی بذارم تا اینستاگرام رو باز کردم دیدم اونجا هر روز دروغ ۱۳ عه :)

🆔 @MdDaily
😁21
#معرفی

پروژه Puter: سیستم عامل اینترنتی رایگان و متن باز

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

👈 جایگزینی برای دراپ‌باکس، گوگل درایو، وان‌درایو و غیره با رابط کاربری جدید و ویژگی‌های قدرتمند.

👈 محیط دسکتاپ از راه دور برای سرورها و ورک استیشن ها.

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

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

این پروژه با vanilla Js و JQuery نوشته شده :)

🔗 https://github.com/HeyPuter/puter


🆔 @MdDaily
🔥5👍4
مدیریت زمان و راندمان (برای برنامه‌نویس‌ها) - قسمت 1

شاید یکی از پرتکرارترین سوال‌هایی که از آدم‌های تازه‌کار توی برنامه‌نویسی می‌شنوم اینه که: «چطوری میشه انقدر چیز مختلف یاد گرفت و همزمان وقت کار و تفریح هم داشت؟» جوابش ساده است: مدیریت زمان


💢 چرا مدیریت زمان مهمه؟

دلایل زیادی برای مدیریت زمان وجود داره، ولی من فقط به چند تا از مهم‌ترین‌هاش اشاره می‌کنم:


👈 زمان و کیفیت زندگی: زمان یکی از باارزش‌ترین چیزهایی که داریم و مدیریت درستش می‌تونه روی کیفیت زندگیمون هم تاثیر مستقیم بذاره. با مدیریت زمان درست می‌تونیم کارهای روزمره‌مون رو انجام بدیم، به هدف‌هامون برسیم و برای تفریح و استراحت هم وقت داشته باشیم.

👈 بهره‌وری: مدیریت زمان درست باعث می‌شه توی کارهایی که انجام می‌دیم، کارآمدتر و با راندمان‌تر باشیم. اینطوری می‌تونیم توی زمان کمتر، کارهای بیشتری انجام بدیم و وقت آزادمون هم بیشتر بشه.

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

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

خلاصه کلام اینکه:

یه جمله‌ای هست که خیلی دوستش دارم و همیشه توی بحث مدیریت زمان بهش اشاره می‌کنم:

«چیزی رو که اندازه‌گیری نمی‌کنی، نمی‌تونی مدیریت کنی، چیزی رو که اندازه‌گیری نمی‌کنی، نمی‌تونی تعریف کنی، چیزی رو که تعریف نمی‌کنی، نمی‌تونی درک کنی و کاری که مدیریت نمی‌کنی، توش موفق نمی‌شی.»
~ ویلیام ادواردز دمینگ


💢 چطوری زمان رو مدیریت کنیم؟

👈 بعد ذهنی

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

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

👈 بعد فیزیکی

🖼 تصویر 1

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

برای اینکه بدنت همیشه نزدیک به نقطه‌ی ایده‌آل بازدهی باشه، باید بیشتر به 3 تا چیز توجه کنی:

چرخه‌ی خواب و بیداری: خواب یکی از مهم‌ترین راه‌های تنظیم بدنه، کم‌خوابی یا پُرخوابی عملکرد و سلامتی رو خراب می‌کنه. یه ساعت مشخص برای خواب و بیداری داشته باش، به اندازه‌ای بخواب که سرحال باشی و بتونی کارهای روزانه رو انجام بدی.

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

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

🖼 تصویر 2

👈 بعد فنی

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

—-
ادامه در پست بعدی...

🆔 @MdDaily
7🔥2
مدیریت زمان و راندمان (برای برنامه‌نویس‌ها) - قسمت 2

🔗 قسمت قبلی

💢 مدیریت زمان: تکنیک‌ها و راهکارها

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

👈 برنامه‌ریزی هفتگی:

یه برنامه ساده برای کل هفته بچین. چی می‌خوای انجام بدی؟ هر روز چه کارهایی داری؟ فقط حواستون باشه که خیلی جزئی نباشه چون باعث اضطراب و استرس بیشتر میشه. پس فقط فعالیت های مهمتون رو مشخص کنید و بقیه فعالیت ها را به صورت روزانه مشخص کنید؛ بزرگترین باگ این نوع برنامه ریزی اینکه ممکنه تو تله ی "توهم برنامه‌ریزی یا همون Planning Fallacy" بیوفتید.

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


🖼 تصویر 1

👈 برنامه‌ریزی مبتنی بر هدف


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

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


👈 تکنیک پومودورو (Pomodoro)


🖼 تصویر 2

پومودورو یه روش ساده و خفن برای مدیریت زمانه که کمک می‌کنه تمرکزت رو حفظ کنی و کارهات رو با راندمان بیشتری انجام بدی.

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

چطوری از تکنیک پومودورو استفاده کنیم؟

یه کاری که می‌خوای انجامش بدی رو انتخاب کن.
یه تایمر رو روی ۲۵ دقیقه تنظیم کن.
تا زمانی که تایمر زنگ نزده، فقط روی اون کار تمرکز کن.
وقتی تایمر زنگ زد، یه استراحت ۵ دقیقه‌ای داشته باش.
بعد از استراحت، مراحل ۲ تا ۴ رو تکرار کن تا کار تموم بشه.

چرا ۲۵ دقیقه؟

🖼 تصویر 3

به ذهنت یه چارچوب زمانی میدی: وقتی یه زمان مشخص برای انجام یه کار داری، مغزت ناخودآگاه تلاش می‌کنه که کار رو تو همون زمان تموم کنه.
از حواس پرتی دور می‌مونی: تو هر قسمت ۲۵ دقیقه‌ای، فقط روی یه کار تمرکز می‌کنی و چیزای دیگه مثل گوشیت نمی‌تونن حواست رو پرت کنن.
انرژی‌ات رو حفظ می‌کنی: استراحت‌های ۵ دقیقه‌ای بین هر قسمت ۲۵ دقیقه‌ای بهت کمک می‌کنه که خسته نشی و بتونی تمرکزت رو حفظ کنی.

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

دوتا نظریه ی جالب هم راجب پومودورو وجود داره:

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


🖼 تصویر 4

قانون پارتو:
۸۰٪ از نتایج ما از ۲۰٪ از تلاش‌های ما می‌آیند.
مثال: فرض کنید می‌خواهید برای یک امتحان آماده بشید. اگه تمام مطالب رو در یک روز مطالعه کنید، احتمالاً فقط ۲۰٪ از مطالب رو به یاد خواهید داشت. اما اگه مطالب رو در طول چند هفته مطالعه کنید و هر روز فقط ۲۰٪ از مطالب رو مرور کنید، احتمالاً ۸۰٪ از مطالب رو به یاد خواهید داشت.


🖼 تصویر 5
—-
ادامه در پست بعدی...

🆔 @MdDaily
🔥5❤‍🔥1
مدیریت زمان و راندمان (برای برنامه‌نویس‌ها) - قسمت 3 (پایانی)

🔗 قسمت اول

🔗 قسمت دوم

👈 ماتریس آیزنهاور

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

🖼 تصویر 1

مهم و فوری: کارهایی که باید همین الان انجامشون بدی.

مهم و غیر فوری: کارهایی که باید انجامشون بدی، ولی نه همین الان.

غیر مهم و فوری: کارهایی که باید همین الان انجامشون بدی، ولی مهم نیستن.

غیر مهم و غیر فوری: کارهایی که نه مهم هستن و نه فوری.

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

💢 همه اینها از دیدگاه یک توسعه دهنده

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

من، تو و اکثر برنامه نویسایی که میشناسیم، یه روال کاری شبیه به هم داریم که شامل میتینگ ها، کد نویسی و بررسی کد میشه. چطور میتونیم از تکنیک های مدیریت زمان توی این زمینه استفاده کنیم؟

بیایم با بخش تئوری که موضوع بعد فیزیکی و ذهنیه شروع کنیم.

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

بعد فیزیکی: اگه خسته، گرسنه، تشنه و اینجور چیزا باشی، انگیزه داشتن فایده ای نداره. به لانچ تایمت(lunchtime) احترام بذار، به نیاز انرژی بدنت توجه کن، ورزش کن و اینجور چیزا. بدنت هم یه ماشینیه و به نگهداری نیاز داره.

💡حالا بیایم به بخش عملی که موضوع تکنیک های مدیریت زمانه بریم.

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

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

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

🍅 پومودورو: قبلا خیلی در مورد پومودورو حرف زدم، ولی بذار از دیدگاه خودم بگم که چطور ازش استفاده می کنم. من از دسته های 25 دقیقه ای و 5 دقیقه ای استراحت برای کارهایی استفاده می کنم که یه جورایی می دونم چطور باید انجامشون بدم.
برای کارهایی که حتی نمی دونم از کجا باید شروعشون کنم، یه پومودوروی 30 دقیقه ای می ذارم تا در موردش یاد بگیرم و بعد تصمیم می گیرم که می تونم خودم انجامش بدم یا به کمک کسی نیاز دارم.

💢 نتیجه گیری:

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

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

🆔 @MdDaily
❤‍🔥6🔥21👍1
#tip
جلوگیری از اسپم فرم با هانی پات

طبق آخرین آمار تقریبا ۳۲ درصد از ترافیک اینترنت رو Bad bots ها تشکیل میدن. یعنی بات هایی که توی اینترنت میگردن داده جمع آوری میکنن یا ممکنه توی فرم های وبسایت ها اسپم بکنن مثل ارسال پیام های تبلیغاتی.

سناریویی رو در نظر بگرید که ما یه وبسایت داریم و توی این وبسایت یه صفحه ی ارتباط با ما ایجاد کردیم. حالا این بات های بد این صفحه ی ارتباط با ما رو پیدا کردن و شروع میکنن به ارسال پیام های تبلیغاتی و اسپم. چطوری میشه با کمترین پیچدگی ممکن از وارد شدن اطلاعات spam به دیتابیس جلوگیری کنیم؟

ممکنه با خودتون بگید خب از کپچا و Rate limiting استفاده میکنیم ولی بیایند یکم خلاقانه تر عمل کنیم!

خب تفاوت یه بات و یه کاربر موقع submit فرم چیه؟ تفاوتشون اینکه کاربر اون چیزی رو میبینه که شما می خواهید ببینه ولی بات همه چیزو میبینه.

بذارید یه مثال بزنم. یه فرم html ساده داریم با دوتا فیلد:

<form>
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>

<input type="hidden" id="hidden-field"
name="hidden-field" value="Only Bot Can See ME :)">

<button type="submit">Submit</button>
</form>


کاربر فقط فیلد Name رو میبینه ولی بات فیلد hidden رو هم میبینه و پرش میکنه. پس کافیه ما توی فرممون یه فیلد پنهان بذاریم که فقط توسط بات ها امکان پر شدنش وجود داره. به این روش میگن ایجاد هانی پات (Honeypot). در نتیجه وقتی داده ارسال میشه و فیلد hidden هم پرشده باشه، داده ها را وارد دیتابیس نمیکنیم :)


🆔 @MdDaily
👌18👍2🔥2
#معرفی

پروژه MarkdownDown

با استفاده از پروژه ی MarkdownDown میتونید آدرس هر وبسایتی رو بهش بدید و وبسایت رو تبدیل به markdown کنه.

قابلیت حذف محتوای اضافه مثل تبلیغات رو داره و حتی میتونید از قدرت chat gpt هم برای گرفتن خروجی بهتر استفاده کنید.

🔗 https://markdowndown.vercel.app/


🆔 @MdDaily
🔥5👍2
#انگیزشی
الان هم شنبس هم تاریخ رند ۳/۲/۱، هم اول ماهیم. دیگه بهونه ای برای شروع نکردن نیست :)


🆔 @MdDaily
😁14🤣1