Python Hints – Telegram
Python Hints
9.35K subscribers
191 photos
11 videos
10 files
157 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)

Admin: @Abbasi_ai
Download Telegram
Rust for Python developers
Youtube Link اگر روی Optimization کار می‌کنید؛ پیشنهاد میدم این سخنرانی رو ببینید. خیلی نکات خوبی رو می‌گه شخصا بسیار لذت بردم
این ویدئو روی Rust هست؛ اما تکنیک‌هایی که برای پیدا کردن مشکل و اپتیمایز کردن کدها گفته می‌شه کاملا روی پایتون هم جواب میده.
قبلا راجب پروفایلینگ روی پایتون صحبت کردم.

با توجه به اینکه اکثر دوستان اینجا بکند یا هوش مصنوعی کار می‌کنند بنظرم دیدن این ویدئو خالی از لطف نیست.
31👍5👏1🤣1
اگر از uv استفاده می‌کنید حتما اون رو آپدیت کنید یک باگ
RCE: Remote Code Execution
توی یکی از کتابخونه‌ها پیدا شده که البته uv هم ازون کتابخونه استفاده می‌کرده.

چون موضوع مربوط به Rust هست توضیحات بیشترش رو داخل کانال Rust می‌نویسم ولی خواستم اعلام کنم که حتما آپدیت کنید uv رو
@pyrust
👍31🤣1
Python Hints
آخرین موردی که راجبش صحبت می‌کنیم Makefile هست؛ ی ابزار روی لینوکس داریم به اسم make که خودش ی دوره (حداقل ۴ ساعته لازم داره تا درست متوجه بشید) مثالی که توی تصویر بالا زدم ساده ترین حالت استفاده از make هست و برای توسعه دهنده پایتون کافی. اگر C - Rust…
یک آپدیت روی این بدم؛ یک چندوقتی هست بجای Makefile دارم از Justfile استفاده می‌کنم:
بنظرم یک آپدیت خیلی خوب هست روی Makefile و خیلی هم syntax راحتی داره (اگر قبلتر روی Makefile کار کردید)
مثلا ارسال پارامتر بعد از کامند یا گذاشتن مقدار دیفالت براش خیلی خیلی ساده‌اس

انیجوری نیست که بگم این فیچرهای بهتری داره پس بریم سراغش؛ مثل taskfile هم نیست که یک سری چیز مخصوص به خودش رو اضافه کرده باشه که توی ابزارهای دیگه نبوده و نیست؛ و به نظرم همین هم باعث شده ابزار خوبی باشه اینکه Makefile ولی بهتر رو ارائه داده

مثل کامند‌ less که همون more هست ولی بهتر!

Just Github

پینوشت: توی مثال قبلی من از Makefile بعنوان Command Runner استفاده می‌کنم و نه Builder حواستون به این نکته باشه که Just کاربردش فقط همین هست.
👍162🤣1
"When the bad file with more than 200 features was propagated to our servers, this limit was hit — resulting in the system panicking."
"This resulted in the following panic which in turn resulted in a 5xx error:
thread fl2_worker_thread panicked: called Result::unwrap() on an Err value"



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

حالا مشخص شده اون باگ از یک خطای انسانی افتضاح میاد.
داستان اینه؛
یک سرور به محدودیت می‌خوره و از دسترس خارج می‌شه که باعث میشه تمام ریسپانس‌هاش خطای ۵۰۰ باشه؛ اما یک توسعه دهنده بجای اینکه response رو بررسی کنه که آیا ۲۰۰ هست یا نه
فرض کرده چون ما داخل دیتاسنتر هستیم و کلودفلیر هیچوقت غیر از ۲۰۰ نمی‌گیریم.
پس unwrap زده و چون غیر از ۲۰۰ گرفته بوده؛ سیستم ترکیده.

چندتا نکته :
۱- هیچ چیزی رو فرض نکنید، همه چیز رو تست کنید.
من هم توی بعضی کدهام unwrap می‌نویسم؛ اما خیلی وقتا عمدی هست چون واقعاً نمی‌دونم خروجی اون تابع یا ماکرو چطور می‌تونه Error باشه!
می‌نویسم که بیزینس در بیاد.

۲- زبان برنامه‌نویسی Rust فقط امنیت روی مموری بهتون میده؛ قراره نیست براتون نون هم بخره.
نکته جالبتر اینکه؛ AI هم این خطاهارو تشخیص نمی‌ده !!
اینه که همیشه از peer-review استقبال باید بشه.

۳- مورد راحتی مثل خطای 5xx توی http و اینکه حتی این مورد ساده هم تست نشده؛ نشون میده کلودفلیر هم که بری؛ قرار شیت کد ببینی.
پس دوست عزیز حداقل تست بنویس.
👍50🔥32
#خارج_از_بحث

