ترفندهای برنامه‌نویسی
170 subscribers
27 photos
3 videos
22 files
614 links
Download Telegram
Forwarded from Django Expert (Boby Cloud)
✔️ شاید تا الان براتون پیش اومده باشه که موقع نوشتن حلقه‌های for در پایتون، با خودتون فکرکنید که شاید راه‌های بهتری هم وجود داشته باشه.

در این مقاله ۳۰ مثال پایتونیک مختلف رو بررسی میکنیم تا از نوشتن حلقه‌های for اجتناب کنیم. مثال‌هایی که با استفاده از توابع built-in پایتون به دلیل پیاده‌سازی‌های داخلی پایتون (cpython) پرفورمنس بهتری دارن تا روش های functional programming که در کامیونیتی پایتون و متدهای built-in پایتون وجود داره و ...

توضیحات بیشتر همراه با مثال‌های مختلف رو می‌تونید در این مقاله مطالعه کنید:
👉 30 Pythonic Ways To Avoid For Loops — A Decade-Long Journey Best Practices

اگر این مقاله رو مفید دیدید، ممنون میشم به اشتراک بزارید.

#python #best_practice

© @DjangoEx
ترفندهای برنامه‌نویسی
Photo
اگر از وی‌اس‌کد برای نوشتن پروژه‌های جنگو استفاده می‌کنید، در حالت فعلی پلاگین‌های تست که وی‌اس‌کد خودش داره یا می‌تونید براش نصب کنید تست‌های جنگو رو نمی‌شناسن ولی برای اینکه شبیه حالت توی عکس بشه و از این آپشن برخوردار بشید می‌تونید پلاگین
https://marketplace.visualstudio.com/items?itemName=LittleFoxTeam.vscode-python-test-adapter
رو نصب کنید و بعد فایلی که در مسیر
~/.vscode-oss/extensions/littlefoxteam.vscode-python-test-adapter-0.7.1/out/src/unittest/unittestScripts.js
رو ادیت کنید به این صورت که اول این فانکشن
def discover_django(start_dir):
"""Setting DJANGO_SETTINGS_MODULE and call django.setup to locate & run django unittests"""
import contextlib, os
with contextlib.suppress(Exception), open(start_dir + "/manage.py", "r") as management_file:
eval(next((line for line in management_file.readlines() if line.strip().startswith("os.environ.setdefault")), '').strip())
import django
django.setup()
رو تو خط مثلا ۱۶ یا ۱۷ و بالای فایل بنویسید. و بعد هم اون پایین فایل بالاتر از
if action == "discover":
فانکشن پایتونی رو صداش کنید. یبارم وی‌اس‌کد رو ری‌استارت کنید درست میشه.
Forwarded from PyCoders (پایتون) (Ali PrJ)
50 Essential Python Commands.pdf
1.8 MB
🔷️50 دستور ضروری پایتون🐍
🔸️فرمت PDF
🔷️زبان انگلیسی
#BOOK
#کتاب
◦•◉✿ @python_rd ✿◉•◦
Forwarded from PyCoders (پایتون) (Ali PrJ)
Hands_On_Machine_Learning_with_Scikit_Learn,_Keras,_and_TensorFlow.pdf
30.6 MB
📚یادگیری ماشین با استفاده از تنسورفلو، کراس و Scikit
چاپ سوم
جدیدترین نسخه

📅سال چاپ: 2023
📝چاپ کننده: O'Reilly
#book
#کتاب
◦•◉✿ @python_rd ✿◉•◦
Forwarded from PyCoders (پایتون) (Ali PrJ)
PythonNotesForProfessionals.pdf
5.9 MB
فایل PDF کتاب Python Notes for Professionals
دانلود کنید. کتاب با ارزشی هست.
#book
#کتاب
◦•◉✿ @python_rd ✿◉•◦
Forwarded from Seyed Mahdi Notes (Seyed Mahdi)
از آموزش انسیبل مرتضی غافل نشید که خیلی خوب و کاربردی داره انسیبل رو آموزش می ده

https://youtube.com/playlist?list=PLRMCwJJwWR1AKYcUkdcorTFR-bhXUN6oO

لایک هم حتما بزنید تا بهش انگیزه ی بیشتر بدید
Forwarded from Woland's Linux Journal (Woland)
🔵معرفی:
دوستانی که از ویم‌ برای web development استفاده می‌کنن می‌تونن با پلاگینی که من نوشتم امکان live server رو داشته باشند. یعنی این که بصورت هم‌زمان تغییرات کد ر‌و توی مرورگر ببینند
https://github.com/wolandark/vim-live-server
Forwarded from Linuxor ?
Bash Notes For Professionals

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

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

