Python Hints
8.63K subscribers
172 photos
11 videos
9 files
141 links
Python tips and tricks
The Good, Bad and the Ugly

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

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

Admin: @Abbasi_ai
Download Telegram
#Security_Alert

مک بازها (آیپد و آیفون هم شامل میشه) :
iLeakage
رو مراقب باشید
مقاله‌اش هم اومده، که خیلی هم اتک ساده‌ای هست
و اپل هم میگه ۱ ساله می‌دونیم وجود داره ولی راهی براش نداریم. (امن هستیم چون کسی اسکریپت رو ننوشته)

فکر می‌کنم مشکل از سخت‌افزار اپل باشه (بخصوص M1) فرصت کنم مقاله‌اش رو می‌خونم و اطلاع میدم.

خلاصه که خودتونید و خودتون، خیلی مراقب باشید 😂

بعد از استیو جابز و اون تیم خفن قدیمی، عملکرد اپل مثل ایران بود همش میگه اینو نداریم در عوضش امنیت داریم و ...
که اونم توی سال‌های اخیر یکی پس از دیگری داره به فنا میره
بعنوان مثال زمان ارائه
Jailbreak
روی iOS, iPadOS رو مقایسه کنید با قبل.
👍22😁53🗿2👎1🙏1💔1
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛
داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال
Data structure & Algorithm
پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم، در نهایت از تعجب مصاحبه کننده شک کردم که اشتباهی شده و توضیح دادم که من سطح جونیور نیستم و ... (اشتباه سمت HR بود، چون توی جلسه اول هم پیش اومده بود)
طرف ازم خواست که سوال دیگری رو مطرح کنه و دیدم داره طول می‌کشه روی همون سوال قبلی بهش یک پیشنهادی دادم که واقعاً خودمم تا اون لحظه کار نکرده بودم و برام جذاب بود چالش قضیه
در نهایت ایشون هم قبول کرد و رفتیم سراغ مسئله (کل جلسه همین سوال طول کشید و درنهایت هم من قبول شدم)

توی این هفته (شایدم ۲ هفته)، یکبار بعنوان مصاحبه کننده، دوبار دوستانه و یکبار هم راهنمایی بعد از مصاحبه برای یکی از دوستان بحث سوال مطرح شد :

همین‌جا بگم، هیچکس جواب درست حالت سخت‌تر رو نداد.

۱- سوال اصلی مصاحبه خودم :
با استفاده از ساختار داده لیست؛ یک کلاس stack پیاده سازی کنید که یک عدد ورودی به اسم n بگیره و به تعداد n استک ایجاد کنه بطوری که دیتای تمام این استک‌ها داخل فقط و فقط ۱ لیست ذخیره بشه.

سوال خیلی ساده‌اس اما دوتا پرسش داره :
۱- آیا طول لیست از پیش تعریف شده هست؟ (که قطعاً میگن بله)

۲- آیا طول stack ها باهم برابر هست ؟ (جواب اینم بله هست)

که خب شما لیست رو به n قسمت تقسیم می‌کنید و هر قسمت رو به یک استک می‌دید.


نسخه‌ای که من به ذهنم رسید (خودمم توی مصاحبه‌هام می‌پرسم) :
۱- فرض کنید طول لیست از قبل مشخص نیست و stack ها می‌تونند تا بی‌نهایت ادامه داشته باشند (فرض کنید رم بی‌نهایت داریم)

دوتا راهکاری که به ذهن خودم رسید و هنوز توی این چندسال راه دیگه‌ای بهم نگفتند :
۱- هر عنصر لیست، یک tuple باشه که ایندکس اول tuple اندیس stack باشه و ایندکس دوم، داده‌ایی که ذخیره شده

اما بازم سختش کنیم، شما غیر از نوع داده‌های اصلی :
int, float, decimal, ...
چیزی نمی‌تونید داخل stack نگه دارید (یعنی فقط دیتا)

