fa
Feedback
Python Hints

Python Hints

رفتن به کانال در Telegram

Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار) Admin: @Abbasi_ai

نمایش بیشتر
9 605
مشترکین
+924 ساعت
+647 روز
+22130 روز
آرشیو پست ها
این تکنیک همچنان جواب میده اگر ارور یا popup یا .... دیدید بخاطر این هست که باقی ادبلاکرهایی که دارید هم فعال هست (اون‌هارو روی سایت یوتیوب pause کنید)

The Music Played Artist: Matt Monro Released: 1968 Genres: Pop @pytensMusic

سم خالص

سم خالص

دوستانی که دیسلایک دادند لطفاً نظرشون رو هم بگن بهم می‌دونم که تلگرام محیط خوبی برای استوری گذاشتن نیست اما یک سری موارد رو نمیخوام پست بذارم (امتیازی باشه برای اونهایی که کانال رو دارند)

مقایسه داشته باشیم روی
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 تست نویسی اصلا مطرح نیست تو ایران تا زمانش بشه پروتوتایپ هم همین هست (اگر مجبور نباشیم؛ نمی‌دیم) معماری پروژه هیچوقت آپدیت نمی‌شه و بهبود پیدا نمی‌کنه فقط فیچر بهش می‌چسبه و اهمیتی هم نداره بعد از این چقدر معماری بدردنخور میشه چون هنوز کار می‌کنه. اینو فقط بعنوان یک رفرنس میذارم (مطمئنم همه‌ی شما هم تقریبا باهام همنظر هستید و چیزایی که گفتم رو دیدید توی ایران) که به وقت مدیر فنی شدن سعی کنید برای نسل بعدی یک چیزی رو درست کنید.

اینم چون دیدم خیلی از بچه‌ها نمی‌دونند : اگر شما هم مثل من بیشتر کارها رو با Firefox انجام می‌دید و ممکنه توی چند هفته بیش از sleep کردن سیستم کاری نتونید بکنید قطعاً مشکل Ram رو دیدید (روی سیستم من بعضی وقتا که خیلی سنگین استفاده می‌کنم، به ۱۵ گیگ - ۲۰ گیگ هم میرسه) مخصوصاً اینکه من Hardware Acceleration رو هم فعال کردم. ی راهکار بگم بدون restart مصرف رم فایرفاکس رو کم کنید (بخصوص روی دیتاهای کش شده که دیگه نیازی بهش نداره) توی سرچ بار بزنید : about:memory و توی صفحه‌ای که باز میشه توی بخش Free Memory گزینه GC (garbage collection) و بعد از اون Minimize memory usage رو بزنید. بستگی به استفاده شما داره، ولی برای من معمولاً چند گیگ رم رو خالی می‌کنه.

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

این رو تازه کشف کردم گفتم شاید مفید باشه : توی پایتون 3.11 یک تایپینگ جدید اضافه شده به اسم Self : from typing import Self کا
+1
این رو تازه کشف کردم گفتم شاید مفید باشه : توی پایتون 3.11 یک تایپینگ جدید اضافه شده به اسم Self :
from typing import Self
کاربردش توی class - classmethod - context manager و البته مهمتر از همه
Class inheritance 
هست. مثال تصویر رو ببینید تا متوجه بشید (توی پروژه‌های بزرگ واقعا بسیار بسیار کمک کننده هست بخصوص در زمان debug) تصویر اول نسخه‌ای هست که مشکل ایجاد می‌کنه (البته BUG نیست چون typing پایتون هیچ تاثیری در زمان اجرا نداره) و تصویر دوم راه‌حل ساده. @PyHints توی نسخه قدیمی‌تر از 3.11 باید برید سراغ راهکارهایی مثل TypeVar, Generic که معمولا اکثرا فراموش می‌شد

پ.ن : دوستان مثال بنده رو دقت کنید، ۲ تا فیلد کاملاً متفاوت رو درخواست همکاری میدهند مثلاً: فرض کنید من توی عنوان بنویسم، برنامه نویس ارشد : بعد توی بدنه متن درخواست بنویسم که Python باشه و ... بعد یکی که Excel کار کرده بیاد و رزومه بفرسته. مثالی که زدم، دقیقاً همینقدر پرت هست.