🐧 @Linuxor
Forwarded from Linuxor ?
Bash[Telegram @Linuxor].pdf
1.7 MB
اول swap بود
توی لینوکس اینطوری دیدن که اطلاعاتی که توی رم میرن به صورت page درنظر گرفته میشن و خب ایده این بود که اگر ما کلی اطلاعات وارد رم کردیم و در واقع page ها زیاد شدن و رم داره به سمت پر شدن پیش می‌ره باید چیکار کرد؟ یک سری سرویس oom killer یا همچین چیزی درست کردن که نذازه رم پر بشه و سیستم هنگ کنه و از دست بره بلکه بیان در یک مرحله‌ی حساس و یک خط قرمز که رسید pageهای قدیمی‌تر که باز هستن رو کیل کنند
سوآپ چی شد؟ گفتن خب همون اول نیایم کیل کنیم، پیج‌های قدیمی رو میفرستیم روی هارد سیستم و پارتیشن سوآپ که یجوری رم مجازی هست. این برای مواقعی که رم خیلی زیادی لازم میشد اما همه‌ی اطلاعات رم رو نیازی نبود در سرعت بالا استفاده کنیم خیلی خوب جواب میداد ولی سرعتش وابسته به سرعت هارد دیسک هست که امروزه با اومدن SSD این سرعت خیلی سریع شده ولی اصلا قابل قیاس با سرعت رم نیست. بازم اگر اطلاعات زیاد بشه اون بحث کیلر مطرح میشه

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

و حالا zram چیه؟ یکی پیدا شد گفت آقا ما اصلا پارتیشن سوآپ نسازیم، هرچی هست توی همین رم باشه و همون فلسفه فشرده کردن pageهای بلا استفاده رو پیاده سازی کردن و نتیجه رو توی رم جاسازی میکنن فقط برای سیستم یک پارتیشن سوآپ مجازی میسازن که فکر کنه سوآپ داره

کرنل لینوکس در حالت پیشفرض (اکثر توزیع‌ها) روی حالت zsawp هست و این برای اکثر اوقات گزینه‌ی خوبی هست چون هم پارتیشن سوآپ داره که پشتیبانی بهتری از رم داشته باشه و هم در عمل خیلی کمتر از پارتیشن سوآپ داره استفاده می‌کنه و بیشتر اوقات با همون فشرده کردن و روی رم نگهداشتن کار حل میشه، اما خب بک‌آپ پارتیشن سوآپ رو داره و صرفا هم منطقش این نیست که خب تا رم زیادی پر نشده از سوآپ استفاده نمیکنم، نه! اگر اطلاعات فشرده شده روی رم مدت زیادی بلا استفاده بمونه فارغ از اینکه ممکنه رم خیلی فضای خالی زیادی داشته باشه، کرنل این پیج‌های فشرده و بی‌استفاده رو می‌فرسته روی پارتیشن سوآپ و در نتیجه مقداری io یا rw با هارد دیسک انجام میشه که یکم سرعت کند و البته اگر نگران SSD هستین اثر منفی روی طول عمرش داره.
fonts.conf
2.4 KB
دوستانی که از لینوکس استفاده می‌کنید فایل پیوست رو در آدرس زیر قرار بدین تا فونت‌های بهتری برای متنهای فارسی و انگلیسی روی سیستم تجربه کنید.
~/.config/fontconfig/fonts.conf
البته لازم به ذکر هست که این فونتهایی که داخل فایل هستن رو باید نصب داشته باشید روی سیستم.
۱- Vazirmatn fonts
۲- Noto Fonts
۳- Vazir Code WOL
۴- Hack Nerd Font Mono
۵- Noto Color Emoji

این پکیج زیر هم برای فونتهای چینی، ژاپنی و کره‌ای هست که خیلی هم سنگین هست اگر خیلی فونت اینا رو استفاده میکنید مفیده که نصب کنید. بعضی از توزیع‌ها از قبل پکیج‌های adobe source برای این زبانها رو نصب دارن که تا حدود زیادی هم پوشش میده (شایدم کامل)
*- noto fonts cjk