راهنمای کوچیک راهکار دوم : از Remainder طول فعلی لیست بر‌ n استفاده کنید و ببینید کدوم اندیس برای کدوم stack هست.

بحث سر راهکار من روی آخرین حالت سوال (که خب سوال مصاحبه یکی از دوستان هم بوده، کاملاً اتفاقی) من رو به اینجا رسوند که این موارد مثل جلسه امشب رو یک کاری باهاش بکنیم،

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

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

لایو : که خب محدودیت ۱۰۰ نفر و زمان و ... داریم و خیلی‌ها فرصت نمی‌کنند شرکت کنند و چون ذخیره هم نمیشه خیلی چیز قشنگی نمیشه نهایتاً

متن و کانال : برای آموزش‌های این چنینی واقعاً خوب نیست و خیلی خیلی سخت هست

یوتیوب : مزایایی که داره اینه که شما با دیدن؛ کامنت؛ لایک انگار دارید دوره رو می‌خرید و پشتیبانی مالی می‌کنید.
معایب : زمان زیادی می‌گیره - من واقعاً بلد کار نیستم - subscribe,like,comment نداشته باشه انگیزه خیلی پایین میاد - درآمدی نداره (حداقل اوایل کار) - درصورت عدم حمایت برندسازی خودم خراب می‌شه - از همه بدتر با توجه به اوضاع اینترنت ایران می‌ترسم خیلی دوستان نتونند روی یوتیوب تماشا کنند و همه موارد قبلی اتفاق بیوفته

اما خیلی دوست دارم یک راهکاری پیدا کنم که حداقل میزانی که خودم بلد هستم مطالب مورد نیاز رو منتقل کنم به دوستان.

همچنان به دنبال راهکار
(ساعت دقیقاً ۵:۳۱ دقیقه صبح هست، و من به تازگی جلسه‌ام تموم شد و این متن رو داغ داغ نوشتم)
51👍101👎1
Python Hints
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛ داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال Data structure & Algorithm پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم،…
پیشنهاد، انگلیسی بودن ویدئوها بیشترین پیشنهاد بود
ولی نه ممنون،
منبع انگلیسی به وفور پیدا می‌شه با آدم‌هایی که فن بیان و تجربه تدریس بسیار بسیار بیشتری از من دارند.

هدف من جامعه برنامه‌نویسی ایرانی هست، بخصوص تازه‌کار‌ها و افرادی که به زبان انگلیسی مسلط نیستند (دارند یاد میگیرند یا ...)

پ.ن :
یوتیوب رو هنوز خیلی روش نیستم البته
خیلی دوس داشتم ی جای بزرگی داشتم، همه بچه‌ها رو جمع میکردم اونجا و همونجا دور هم تمرین می‌کردیم (طوریکه کرایه اتوبوس تا تهران رو هم حتی خودم میدادم)
اینجوری مطمئن بودم هرکسی علاقه داره حتماً می‌تونه یاد بگیره (اینترنت و ... محدودیتش نیست)

پیشنهاد پلتفرم پولی به من ندید، ممنون ♥️
32👍25👏41
پیشنهاد یوتیوب با توضیحات مختلف و مشورت‌هایی که از دوستان گرفتم بهترین مدل هست :

حقیقتش هنوز شخصا شک دارم به این موضوع (بهترین بودن)

اما یکی از دوستان که توی این زمینه کار کرده قرار شد بهم آموزش بده (احتمال زمان زیادی می‌بره) ولی فعلا گانال رو ایجاد کردم تا شروع کنم به یادگیری اگر واقعا یوتیوب گزینه خوبی باشه و چیزی که میخوام ازش در بیاد همین رو می‌تونیم ادامه بدیم

اینم آدرس یوتبوب (خواستم رزرو کنم تا کسی زیرش نزده؛ شماهم فعلا سابسکرایب کنید انگیزه بگیریم.)
اگر کسی هم تجربه داره خوشحال میشم ازش یاد بگیرم.