ی موضوع جالب دیگه هم که پیش اومد : حتماً شماهم دیدید، توی متن درخواست همکاری نوشتم کسی رو نیاز دارم که مسلط به مباحث Deploy, Optimization, ... باشه ولی هرکی از راه رسیده رزومه فرستاده. چرا ؟ چون عنوان کار خورده ML Engineer من همه‌ی این آدمایی که رزومه نامرتبط می‌فرستند رو دعوت به مصاحبه می‌کنم همه‌ی موارد هم به HR توضیح نمی‌دم و میگم نیرو رو می‌خوام (چون طرف تازه بعد از دعوت به مصاحبه میره متن رو می‌خونه) و وقتی میاد توی مصاحبه : توی ۵ دقیقه اول ردش می‌کنم، دلیلش هم اینه : حالا که تو وقت من و تیمم رو گرفتی، بذار منم گند بزنم به روحیه و وقت تو، چطور می‌شه که تو حق داری وقت یک شرکت و نیروهاش رو بگیری که صادقانه نوشته به چی نیاز داره ولی این همه آدم حق ندارند وقت تو رو بگیرند (حتماً هم مطمئن میشم توی این موارد روحیه طرف رو خراب هم بکنم، بهش بفهمونم هیچی سواد نداره) در نهایت : توی سایت‌ها هم دلیل ردش رو میزنم، نداشتن دانش فنی کافی (ای کاش سایت‌ها این موارد رو بصورت لاگ پروفایل به کارفرما بعدی نشون می‌دادند.)

آدم زرنگ جا پاش رو سفت می‌کنه و تورو مجبور به استخدام می‌کنه : شرکت ۳ مورد نیروی تازه‌کار گرفته (امروز دیدمشون) و باید انتخاب میکردیم که بین این ۳ نفر با یک نفر قرارداد ۱ ساله ببندیم و ... همشون کارشون عالی بود، اما یکی از نیروها سابقه کاری نداشت و تو زمان دانشگاه هم هیچ کاری نکرده بود (اسپویل، ایشون استخدام شد) چرا، به همگی تسک‌های مشابه داده شده بود و همگی کاملاً فوق‌العاده از پس کارهاشون بر اومده بودند. نیروهای قدیمی شرکت و هم تیمی‌هاشون هر سه مورد رو تأیید کردند (قرارداد قبلی ۶ ماهه بود.) اما این دوستمون که دیده بود سابقه کاری نداره، و از نظر رزومه از باقی عقبتر هست توی وقتای خالی پروژه‌ای که بهشون داده بودیم تا گیتش رو ببینند و ... رفته بود نشسته بود Type annotation براش زده بود، ۴ تا دلیل قشنگ هم توی جلسه آورد : ۱- من رزومه قوی ندارم (سابقه کاری منظورش بود) پس باید دنبال راهکاری می‌گشتم که خودمو ثابت کنم. ۲- نمی‌خواستم خیلی مزاحم دولوپرهای قدیمی پروژه بشم، پس اول پروژه رو کامل خوندم و سوالاتم رو کامل نوشتم ۳- چون سورس کد زیاد بود، خیلی بخش‌ها سردرگم می‌شدم، برای اینکه وقت کمتری ازم بگیره و شاید بتونم بعضی سوالات خودم رو جواب بدم به ذهنم رسید Type Annotation می‌تونه کمکم کنه و همین کار رو هم کردم. ۴- نمی‌دونستم کار رو میگیرم یا خیر، ولی خواستم اسمم توی بخشی از پروژه‌های شرکت بمونه برای نفرات بعدی اگر type annotations هام تایید بشه. تنها کسی بود که این پروژه رو‌ هم مثل موم تو دستش داشت (از نظر کد، نه بیزینس) اینو گفتم برای دوستان تازه‌کار، حتماً نباید ی دیتابیس یا ... خفن پیاده‌سازی کنید که donate کرده باشید بعضی وقتا همین کارهای ساده، مثل تایپینگ، داکیومنت کردن و .... می‌تونه شمارو از باقی افراد سر تر نشون بده (اعتراف می‌کنم ایشون گزینه آخر من برای استخدام بود.)

#موقت طرف ی داکر فایل بهم داده اندازه نصب کل OS حجم میگیره DevOps هم هست. بعد من ساختم، ۷۰٪ حجمش کمتر شده. در نهایت هم اومده میگه چرا می‌خوای کار من رو خراب کنی نکنه میخوای شغل من رو بگیری ؟ صرف یاد گرفتن ۴ تا دستور داکر، شما نمی‌تونی بزنی داکر رو حرفه‌ای هستم.

#خارج_از_بحث احتمالا شما هم با 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

روی هیچی پشتیبانی گرفتن فقط جای تشکر داره ❤️
روی هیچی پشتیبانی گرفتن فقط جای تشکر داره ❤️