Python Hints
8.21K subscribers
154 photos
11 videos
9 files
130 links
Python tips and tricks
The Good, Bad and the Ugly

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

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

Admin: @Abbasi_ai
Download Telegram
Python Hints
https://github.com/pykeras/neovim بالاخره آماده شد. تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچه‌های گروه خودمون. فکر می‌کنم خوب باشه. توی ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که می‌اندیشند وجود داره
چون پرسیدید چرا (تو گروه توضیح دادم همون رو میذارم اینجا) :

تعداد پروژه‌های همزمان من زیاده و خیلی هم طرفدار استفاده از تولز نیستم
سری آخری که از vim زدم بیرون هم برای این بود که همه تنظیماتم بدون بکاپ بود و هاردم سوخت (هیچوقت حال نداشتم تنظیم کنم) و هم اینکه خیلی از پلاگین‌های الان هم نبود.

موقعی که تعداد پروژه‌های همزمان زیاد میشه :
۱- کندی شدیدی توی vscode دارم
۲- مصرف رم خیلی زیاد میشه
۳- ی وقتایی حتی خود به خود vscode بسته می‌شد
و ...

که همگی این ها مشکلات اساسی مربوط به الکترون هست.

مختصرش این بود.

آیا vim بدرد همه میخوره ؟ نه
آیا باید یاد گرفت ؟ نه

ولی اگر کندی vscode اذیت کننده بود یا lag , ... داشتید.
—————————————————————————
چرا پایچارم نه ؟
سعی کن باهاش روی python, rust, javascript کار کنی 😂
بعد اینجوری هم هست که؛ تا دستت می‌خوره روش میگه علی الحساب ی ۴-۶ گیگ رم بده بعد می‌بینم چیکار داری.
Forwarded from RandRng
💯
Python Hints
💯
لینکدین فارسی به معنای واقعی به ته ته خط رسیده :

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

۲- کلی درخواست کانکشن میاد بعد می‌بینی طرف بلاگر و تبلیغات چی بوده از اینستاگرام اومده لینکدینم به کثافت بکشه

۳- کلی پیام تسلیت میاد، روزی نیست که شخصی فوت نکنه و توی لینکدین پست هزار نفر نشه (افرادی که وقتی زنده بود فحش میدادن بهش، بخصوص استادا نزدیک خودم دیدم که می‌گم)

۴- همه چیز تبدیل به دستاورد می‌شه؛ طرف زده رفتم تخم مرغ خریدم و ....

۵- داستان همه آدما کپی می‌شه؛ اگر یک داستان قشنگی هم پیدا بشه می‌بینی هزارنفر به اسم خودشون زدند. نمی‌شه به آدم واقعی داستان رسید شاید کسی بخواد کمک کنه.

۶- مهمترین، استفاده از لینکدین قرار بود این باشه که ما به آدمایی که می‌شناسیم بگیم آقا٫خانم من دنبال کار می‌گردم به همه شما اطلاع میدم.

۷- هرکسی open to work فقط #up , ... میگیره دریغ از یک پیشنهاد همکاری یا ...
قبلاً زده بودم که بهتره چطوری زیر این پست‌ها نظر بدید وگرنه که نادیده بگیرید.


خلاصه که شخصاً ۶-۷ ماه هست که لینکدین فقط میرم message هارو می‌خونم (همرو رد می‌کنم) و کانکشن‌ها رو قبول می‌کنم.
فکر کنم برای شما هم کاربردش همین شده باشه.
می‌خوام راجب این صحبت کنم (از پروفایل خودم).

من پیغمبر مخالفت با اهمیت تعداد کامیت بودم و هستم؛ حداقل ۳-۴ ساله دارم این حرف رو میزنم و دلیلش رو هم گفتم (اینکه چندتا گیت‌هاب خودم به اینو اون دادم و ...)

ولی یک جو احمقانه توی لینکدین و توییتر راه افتاده ضد این بخش؛ ببین از من که گذشته ولی این صحبت‌های احمقانه برای کل جامعه برنامه‌نوبسی بد هست چند مورد :

۱- کسی که پروفایلش انقدر کامیت داره؛ حرفه‌ای نیست چون شرکت‌های بزرگ خودشون گیت‌لب دارند و ...

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