این پست راجب git هست و استخدام؛ می‌خواستم توی رندرنج بنوسیم ولی چون مدیرایی که می‌شناسم بیشتر توی این کانال هستند گفتم اینجا بذارم.
مدیرعامل یک شرکتی باهام تماس گرفت (از طریق یک واسط) مشکلش این بود :
ما یک نیروی Senior استخدام کردیم؛ چون توی شرایط بدی بودیم خیلی هم سریع پروسه استخدام رو پیش بردیم اما الان به یک سری مشکلات خوردیم:
۱- نیروی سنیور پرفورمنس خیلی پایینی داره؛ درحالی که وقتی رزومه‌ای که برامون فرستاد رو بررسی کردیم یک چندتا پروژه روی گیت‌هاب داشت که بسیار شبیه کارهایی بود که ما داریم می‌کنیم (منظورش این بود مطالب باید براش تکراری باشه).
۲- نیروهای دیگه شرکت که بیشتر سطح متوسط و مقدماتی هستند همه از نیروی سنیور (لید تیم هم هست به نوعی) ناراضی هستند و حتی سواد فنی‌اش رو هم قبول ندارند.
درنهایت وقتی هم که به خودش می‌گم؛ می‌گه نیروها دانش کمی دارند؛ حرفای منو متوجه نمی‌شوند و همین باعث شده پرفورمنس خودمم بیاد پایین چون همش باید دنبال یک راهکاری برای توضیح دادن به اینا باشم.

قرارشد من بعنوان مشاور یا کسی که قراره CTO تیم بشه با نیروها صحبت کنم؛ مشکل رو پیدا کنم اگر راه حل داشت ارائه بدم اگر باید نیروها اخراج می‌شدند و نیروی جدید استخدام می‌شد بگم. جز مدیرعامل شرکت کسی این موضوع رو نمی‌دونست.

یک مقدار کدها رو خوندم بعد با نیروی مثلا سنیور قرار شد چندتا جلسه بذاریم (بحث این بود که ایشون توی جایگاه خودش بمونه و من وارد بشم چون ۳ تا تیم با موضوعات دیگه قرار هست وارد بشه)
همون جلسه اول من بهش مشکوک شدم؛ باور کنید یا نه آدم ناشی و اصطلاحات و لغت حفظ کرده از آدم کار بلد و توی کار تست کرده توی ۱۰-۲۰ دقیقه صحبت فنی به راحتی تفکیک میشه مخصوصا اینجا که یک پروژه واقعی درجریان هست.
با این حال من ۲ تا جلسه دیگه هم با ایشون شرکت کردم.

درنهایت متوجه شدم که کلا دلیل استخدام ایشون پروژه‌های github بوده؛ دوتا شک داشتم خرید ساعت کاری و سفارش به شخص که با اکانت ایشون کامیت بزنه (خودم یک زمانی برای پچه‌های دکتری و ... خارج از ایران اینکار رو می‌کردم. قبلا دربارش گفتم ولی برای کسانی اینکار رو می‌کردم که باسواد بودند و با شرکت‌های خوبی کار می‌کردند و مشکل این بود زمان کافی برای کلاس رفتن و حل تمرین کلاس نداشتند منم واسه یادگیری پول می‌گرفتم.)
شک دومم که بعد از بررسی یک سری پروژه‌های گیت‌هاب بیشتر شد؛ این بود که پروژه‌های آدمای دیگه رو گرفته و لاگ رو تغییر داده.


همین هم بود؛ خلاصه اینکه:
فکر نکنید لاگ git تا ابد ثابت هست؛ همه کاری میشه باهاش کرد.
تغییر ساعت و جزئیات commit؛ تغییر اطلاعات
تغییر اینکه کی commit زده
commit message, branch, merge info, ...

من این موارد رو نشون دادم و اشتباه اون آدم رو هم توی git-log پیدا کردم (یکجا دولوپر اصلی توی یکی از اطلاعات commit خیلی قدیمی یک ایمیل گذاشته بود و ...)
خلاصه که این موضوع رفته برای شکایت یا توافق؛ ولی حواستون باشه git, ... به تنهایی ارزشی نداره دانش شخص و سوادش برای کاری که شما ازش می‌خواید خیلی خیلی مهم تر هست.

یاد داستان اون شخص افتادم که توی گوگل بود؛ به زور کردنش مدیر یک بخش فنی؛ بنده خدا زبونش می‌گرفت نمی‌تونست بگه توی گوگل آبدارچی بوده! چون زودی می‌پریدن تو حرفش 😂
👍578
شرکت Meta در ادامه پروژه‌های OpenSource بالاخره پروژه Pyrefly رو توی نسخه beta منتشر کرد
vscode, pycharm, neovim, ...
مواردی هستند که Extension براشون منتشر شده.