PyHints Youtube Channel Link

مرسی از همه دوستان و نظرات (تمام موارد رو درنظر گرفتم و درنظر خواهم داشت)
58👍10❤‍🔥1
Channel photo updated
Channel photo updated
روی هیچی پشتیبانی گرفتن
فقط جای تشکر داره ❤️

پ.ن : نمی‌دونم چرا ولی تعداد
subscribers
به یکباره از ۷۰ اومده روی ۱۹ (هنوز با قوانین و ... یوتیوب آشنایی ندارم و نمی‌دونم برای چی این اتفاق افتاده)
جالبه همچنان داره کمتر می‌شه 🧐
49❤‍🔥21👎1
#خارج_از_بحث

احتمالا شما هم با 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
👍38933🌚3👎2
#موقت

طرف ی داکر فایل بهم داده
اندازه نصب کل OS حجم میگیره

DevOps
هم هست.
بعد من ساختم، ۷۰٪ حجمش کمتر شده.
در نهایت هم اومده میگه چرا می‌خوای کار من رو خراب کنی نکنه میخوای شغل من رو بگیری ؟

صرف یاد گرفتن ۴ تا دستور داکر، شما نمی‌تونی بزنی داکر رو حرفه‌ای هستم.
👍54😁21👎1
آدم زرنگ جا پاش رو سفت می‌کنه و تورو مجبور به استخدام می‌کنه :

شرکت ۳ مورد نیروی تازه‌کار گرفته (امروز دیدمشون) و باید انتخاب میکردیم که بین این ۳ نفر با یک نفر قرارداد ۱ ساله ببندیم و ...

همشون کارشون عالی بود، اما یکی از نیروها سابقه کاری نداشت و تو زمان دانشگاه هم هیچ کاری نکرده بود (اسپویل، ایشون استخدام شد)

چرا، به همگی تسک‌های مشابه داده شده بود و همگی کاملاً فوق‌العاده از پس کارهاشون بر اومده بودند.
نیروهای قدیمی شرکت و هم تیمی‌هاشون هر سه مورد رو تأیید کردند (قرارداد قبلی ۶ ماهه بود.)

اما این دوستمون که دیده بود سابقه کاری نداره، و از نظر رزومه از باقی عقبتر هست توی وقتای خالی پروژه‌ای که بهشون داده بودیم تا گیتش رو ببینند و ...
رفته بود نشسته بود
Type annotation
براش زده بود،

۴ تا دلیل قشنگ هم توی جلسه آورد :
۱- من رزومه قوی ندارم (سابقه کاری منظورش بود) پس باید دنبال راهکاری می‌گشتم که خودمو ثابت کنم.

۲- نمی‌خواستم خیلی مزاحم دولوپرهای قدیمی پروژه بشم، پس اول پروژه رو کامل خوندم و سوالاتم رو کامل نوشتم

۳- چون سورس کد زیاد بود، خیلی بخش‌ها سردرگم می‌شدم، برای اینکه وقت کمتری ازم بگیره و شاید بتونم بعضی سوالات خودم رو جواب بدم به ذهنم رسید
Type Annotation
می‌تونه کمکم کنه و همین کار رو هم کردم.

۴- نمی‌دونستم کار رو میگیرم یا خیر، ولی خواستم اسمم توی بخشی از پروژه‌های شرکت بمونه برای نفرات بعدی اگر type annotations هام تایید بشه.

تنها کسی بود که این پروژه رو‌ هم مثل موم تو دستش داشت (از نظر کد، نه بیزینس)

اینو گفتم برای دوستان تازه‌کار، حتماً نباید ی دیتابیس یا ... خفن پیاده‌سازی کنید که donate کرده باشید
بعضی وقتا همین کارهای ساده، مثل تایپینگ، داکیومنت کردن و ....
می‌تونه شمارو از باقی افراد سر تر نشون بده (اعتراف می‌کنم ایشون گزینه آخر من برای استخدام بود.)
👍723🤩21🐳1
این رو تازه کشف کردم گفتم شاید مفید باشه :
توی پایتون 3.11 یک تایپینگ جدید اضافه شده به اسم Self :
from typing import Self


