Python Hints
Відкрити в Telegram
Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازهکار) Admin: @Abbasi_ai
Показати більше9 600
Підписники
+424 години
+727 днів
+21230 день
Архів дописів
9 598
این از صبح وصل هست؛
فقط کانفیگ کنید url test رو سمت cloudflare نفرستید کلا اونور بلاک شده و همرو غیرفعال نشون میده
درخواستهارو بفرستید سمت
https://youtube.com
یا
https://gemini.google.com
اگر urltest مثبت گرفتید که وصل هستید؛ مطمئن بشید اینترنت شما روی سایتهای ایرانی جواب میده و البته سرعت دانلود نرمالی دارید.
9 598
یکی از پروژهها رو جابجا کردیم و اینطوری شد که:
بجای
docker از podman استفاده بشه
بجای docker swarm, docker stack, ... هم از k8s استفاده بشه
ی مقدار قبلتر هم که همگی روی ruff و mypy رفته بودیم و pre-commit رو اینطوری تنظیم کردیم.
دیگه یکی از هم تیمیها پیشنهاد داد یعنی یه uv مون نشه ؟
که سوییچ کردیم روی این مورد (البته قبلش کلی تست زمان build, ... ازش گرفتیم) دیدیم علاوه بر اینکه تایم بیلد رو آورد پایینتر (حتی تو بیلدهای اپتیمایز خودم) کار کردن باهاش هم نسبت به ورژنهای قبلی خیلی بهتر و راحتتر شده.
اگر شما هم میخواید تستش کنید؛ من دستورات مهمش رو میذارم برای شروع برید سراغش باقی موارد هم که داکیومنت خودش هست :
uv python list
لیست از تمام ورژنهای پایتون قابل نصب رو نشون میده؛ cpython, pypy رو داره.
uv python install 3.11 3.12 3.13 3.14
تمام ورژنهای پایتون که بهشون اشاره شده رو نصب میکنه (حدود ۳۰-۳۵ مگ هست هر کدوم) دیفالت cpython نصب میشه.
uv init <dir_name>
این دستور پوشه <dir_name> رو براتون میسازه به همراه git, python version, readme, main, pyproject
uv init <dir_name> --lib
اگر خواستید پکیج برای انتشار بنویسید.
uv init
اگر مثل ما پروژه از قبل با مثلا pip ایجاد شده و میخواید بیاید روی uv داخل پوشه پروژه اجراش کنید.
uv add dajngo
پکیج django رو میخوام به پروژه اضافه کنم؛ حتی اگر .venv نساخته باشید این دستور بصورت پیشفرض اینکار رو براتون میکنه؛ که اشتباها روی python سیستم چیزی نصب نکنید.
uv tree
نمایش درختی معادل pip freeze هست.
uv run main.py
برای اجرا استفاده میشه (حتی اگر .venv رو پاک کرده باشید درجا ایجاد میکنه پکیجهارو نصب میکنه و بعد اجرا میکنه که اگر cache رو پاک نکرده باشید در حد میلی ثانیه زمان میبره)
uv venv --python 3.11.11
برای اینکه دقیقا از همین ورژن پایتون استفاده بشه (کلا توی همه کامندها میتونید از --python برای مشخص کردن ورژن دقیق استفاده کنید)
این دستور بهترین دستور برای بچههایی هست که در زمینه AI تحقیق و کار میکنند.
uv sync
فقط .venv رو ایجاد و پکیجها رو نصب میکنه (همه چیز آماده)
uv remove dajngo
برای حذف استفاده میشه.
uv add -r requirements.txt
جهت انتقال از pip به uv
uvx ruff
جایگزین عالی برای pipx
uv tool run ruff check
بدون اینکه ruff رو روی کل سیستم نصب کنید میتونید اجرا کنید
نکته این هست که uvx , uv tool دستورات یکسان هست و دستور بالا اینو میگه که نیازی نیست ابزار رو روی کل سیستم نصب کنی میتونی درجا اجرا و استفاده کنی؛ pipx اینو نداره که خیلی هم کاربردی هست.
uv self update
در نهایت برای آپدیت خود uv ازش استفاده کنید.
برای پروژههای غیر docker و شخصی هم خیلی خوبه چون disk کمتری مصرف میکنه (دوستان AI میدونند توی هر پروژه ورژن متفاوت pytorch و ... داشتن چقدر جا میگیره) یا حتی یک ورژن یکسان رو هی روی venv جدا نصب کردن. که uv اینکارو نمیکنه و به همون نسخهای که دارید symlink میزنه. (بصورت دیفالت hardlink میزنه؛ دوستان اشاره کردند)
الان تنها مورد کند پروژهای که صحبتش شد mypy هست که خب منتظریم ببینیم ty وضعیتش به کجا خواهد رسید بخصوص اینکه LSP هم هست و یک تیر و دو نشان خواهد بود.
ty github9 598
داشتم یک کدی رو امروز روش کار میکردم؛ که یک سری کانفیگ از یوزر میگیره اما اگر وجود نداشت یک سری دیفالت رو بجاش استفاده میکنه و تمام این تنظیمات
dictionary هستند.
مشکل بعدیش این بود که تنظیمات دیفالت هم خودش توسط یگ یوزر دیگه تعریف میشه و لزوما تنظیمات صفر ابزار ما نیست.
بطور خلاصه ما یک dict داریم که خودش یک سری تنظیمات داره؛ ولی ممکنه یک بخشهایی رو یک نفر بخواد تغییر بده پس باید overwrite بشه! ولی اجازه overwrite نداریم چون ممکنه کاربر نهایی تنظیماتش رو بخواد reset کنه ولی این وسط ممکنه تنظیمات از طریق مشتریهای میانی به دست کاربر نهایی رسیده باشه و مشتری میانی نخواد کاربر رو مستقیم به ما وصل کنه (مطمئن باشه ما دورش نمیزنیم ولی خودش هم برنامهنویس نیست که سایت و ابزارهای خودش رو توسعه بده)
خلاصه که ممکنه چیزی که نهایتا به مشتری آخر میرسه اینطوری باشه :
default -> default -> default -> ....... -> default
و بعد مشتری نهایی سیستم اون رو برای خودش شخصیسازی کنه.
کلی راهکار پیشنهاد شد؛ یکباره یاد ChainMap توی پایتون افتادم اول رفتم یک تست گرفتم مطمئن بشم به محدودیتهای بیزینس نمیخوریم بعد کد رو دادیم رفت بالا (شد بهترین راهکار) چون خودم اصلا یادم نبود که ChainMap همچین کاربردی داشته باشم گفتم با شما هم به اشتراک بذارم.
اگر یکی از مقادیر توسط مشتریها تعریف نشده باشه؛ در اونصورت از دیکشنری default خونده میشه.9 598
کانال ایشون رو سابسکرایب دارید دیگه ؟
Build AiAgent with Python, Django, LangGraph and Permit
نگاه به سادگی پروژه ها نکنید - مفاهیم رو یاد بگیرید.
9 598
#موقت
دوستان فرم بسته شده؛ لطفاً درخواست دسترسی ندید.
الان تو فاز آنالیز هستیم 😁
تعداد درخواستای دسترسی داره زیاد میشه
9 598
یک
agent سریع زدم (بیش از ۳۰ نفر)
آموزش پایه پایتون رو همزمان با ML/DL انتخاب کردند.
دوستان من واقعاً نمیخوام به کسی رویا بفروشم؛ اینجا هم پکیج فروشی نیست.
نکنید با خودتون اینکار رو؛ حداقل پایتون رو ۶-۷ ماه بخونید و تمرین کنید بعد وارد دنیای ML بشید بخصوص اگر بعدش دنبال کار هستید.9 598
فرم رو بستیم.
حدود ۳۵۰ نفر شرکت کردن؛ که از همگی ممنونم.
اما یک سری آمار جالب؛
حدود ۹۴٪ سن ۱۸ تا ۳۴ سال هستن
فقط ۱۱ نفر کاملاً مبتدی داشتیم
و فقط ۳ نفر؛ کاملاً پیشرفته
بیشترین دورههایی که درخواست آموزش داشته:
1-
ML/DL
2- Python (Real Projects)
3- DRF, Django
4- Fastapi / Async Python
البته بیش از ۳۰ مورد هم others داریم.
۷ نفر آموزش خصوصی و ۱۶ نفر حضوری رو ترجیح دادند
اما بیش از ۵۶٪ ویدئو طولانی مدنظرشون هست.
جدای از تمرین؛ ۴۷٪ گفتند که حداقل ۳ تا ۵ ساعت وقت میگذارند و ۲۷٪ هم ۵ تا ۱۰ ساعت رو انتخاب کردند.
جالبتر اینکه؛ ۳۷٪ هیچوقت بکند و وب کار نکردند.
چیزی که خیلی باعث تعجبم بود؛ ۵۱.۵٪ کاربر ویندوز هستند و ۴۳٪ لینوکس.
خیلی عجیبه که فکر میکردم بیش از ۹۰٪ مخاطبهای کانال کاربر لینوکس هستند 🤔
راجب هزینه دوره و نظرات هم؛ همرو میخونم (قول میدم) و بعد تصمیم میگیریم.
یک تشکر ویژه هم از دوستانی که گفتند توانایی ادیت ویدئوها رو دارند میکنم؛ اگر بتونیم توی زمان کم ویدئو ضبط و منتشر کنیم.
شخصاً بسیار خوشحال میشم آموزشها هدفمند باشه و رایگان (بخصوص بعد از خواندن بعضی کامنت های صادقانه شما)
اگر ایدهای برای آموزش دارید هم خوشحال میشم بشنوم (لطفاً کوتاه و مختصر به ویژگیهای مهم اشاره کنید؛ توییتر رو باهم بسازیم و این مباحث هم نباشه، تمرکز باید روی مفاهیم اصلی باشه که خیلی ساده بشه مفاهیم مهم رو آموزش داد.)9 598
توی آنالیز جوابها بیشترین حوزه مورد علاقه (گفتم با اولویت) مربوط به
Machine/Deep learning
هست؛ بعد پروژه واقعی و بعد بکندها
ولی مهمترین نکتهاش میدونید چیه ؟
بیش از نصف کسانی که زدند Machine/Deep learning مورد علاقشون هست توی سوال پایتون چه خبر پایینتر از سطح متوسط هستند.
همینجا بگم من وقتی میگم Machine/Deep learning منظورم این نیست که بریم langchain, n8n, ... رو یاد بگیریم یا yolo رو از ultralytics برداریم و باهاش یک ابزاری رو بسازیم که اگر اون بود شما ML کار نیستید شما Software Engineer ایی هستید که یاد گرفتید با ابزارهای ML هم کار کنید.
مثل این میمونه فرانت دولوپر چون داره به بکند request میزنه و دیتا از دیتابیس براش آماده میاد بگه من Database Administrator هستم. لطفا حواستون به این مورد باشه.
درنهایت اگر یک همچین دورهای قرار باشه برگذار بشه؛ از هر ۱۰ ساعت آموزش ۸ ساعت تئوری خواهد بود و ۲ ساعت پیادهسازی پایهای فرمولهای و مباحث تئوری و برای این مورد خیلی خیلی نیاز هست که شما Software Engineer باشید اول.
مثلا این مورد رو ببینید :
https://t.me/pytens/1087
یا توی کنفرانسهای قبلی صحبت شد (اینی که میگم برای 2018-2019 هست) با یک تیمی در چین کار میکردیم؛ برای اینکه سرعت شناسایی چهره بره بالاتر اونجا هم من همین کار رو کردم embedding تصاویر رو توی redis نگه میداشتم و فقط توی لحظه نیاز اختلاف تصاویر رو میگرفتم.
حتی چون تعداد کاربرها زیاد بود و این قضیه هم باز کند بود؛ بر اساس جنسیت - اینکه از کدوم دستگاه میاد و ... دیتابیسها رو تفکیک کرده بودیم.
خلاصه برای AI اول باید Software Engineer خوبی باشید (میانبور نزنید که وقتتون هدر میره) - بازم به توییت Andrej Karpathy اشاره میکنم و استخدام Software Engineer برای موقعیتهای هوش مصنوعی Tesla9 598
بیشترین وقت و هزینه رو ضبط، ادیت و تمیز کردن ویدئو از من میگیره
چون بسیاری از مفاهیم رو حتی با todo-app هم میشه منتقل کرد (توی بکند)
9 598
نظرات رو خوندم
خیلی جالبه؛
و البته بدترین بخشش اینه که خیلیها هزینه دوره ندارند (یعنی مبالغ پیشنهادی، حتی هزینه برق رو هم نمیده)
همزمان تعداد کمی مبالغ بالایی رو برای دوره خصوصی پیشنهاد دادند.
فقط یکنفر زده، دوره حضوری برگذار کنید (از دوره لایو و ویدئو خیری ندیده انگار)
بعد قیمت زده ساعتی ۱۵۰,۰۰۰ تومان؛ این پست برای ۳ سال پیش هست (دستمزد ساعتی خودم رو اون موقع گفتم: https://t.me/pytens/944)
من اصلاً ازونایی که گفتند حتی امکان هزینه کردن ندارند ناراحت نیستم، ولی ساعتی ۱۵۰,۰۰۰ تومان پول اسنپ من رو هم نمیده بیام جلسهای ۲ ساعت درس بدم و برگردم خونه.
فرم رو پر کنید، لطفاً و خواهشاً دقیق و درست جواب بدید اگر میخواید به نتیجه برسه
تا الان فقط ۱۷۵ نفر شرکت کردند.
9 598
لینک نظرسنجی
Link
اگر دوست داشتید شرکت کنید.
این نظرسنجی ایمیل شمارو هم نگه میداره؛ اگر قرار شد دورهای برگذار بشه بین افرادی که شرکت کردند چندنفر بصورت تصادفی انتخاب خواهد شد که دوره رو ارزیابی کنند.
دوره برای این افراد رایگان خواهد بود.
نکته مهم : سوال "حوزه مورد علاقه" رو به دقت انتخاب کنید چون دوره که برگذار بشه (مثلاً ساختمان داده و الگوریتم)
برای گروه تست (رایگان) از افرادی انتخاب خواهم کرد که توی این نظرسنجی این مورد رو انتخاب کرده باشند.
نکته مهم دیگه: همهی گزینهها رو انتخاب نکنید، در اینصورت اصلا انتخاب نخواهید شد.
گزینه
other برای دورهای هست که شما پیشنهاد میدید، توضیح بدید.9 598
#موقت
چون خیلی بحث شد راجب جایگزین barry-far
یک تست انومات هم برای کانفیگهاش نوشتم - روی مخابرات - ایرانسل - همراه اول کانفیگهای زیر ۵۰۰ دیده میشه (به خوبی barry-far) هست.
9 598
Repost from RandRng
خیلی وقت پیش برای مشکلات دسترسی و تحریم و فیلتر یک پروژه روی گیتهاب معرفی کردم barryfar (عمر اون پست ازین کانال بیشتر بود) مشکلمم اینه که اعتماد ندارم جایی که اطلاعات کارت و ... ام رو داره ترافیکم رو هم داشته باشه.
حالا چندروز پیش دوستان گفتن پروژه رو از گیتهاب حذف کرده - احتمالا مجبورش کردن حذف کنه - ولی دمشگرم این همه مدت کار همه برنامه نویسها رو راه انداخت.
اومدم پروژه رو با پایتون بازنویسی کنم که دیدم ۳ نفر دیگه اینکار رو کردند خلاصه که شمارو با
Epodonios
آشنا میکنم - به امید اینکه یک سنگ بزرگ به اسم فیلترینگ از جلوی پاهاتون برداشته بشه در مسیر پیشرفت.
9 598
وضعیت یکساعت گذشته من و
mypy
دیگه ببخشید اگر تصویر خوب نیست:
chatgptتولید کرده و حزئیات رو متوجه نشد.
9 598
#یادآوری
یک پرسجو روی گوگل درست کنم؛ ببینم وضعیت چطوری هست.
شخصاً فکر میکردم همه اعضای کانال حداقل میدلول باشند؛ اما بیشترین پیامهایی که گرفتم درخواست دوره برای پایتون مقدماتی تا پیشرفته بود.
با توجه به اخلاق خودم؛ انجام چنین کاری شاید خیلی بیشتر زمان ببره
ولی خارج از اینکه دوره برگذار کنم یا نه؛ چشمم به جامعه مخاطبای کانال باز شد.
شاید برداشت من اشتباه بوده، برای همین بد نیست یک نظرسنجی باشه خودم متوجه بشم چه مخاطبایی رو توی کانال دارم.
9 598
خیلی رفته تو مخم، یک وقت خالی پیدا کنم و یک تیم تشکیل بدم و دوره آموزش
Django و Fastapi با تمام استانداردهایی که بلدم بزنم.
یک پروژهای رو بسازم، دپلوی کنم و بگم اوکی قدم بعدی اینه که K8s بذارید بجای docker compose و ...
ولی قطعاً دوره طولانی خواهد شد 🤔
نمیدونم ارزش وقت گذاشتن و هزینه کردن داره یا نه (۹۰٪ مخاطب این دورهها نخواهند بود)
یعنی دوره مقدمات پایتون مخاطب و دیده شدن بیشتری داره تا این موارد.9 598
یادآوری کنم؛ خیلی قبلتر توی یک سخنرانی پایتون به
wiremock اشاره کرده بودم.
ولی responses هم آپدیتتر هست هم بچههای پایتون دولوپر باهاش راحتتر کار میکنند.
اما اگر از زبانهای برنامهنویسی دیگه میاید؛ این تقریباً همون کارهای wiremock رو انجام میده9 598
چیزی که توی کدهای
Django توی ایران به معنای واقعی اصلا و هیچوقت ندیدم؛ اما جزو مهمترین موارد هست.
تست نویسی برای سرویسهای third-party هست که از طریق API استفاده میکنیم.
همینجا اضافه کنم؛ همیشه فرض ما این هست که هیچ اتفاقی برای اون سرویسها نمیوفته ولی چندتا سوال؛
۱- سرویس ما چه اتفاقی باید براش بیوفته اگر سرویس دهنده تغییراتی داشته باشه ؟ و درخواستهای ما 400, 404 , ... برگرده ؟
۲- چه اتفاقی برای سرویسهای ما خواهد افتاد اگر سرویس دهنده بخاطر محدودیتهای جدید یا .... بهمون 500, 503, ... برگردونه ؟
اینا چیزهایی هست که ننوشتن تست براش میتونه خسارت زیادی به سرویس بزنه مثلاً:
فرض کنید، من یک فروشگاه اینترنتی دارم؛ اگر سرویس درگاه پرداخت به هر دلیلی کار نکنه یعنی فروشگاه من هیچ خروجی نداره دوتا مورد باید هرچه سریعتر انجام بشه :
۱- یک ایمیل critical برای ادمین بره تا بتونه پیگیری کنه موضوع رو از سرویس دهنده
۲- خطای مناسب (اینکه سرویس پرداخت غیرفعال هست) به کاربر نشون داده بشه تا از رفرش و DDOS شدن توسط کاربرهای خودمون جلوگیری بشه
بخصوص روی سرویسهای auto-scale که با زیاد شدن درخواست سرورهای جدیدی بالا میاد و این یعنی هزینه بیشتر.
توی زبانهای برنامهنویسی مختلف ابزارهای متفاوتی برای اینکار وجود داره؛ توی پایتون هم پکیج
Responses
کمک میکنه اینکار رو انجام بدید.
واقعاً نمیدونم چرا؛ ولی اینکه این تستهای توی کدهای شرکتهای بزرگ داخلی نمیبینم یا حتی توی آموزشها و .... مغزم سوت میکشه.
بعد اینا از gorilla تست صحبت میکنند.
حالا که این موارد رو توی آموزش و کدها ندیدم (توی سرویسهایی که تیم خودم مینویسه همیشه وجود داره)
گفتم بگم که شما خودتون یاد بگیرید، شاید یک روزی کدهای شما به من رسید یا هم تیمی شدیم.9 598
توی پایتون 3.14 برای دوستانی که ابزار و فریمورک توسعه میدهند بنظرم
t-string گزینه جذابی خواهد بود؛ کمی اطمینان خاطر
T-String PEP 750
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