۲- اینا همش ادا بازیه و ...

حماقت محض
هست این حرف؛ اگر به اینجا رسیدی که این حرف رو زدی (شما تا حالا کسی رو دیدی عکس این کاشی‌کاری رو توی رزومه‌اش بذاره ؟)
هیچ شرکت و یا شخص با سوادی رو نمی‌شناسم که حتی ۱ درصد این موزاییک براش مهم باشه (مگر بچه‌هایی که روش نقاشی می‌کشند. اونم کل کل برنامه نویسی هست البته)

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

از این 2176 تا کامیت شاید 700-800 تاش برای شرکت‌هایی هست که روی گیت‌هاب هستند؛ باقیش کارهای خودمه؛ و حتی اگر یک روز تا ۱۰ شب هم سرکار باشم هرطور شده باید تا آخر شب ۲-۳ تا مطلب کتابی که خوندم رو برای خودم تمرین کنم (این بدترین حالت هست).

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

خلاصه که وظیفه ما :
هشدار دادن راجب افراد سودجو بود؛ که نیروی HR به این کاشی کاری گیت‌هاب اهمیتی نده برای دعوت به مصاحبه.
اما این موج تخریب افراد تازه‌کار و با انگیزه بالا هم کاری بس کثیف‌تر هست که مطمئنم از جامعه توسعه دهنده شروع نشده.
مثال از خودم زدم برای حمایت از تمام دولوپرهای تازه‌کار و با انگیزه دمتون
گرم ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
#Quick

داشتم پروژه django شرکت رو می‌خوندم یک مشکل داریم سر بعضی endpointها و برخی تسک‌ها.
اولین کاری کردم این بوده که یک سری دیتا تست با faker بهش دادم مثه loadtest ولی بدون ابزار و بعد هم profiling گرفتم و ذخیره کردم.
چیز جالبی که دیدم؛ پروژه موقع کار کردن با redis به مشکل میخورد.
ولی redis منابعش بیشتر از حد مورد نیازش بود.

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

$ pip install "redis[hiredis]"


بجای اینکه برای parse کردن دیتا از python استفاده کنه وقتی hiredis رو نصب کنید از C استفاده می‌کنه (بنچمارکاش هم توی گیت‌هاب hiredis هست ببینید)

مشکل خیلی ساده حل شد؛ ولی برای این حل ساده خیلی زمان و درک profiling لازم بود.

اهمیت profiling
Python Hints
https://github.com/pykeras/neovim بالاخره آماده شد. تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچه‌های گروه خودمون. فکر می‌کنم خوب باشه. توی ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که می‌اندیشند وجود داره
یکسری فیچر دوستان درخواست داده بودند که گفتم اضافه می‌کنم ولی فرصت نمی‌شد؛ الان که منتظر کامپایل شدن کد بودم گفتم اینارو هم اضافه کنم.
من این موارد رو روی branch دیگری گذاشتم؛ چندروزی تست بشه بعد بیارم روی master تمام موارد رو هم بصورت keybinding اضافه کردم چون بنظرم همون فیچرهای موجود خیلی خوب و کافی هست (اینطوری load-time هم همون زیر ۱۰۰ میلی‌ثانیه می‌مونه)

داکیومنت روی برنچ :
feature/mist-requested-bindings

اضافه شده ولی خب تغییرات این موارد هست:

Easier switching between splits:
Move to the left split: <C-h>
Move to the right split: <C-l>
Move to the upper split: <C-k>
Move to the lower split: <C-j>
Toggle relative line numbers: <leader>rl
-----------------------------------------
Go to definition (vertical split): <leader>gdv
Go to definition (horizontal split): <leader>gds
Peek definition: <leader>gdp
Close all splits except current: <leader>qo
-----------------------------------------


در نهایت مرسی از همه اونایی که تست کردند و نظر دادند.
Python Hints
https://github.com/pykeras/neovim بالاخره آماده شد. تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچه‌های گروه خودمون. فکر می‌کنم خوب باشه. توی ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که می‌اندیشند وجود داره
تغییرات هفته قبل رو که زدم؛ خیلی‌ها پیام دادن آقا ما mypy استفاده می‌کنیم این pyright خیلی اذیت می‌کنه و ...

