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

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

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

Admin: @Abbasi_ai
Download Telegram
#موقت
دوستان فرم بسته شده؛ لطفاً درخواست دسترسی ندید.

الان تو فاز آنالیز هستیم 😁
تعداد درخواستای دسترسی داره زیاد میشه
40👍7👏1
👍104
Python Hints
Photo
داشتم یک کدی رو امروز روش کار میکردم؛ که یک سری کانفیگ از یوزر میگیره اما اگر وجود نداشت یک سری دیفالت رو بجاش استفاده می‌کنه و تمام این تنظیمات dictionary هستند.

مشکل بعدیش این بود که تنظیمات دیفالت هم خودش توسط یگ یوزر دیگه تعریف میشه و لزوما تنظیمات صفر ابزار ما نیست.

بطور خلاصه ما یک dict داریم که خودش یک سری تنظیمات داره؛ ولی ممکنه یک بخش‌هایی رو یک نفر بخواد تغییر بده پس باید overwrite بشه! ولی اجازه overwrite نداریم چون ممکنه کاربر نهایی تنظیماتش رو بخواد reset کنه ولی این وسط ممکنه تنظیمات از طریق مشتری‌های میانی به دست کاربر نهایی رسیده باشه و مشتری میانی نخواد کاربر رو مستقیم به ما وصل کنه (مطمئن باشه ما دورش نمیزنیم ولی خودش هم برنامه‌نویس نیست که سایت و ابزار‌های خودش رو توسعه بده)

خلاصه که ممکنه چیزی که نهایتا به مشتری آخر میرسه اینطوری باشه :
default -> default -> default -> ....... -> default
و بعد مشتری نهایی سیستم اون رو برای خودش شخصی‌سازی کنه.

کلی راهکار پیشنهاد شد؛ یکباره یاد ChainMap توی پایتون افتادم اول رفتم یک تست گرفتم مطمئن بشم به محدودیت‌های بیزینس نمیخوریم بعد کد رو دادیم رفت بالا (شد بهترین راهکار) چون خودم اصلا یادم نبود که ChainMap همچین کاربردی داشته باشم گفتم با شما هم به اشتراک بذارم.

اگر یکی از مقادیر توسط مشتری‌ها تعریف نشده باشه؛ در اونصورت از دیکشنری default خونده میشه.
👍539🔥1
Python Hints
ابزار جدیدی از astral اومده به اسم uv جاگزینی خواهد بود برای pip, poetry, ... البته درحال حاضر خیلی خام هست ولی بطور خیره کننده‌ای سرعت بالایی داره حتما یک سری بهش بزنید. uv: Python packaging in Rust پ.ن: از cache یک سری پکیج هوش مصنوعی نصب کردم 0.35sec…
یکی از پروژه‌ها رو جابجا کردیم و اینطوری شد که:

بجای 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 github
33👍10🔥1
RandRng
خیلی وقت پیش برای مشکلات دسترسی و تحریم و فیلتر یک پروژه روی گیتهاب معرفی کردم barryfar (عمر اون پست ازین کانال بیشتر بود) مشکلمم اینه که اعتماد ندارم جایی که اطلاعات کارت و ... ام رو داره ترافیکم رو هم داشته باشه. حالا چندروز پیش دوستان گفتن پروژه رو از…
#موقت

این از صبح وصل هست؛

فقط کانفیگ کنید url test رو سمت cloudflare نفرستید کلا اونور بلاک شده و همرو غیرفعال نشون میده

درخواست‌هارو بفرستید سمت
https://youtube.com
یا
https://gemini.google.com

اگر urltest مثبت گرفتید که وصل هستید؛ مطمئن بشید اینترنت شما روی سایت‌های ایرانی جواب میده و البته سرعت دانلود نرمالی دارید.
👍20🔥2
تعجب کردید چطوری جنگنده‌های اسرائیلی به آسمان مشهد رسیدند ؟

من نکردم؛ چون آسمان بی‌صاحاب شد وقتی سپهبد #نادر_جهانبانی رو برای حفظ حریم هوایی به ناحق کشتید.

حتی موقعی که کشتیدش هم لباس خدمت به وطن رو از تنش در نیاورد ♥️💔
224❤‍🔥15👍7🔥3👏1
#ایران

وقتی این روزها رو پشت سر گذاشتیم جون مادرتون چندتا کار رو انجام بدید :

۱- از روسیه فاصله بگیرید؛ به جرم جاسوسی بگیرید هرکی که اسم روسیه رو آورد.
نه سوخو داریم
نه s300-s400
نه حمایت
فقط پول رو خرجش کردیم؛ کشوری که پاره شدیم گفتیم تو تاریخ همیشه نامرد بوده برای ما.

۲- مهاجرین غیرقانونی رو اخراج کنید؛ جرم انگاری سنگین بذارید برای ورود‌های غیرقانونی.
با خانواده اخراجشون کنید؛ اینکه فقط مرداشون رو اخراج کنید دوای درد نیست.

