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
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
۱۱ تا tip کمک کننده در برنامه نویسی

۱.حفظ نکن!

یاد بگیر چطور اطلاعاتی که نیاز داری رو پیدا کنی. منظورم فقط StackOverflow و GenAI نیست. برای ابزارها و زبان‌هایی که استفاده می‌کنی، باید بدونی که مستنداتشون کجا پیدا می‌شه. کی بهترین راهنماها رو می‌نویسه؟ مهم نیست که یادت نمی‌مونه موقع استفاده از عملگر شرطی اولویت با ؟ یا : هست. مهم اینه که بدونی کی از یه عملگر شرطی استفاده کنی و کجا دقیقاً syntax رو پیدا کنی. ابزارها دائماً به‌روز می‌شن یه راهی برای به‌روز بودن پیدا کن، چه یه خبرنامه باشه چه یه دوست که عاشق CSS هست :)

۲.رو اصول اولیه عمیقاً کار کن!

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

۳.تفکر سیستمی خیلی به دردت می‌خوره!

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

۴.قبل از پرسیدن، امتحان کن تا هیچ وقت سوالت مسخره نباشه!

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

۵.هر خط کد یه دردسره!

کد
رو طوری بنویس که انگار یه نفر دیگه قراره اون رو فیکس کنه. (حتی اگه اون یه نفر خودت باشی تو ۶ ماه دیگه!) دلیل کارهاتو مستند کن تا بعداً یه چیزی رو ناخواسته خراب نکنی. قبل از اینکه یه ابزار رو جزئی از سیستم کنی، نظرات بقیه رو راجع بهش بخون، شاید نظرات اون ابزار با قابلیت‌هایی که نیاز داری، جور درنیاد!

۶.خوندن کد بقیه رو تمرین کن!

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

۷.تست کن و باز هم تست کن!

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

۸.تمرین کن تا نیازمندی‌ها رو به نرم‌افزار تبدیل کنی!

ایشو:
یک دکمه به صفحه اضافه کن که یه modal باز کنه و کاربر بتونه این داده رو ویرایش کنه


ازت انتظار می‌ره بتونی یه همچین نیازمندی‌ای رو به یه لیست از مرحله‌ها (list of steps) یا شبه‌کد تبدیل کنی. اگه تیکت خیلی گنگه، برای شفاف تر شدنش سوال بپرس. بعد از اینکه مرحله‌ها رو مشخص کردی، نوبت این می‌رسه که اونا رو به کد و (امیدوارم) تست برای اون کد تبدیل کنی. بعدش هم کد رو وارد version control کنی، ریویو و کنترل کیفیت بشه و توی پروسه‌ی deployment قرار بگیره. برای تمرین کردن این کار، پروژه‌های اپن سورس عالین.

۹.کامیونیتی خیلی مهمه!

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

۱۰.چیزی رو تو برنامه‌نویسی پیدا کن که ازش لذت می‌بری!

نمی‌گم عاشق شغلت بشو یا تبدیل به اون برنامه‌نویس افسانه‌ای و پرشور (Passionate Programmer) بشین. اما یادگیری مداوم یعنی اینکه خودت رو برای ناخوشایندی‌های(discomfort) مکرر آماده کنی. اگه نمی‌دونی چرا می‌خوای هر روز صبح بیدار شی و این کار رو با خودت بکنی، آسیب میبینی. می‌تونه یه دلیل کاملاً خودخواهانه باشه، اما باید دلیل خودت رو پیدا کنی.

۱۱.هرکسی تو مسیر خودش قرار داره!

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

🆔 @MdDaily
❤‍🔥5👌3👍1🔥1
دیتابیس SQL در مقابل NoSQL: کی چی به کارمون میاد؟

توی دنیای امروز، انتخاب بین SQL و NoSQL می‌تونه گیچ کننده باشه، مخصوصاً با این همه گزینه‌ دردسترس. از دیتابیس های relational مثل MySQL یا PostgreSQL گرفته تا دیتابیس های مدرن مبتنی بر داکیومنت مثل MongoDB یا ذخیره‌سازهای کلید-مقدار مثل DynamoDB، انتخاب بهترین گزینه برای پروژه‌هامون می‌تونه حسابی سخت باشه.

تو این پست قرار این موضوع رو ساده‌تر کنیم و بفهمیم کدومشون برای چه کاری بهتره.