Github (neovim config)

هیجی دیگه منم ی برنچ اضافه کردم؛ که بجای pyright از mypy برای typecheck استفاده کنه.

آپدیت ruff رو هم دیدم؛ که باعث می‌شد بعضی تنظیمات قبلی ruff کار نکنه فیکس اون رو هم اضافه کردم روی این برنچ.

دیگه امیدوارم واقعا استفاده کنید. 😂😂
تصویری از #من_سیاسی_نیستم گویان در طبیعت.

- دلار: ۸۴۰۰۰ تومان
+ من سیاسی نیستم
- طلا: گرم ۵.۶۰۰.۰۰۰ تومان
+ من سیاسی نیستم
- زلزله سرپل ذهاب و عدم کمک دولت
+ من سیاسی نیستم.
- پرداخت چک‌های ۱۴۰۰۰ دلاری خسارت به طرفداران حزب‌الله.
+ من سیاسی نیستم.

خب اگر توی همه‌ی این شرایط سیاسی نیستی؛ فرق تو با گاو چیه دوست عزیز ؟!


پ.ن: بعضی‌ها هم میگویند که ما سواد سیاسی نداریم.
این وضعیت سواد سیاسی نمی‌خواد؛ کمی عقل و شعور می‌خواد. نگفتم بیا سر موضع آمریکا در جنگ ویتنام و آنچه بر انقلاب فرانسه گذشت سخنرانی کن.
نکته جدید:

پایتون خودش پاورشل داره
احتمالا تو لینوکس خودش ترمینال داره
رو مک هم خودش ویندوز داره

جمله بالا از اساتید (مدرس) پایتون
اینکه ۹۰٪ دولوپر‌های Django توی ایران

توی Django با استانداردهای Java کد می‌زنند خستم کرده.


اینکه بیش از 50% هم ادعای Mid, Senior دارند عصبیم.
This media is not supported in your browser
VIEW IN TELEGRAM
عمرا بذارم این یادتون بره ...


حالا این هیچی، اون اسکلا که نشستن این براشون حرف بزنه 🤣
Python Hints
عمرا بذارم این یادتون بره ... حالا این هیچی، اون اسکلا که نشستن این براشون حرف بزنه 🤣
۹ تا ازون اسکلا رو اینجا هم داریم 🤣😂🤣

تعداد اسکلا داره میره بالا ۴۴ تا شد 🤣😂🤣
Forwarded from RandRng
حدود ۲ سال پیش این موقع یک پروژه بکند رو کار کردیم که همون زمان ۲ قسمت داشت (من مدیر تیم توسعه دهنده این پروژه بودم).

بخشی از پروژه که با Fastapi زده شده بود و بخش دیگری که قرار بود با Django شروع بشه.

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

۱- تمامی تست‌ها؛ با پکیج requests باشه.
۲- همه‌ی endpointهای مربوط به create, update بجای بررسی مستقیم با دیتابیس از طریق درخواست دیتا با Get detail بررسی بشه که درست توی دیتابیس هست یا نه.

اون زمان سر این ۲تا خیلی جنگیدم، که تغییر نکنه و حتماً رعایت بشه.

امروز مدیرعامل شرکت برای یک پروژه دیگر باهام تماس گرفت؛ توی meet ایی که داشتیم، مدیر فنی وقتی متوجه شد اون پروژه کار من بوده شاید بیش از ۱۰۰ بار تشکر کرد.

چرا ؟
چون پروژه از FastApi, Django رفته بود روی Golang و بجای Postgres‌ایی که سمت خودشون باشه از Self-Hosted database های شرکت کارفرما استفاده شده بود.

تصمیم اولم کمک کرده بود با وجود زمان کوتاه برای جابجایی به Golang و فشار شرکت کارفرما مبنی بر سرعت بخشیدن به قضیه.
نیازی به تغییر تست‌ها نداشته باشند (۹۰٪ هیچی رو تغییر ندادند ولی دقیقش رو نپرسیدم).

و تصمیم دوم؛ باعث شده بود بتونند به راحتی دیتابیس عوض کنند، یا حتی کدهای دپلوی شده رو تست بیگرند.

