Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Seyed Mohammad Khoshnava)
📌 مدیریت وابستگی ها در پایتون
خب امروزه دیگه خیلی از پایتونر ها برای شروع یک پروژه اول میان یک virtual env میسازن و برای مدیریت وابستگی ها با pip freeze میان هر چی داده رو میریزن توی یک فایل متنی مثل requirements.txt و خب به خودمون میبالیم که چقدر ما خفنیم و مثل برنامه نویس های ارشد داریم اصولی جلو میریم
اما یک لحظه صبر کنید. آیا این کار درسته🤔 ؟ آیا نوشتن این کامند توی ترمینالمون بحث وابستگی های پروژه رو هندل کردیم و هر وقت بخوایم روی سیستم دیگه ای اجرا کنیم با زدن یک کامند نصب همه چیز درست انجام میشه ؟
نه اینجا یک مشکلی داریم. بریم ببینیم مشکل چیه و چطور پیش میاد.
فرض کنید کتابخانه A را توی پروژه خودتون نصب کردید، که ممکنه یک وابستگی فرعی B، C و D داشته باشه. حالا، فایل requirements.txt شما با دستور بالا شبیه به این هستش.
حالا میگیم که، مالک کتابخانه A نسخه جدیدی رو منتشر می کنه که از نسخه دیگری از کتابخانه B استفاده می کنه و کتابخانه C را حذف می کنه. از اونجایی که B و C قبلاً نصب شده اند، پیپ فریز اون رو به طور خودکار انتخاب می کنه و در نسخه های اصلی قرار میده. حالا در پروژه ای با 100 وابستگی، فایل نیازمندی های شما با تغییر کتابخانه ها بسیار مشکل ساز می شه. شما باید تمام وابستگی های فرعی را شناسایی کنید و بر اساسش اونهارو را حذف کنید. در این مثال اگر A از پروژه حذف بشه، شما همچنان با B، C و D گیر میافتید، حتی اگر آنها فقط به دلیل A نصب شده باشند. حذف هر یک از اونها یک کار بزرگه و میتونه در پروژههای بزرگ بسیار آزاردهنده باشه.
💡راه حل ؟
خب دیگه خودتون برید دنبال راه حلش باشید. به من چه 😕
باشه حالا.بیایید بگم یکی از راه حل ها چیه.😁 یک کتابخونه هست به نام pipreqs که لینکش رو این پایین میزارم. و میتونه خیلی به حل این مشکل کمک کنه
https://pypi.org/project/pipreqs/
🔰 خب بریم برای دلایل برتری این نسبت به pip freeze :
1⃣ نکته اول اینکه توی pip freeze فقط پکیج هایی که با pip install نصب شدند و وابستگی هاشون میاد.
و اگر ما بیاییم از chocolatey, conda, setuptools استفاده کنیم توی خروجی pip freeze این ها نمیان 🤨
اما خب pipreqs این محدودیت هارو نداره.
2⃣ نکته دوم اینه که pip freeze تمام وابستگی های پروژه هارو هم توی خودش ذخیره میکنه. که خب ما اصلا اون هارو به صورت مستقیم توی پروژه ایمپورت نمیکنیم.
خب این کار اشتباهی هست که در اول این متن توضیح داده بودم . اما توی pipreqs ما فقط وابستگی هایی رو نصب میکنیم که توی پروژه ایمپورت شده باشند.
🎊 حالا نمیخواد بترسید. کار با pipreqs خیلی آسونه. مثلا با دستور زیر یک فایل requirements.txt میسازه خودش .
اگر فایلش هم از قبل موجود باشه با این دستور باید انجام بدید
دوتا جایگزین هم برای pipreqs هست که میتونید از اون ها هم استفاده کنید .
https://github.com/jazzband/pip-tools
https://python-poetry.org
📋 نتیجه گیری :
با دستور pip freeze ممکنه در ابتدا بسیار مفید به نظر برسه، اما به دلایل زیر می تونه پروژه شما را خراب کند:
تمام کتابخانه های نصب شده در پروژه شما از جمله وابستگی ها و وابستگی های فرعی را در فایل requirements.txt تخلیه می کنه.
هنوز کتابخانه هایی را که با استفاده از pip نصب نشده اند از دست می ده.
اگر کتابخانه ای در پروژه استفاده نشه، به طور خودکار حذف نمی شه.
به دلایل ذکر شده، توصیه می شود از pipreqs استفاده کنید، یک کتابخانه پایتون که تمام مشکلات بالا را برطرف می کنه و استفاده از اون خیلی آسون تره.
🖥 @SEYED_BAX
خب امروزه دیگه خیلی از پایتونر ها برای شروع یک پروژه اول میان یک virtual env میسازن و برای مدیریت وابستگی ها با pip freeze میان هر چی داده رو میریزن توی یک فایل متنی مثل requirements.txt و خب به خودمون میبالیم که چقدر ما خفنیم و مثل برنامه نویس های ارشد داریم اصولی جلو میریم
اما یک لحظه صبر کنید. آیا این کار درسته🤔 ؟ آیا نوشتن این کامند توی ترمینالمون بحث وابستگی های پروژه رو هندل کردیم و هر وقت بخوایم روی سیستم دیگه ای اجرا کنیم با زدن یک کامند نصب همه چیز درست انجام میشه ؟
pip freeze > requirements.txt
pip install -r requirements.txt
نه اینجا یک مشکلی داریم. بریم ببینیم مشکل چیه و چطور پیش میاد.
فرض کنید کتابخانه A را توی پروژه خودتون نصب کردید، که ممکنه یک وابستگی فرعی B، C و D داشته باشه. حالا، فایل requirements.txt شما با دستور بالا شبیه به این هستش.
A==1.0
B==2.0
C==1.4
D==1.2
حالا میگیم که، مالک کتابخانه A نسخه جدیدی رو منتشر می کنه که از نسخه دیگری از کتابخانه B استفاده می کنه و کتابخانه C را حذف می کنه. از اونجایی که B و C قبلاً نصب شده اند، پیپ فریز اون رو به طور خودکار انتخاب می کنه و در نسخه های اصلی قرار میده. حالا در پروژه ای با 100 وابستگی، فایل نیازمندی های شما با تغییر کتابخانه ها بسیار مشکل ساز می شه. شما باید تمام وابستگی های فرعی را شناسایی کنید و بر اساسش اونهارو را حذف کنید. در این مثال اگر A از پروژه حذف بشه، شما همچنان با B، C و D گیر میافتید، حتی اگر آنها فقط به دلیل A نصب شده باشند. حذف هر یک از اونها یک کار بزرگه و میتونه در پروژههای بزرگ بسیار آزاردهنده باشه.
💡راه حل ؟
خب دیگه خودتون برید دنبال راه حلش باشید. به من چه 😕
باشه حالا.بیایید بگم یکی از راه حل ها چیه.😁 یک کتابخونه هست به نام pipreqs که لینکش رو این پایین میزارم. و میتونه خیلی به حل این مشکل کمک کنه
https://pypi.org/project/pipreqs/
🔰 خب بریم برای دلایل برتری این نسبت به pip freeze :
1⃣ نکته اول اینکه توی pip freeze فقط پکیج هایی که با pip install نصب شدند و وابستگی هاشون میاد.
و اگر ما بیاییم از chocolatey, conda, setuptools استفاده کنیم توی خروجی pip freeze این ها نمیان 🤨
اما خب pipreqs این محدودیت هارو نداره.
2⃣ نکته دوم اینه که pip freeze تمام وابستگی های پروژه هارو هم توی خودش ذخیره میکنه. که خب ما اصلا اون هارو به صورت مستقیم توی پروژه ایمپورت نمیکنیم.
خب این کار اشتباهی هست که در اول این متن توضیح داده بودم . اما توی pipreqs ما فقط وابستگی هایی رو نصب میکنیم که توی پروژه ایمپورت شده باشند.
🎊 حالا نمیخواد بترسید. کار با pipreqs خیلی آسونه. مثلا با دستور زیر یک فایل requirements.txt میسازه خودش .
$ pipreqs
اگر فایلش هم از قبل موجود باشه با این دستور باید انجام بدید
$ pipreqs --force
دوتا جایگزین هم برای pipreqs هست که میتونید از اون ها هم استفاده کنید .
https://github.com/jazzband/pip-tools
https://python-poetry.org
📋 نتیجه گیری :
با دستور pip freeze ممکنه در ابتدا بسیار مفید به نظر برسه، اما به دلایل زیر می تونه پروژه شما را خراب کند:
تمام کتابخانه های نصب شده در پروژه شما از جمله وابستگی ها و وابستگی های فرعی را در فایل requirements.txt تخلیه می کنه.
هنوز کتابخانه هایی را که با استفاده از pip نصب نشده اند از دست می ده.
اگر کتابخانه ای در پروژه استفاده نشه، به طور خودکار حذف نمی شه.
به دلایل ذکر شده، توصیه می شود از pipreqs استفاده کنید، یک کتابخانه پایتون که تمام مشکلات بالا را برطرف می کنه و استفاده از اون خیلی آسون تره.
🖥 @SEYED_BAX
👍44🔥6
✔️ اصول برنامه ریزی هفتگی
مدیریت زمان و برنامه ریزی مهم ترین مهارتی هست که میتونه شما رو در رسیدن به اهدافتون یاری کنه. در این ویدیو اصول برنامه ریزی هفتگی رو باهم بررسی میکنیم.
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/SFuw8kVFN6o
〰️〰️〰️〰️〰️
© @DjangoEx
مدیریت زمان و برنامه ریزی مهم ترین مهارتی هست که میتونه شما رو در رسیدن به اهدافتون یاری کنه. در این ویدیو اصول برنامه ریزی هفتگی رو باهم بررسی میکنیم.
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/SFuw8kVFN6o
〰️〰️〰️〰️〰️
© @DjangoEx
🔥11👍2👎2👏1
🔥16👍8❤1
Django Expert
✔️ وبینار امشب با آقای حسن رمضانی رو از دست ندید 🔥🔥 امشب ساعت ۹ شب به وقت ایران 👉 Link: https://www.youtube.com/watch?v=KFgmM-wRi4Y 〰️〰️〰️〰️〰️ © @DjangoEx
✔️ کتاب هایی که آقای رمضانی عزیز در وبینار دیشب معرفی کردند
صحبتی هم که در رابطه با کتاب و نحوه مطالعه و آپدیت بودن ایشون بود هم بسیار جذاب بود که وبینار رو ببینید تا از زبان ایشون بشنوید.
پ ن: با تشکر از بچه های ftg-iran که یک سری از این کتاب هارو به فارسی ترجمه کردن و در گیتهاب گذاشتند.
https://github.com/ftg-iran
〰️〰️〰️〰️〰️
© @DjangoEx
صحبتی هم که در رابطه با کتاب و نحوه مطالعه و آپدیت بودن ایشون بود هم بسیار جذاب بود که وبینار رو ببینید تا از زبان ایشون بشنوید.
پ ن: با تشکر از بچه های ftg-iran که یک سری از این کتاب هارو به فارسی ترجمه کردن و در گیتهاب گذاشتند.
https://github.com/ftg-iran
〰️〰️〰️〰️〰️
© @DjangoEx
🔥17👍12❤4👎1
ويژگیهای جدید React 18
در این ویدیو به بررسی ويژگیهای جدید React 18 پرداختیم. ابتدا به بررسی چالشها و مشکلاتی که در نسخه های قبل ریاکت وجود داشت پرداختیم و سپس گفتیم که Concurrent Rendering چگونه این مشکلات را حل کرده است. سپس توضیح دادیم که این ویژگی چگونه عمل میکنند و سپس با استفاده از یک مثال ساده شیوه استفاده از Suspense و سایر ویژگی های ریاکت ۱۸ را شرح دادیم و در نهایت hook های جدیدی که با این نسخه ارایه شده است را معرفی کردیم.
Link: https://youtu.be/IqCM3g2EVV4
〰️〰️〰️〰️〰️
© @DjangoEx
در این ویدیو به بررسی ويژگیهای جدید React 18 پرداختیم. ابتدا به بررسی چالشها و مشکلاتی که در نسخه های قبل ریاکت وجود داشت پرداختیم و سپس گفتیم که Concurrent Rendering چگونه این مشکلات را حل کرده است. سپس توضیح دادیم که این ویژگی چگونه عمل میکنند و سپس با استفاده از یک مثال ساده شیوه استفاده از Suspense و سایر ویژگی های ریاکت ۱۸ را شرح دادیم و در نهایت hook های جدیدی که با این نسخه ارایه شده است را معرفی کردیم.
Link: https://youtu.be/IqCM3g2EVV4
〰️〰️〰️〰️〰️
© @DjangoEx
🔥9👍2
✔️ سوپر دوره آموزش جنگو - قسمت ۱۵
متد های APIView رست فریمورک
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/sefxvhT0v6E
🛑توجه: لطفا با هندزفری تماشا کنید. 🛑
#django #جنگو
〰️〰️〰️〰️〰️
© @DjangoEx
متد های APIView رست فریمورک
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/sefxvhT0v6E
🛑توجه: لطفا با هندزفری تماشا کنید. 🛑
#django #جنگو
〰️〰️〰️〰️〰️
© @DjangoEx
🔥5👍3👎1👏1😁1
در کلاس آنلاین مساله ای مطرح شد که برای یک رستوران نرم افزاری طراحی شود تا برای هر میز یک پیشخدمت تعیین شود و مشتری پس از ورود به منوی رستوران از طریق یک ادرس مشخص دسترسی داشته باشد و سپس به بتواند از طریق یک سرویس پیشخدمت را صدا بزند و پیشخدمت این درخواست را از طریق وب سوکت دریافت کند
Link: https://youtu.be/k1DlUfiPp9Y
Github: https://github.com/hemanhp/waiter-menu
Link: https://youtu.be/k1DlUfiPp9Y
Github: https://github.com/hemanhp/waiter-menu
🔥16👍9👏3
✔️ سازنده فریمورک FastAPI و Flask,Jinja2 در یک قاب در همایش WeAreDevs برلین
https://twitter.com/tiangolo/status/1536666625696481281
〰️〰️〰️〰️〰️
© @DjangoEx
https://twitter.com/tiangolo/status/1536666625696481281
〰️〰️〰️〰️〰️
© @DjangoEx
Twitter
Sebastián Ramírez
I got the chance to meet the great @mitsuhiko, creator of Flask, Click, Jinja, etc. 🤩 His projects have helped me (and probably you) so much over the years! And they inspired a lot of the things I've built too. 🤓
🔥25👍7🤩4❤1
✔️ ارتباط فلسفه و مهندسی نرم افزار از دیدگاه یک فیلسوف
نکات جالبی رو داره
Link: https://betterprogramming.pub/3-reasons-why-philosophy-can-make-you-a-better-programmer-d226ff0d0748
〰️〰️〰️〰️〰️
© @DjangoEx
نکات جالبی رو داره
Link: https://betterprogramming.pub/3-reasons-why-philosophy-can-make-you-a-better-programmer-d226ff0d0748
〰️〰️〰️〰️〰️
© @DjangoEx
Medium
3 Reasons Why Philosophy Can Make You a Better Programmer
Philosophy and programming have a similar mindset
😱7👏6❤4👍2
حتما این ویدئو رو تماشا کنید. از ترک دانشگاه تا Open Source با Max Stoiber!
👉 https://www.youtube.com/watch?v=ifq3xhik8tE
〰️〰️〰️〰️〰️
© @DjangoEx
👉 https://www.youtube.com/watch?v=ifq3xhik8tE
〰️〰️〰️〰️〰️
© @DjangoEx
YouTube
How Open Source Changed My Life with Max Stoiber
We spent a day with Open Source-“Wunderkind” Max Stoiber in Vienna. Despite his young age of only 23, Max has achieved incredible things: he's created react-boilerplate and styled-components, his start-up, Spectrum, was recently acquired by GitHub and he…
👍11🔥2
✔️ اصول برنامه ریزی روزانه
مدیریت زمان و برنامه ریزی مهم ترین مهارتی هست که میتونه شما رو در رسیدن به اهدافتون یاری کنه. در این ویدیو اصول برنامه ریزی روزانه رو باهم بررسی میکنیم.
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/o5khGmIvTC8
〰️〰️〰️〰️〰️
© @DjangoEx
مدیریت زمان و برنامه ریزی مهم ترین مهارتی هست که میتونه شما رو در رسیدن به اهدافتون یاری کنه. در این ویدیو اصول برنامه ریزی روزانه رو باهم بررسی میکنیم.
🖥 مشاهده در یوتوب:
👉 Link: https://youtu.be/o5khGmIvTC8
〰️〰️〰️〰️〰️
© @DjangoEx
👍14
✔️ دلیل اینکه به پیام “سلام” جواب نمیدم.
https://twitter.com/NimaShafiezadeh/status/1538039952956698624
〰️〰️〰️〰️〰️
© @DjangoEx
https://twitter.com/NimaShafiezadeh/status/1538039952956698624
〰️〰️〰️〰️〰️
© @DjangoEx
Twitter
Nima Shafiezadeh
در ارسال پیام «حرص» در نیاریم و همه حرفهامون رو تو یه پیام بدیم و کلک کار رو بکنیم! 😬
👍50😁6😢4❤3
چطور به یک توسعهدهنده اوپنسورس تبدیل شیم؟! 🔥
خیلیامون دوست داریم روی پروژه های متن باز معروف کار کنیم ولی نمیدونیم از کجا شروع کنیم. اخلاق حرفه ای در کامیونیتی های اوپن سورس رو نمیدونیم و حتی اگه بخوایم یک پروژه اوپن سورس رو خودمون شروع کنیم، خیلی از استپ ها جا میمونن!! حتی نمیدونیم چه لایسنسی رو انتخاب کنیم!!
در این مقاله، سعی کردم نگاهی بندازیم به این نکات کلیدی. اینکه چطور میتونیم این مسیر رو شروع کنیم و فارغ از بحث فنی، چطور به یه Contributor خوب و خوشحال تبدیل شیم!! اصلا چرا پروژه خودمون رو متن باز منتشر کنیم!!
امیدوارم مفید باشه و لذت ببرید. :))
👉 https://imsadra.me/become-an-open-source-contributor
〰️〰️〰️〰️〰️
© @DjangoEx
خیلیامون دوست داریم روی پروژه های متن باز معروف کار کنیم ولی نمیدونیم از کجا شروع کنیم. اخلاق حرفه ای در کامیونیتی های اوپن سورس رو نمیدونیم و حتی اگه بخوایم یک پروژه اوپن سورس رو خودمون شروع کنیم، خیلی از استپ ها جا میمونن!! حتی نمیدونیم چه لایسنسی رو انتخاب کنیم!!
در این مقاله، سعی کردم نگاهی بندازیم به این نکات کلیدی. اینکه چطور میتونیم این مسیر رو شروع کنیم و فارغ از بحث فنی، چطور به یه Contributor خوب و خوشحال تبدیل شیم!! اصلا چرا پروژه خودمون رو متن باز منتشر کنیم!!
امیدوارم مفید باشه و لذت ببرید. :))
👉 https://imsadra.me/become-an-open-source-contributor
〰️〰️〰️〰️〰️
© @DjangoEx
👍33🔥7👎1
✔️ دعوت به همکاری
شرکت هوش سامان با هدف تسهیل و تعمیم استفاده از فناوری هوش مصنوعی در کسب و کارها، پا به عرصه رقابت در این حوزه گذاشته است و با استفاده از کارآمدترین فناوری های روز دنیا محصولاتی در زمینه تشخیص چهره، پلاک خوان خودرو و بازخوانی اسناد تولید کرده است. این شرکت مراحل تست محصولات خود را به پایان رسانده و به منظور تجاری سازی و ورود به بازار اقدام به استخدام نیروی متخصص در زمینه بازاریابی و فروش کرده است.
نیروی متخصص مورد نظر هوش سامان در سمت مهندس دواپس - در سطح حرفه ای - نیازمند توانمندی ها و مهارت های زیر است:
● توانایی ارتباط با دیگران
● داشتن خلاقیت
● علاقه به رشد شخصی
● توانایی برنامه ریزی و سازماندهی
● آگاهی و هوشمندی کسب و کار
● توانایی مستندسازی
• دارای تجربه در نگهداری سیستم عامل های لینوکسی (System Administration)
• دارای تجربه در سیستم های مبتنی بر Container و سیستم های Orchestration مانند Docker swarm و Kubernetes
• دارای تجربه در Configuration Management و مفاهیم Automation
• دارای تجربه در مفاهیم و متدهای Monitoring و Alerting و Log Management
• آشنایی با فرایند های CI/CD
• آشنایی با حداقل یک زبان اسکریپت نویسی (Python، Bash، PHP، ...)
• آشنایی با راه اندازی - تنظیمات - HA و Clustering
• آشنایی با بانکهای اطلاعاتی مختلف مانند MongoDB، PostgreSQL و ...
• آشنایی با وب سرورها مانند Nginx، Apache و ...
• آشنایی با مباحث امنیتی
داشتن مهارت های زیر مزیت محسوب می شود:
• تجربه کار با ابزارهای مانیتورینگ مثل Prometheus, Grafana
• آشنایی با ابزارهای Infrastructure as code مانند Terraform
شرایط همکاری:
● تمام وقت حضوری (شنبه تا چهارشنبه از ساعت 8 صبح الی 16:50 عصر)
● حداقل مبلغ حقوق 12 میلیون تومان
👉🏻Link: https://jobinja.ir/companies/hoosh-saman/jobs/RK2g
👉🏻Link: https://jobvision.ir/jobs/244373
〰〰〰〰〰〰
© @DjangoEx
شرکت هوش سامان با هدف تسهیل و تعمیم استفاده از فناوری هوش مصنوعی در کسب و کارها، پا به عرصه رقابت در این حوزه گذاشته است و با استفاده از کارآمدترین فناوری های روز دنیا محصولاتی در زمینه تشخیص چهره، پلاک خوان خودرو و بازخوانی اسناد تولید کرده است. این شرکت مراحل تست محصولات خود را به پایان رسانده و به منظور تجاری سازی و ورود به بازار اقدام به استخدام نیروی متخصص در زمینه بازاریابی و فروش کرده است.
نیروی متخصص مورد نظر هوش سامان در سمت مهندس دواپس - در سطح حرفه ای - نیازمند توانمندی ها و مهارت های زیر است:
● توانایی ارتباط با دیگران
● داشتن خلاقیت
● علاقه به رشد شخصی
● توانایی برنامه ریزی و سازماندهی
● آگاهی و هوشمندی کسب و کار
● توانایی مستندسازی
• دارای تجربه در نگهداری سیستم عامل های لینوکسی (System Administration)
• دارای تجربه در سیستم های مبتنی بر Container و سیستم های Orchestration مانند Docker swarm و Kubernetes
• دارای تجربه در Configuration Management و مفاهیم Automation
• دارای تجربه در مفاهیم و متدهای Monitoring و Alerting و Log Management
• آشنایی با فرایند های CI/CD
• آشنایی با حداقل یک زبان اسکریپت نویسی (Python، Bash، PHP، ...)
• آشنایی با راه اندازی - تنظیمات - HA و Clustering
• آشنایی با بانکهای اطلاعاتی مختلف مانند MongoDB، PostgreSQL و ...
• آشنایی با وب سرورها مانند Nginx، Apache و ...
• آشنایی با مباحث امنیتی
داشتن مهارت های زیر مزیت محسوب می شود:
• تجربه کار با ابزارهای مانیتورینگ مثل Prometheus, Grafana
• آشنایی با ابزارهای Infrastructure as code مانند Terraform
شرایط همکاری:
● تمام وقت حضوری (شنبه تا چهارشنبه از ساعت 8 صبح الی 16:50 عصر)
● حداقل مبلغ حقوق 12 میلیون تومان
👉🏻Link: https://jobinja.ir/companies/hoosh-saman/jobs/RK2g
👉🏻Link: https://jobvision.ir/jobs/244373
〰〰〰〰〰〰
© @DjangoEx
جابینجا، شغلی رویایی خود را پیدا کنید
استخدام DevOps Engineer در هوش سامان | جابینجا
استخدام برای فرصت شغلی DevOps Engineer در Hoosh Saman,
• دارای تجربه در Configuration Management و مفاهیم Automation • دارای تجربه در مفاهیم و متدهای Monitorin...
• دارای تجربه در Configuration Management و مفاهیم Automation • دارای تجربه در مفاهیم و متدهای Monitorin...
👎9👍4😱2