دیتابیس ها SQL چی هستن؟

دیتابیس های SQL که بهشون دیتابیس ها رابطه‌ای (relational databases) هم می‌گن، سال‌هاست که تو دنیای تکنولوژی حرف اول رو می‌زنن. این دیتابیس ها ساختارشون جدولی هست و از یه زبون به اسم SQL (زبان پرس و جوی ساختاریافته) برای تعریف و دستکاری داده‌ها استفاده می‌کنن. SQL برای کارهایی که به انسجام و دقت داده و کوئری های پیچیده نیاز دارن، عالیه.

یکی از مزایای اصلی دیتابیس ها SQL مثل MySQL و PostgreSQL اینه که با استفاده از relationship ها، می‌تونن از یکپارچگی داده‌ها مطمئن بشن. دیتابیس ها SQL با تعریف یه سری قوانین از قبل، یه جوری داده‌ها رو ذخیره می‌کنن که همیشه دقیق و منظم باشن.


از SQL کجا ها استفاده کنیم؟

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

👈 گزارش‌گیری و تحلیل

👈 انبار داده: از SQL خیلی وقت‌ها برای ذخیره و تحلیل اطلاعاتی مثل اطلاعات مربوط به فروش یا رفتار مشتری‌ها استفاده می‌شه.

دیتابیس ها NoSQL

دیتابیس ها NoSQL مثل MongoDB و ElasticSearch برخلاف پایگاه‌های SQL، رویکردی منعطف‌تر و بدون اسکما (schema-less) برای داده‌ها ارائه می‌دن. این پایگاه‌ها برای مدیریت حجم زیادی از داده‌های بدون ساختار یا نیمه ساختار طراحی شدن و برای مواردی که در اونجا مقیاس‌پذیری، انعطاف‌پذیری و کارایی حرف اول رو می‌زنن، عالی هستن.

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

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

از NoSQL کجا ها استفاده کنیم؟

👈 سیستم‌های توزیع‌شده و مقیاس‌پذیر.

👈 داده‌های حجیم و Real-Time Analytics: دیتابیس های NoSQL در سناریوهایی که شامل داده‌های حجیم و تحلیل لحظه‌ای هستن و در اونجا توان عملیاتی بالا و تأخیر کم اهمیت زیادی داره، عالی عمل می‌کنن.اون‌ها به طور معمول در اپلیکیشن‌هایی مانند IoT، تحلیل شبکه‌های اجتماعی و real-time recommendation engines استفاده می‌شن.


تصورات غلط رایج

با وجود تمام نقاط قوتی که دیتابیس های SQL و NoSQL دارن، در موردشون یه سری تصورات غلط رایج وجود داره.

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

دیتابیس ها SQL نمی‌تونن به صورت horizontal مقیاس‌پذیر باشن: هر دوی دیتابیس ها SQL و NoSQL می‌تونن به صورت horizontal مقیاس‌پذیر باشن، حتی اگه روش های مقیاس پذیریشون متفاوت باشه

دیتابیس ها NoSQL از transactional پشتیبانی نمی‌کنن: بسیاری از دیتابیس ها NoSQL قابلیت‌های تراکنشی رو ارائه می‌دن، با وجود اینکه با چیزی که تو دیتابیس ها SQL به عنوان ACID شناخته می‌شه، فرق کنه.

دیتابیس ها NoSQL همیشه از دیتابیس ها SQL سریع‌تر هستن: عملکرد یه پایگاه داده به عوامل مختلفی بستگی داره، از جمله ماهیت حجم کاری، توزیع داده، الگوهای دسترسی به داده و استراتژی‌های ایندکس‌گذاری. هر دوی دیتابیس ها SQL و NoSQL می‌تونن بهینه سازی بشن.

نتیجه‌گیری

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

🆔 @MdDaily
👌41👍1🔥1
#شاید_موقت

چند وقته میخوام مقاله ی 🧠 How to be a great software engineer without using your brain. رو در قالب پست کانال خلاصه و عامیانه کنم ولی موقعی که به فارسی برمیگرده اون حالو هوای مقاله اصلی رو از دست میده :)

درکل مقاله ی جالبیه. اگه پیشنهادی دارید خوشحال میشم توی کامنت ها به اشتراک بگذارید
👍3🔥1