کاربردش توی class - classmethod - context manager و البته مهمتر از همه
Class inheritance 

هست.
مثال تصویر رو ببینید تا متوجه بشید (توی پروژه‌های بزرگ واقعا بسیار بسیار کمک کننده هست بخصوص در زمان debug)

تصویر اول نسخه‌ای هست که مشکل ایجاد می‌کنه (البته BUG نیست چون typing پایتون هیچ تاثیری در زمان اجرا نداره)
و تصویر دوم راه‌حل ساده.
@PyHints

توی نسخه قدیمی‌تر از 3.11 باید برید سراغ راهکارهایی مثل
TypeVar, Generic

که معمولا اکثرا فراموش می‌شد
👍38531
اسم نمی‌برم
ولی طرف دوره گذاشته، آموزش رزومه نویسی و چگونگی پیدا کردن بهترین موقعیت شغلی.

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


قبل از اینکه پول و وقت صرف این دوره‌ها کنید، ی جستجو بزنید (خیلی خیلی مهمتر هست)
31👍18😁6🤪63🗿3🐳1
اینم چون دیدم خیلی از بچه‌ها نمی‌دونند :

اگر شما هم مثل من بیشتر کارها رو با
Firefox
انجام می‌دید و ممکنه توی چند هفته بیش از sleep کردن سیستم کاری نتونید بکنید قطعاً مشکل Ram رو دیدید (روی سیستم من بعضی وقتا که خیلی سنگین استفاده می‌کنم، به ۱۵ گیگ - ۲۰ گیگ هم میرسه)

مخصوصاً اینکه من
Hardware Acceleration
رو هم فعال کردم.


ی راهکار بگم بدون restart مصرف رم فایرفاکس رو کم کنید (بخصوص روی دیتاهای کش شده که دیگه نیازی بهش نداره) توی سرچ بار بزنید :

about:memory

و توی صفحه‌ای که باز میشه توی بخش
Free Memory

گزینه
GC (garbage collection)
و بعد از اون
Minimize memory usage
رو بزنید.

بستگی به استفاده شما داره، ولی برای من معمولاً چند گیگ رم رو خالی می‌کنه.

بطور کلی
Hardware Acceleration
رو اگر خاموش کنید مصرف رم قطعاً بهینه‌تر و کمتر خواهد بود.
👍3231
مقایسه داشته باشیم روی
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
تست نویسی اصلا مطرح نیست تو ایران تا زمانش بشه
پروتوتایپ هم همین هست (اگر مجبور نباشیم؛ نمی‌دیم)

معماری پروژه هیچوقت آپدیت نمی‌شه و بهبود پیدا نمی‌کنه فقط فیچر بهش می‌چسبه و اهمیتی هم نداره بعد از این چقدر معماری بدردنخور میشه چون هنوز کار می‌کنه.

اینو فقط بعنوان یک رفرنس میذارم (مطمئنم همه‌ی شما هم تقریبا باهام همنظر هستید و چیزایی که گفتم رو دیدید توی ایران) که به وقت مدیر فنی شدن سعی کنید برای نسل بعدی یک چیزی رو درست کنید.
👍455🤪3🗿311
https://t.iss.one/pyHints?boost

درصورت فعال شدن استوری
ازین قابلیت برای معرفی کتاب استفاده می‌کنیم
(هفتگی یا ماهانه)
👍74👎184
This media is not supported in your browser
VIEW IN TELEGRAM
سم خالص
😁72🤪11👾321👎1🦄1
The Music Played
Matt Monro
The Music Played
Artist: Matt Monro
Released: 1968
Genres: Pop

@pytensMusic
❤‍🔥9👎3👌2🍾21