این پروژه یک Language Server, Type checker هست روی پایتون.
چرا Meta اینکار رو کرده ؟
خودشون اعلام کردند مشکل از کدبیس بزرگ Instagram شروع شده تا جایی که انقدر این کد بزرگ بوده که navigate, code complete و ... یا زمان زیادی می‌برده یا بخوبی انجام نمی‌شده برای همین Pyrefly رو توسعه دادند که اولین مشتریش هم تیم Instagram هست و بصورت هفتگی هم آپدیت خواهد شد.
جالبترین نکته اینکه؛ این پروژه هم با Rust نوشته شده و به همین دلیل هم هست که سرعت خیلی بالایی داره.

مهمترین بخش آپدیت Beta بنظرم پشتیبانی از Pydantic, Django هست؛ بخصوص برای Django که کلی کانفیگ نیاز بود توی ابزارهای جایگزین.

درنهایت:
شخصا روی تنظیمات؛ neovim بعد از استیبل شدن اضافه خواهم کرد (اگر خوب پیش بره) و درحال حاضر روی vscode فقط تستش می‌کنم.

Pyrefly Github
👍272
RandRng
Message
توی این کانال دارم از تجربیاتم روی Home Lab ایجاد کردن می‌نویسم؛ البته من هدفم راه‌اندازی سرویس بکاپ عکس و سرویس فیلم و ... نیست. هدف اصلیم Distributed Programming بوده و هست ولی کنارش دارم کارهای دیگه هم می‌کنم
مثلا تست کانفیگ‌های مختلف برای بکند؛ kafka, rabbitmq, ....

اگر دوست داشتید می‌تونید اونجا این مطالب رو به مرور زمان دنبال کنید ولی قبلش Info اون کانال رو بخونید.
23👍7
RandRng
Message
این پست خارج از بحث کانال هست ولی چون این اواخر خیلی بهم پیام داده شده
ترجیح دادم بصورت عمومی توی کانال اعلام کنم!

که حداقل خودتون حواستون رو جمع کنید!
39👍12👏3
آقای مهندس عباسی،
در گذشت والده ی محترمه اتون رو تسلیت عرض میکنیم 🖤

دوستان ایشون در حال حاضر قادر به پاسخگویی پیام های شما در پیوی اشون نیستند

موقتا اگر سوالی هست بنده در خدمت دوستان هستم

@majid_aghamohamad
277❤‍🔥2🔥2👏2
RandRng
Message
نمی‌دونم چرا ولی از هفته قبل تعداد پیام‌های یادگیری بکند برام خیلی خیلی زیاد شده.

تا قبل از این همگی هوش مصنوعی بود.

توقع دارم بعد از این مرحله Rust باشه و System Programming (خدا کنه خودم به اندازه کافی تجربه کنم تا اون موقع)

حتماً پیام قبل و بعد این roadmap رو توی اون کانال بخونید.
شرایط رو درک کنید و context توی ذهنتون باشه و بعد شروع به دنبال کردن این roadmap کنید.

پینوشت:
مواردی مثل SSO, Event driven, ... هستند که یک سنیور باید بلد باشه اما ازونجا که مفاهیم نقشه‌راه بالا باعث میشه هرکسی هر زمان که لازم داشت بتونه به راحتی اون‌ها رو یاد بگیره دیگه اینجا گفته نشده


زمانبندی برای کسی که روزی ۴ ساعت بتونه وقت بذاره توقع دارم توی ۶ ماه این موضوعات رو تموم کنه!

حداکثر ۲ ساعت مطالعه،
حداقل ۲ ساعت توسعه کد.
در طول هفته (شنبه تا ۵ شنبه)
جمعه هم ۱ ساعت، برای code review (بخش‌هایی که قبلتر کد زدید)
42👍9
خیلی درده، وقتی هیچی واسه از دست دادن نداری.
251👍8
ی جمله‌ی معروفی هست:
«در جنگ‌ها، این سربازان‌اند که کشته می‌شوند، نه رهبران.»


در اعتراض به دزدی، اختلاس، ناکارآمدی و فساد و ... هم

دزد و مختلس و مسئولِ ناکارآمد در آرامش‌اند،
اما
این معترض و محافظ‌اند که روبه‌روی هم وایساده و همدیگر را می‌کشند.
معترض می‌دونه برای چی اعتراض می‌کند.
اما آقای محافظ…
تو هم می‌دانی از چی داری دفاع می‌کنی؟
131👍32