۳- تریبون رو از رائفی‌پورها بگیرید؛ بوالله که اگر این‌ها جاسوس نباشند دوست نیستند.
خریت این‌ها مملکت رو به این روز انداخت؛ نذاشتند با دنیا تعامل کنیم.
نذاشتند بخش نظامی تقویت بشه؛ انقدر که با جفنگیات خواستند جلوی بمب و موشک و ... رو بگیرند.
من هنوز هم باور ندارم که این‌ها انقدر احمق باشند؛ تنها موردی که به ذهنم میرسه جاسوس بودن هست.

نمی‌دونم چی بگم دیگه ...
به امید روزای روشن برای ایران عزیزم ♥️
👍14756❤‍🔥7🔥2👏2
#book

کتاب برای SQL جزو مواردی هست که خیلی خیلی سوال شده ولی چون خیبی وقت بود کتابی در این باره نخونده بودم پیشنهادی هم براش نمیدادم.
این مدت نشستم و یک مرور سریع روی این کتاب داشتم که بنظرم خیلی خیلی شروع خوب و قوی داره.

برای دوستانی که سوال کردند.


داکر هم خیلی پرسیده شده؛
Docker in a month of lunches

بنظرم یکی از بهترین کتاب‌ها هست. (می‌دونم قدیمی شده ولی هنوز جزو بهترین‌ها هست؛ تغییرات دستورات رو با chatgpt آپدیت کنید ولی مفاهیم رو فوق‌العاده توضیح میده.)
25👍9
103Mb
دانلود کردم؛ 40 فاکینگ دقیقه طول کشید. (بدون vpn)

لعنت بهتون
👍39🔥53
هنوز مقامات ج.ا هیچ صحبتی نکردند.

مارکو روبیو و ... هم این پیام رو تأیید کردند.
👍37🔥5❤‍🔥1👏1
#تجربه
ساختمان داده و الگوریتم؛

بیشترین سوالی که همیشه از من می‌شه؛ چقدر باید
Data structure, Algorithm
بلد باشم و یا چندتا leetcode باید حل کنم ؟

اول سوال دوم رو جواب میدم؛ تعداد leetcode هیچ ربطی به سواد الگوریتم شما نداره و ۲ نوع آدم leetcode زیادی حل می‌کنند :

۱- چالش‌های لیت‌کد براشون تفریح هست و توی اوقات فراغت ترجیح میدند اینکار رو انجام بدند.

۲- درک درست از algorithm, data structure پیدا نکردند و در تلاش هستند برای حفظ کردن پترن (که اصلاً هم کار بدی نیست)

مسئله اینه که درواقعیت
Data structure, Algorithm
خیلی شبیه به شطرنج می‌مونه؛ افراد خیلی خیلی کمی توی دنیا وجود دارند که الگوی جدیدی رو بنام خودشون ثبت می‌کنند اما باقی افراد فقط پترن‌های پرتکرار رو تمرین و حفظ می‌کنند.

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

اما یک راهکار بهتر هم هست؛ که ۹۹٪ اپلیکیشن‌ها به شما نمی‌گه (پول توی این هست که شما زمان طولانی‌تری برای یادگیری صرف کنید) راهکار بهتر چیه ؟
اول توضیح هدف:

برای یک شروع موفق توی بازی شطرنج شما باید سوار بر وسط زمین باشی و کنترل وسط زمین رو به دست بگیری


همین توضیح نیاز شما به انجام ۲۰۰ تا تمرین رو به ۱۰ میرسونه.

زمانی که خصوصی برای مصاحبه آموزش میدادم (چندین سال قبل) همیشه بعد از بررسی هر
Data Structure
به افراد یاد میدادم با خوندن سوال اون‌ها رو دسته بندی کنند؛ تمرین بین جلسات هم همین بود.
مثلاً اگر آرایه‌ها رو بررسی کردیم؛ سوالات مربوط به آرایه‌ها رو پیدا کنند، و ۱۰۰ مورد رو بررسی و دسته‌بندی کنند شاید ۴-۵ دسته می‌شدند.

بعد از بررسی الگوریتم‌های مهم آرایه‌ها؛ فقط کافی بود از هر دسته ۱ سوال یا نهایتاً ۲ سوال رو حل کنند.

و اینطوری با تعداد خیلی کمتری حل leetcode به موفقیت می‌رسیدند (معمولاً کمتر از ۳ ماه وقت داشتند)


اما سوال اول؛
چقدر
Data Structure, Algorithm
باید بلد باشیم ؟

برای مصاحبه همه‌ی موارد رو باید بشناسید؛ اما مثلاً برای مصاحبه جونیور هیچوقت از شما red black tree پرسیده نمی‌شه یا مثلاً شاید حتی Trie پس بسته به سطح مصاحبه روی مباحث مختلف وقتتون رو تنظیم کنید.

اما توی کار چطور ؟
خیلی بستگی به نوع کار شما داره؛ مثلاً اگر توسعه دهنده دیتابیس باشید حتماً باید B-tree و انواع موارد بهبود یافته اون رو حتی بهتر از array بشناسید.

