Python Hints
Open in Telegram
Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازهکار) Admin: @Abbasi_ai
Show more9 613
Subscribers
+924 hours
+647 days
+22130 days
Posts Archive
9 605
این تکنیک همچنان جواب میده
اگر ارور یا
popup یا .... دیدید
بخاطر این هست که باقی ادبلاکرهایی که دارید هم فعال هست (اونهارو روی سایت یوتیوب pause کنید)9 605
دوستانی که دیسلایک دادند
لطفاً نظرشون رو هم بگن بهم
میدونم که تلگرام محیط خوبی برای استوری گذاشتن نیست
اما یک سری موارد رو نمیخوام پست بذارم
(امتیازی باشه برای اونهایی که کانال رو دارند)
9 605
مقایسه داشته باشیم روی
Software Design Stepsداخل ایران و استانداردهایی که شرکتها یا استارتاپهای مطرح رعایت میکنند : اول نسخه شرکتهای مطرح :
1- Requirement Analysis
2- System Architecture Design (system design)
3- Detailed Design (Component design)
4- UI
5- Database design
6- Prototyping
7- Test Strategy
8- Regular design review / updates
* All above steps, must have documentation step in it.
مدل مطرح بین شرکتهای ایرانی:
1- SRS (Software Requirements Specification)که خب معمولا در حد ۱-۲ صفحه میاد بدون هیچ جلسهای
2- Requirement Analysis
خوشحال نباشید این قدم تو ایران فقط برای سختافزار و منابع مالی هست
3- UI/UX Design
یک راست میریم سراغ طراحی فرانت (معماری سیستم و ... اصلا معنی نداره تو اینجا؛ جزئیات که هیچ)
4- API Design
این قدم توی ایران هست به بکند میگن که چی میخوایم و چطوری باید پیاده بشه (برگای آدم میریزه)
بجای اینکه دیتابیس طراحی بشه و نیازمندی به بکند تسک بشه
به بکند میگن که دیتابیس رو خودت طراحی کن (برای همین هیچکدوم از شرکتهای مطرح ایرانی شناسنامه دیتابیس نداند) و نیازمندی رو هم خودمون بهت میگیم چطوری باید پیاده سازی بشه که همین دلیل ۹۰٪ عدم رعایت clean code هم هست
5- Deploy
تست نویسی اصلا مطرح نیست تو ایران تا زمانش بشه
پروتوتایپ هم همین هست (اگر مجبور نباشیم؛ نمیدیم)
معماری پروژه هیچوقت آپدیت نمیشه و بهبود پیدا نمیکنه فقط فیچر بهش میچسبه و اهمیتی هم نداره بعد از این چقدر معماری بدردنخور میشه چون هنوز کار میکنه.
اینو فقط بعنوان یک رفرنس میذارم (مطمئنم همهی شما هم تقریبا باهام همنظر هستید و چیزایی که گفتم رو دیدید توی ایران) که به وقت مدیر فنی شدن سعی کنید برای نسل بعدی یک چیزی رو درست کنید.9 605
اینم چون دیدم خیلی از بچهها نمیدونند :
اگر شما هم مثل من بیشتر کارها رو با
Firefox
انجام میدید و ممکنه توی چند هفته بیش از sleep کردن سیستم کاری نتونید بکنید قطعاً مشکل Ram رو دیدید (روی سیستم من بعضی وقتا که خیلی سنگین استفاده میکنم، به ۱۵ گیگ - ۲۰ گیگ هم میرسه)
مخصوصاً اینکه من
Hardware Acceleration
رو هم فعال کردم.
ی راهکار بگم بدون restart مصرف رم فایرفاکس رو کم کنید (بخصوص روی دیتاهای کش شده که دیگه نیازی بهش نداره) توی سرچ بار بزنید :
about:memory
و توی صفحهای که باز میشه توی بخش
Free Memory
گزینه
GC (garbage collection)
و بعد از اون
Minimize memory usage
رو بزنید.
بستگی به استفاده شما داره، ولی برای من معمولاً چند گیگ رم رو خالی میکنه.9 605
اسم نمیبرم
ولی طرف دوره گذاشته، آموزش رزومه نویسی و چگونگی پیدا کردن بهترین موقعیت شغلی.
یکی از شما دوستان برای من فرستادید،
رفتم یک سرچی زدم دیدم طرف خودش هنوز کار گیر نیاورده و جایی کارآموز هست. (چون با حرفهاش مخالف بودم)
قبل از اینکه پول و وقت صرف این دورهها کنید، ی جستجو بزنید (خیلی خیلی مهمتر هست)
9 605
این رو تازه کشف کردم گفتم شاید مفید باشه :
توی پایتون
3.11 یک تایپینگ جدید اضافه شده به اسم Self :
from typing import Self
کاربردش توی class - classmethod - context manager و البته مهمتر از همه
Class inheritanceهست. مثال تصویر رو ببینید تا متوجه بشید (توی پروژههای بزرگ واقعا بسیار بسیار کمک کننده هست بخصوص در زمان
debug)
تصویر اول نسخهای هست که مشکل ایجاد میکنه (البته BUG نیست چون typing پایتون هیچ تاثیری در زمان اجرا نداره)
و تصویر دوم راهحل ساده.
@PyHints
توی نسخه قدیمیتر از 3.11 باید برید سراغ راهکارهایی مثل
TypeVar, Generic
که معمولا اکثرا فراموش میشد9 605
پ.ن : دوستان مثال بنده رو دقت کنید، ۲ تا فیلد کاملاً متفاوت رو درخواست همکاری میدهند
مثلاً:
فرض کنید من توی عنوان بنویسم، برنامه نویس ارشد :
بعد توی بدنه متن درخواست بنویسم که
Python
باشه و ...
بعد یکی که Excel کار کرده بیاد و رزومه بفرسته.
مثالی که زدم، دقیقاً همینقدر پرت هست.
9 605
ی موضوع جالب دیگه هم که پیش اومد :
حتماً شماهم دیدید،
توی متن درخواست همکاری نوشتم کسی رو نیاز دارم که مسلط به مباحث
Deploy, Optimization, ...
باشه ولی هرکی از راه رسیده رزومه فرستاده.
چرا ؟ چون عنوان کار خورده
ML Engineer
من همهی این آدمایی که رزومه نامرتبط میفرستند رو دعوت به مصاحبه میکنم
همهی موارد هم به HR توضیح نمیدم و میگم نیرو رو میخوام (چون طرف تازه بعد از دعوت به مصاحبه میره متن رو میخونه)
و وقتی میاد توی مصاحبه :
توی ۵ دقیقه اول ردش میکنم، دلیلش هم اینه :
حالا که تو وقت من و تیمم رو گرفتی، بذار منم گند بزنم به روحیه و وقت تو، چطور میشه که تو حق داری وقت یک شرکت و نیروهاش رو بگیری که صادقانه نوشته به چی نیاز داره ولی این همه آدم حق ندارند وقت تو رو بگیرند (حتماً هم مطمئن میشم توی این موارد روحیه طرف رو خراب هم بکنم، بهش بفهمونم هیچی سواد نداره)
در نهایت : توی سایتها هم دلیل ردش رو میزنم، نداشتن دانش فنی کافی (ای کاش سایتها این موارد رو بصورت لاگ پروفایل به کارفرما بعدی نشون میدادند.)
9 605
آدم زرنگ جا پاش رو سفت میکنه و تورو مجبور به استخدام میکنه :
شرکت ۳ مورد نیروی تازهکار گرفته (امروز دیدمشون) و باید انتخاب میکردیم که بین این ۳ نفر با یک نفر قرارداد ۱ ساله ببندیم و ...
همشون کارشون عالی بود، اما یکی از نیروها سابقه کاری نداشت و تو زمان دانشگاه هم هیچ کاری نکرده بود (اسپویل، ایشون استخدام شد)
چرا، به همگی تسکهای مشابه داده شده بود و همگی کاملاً فوقالعاده از پس کارهاشون بر اومده بودند.
نیروهای قدیمی شرکت و هم تیمیهاشون هر سه مورد رو تأیید کردند (قرارداد قبلی ۶ ماهه بود.)
اما این دوستمون که دیده بود سابقه کاری نداره، و از نظر رزومه از باقی عقبتر هست توی وقتای خالی پروژهای که بهشون داده بودیم تا گیتش رو ببینند و ...
رفته بود نشسته بود
Type annotation
براش زده بود،
۴ تا دلیل قشنگ هم توی جلسه آورد :
۱- من رزومه قوی ندارم (سابقه کاری منظورش بود) پس باید دنبال راهکاری میگشتم که خودمو ثابت کنم.
۲- نمیخواستم خیلی مزاحم دولوپرهای قدیمی پروژه بشم، پس اول پروژه رو کامل خوندم و سوالاتم رو کامل نوشتم
۳- چون سورس کد زیاد بود، خیلی بخشها سردرگم میشدم، برای اینکه وقت کمتری ازم بگیره و شاید بتونم بعضی سوالات خودم رو جواب بدم به ذهنم رسید
Type Annotation
میتونه کمکم کنه و همین کار رو هم کردم.
۴- نمیدونستم کار رو میگیرم یا خیر، ولی خواستم اسمم توی بخشی از پروژههای شرکت بمونه برای نفرات بعدی اگر type annotations هام تایید بشه.
تنها کسی بود که این پروژه رو هم مثل موم تو دستش داشت (از نظر کد، نه بیزینس)
اینو گفتم برای دوستان تازهکار، حتماً نباید ی دیتابیس یا ... خفن پیادهسازی کنید که donate کرده باشید
بعضی وقتا همین کارهای ساده، مثل تایپینگ، داکیومنت کردن و ....
میتونه شمارو از باقی افراد سر تر نشون بده (اعتراف میکنم ایشون گزینه آخر من برای استخدام بود.)
9 605
#موقت
طرف ی داکر فایل بهم داده
اندازه نصب کل OS حجم میگیره
DevOps
هم هست.
بعد من ساختم، ۷۰٪ حجمش کمتر شده.
در نهایت هم اومده میگه چرا میخوای کار من رو خراب کنی نکنه میخوای شغل من رو بگیری ؟
صرف یاد گرفتن ۴ تا دستور داکر، شما نمیتونی بزنی داکر رو حرفهای هستم.
9 605
#خارج_از_بحث
احتمالا شما هم با
anti-adblock detector یوتیوب مواجه شدید و متوجه شدید تقریبا هیچکدوم از adblocker های معروف نمیتونند دورش بزنند.
شخصا دنبال این بودم که popup مربوط به بلاک شدن adblocker رو فیلتر کنم (اینجوری دیگه اخطار نمیاد و ویدئو رو میشه اجرا کرد) : اگر بررسی کنید یوتیوب با اینکه اون اخطار رو نشون میده اما توی پس زمینه ویدئو رو هم درخواست میکنه
این مورد رو پیدا کردم امیدوارم مفید باشه :
۱- اول uBlock رو نصب کنید
۲- بعد از نصب روی آیکونش کلیک کنید و به بخش dashboard برید (گوشه پایین سمت راست با علامت ۳ تا چرخدنده)
۳- از منوی بالای صفحه وارد بخش My Filters بشید.
۴- توی ادیتور پایین همون صفحه این دستورات رو بزنید :
youtube.com##+js(set, yt.config_.openPopupConfig.supportedPopups.adBlockMessageViewModel, false)
youtube.com##+js(set, Object.prototype.adBlocksFound, 0)
youtube.com##+js(set, ytplayer.config.args.raw_player_response.adPlacements, [])
youtube.com##+js(set, Object.prototype.hasAllowedInstreamAd, true)
۵- روی گزینه apply changes کلیک کنید و یوتیوب رو بدون تبلیغات ببینید و لذت ببرید.
@PyHints
Available now! Telegram Research 2025 — the year's key insights 