توی @pyhints قبلاً اشاره کردم به این موضوع؛ خواستم دوباره بگم که اگر درآینده تغییر فریمورک یا ابزار می‌بینید توی Integration Test ها تا جایی که می‌شه تست‌هارو از ابزارها و فریمورک جدا کنید.
Python Hints
تصویری از #من_سیاسی_نیستم گویان در طبیعت. - دلار: ۸۴۰۰۰ تومان + من سیاسی نیستم - طلا: گرم ۵.۶۰۰.۰۰۰ تومان + من سیاسی نیستم - زلزله سرپل ذهاب و عدم کمک دولت + من سیاسی نیستم. - پرداخت چک‌های ۱۴۰۰۰ دلاری خسارت به طرفداران حزب‌الله. + من سیاسی نیستم. خب اگر…
هر 1 دلار 90000 تومان
هر 1 گرم طلای ۱۸ عیار 6525000 تومان

مهمتر از همه؛ این افزایش قیمت‌هایی که الان روی تجهیزات و مواد غذایی و ... هست رو دقت کنید بهش؛ اینا برای دلار 65000 تومان بوده و نه دلار 90000 تومانی
This media is not supported in your browser
VIEW IN TELEGRAM
ویدئو توییت همکاری استارلینک و تی‌موبایل برای دسترسی به اینترنت ماهواره‌ای (که البته رایگان هم هست طبق ویدیو)

ایلان ماسک این ویدئو رو گذاشت.
Forwarded from RandRng
با صحبت امروز پزشکیان
من روی دلار ۱۱۰,۰۰۰ تومان دارم می‌بندم.

آخر سال تمام قراردادهای همکاری داخلیم تموم می‌شه و دستمزد جدید رو بر این اساس می‌گیرم، البته که دارم فرض می‌کنم دلار تا چندروز آینده به ۱۰۰,۰۰۰ تومان برسه و مدتی همین حوالی باشه‌.

اگر دلار واقعاً به ۱۱۰,۰۰۰ تومان برسه (که اصلاً بعید نیست)
قراردادهای سال بعدی رو روی دلار ۱۳۰,۰۰۰ تومان می‌بندم.

به ۲ دلیل این رو میگم:

۱- بچه‌های سنیور گفتند چطوری دستمزد بدیم برای سال بعد.

۲- چند نفر دعوت به همکاری کردن، گفتم حدود دستمزد رو بدوند که وقت هم رو نگیریم.

دستمزد فعلی رو بر اساس دلار ۶۰,۰۰۰ تومان بسته بودم سال قبل که خدا بیامرزش.
logging
نوشتن برای ی سیستم ماژولار و بزرگ؛ بعد ی اتفاقی افتاده توی سیستم مجبور شدن لاگ‌هارو چک کنند ولی هیچی به دست نیاوردن.
کاربرا ادعای خسارت کردن و اینها هم مطمئن هستن حداقل ۳۰٪ کاربرا دروغ میگن (منم همین رو دیدم توی دیتاها) اما کدوم کاربرا مشخص نیست.

گفتیم شاید داریم لاگ اشتباهی رو می‌بینیم؛ ممکنه چند بخشی باشه یا ...
ولی وقتی رفتیم پای کدها؛ دیدیم دولوپر نوشته:
BUG: TODO:
I am forced to move to another micro-service, and this will not work on scale.


و حالا به اون مرحله رسیدند؛ ادعاهای خسارت قابل بررسی نیست و مدیرعامل شرکت به غلط کردن افتاده.
طبق گفته خودشون؛ سود چندین سال شرکت پرید - کارد میزدی خون مدیرعامل در نمیومد چون خودش نیروها رو فورس کرده بود.
شرکت دیگری که مقصر این وضعیت هم بوده گفته بدون لاگ هیچ خسارتی پرداخت نمی‌کنیم حتی ۱ نفر و اون ۷۰٪ باقی‌مانده رو که فکر می‌کردن ازین شرکت بگیرند رو هم باید از جیب بدند.


اینجا دیگه موضوع برنامه‌نویس بد نبود؛ موضوع فشار آوردن بیش از اندازه به تیم برنامه‌نویسی بود.