خب خب خب آشنایی با Windows Subsystem for Linux (WSL) 🐧
امروز میخوایم دربارهی یه ابزار کاربردی تو ویندوز حرف بزنیم: Windows Subsystem for Linux یا به اختصار WSL. اگه تا حالا باهاش کار نکردین، حتماً این پست رو بخونین، چون قراره کلی چیزای جدید یاد بگیرین
🧠 WSL چیه؟
Windows Subsystem for Linux (WSL) یه ویژگی تو ویندوز ۱۰ و ۱۱ هست که به شما اجازه میده یه محیط لینوکس رو مستقیماً روی ویندوز اجرا کنین. یعنی میتونین دستورات لینوکس رو اجرا کنین، فایلهای لینوکس رو مدیریت کنین و حتی برنامههای لینوکسی رو اجرا کنین، همه اینا بدون اینکه نیاز به ماشین مجازی یا دوال بوت داشته باشین. این ابزار برای توسعهدهندهها، به خصوص کسایی که با پروژههای open source کار میکنن، خیلی مفیده چون منابع کمتری نسبت به یه ماشین مجازی کامل مصرف میکنه و کار باهاش خیلی راحتتره.
📚 نسخههای WSL
WSL دو نسخه داره که هر کدوم ویژگیهای خاص خودشون رو دارن:
1️⃣ WSL 1:
این نسخه سال ۲۰۱۶ معرفی شد و یه لایهی سازگاری بود که از کرنل ویندوز برای اجرای برنامههای لینوکسی استفاده میکرد. ولی چون از کرنل لینوکس واقعی استفاده نمیکرد، بعضی وقتها محدودیتهایی داشت.
2️⃣ WSL 2:
این نسخه سال ۲۰۱۹ اومد و یه کرنل لینوکس واقعی رو تو یه ماشین مجازی سبک اجرا میکنه. به همین خاطر، عملکرد و سازگاری بهتری داره، به خصوص تو عملیات سنگین مثل کار با فایلها.
WSL 2 از تکنولوژی Hyper-V (یه سیستم مجازیسازی تو ویندوز) استفاده میکنه و به همین دلیل توصیه میشه ازش استفاده کنین، چون امکانات بیشتری داره و سریعتره.
🚀 نصب WSL
نصب WSL خیلی سادست و بسته به نسخهی ویندوزتون فرق میکنه:
تو ویندوز ۱۱:
WSL به صورت پیشفرض نصب شده، ولی باید یه توزیع لینوکس (مثل Ubuntu یا Debian) رو از Microsoft Store دانلود و نصب کنین.
تو ویندوز ۱۰:
باید WSL رو دستی نصب کنین. برای این کار، PowerShell رو با دسترسی Administrator باز کنین و دستور زیر رو اجرا کنین:
این دستور WSL رو همراه با یه توزیع پیشفرض (معمولاً Ubuntu) نصب میکنه. اگه میخواین توزیع دیگهای نصب کنین، از این دستور استفاده کنین:
مثلاً برای نصب Debian:
WSL از توزیعهای مختلفی مثل Ubuntu، Debian، Kali و Fedora پشتیبانی میکنه که میتونین هر کدوم رو که دوست دارین انتخاب کنین.
🛠 استفاده از WSL
با WSL، میتونین یه محیط توسعهی کامل لینوکس رو تو ویندوز داشته باشین. چند تا مثال از کارایی که میتونین بکنین:
دستورات لینوکس:
از دستوراتی مثل
ویرایشگرهای متنی:
میتونین از Vim، Emacs یا حتی VS Code با افزونهی WSL کار کنین.
ابزارهای توسعه: Git، Docker، Node.js و خیلی چیزای دیگه رو نصب و استفاده کنین.
سرورهای وب:
میتونین سرورهایی مثل Apache یا Nginx رو تو WSL اجرا کنین و با مرورگر ویندوز بهشون دسترسی داشته باشین.
📂 دسترسی به فایلها
یکی از ویژگیهای جذاب WSL اینه که میتونین بین ویندوز و لینوکس فایلهاتون رو به اشتراک بذارین:
از WSL به ویندوز:
فایلهای ویندوز تو مسیر
از ویندوز به WSL:
فایلهای لینوکس رو میتونین تو File Explorer ویندوز از مسیر
برای عملکرد بهتر، پیشنهاد میشه فایلهای پروژهتون رو تو فایلسیستم لینوکس (نه درایو ویندوز) نگه دارین، به خصوص اگه از WSL 2 استفاده میکنین.
🔍 نکات و ترفندها
عملکرد بهتر با WSL 2:
WSL 2 به خاطر استفاده از کرنل واقعی لینوکس و Hyper-V، تو عملیات سنگین مثل کار با فایلها خیلی بهتر عمل میکنه.
مدیریت توزیعها:
میتونین چند تا توزیع لینوکس نصب کنین و با دستور
بینشون جابهجا بشین.
بهروزرسانی WSL:
برای آپدیت کردن WSL، از این دستور استفاده کنین:
دسترسی به GPU:
WSL 2 از GPU پشتیبانی میکنه که برای کارهای ماشین لرنینگ یا گرافیکی عالیه.
محدودیتها:
WSL از systemd پشتیبانی نمیکنه، که ممکنه برای بعضی سرویسها مشکلساز باشه، ولی راهحلهای غیررسمی برای این موضوع وجود داره.
✍️ جمعبندی
Windows Subsystem for Linux (WSL) یه ابزار فوقالعادهست که به شما اجازه میده ویندوز و لینوکس رو با هم داشته باشین. چه توسعهدهنده باشین، چه فقط بخواین لینوکس رو امتحان کنین، WSL یه راه سریع و ساده برای این کاره.
➖➖➖➖➖➖➖➖➖
امروز میخوایم دربارهی یه ابزار کاربردی تو ویندوز حرف بزنیم: Windows Subsystem for Linux یا به اختصار WSL. اگه تا حالا باهاش کار نکردین، حتماً این پست رو بخونین، چون قراره کلی چیزای جدید یاد بگیرین
🧠 WSL چیه؟
Windows Subsystem for Linux (WSL) یه ویژگی تو ویندوز ۱۰ و ۱۱ هست که به شما اجازه میده یه محیط لینوکس رو مستقیماً روی ویندوز اجرا کنین. یعنی میتونین دستورات لینوکس رو اجرا کنین، فایلهای لینوکس رو مدیریت کنین و حتی برنامههای لینوکسی رو اجرا کنین، همه اینا بدون اینکه نیاز به ماشین مجازی یا دوال بوت داشته باشین. این ابزار برای توسعهدهندهها، به خصوص کسایی که با پروژههای open source کار میکنن، خیلی مفیده چون منابع کمتری نسبت به یه ماشین مجازی کامل مصرف میکنه و کار باهاش خیلی راحتتره.
📚 نسخههای WSL
WSL دو نسخه داره که هر کدوم ویژگیهای خاص خودشون رو دارن:
1️⃣ WSL 1:
این نسخه سال ۲۰۱۶ معرفی شد و یه لایهی سازگاری بود که از کرنل ویندوز برای اجرای برنامههای لینوکسی استفاده میکرد. ولی چون از کرنل لینوکس واقعی استفاده نمیکرد، بعضی وقتها محدودیتهایی داشت.
2️⃣ WSL 2:
این نسخه سال ۲۰۱۹ اومد و یه کرنل لینوکس واقعی رو تو یه ماشین مجازی سبک اجرا میکنه. به همین خاطر، عملکرد و سازگاری بهتری داره، به خصوص تو عملیات سنگین مثل کار با فایلها.
WSL 2 از تکنولوژی Hyper-V (یه سیستم مجازیسازی تو ویندوز) استفاده میکنه و به همین دلیل توصیه میشه ازش استفاده کنین، چون امکانات بیشتری داره و سریعتره.
🚀 نصب WSL
نصب WSL خیلی سادست و بسته به نسخهی ویندوزتون فرق میکنه:
تو ویندوز ۱۱:
WSL به صورت پیشفرض نصب شده، ولی باید یه توزیع لینوکس (مثل Ubuntu یا Debian) رو از Microsoft Store دانلود و نصب کنین.
تو ویندوز ۱۰:
باید WSL رو دستی نصب کنین. برای این کار، PowerShell رو با دسترسی Administrator باز کنین و دستور زیر رو اجرا کنین:
wsl --install
این دستور WSL رو همراه با یه توزیع پیشفرض (معمولاً Ubuntu) نصب میکنه. اگه میخواین توزیع دیگهای نصب کنین، از این دستور استفاده کنین:
wsl --install -d <Distribution Name>
مثلاً برای نصب Debian:
wsl --install -d Debian
WSL از توزیعهای مختلفی مثل Ubuntu، Debian، Kali و Fedora پشتیبانی میکنه که میتونین هر کدوم رو که دوست دارین انتخاب کنین.
🛠 استفاده از WSL
با WSL، میتونین یه محیط توسعهی کامل لینوکس رو تو ویندوز داشته باشین. چند تا مثال از کارایی که میتونین بکنین:
دستورات لینوکس:
از دستوراتی مثل
ls
(البته تو لینوکس dir
نیست، اینجا منظورم ls
-مانندها بود)، grep
،
awk
و غیره استفاده کنین.ویرایشگرهای متنی:
میتونین از Vim، Emacs یا حتی VS Code با افزونهی WSL کار کنین.
ابزارهای توسعه: Git، Docker، Node.js و خیلی چیزای دیگه رو نصب و استفاده کنین.
سرورهای وب:
میتونین سرورهایی مثل Apache یا Nginx رو تو WSL اجرا کنین و با مرورگر ویندوز بهشون دسترسی داشته باشین.
📂 دسترسی به فایلها
یکی از ویژگیهای جذاب WSL اینه که میتونین بین ویندوز و لینوکس فایلهاتون رو به اشتراک بذارین:
از WSL به ویندوز:
فایلهای ویندوز تو مسیر
/mnt/c
(یا /mnt/d
برای درایوهای دیگه) قابل دسترسی هستن.از ویندوز به WSL:
فایلهای لینوکس رو میتونین تو File Explorer ویندوز از مسیر
\\wsl$\<Distribution Name>
ببینین.برای عملکرد بهتر، پیشنهاد میشه فایلهای پروژهتون رو تو فایلسیستم لینوکس (نه درایو ویندوز) نگه دارین، به خصوص اگه از WSL 2 استفاده میکنین.
🔍 نکات و ترفندها
عملکرد بهتر با WSL 2:
WSL 2 به خاطر استفاده از کرنل واقعی لینوکس و Hyper-V، تو عملیات سنگین مثل کار با فایلها خیلی بهتر عمل میکنه.
مدیریت توزیعها:
میتونین چند تا توزیع لینوکس نصب کنین و با دستور
wsl -d <Distribution Name>
بینشون جابهجا بشین.
بهروزرسانی WSL:
برای آپدیت کردن WSL، از این دستور استفاده کنین:
wsl --update
دسترسی به GPU:
WSL 2 از GPU پشتیبانی میکنه که برای کارهای ماشین لرنینگ یا گرافیکی عالیه.
محدودیتها:
WSL از systemd پشتیبانی نمیکنه، که ممکنه برای بعضی سرویسها مشکلساز باشه، ولی راهحلهای غیررسمی برای این موضوع وجود داره.
✍️ جمعبندی
Windows Subsystem for Linux (WSL) یه ابزار فوقالعادهست که به شما اجازه میده ویندوز و لینوکس رو با هم داشته باشین. چه توسعهدهنده باشین، چه فقط بخواین لینوکس رو امتحان کنین، WSL یه راه سریع و ساده برای این کاره.
#️⃣ #porgramming #wsl #linux #windows
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10❤2❤🔥1👌1
خب خب خب
اولین مقاله من که توی سایت medium پابلیش شد
(نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم)
خیلی خلاصه بخوام بگم
امید وارم مفید واقع بشه 😊
(اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی کامنتای خود مقاله بهم بگید)
🔗 لینک مقاله
و از این لینک هم میتونید مطالعه کنید
➖➖➖➖➖➖➖➖➖
اولین مقاله من که توی سایت medium پابلیش شد
(نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم)
خیلی خلاصه بخوام بگم
یه بست پرکتیسه برای ساختار فایل بندی پروژتون
امید وارم مفید واقع بشه 😊
(اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی کامنتای خود مقاله بهم بگید)
🔗 لینک مقاله
و از این لینک هم میتونید مطالعه کنید
#️⃣ #refrence
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Medium
Structuring a FastAPI Project: Best Practices
FastAPI is a powerful and efficient web framework for building APIs with Python. However, as projects grow, organizing the code properly…
🤩14🔥7❤4👏3❤🔥1👍1👌1
Ninja Learn | نینجا لرن
خب خب خب اولین مقاله من که توی سایت medium پابلیش شد (نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم) خیلی خلاصه بخوام بگم یه بست پرکتیسه برای ساختار فایل بندی پروژتون امید وارم مفید واقع بشه 😊 (اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی…
موقت:
متاسفانه پلتفرم فارسی مناسبی برای مقالات توی این سبکی پیدا نکردم :)
احتمالا مقالات بصورت انگلیسی کلا منتشر شه مگر اینکه پلتفرم خوبی پیدا کنم
متاسفانه پلتفرم فارسی مناسبی برای مقالات توی این سبکی پیدا نکردم :)
احتمالا مقالات بصورت انگلیسی کلا منتشر شه مگر اینکه پلتفرم خوبی پیدا کنم
👍8💔2🤣1
Ninja Learn | نینجا لرن pinned «خب خب خب اولین مقاله من که توی سایت medium پابلیش شد (نسخه فارسیشم احتمالا یا تو خود مدیوم یا توی ویرگول میزارم) خیلی خلاصه بخوام بگم یه بست پرکتیسه برای ساختار فایل بندی پروژتون امید وارم مفید واقع بشه 😊 (اگه مشکلی دیدید یا پیشنهادی داشتید میتونید توی…»
خب سلام دوستان 👋
هرکسی که میخواد توی پروژه های اوپن سورس Diramid (تیم توسعه نرم افزار های اوپن سورس) شرکت کنه
میتونه عضو این گروه بشه
https://t.iss.one/+WpLLMkght6w1ZDU0
برای هر پروژه یک تاپیک زده شده.
و توجه داشته باشید این گروه جای چت و گپ زدن نیست.
قبل از عضو شدن اگر مطمئن هستید که میخواید کمک کنید عضو بشید.
با تشکر از همه ی شما عزیزان ❤️
هرکسی که میخواد توی پروژه های اوپن سورس Diramid (تیم توسعه نرم افزار های اوپن سورس) شرکت کنه
میتونه عضو این گروه بشه
https://t.iss.one/+WpLLMkght6w1ZDU0
برای هر پروژه یک تاپیک زده شده.
و توجه داشته باشید این گروه جای چت و گپ زدن نیست.
قبل از عضو شدن اگر مطمئن هستید که میخواید کمک کنید عضو بشید.
با تشکر از همه ی شما عزیزان ❤️
🥷 CHANNEL | GROUP
Telegram
Diramid
Mohammad invites you to join this group on Telegram.
👍7
خب خب خب ORM چیه ؟ 🛸
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
میتونی تو پایتون با Django ORM اینجوری بنویسی:
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
تو برنامهات یه کلاس به اسم
چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
➖➖➖➖➖➖➖➖➖
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
SELECT * FROM users
میتونی تو پایتون با Django ORM اینجوری بنویسی:
users = User.objects.all()
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
users
داری که ستونهاش اینان: id،name
و
تو برنامهات یه کلاس به اسم
User
میسازی که پراپرتیهایی مثل id
، name
و email
داره. ORM این کلاس رو به جدول users
توی دیتابیس مپ (map) میکنه. یعنی هر شیء از کلاس User
نمایانگر یه رکورد تو جدول users
میشه.چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
User
میسازی، مقادیرش رو پر میکنی و با یه متد مثل save()
ذخیرهاش میکنی. ORM این کار رو به یه دستور SQL (مثل INSERT
) تبدیل میکنه و اجرا میکنه.user = User(name='علی', email='[email protected]')
user.save()
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
all()
یا filter()
استفاده میکنی. ORM پشت صحنه کوئری مناسب رو میسازه و دادهها رو به شکل اشیاء برمیگردونه.# همه کاربرها
users = User.objects.all()
# فیلتر کردن
ali_users =
User.objects.filter(name='علی')
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
البته هر orm با orm های دیگه فرق داره هرچی یه orm بیشتر abstraction انجام داده باشه استفاده ازش راحت تر میشه🚀 ORM برای چی به وجود اومد؟
ولی توی مقیاس بالاتر همین سادگی باعث پیچیدگی میشه.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
#️⃣ #database #sql #orm
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
❤14👍4
مقاله بعدی درمورد داکرایز کردن پروژه توی fastapi هست
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
(اگه ایده ای هم برای مقالات دارید خوشحال میشم بشنوم)
🔥17👍4
فردا کتاب boost your djangoDx رو میزارم :)
پیشاپیش عیدتون مبارک ❤️
پیشاپیش عیدتون مبارک ❤️
🔥27
کوکیکاتر خودمو زدم
میتونید با
از PyPI میتونید دانلود کنید:
تست کنین و بگین چطوره🚀
➖➖➖➖➖➖➖➖➖
میتونید با
fastapi-cookiecutters
یه پروژه FastAPI تمیز و آماده بسازین. و دیتابیس، Docker، هر چی بخوای اضافه میکنه از PyPI میتونید دانلود کنید:
pip install fastapi-cookiecutters
تست کنین و بگین چطوره🚀
#️⃣ #package
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10👎1🔥1
Forwarded from Linux Zone | لینوکس زون
فرآیند بوت شدن سیستم های لینوکسی ⏳🚀
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
➖➖➖➖➖➖➖➖➖➖
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.
1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمهی پاور رو میزنی، اولین چیزی که اجرا میشه، BIOS (تو سیستمهای قدیمیتر) یا UEFI (تو سیستمهای جدید) هست. این قسمت سختافزار رو بررسی میکنه و مطمئن میشه که قطعات اصلی (مثل رم، پردازنده و دیسکها) درست کار میکنن.
تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته میشه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار میده.
پیدا کردن بوت لودر: بعد از تست سختافزار، BIOS/UEFI دنبال دیسک قابل بوت میگرده (مثل SSD یا USB) و بوتلودر رو اجرا میکنه.
2️⃣ بوتلودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوتلودر (معمولاً GRUB) اجرا میشه. بوتلودر یه برنامهی کوچیکه که وظیفهی لود کردن کرنل لینوکس رو داره.
انتخاب سیستمعامل:
اگه چند تا سیستمعامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا میتونی انتخاب کنی که کدوم یکی بوت بشه.
بارگذاری کرنل:
بعد از انتخاب سیستمعامل (یا بعد از چند ثانیه اگه گزینهای انتخاب نشه)، بوتلودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری میکنه.
3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا میشه و شروع به کنترل سختافزار میکنه. اما چون هنوز فایلسیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا میشه.
initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایلسیستم اصلیه. به کرنل کمک میکنه که بتونه پارتیشنهای دیسک رو بشناسه و مونت کنه.
4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایلسیستم اصلی دسترسی پیدا کنه، حالا سیستم آمادهی راهاندازی سرویسها و بقیهی چیزهاست.
ورود systemd:
تو اکثر توزیعهای مدرن لینوکس، systemd اجرا میشه و وظیفهی مدیریت سرویسها و فرآیندهای سیستم رو به عهده داره.
راهاندازی سطح سیستم:
اینجا کلی سرویس اجرا میشن، مثل:
مدیریت شبکه (NetworkManager یا systemd-networkd)
مدیریت لاگها (journald)
راهاندازی محیط گرافیکی (GDM، SDDM یا LightDM)
5️⃣ نمایش صفحهی لاگین
در نهایت، بعد از اینکه همه سرویسهای لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده میشه و میتونی با یوزرنیم و پسورد وارد سیستم بشی.
جمعبندی:
1. BIOS/UEFI اجرا میشه و سختافزار رو بررسی میکنه.
2. بوتلودر (GRUB) کرنل لینوکس رو لود میکنه.
3. کرنل و initramfs فایلسیستم رو راهاندازی میکنن.
4. systemd مدیریت سرویسها رو انجام میده.
5. صفحهی لاگین نمایش داده میشه و سیستم آمادهی استفادهست!
#️⃣ #linux #boot #kernel
➖➖➖➖➖➖➖➖➖➖
🐧 CHANNEL | GROUP
👍10🔥1
Forwarded from Revisto/Tech (Revisto)
سلام سلام. من پروژهای رو شروع کردم برای ترجمهی آزاد مستندات و داکیومنتهای رسمی پایتون به فارسی.
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.
اسم ما و مخزن پایتون به فارسی روی بخش ترجمهی devguide پایتون هم هست و من کارهای لازم رو برای به رسمیت شناخته شدن فعالیتمون کردم و الان نیاز به کمک شما داره.
طبق مستندات وقتی صفحههای
tutorial
, bugs
, library/functions
صددرصد ترجمه بشن میتونیم درخواست بدیم تا ترجمهمون بخشی از docs.python.org و عمومی بشه.کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.
ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیقتر گفتم چجوری میشه شروعش کرد.
لینک ویدیو در یوتیوب
لینک مخزن گیتهاب ترجمه
لینک دیسکورد ترجمه فارسی
@RevistoTech
🔥8👍2
Revisto/Tech
Photo
ریا نباشه منم دارم داکیومنت FastAPI رو ترجمه میکنم 😁✌️ ( اگه وقت کنم توی این پروژه هم مشارکت میکنم)
❤18🔥5
خب خب خب Alembic 🧪
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
نصبش میکنین. بعد با دستور
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
این اسکریپت دو تا تابع داره:
3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
اگه بخواین برگردین به نسخه قبلی:
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
پیچیدگی:
بازگشت پذیری:
Alembic اومد که:
اتوماسیون:
نسخه بندی:
هماهنگی:
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
حالا میخواین یه ستون
با دستور
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
➖➖➖➖➖➖➖➖➖
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
pip install alembic
نصبش میکنین. بعد با دستور
alembic init نام اختیاری
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
alembic
).2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
alembic revision --autogenerate -m "اضافه کردن ستون جدید"
این اسکریپت دو تا تابع داره:
**upgrade()
** برای اعمال تغییرات و
**downgrade()
** برای برگردوندنش.
3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
alembic upgrade head
اگه بخواین برگردین به نسخه قبلی:
alembic downgrade -1
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
alembic_version
تو دیتابیستون میسازه و نسخه فعلی رو اونجا نگه میداره تا همیشه بدونین کجای کار هستین.🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
یه اشتباه کوچیک تو کوئری میتونست دیتابیس رو به هم بریزه.
پیچیدگی:
تو پروژههای تیمی، هماهنگ کردن تغییرات دیتابیس بین اعضا سخت بود.
بازگشت پذیری:
اگه یه تغییر اشتباه میکردین، برگردوندنش یه کابوس بود.
Alembic اومد که:
اتوماسیون:
تغییرات رو خودکار تشخیص بده و اسکریپت
بسازه.
نسخه بندی:
تاریخچه تغییرات رو نگه داره و بتونه عقب و
جلو بره.
هماهنگی:
تو تیمها همه بتونن با یه سیستم مشخص کار کنن.
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
حالا میخواین یه ستون
email
اضافه کنین:class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
با دستور
alembic revision --autogenerate -m "add email"
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
alembic upgrade head
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
#️⃣ #db #alembic #sqlalchemy
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
🔥11👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
سال نو مبارک:) ❤️
امید وارم سال ۱۴۰۴ پر از شادی و خبرای خوب برای همگیمون باشه
امید وارم سال ۱۴۰۴ پر از شادی و خبرای خوب برای همگیمون باشه
❤🔥20❤1🔥1