اگر از آرچ یا آرچ بیس‌ها استفاده می‌کنید به جای noto ها از noto nerd ها استفاده کنید بهتره چون کلی آیکون‌های powerline هم داخلشون هست و کامل‌تر هستن.
فاینلی پاسخ سوال فرق zram , zsawp رو در فروم جنتو یافتم.
میگه جفتشون میان دیتا(که اینجا بهش میگن page) رو کمپرس میکنن و روی رم یک بخشی رو به عنوان سوآپ-پول برای خودشون جدا میکنن و اون دیتای کمپرس شده رو میریزن اینجا تا وقتی که این پر بشه و بعدش هست که مهمه!
- وقتی این فضا پر بشه zsawp میاد و از روی این سوآپ‌پول پیج‌ها رو بر اساس LRU یا اونایی که کمتر بهشون نیاز بوده رو برمی داره دی‌کمپرس می‌کنه و می‌بره روی پارتیشن سوآپ یا سوآپ‌فایل ذخیره می‌کنه و پول رو یکم خالی میکنه
- ولی zram اولا نیازی به پارتیشن/فایل سوآپ نداره و این یعنی ممکنه اصلا همچین فضایی نداشته باشیم و خب اگر سوآپ‌پول zram پر بشه دیگه رم ما جا نداره و پرتکل oom برای کیل کردن چیزایی که رم میخورن شروع به کار می‌کنه! ولی اگر پارتیشن یا فایل سوآپ داشته باشیم اینجا zram ضعیف‌تر عمل می‌کنه و مثل zsawp نمیاد اون پیج های توی سوآپ‌پول که کمتر لازم بودن رو دی‌کمپرس کنه بفرسته روی سوآپ، بلکه سیستم از این لحظه شروع می‌کنه رندم پیج‌ها رو می‌فرسته روی سوآپ(فایل/پارتیشن) که این یعنی امکانش هست یک سری پیج‌هایی که دسترسی سریعتری بهشون نیاز هست رو می‌بره روی سوآپ که روی هارددیسک هست و کندتره تا سوآپ‌پول که روی رم هست و سریعتره!

اینم دلیل که چرا zsawp بای دیفالت فعال هست و اون یکی نیست.
#کاربردی
#file_transfer_using_pyth
یک روش باحال بین برای انتقال فایل بین اندروید و هرچی که روش یک مرورگر یا wget, curl و از اینا داشته باشه, توضیح بدم

برنامه‌ی termux که خب یک ترمینال کوچولو ولی کاربردی برای برنامه‌نویساست شاید معرف حضور باشه براتون
این برنامه قابلیت نصب برخی پکیج‌هایی که توی لینوکس هستن رو به اندروید اضافه میکنه، از جمله
vim, tor, ssh, ...

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

تو برنامه ترموکس اول کامند زیر رو اجرا کنید
termux-setup-storage

این دستور یک دایرکتوری storage توی هومِ ترموکس ایجاد میکنه و بعضی از دایکتوری‌های اینترنال استوریج یا اکسترنال استوریج رو لینک میکنه داخل این دایرکتوری مثلا downloads رو اینجا خواهید داشت

حالا وارد اون دایرکتوری که فایل مدنظر داخلش هست که بشین میتونید با استفاده از زبان دوست داشتنی پایتون یک سرور محلی ران کنید و درنتیجه‌ی اینکار با داشتن ادرس ip گوشیتون رو شبکه‌ی وای‌فایی که هر دو دستگاه بهش وصل هستن و استفاده از یک مرورگر روی اون یکی دستگاه میتونید این دایرکتوری رو روی مرورگر باز کنید و فایلهاش رو دانلود کنید!
-با wget و curl و دانلودمنیجرها هم میتونید


داخل ترموکس:
متأسفانه این سه مرحله نیاز به وی‌پی‌ان داره
apt update
apt upgrade
apt install python


termux-setup-storage
cd ~/storage/downloads
python -m http.server

روی اون یکی دستگاه
این ادرس رو باز کنید:
mobile_ip:8000


- برای دونستن ip وارد تنظیمات وای‌فای دستگاه بشین روی اتصال ضربه بزنید(کلیک) و توی مشخصات ادرس وای‌فای رو بخونید

- سرعت دانلود من ۴مگ بر ثانیه بود
اگر دسکتاپ کی‌دی‌ای داری
kdebugdialog5
این رو بزنی توی ترمینال یک پنجره باز میشه، داخلش تیک دکمه‌ی
disable all debug output
رو میزنی و دیگه انقدر چرت و پرت توی ترمینال از سمت پلاسما و دوستانش نمیاد.
اسکرپیت کاربردی برای حذف همه‌ی مایگریشن‌های پروژه در مرحله دولوپ و توسعه
find . -not -path "./.venv/*" -path "./*/migrations/*" \( -name "*.pyc" -or -name "*.py" \) -not -name "*__init__*"