اما اگر نه؛ ممکنه هیچوقت بهش نیاز نداشته باشید.
توی ۳ سال اخیر برای من فقط یکبار از Trie لازم شده استفاده کردم، اونم برای پردازش string


پس؛ سعی کنید پترن‌ رو یاد بگیرید بدون اینکه مسئله حل کنید. توی لیت‌کد باید سوالاتی که بنظرتون تکنیک حل یکسان داره رو شناسایی کنید و کنار هم قرار بدید.
تمرکز رو روی مباحثی بذارید که بیشتر به سطح شما میخوره و باقی مباحث رو فقط یکبار بخونید که باهاش آشنا باشید.
شغلی که براش اپلای می‌کنید رو بررسی کنید و الگوریتم و ساختمان داده‌های مهم توی اون کار رو به خوبی هرچه تمام‌تر یاد بگیرید.

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

هیچ علاقه‌ای به دوره خصوصی برگذار کردن ندارم دیگه.
👍4526
Python Hints
یک نگاهی به کانال @pytens بندازید (چون جو هوش مصنوعی داغ هست) توی چندین سال اخیر من مشاور خیلی پروژه‌های داخلی و خارجی بودم توی مواردی که بیزینس یا همکاری با تیم‌های تحقیقاتی بهم یاد داده فهمیدم که تمرکز کسی که میخواد واقعا توی این زمینه کار خوب انجام بده…
این پست و پست قبلیش رو بخونید
بخصوص دوستانی که تازه وارد کانال شدند؛


چون دست به forward شدید بسیار؛ خیلی از پست‌ها بیش از ۱۷۰-۱۸۰ بار forward می‌خوره و مطمئنم مقاومت اینکه کانال رو به باقی معرفی نکنید درون خیلی‌هاتون وجود داره. 😬
20❤‍🔥4👍3
و تمام!!!!

اعلام آتش‌بس توسط هر دو طرف.

آپدیت :

عجب خر تو خری شد؛

عراقچی؛ از ۴ صبح آتش بس می‌تونه صورت بگیره.
اسرائیل میزنه تا آخرین ثانیه‌ها

سپاه؛ خب ماهم با چندتا موشک جواب میدیم چون ثانیه‌های آخر سنگین زده

اسرائیل؛ اینارو رهگیری می‌کنیم، میگیم به اهداف جنگ رسیدیم و تمام.

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

همه چیز بنظر صلح میاد؛

سپاه، دوباره شلیک ۱ موشک به سمت حیفا.
مثل اینکه آتش بس پذیرفته نشده.


بنظر میاد؛ ترامپ هم پست‌هاش راجب صلح رو پاک کرده (کندی اینترنت اجازه بررسی به بنده نداد)

واقعاً خاورمیانه از فیلم ترکی و فیلم هندی هم غیرقابل پیش‌بینی تر هست
👍32❤‍🔥22
Please open Telegram to view this post
VIEW IN TELEGRAM
57
Forwarded from RandRng
اینو یکی از دوستانم توی گروه فرستاد :

یک باگ امنیتی جدی روی WinRAR پیدا شده (critical) هست.

اگر ازین ابزار استفاده می‌کنید؛ حتماً هرچه سریعتر به آخرین نسخه آپدیت کنید.
👍296
#هشدار مجدد؛

حواستون به دعوت به همکاری‌های با کار دلاری و یورویی باشه!

مجدداً زیاد شده؛ اگر بهتون سورس کد دادن که روی سیستم خودت اجرا کن و فلان فیچر رو بهش اضافه کن.

اول دقیق سورس کد رو بخونید؛
دوم دقیق سورس کد رو بخونید؛
سوم راجب شرکت تحقیق کنید؛
چهارم درخواست بدید با ایمیل شرکت براتون ارسال بشه (رو دامنه اصلی)؛
پنجم کد رو روی محیط مجازی باز کنید، اگر حتی ۱ دونه dependency داشت که نمی‌شناختید.


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

ولی امروز یک قربانی جدید گرفت و متأسفانه کیف پول دیجیتال این دوستمون رو خالی کردند.
👍927
Python Hints
یک نمونه exploit خیلی ساده برای تست؛ سورس کد رو گذاشتم که خودتون اجرا کنید و مطمئن باشید امن هست. اما بجای ls میشد هرکار دیگری هم کرد یا خوندن passwd می‌شد خیلی کارهای دیگه‌ای کرد. هیچوقت هیچ فایل Pickle ایی رو از کسی قبول نکنید اگر قبول کردید روی سیستم…
اینم یک یادآوری قدیمی؛

یادآوری کنم ؟
کمتر از ۱ سال پیش huggingface سرورهاش اینطوری هک شد!
شانس خوبش این بود که تیم امنیتی کلاه سفید بود و بهش گزارش داد.

اون موقع گفتم :

بنظر میاد بچه‌های huggingface پست‌های مارو نمی‌خونند.
👍384❤‍🔥1🔥1
پسر اینترنت با vpn حداقل ۳ برابر سرعت دانلود بهتری داره 😂
👍94❤‍🔥2👏1