Python Hints – Telegram
Python Hints
9.35K subscribers
191 photos
11 videos
10 files
157 links
Python tips and tricks
The Good, Bad and the Ugly

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

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

Admin: @Abbasi_ai
Download Telegram
ی جمله‌ی معروفی هست:
«در جنگ‌ها، این سربازان‌اند که کشته می‌شوند، نه رهبران.»


در اعتراض به دزدی، اختلاس، ناکارآمدی و فساد و ... هم

دزد و مختلس و مسئولِ ناکارآمد در آرامش‌اند،
اما
این معترض و محافظ‌اند که روبه‌روی هم وایساده و همدیگر را می‌کشند.
معترض می‌دونه برای چی اعتراض می‌کند.
اما آقای محافظ…
تو هم می‌دانی از چی داری دفاع می‌کنی؟
131👍32
#Quick

لطفاً autoflush=False رو از داخل کدهای sqlalchemy بردارید.

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

چون کلی اطلاعات درمورد flush رو ندارید.

autoflush=True

اگر مشکل پرفورمنس خوردید که ۹۹.۹۹۹٪ شما و پروژه‌هاتون نخواهد خورد.
اونوقت سرچ که بکنید با دلیل می‌دونید تحت چه شرایطی باید autoflush=False باشه.
👍239
Python Hints
#Quick لطفاً autoflush=False رو از داخل کدهای sqlalchemy بردارید. مشکل ویدئوهای آموزش اینه‌ها؛ طرف نمی‌دونه برای چی هست چون زیاد دیده می‌ذاره بدون توضیح. شماهم بدون پرسیدن استفاده می‌کنید بعد می‌ریم توی پروداکشن باگ می‌خوریم چون کلی اطلاعات درمورد flush…
چون پرسیدید با
autocommit
چیکار کنیم؛ تا جایی که یادم هست کلا
autocommit=True
از sqlalchemy 2.x حذف شده یا باید
with session.begin():
pass

استفاده بشه یا
session.commit()

اگر روی نسخه قدیمی‌تر هستید این روFalse نگهدارید:
autocommit=False


ولی باید بخونید؛ ببینید چرا این تنظیمات رو لازم دارید.
👍117
ممکنه این کانال @pyhints و کانال @pytens و همچنین @pyrust هم ریپورت بشه.

چون با mass report طرف هستیم.
کانال‌ها هم که عمومی هست و برای ریپورت کردن نیازی به عضو شدن نیست.

برنامه‌ای برای جایگزین کردن کانال‌ها بصورت عمومی ندارم؛ اگر فکر می‌کنند با ریپورت کردن کانال‌های من ۴۷ سال دزدی و اختلاس و بی‌کفایتی و ... حل می‌شه
و
مشکلات از بین میره؛ حتماً اینکار رو بکنند.

شاید تلگرام باید یک راهکاری هم می‌ذاشت که کاربرهای کانال هم بتونند نظر یا حمایت شون رو اعلام کنند، بخصوص به وقت mass report با این همه گفتم زودتر اعلام کپینوش


پی‌نوشت‌:
اگر این اتفاق افتاد برای دوستان نزدیک لینک خصوصی خواهم فرستاد.
مثل روزهای اول @pytens و البته خصوصی خواهد بود.
147👍12💔1
تلگرام میگه کانال حذف نشده و فقط موقت از دسترس خارج شده

اما باید پروسه بررسی محتوا بگذره تا پاسخ نهایی دریافت بشه.
118👍24
سخت‌ترین کار دنیاس؛

پیام بدی:

سلام رفیق، امیدوارم زنده و سلامت باشی.
هروقت تونستی، ی پیام بهم بده


دل شیر می‌خواد لامذهب 💔🖤
💔228
متأسفانه با خبر شدم
دونفر از اعضای کانال‌ها رو از دست دادیم 💔🖤

غم این روزها بسیار بسیار بزرگ هست

بسیار بسیار غمگین شدم از شنیدن این خبر 💔
💔499
پلی استور و اپ استور هم باز شد ...
💔30
دوستان عزیز بازم می‌گم:

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


تمام راه‌های دسترسی به بنده همین اکانت تلگرام - لینکدین که داخل کانال هست و البته گیت‌هاب بنده هست.

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

من نه چیزی برای فروش دارم - نه خدمات آموزشی و ... برای فروش ارائه میدم
نه دوره یا آموزشگاهی رو تایید می‌کنم

اگر روزی هم قرار باشه اینکار رو بکنم فقط و فقط توی یکی از کانال‌های خودم این موضوع رو مطرح خواهم کرد.

لطفا مراقب باشید.
💔82
Forwarded from RandRng
اگر خواستید از گیت‌هاب دانلود کنید یا کلون بگیرید و جواب نداد؛ این dns رو تست کنید:

149.112.112.112


برای من روی باقی موارد نتیجه نمیده.

دلیلش هم اینه که نتیجه متفاوتی نسبت به باقی برای resolve داد و هم udp هم tcp رو جواب داد.
💔40
Python Hints
۳ نفر از اعضا کشته شدند. 💔🖤 این آمار با اطلاع گرفتن خانواده‌ها یا دوستانشان آپدیت خواهد شد.
https://news.1rj.ru/str/PytensMusic/222

نامشان جاویدان 💔

درد بزرگترم اینجاس که؛
تعداد اکانت‌هایی که
Last seen a month ago

هستند توی چت‌هام کم نیست.

امیدوارم فقط اینترنت نداشته باشند؛ یا اینکه تصمیم گرفته باشند چندوقتی آنلاین نشند.

هر فکر دیگری، دیوانه‌ام می‌کند 🖤💔🖤

ای اندوه
آیا زانوانت
از زانو زدن بر سینه‌هامان
به درد نیامد ؟!

#امین_معلوف
💔154
چند نفری پیام دادند،
آموزش نمی‌ذاری ؟
فعالیت نداری ؟
یا:
با این پست‌ها پروفایل و برندینگ خودتو خراب می‌کنی!

خیلی فکر کردم، چه جوابی بدم ؟
چون واقعیتش آدم ندیده گرفتن نیستم.

از ساعت ۲ صبح دارم تلاش می‌کنم بخوابم ولی فکر به این چندتا پیام نمی‌ذاره.

این شد که بجای جواب دادن به اون افراد، گفتم بذار مهم‌ترین درسی که می‌تونم رو بهشون بدم که :
مهم‌تر از تخصص؛ انسانیت داشتن هست.
💔370
Forwarded from RandRng
من این لینک رو گذاشتم:

Github Raw V2Ray All

گفتم که اکثر کانال‌های تلگرامی رو کرال می‌کنه اگر کانفیگی اومده باشه همرو یکجا جمع می‌کنه

اما چون معمولاً ۳۰۰۰ یا بیشتر کانفیگ داره و خیلی از سرورها پشت هم فیلتر میشه حوصله سر برهست که هی بخوایم url تست بزنیم.

کاری که شخصاً می‌کنم برای متصل موندن این هست :

۱- اول داخل گروهی که ایجاد می‌شه، لینک‌هایی Duplicate رو پاک کنید

۲- بعد از اینکه اون موارد پاک شد، درخواست بدید که TCP ping بزنه براتون (سرعت بیشتری داره)
معمولاً سرورهایی که جواب نمیده یا فیلتر شده و قطع کردند یا خاموش هست یا ...

۳- بعد از حذف دو مورد قبلی تعداد کمی می‌مونه حالا با خیال راحت url test بزنید.

نکته مهم حتماً حواستون به ۲ مورد باشه :

۱- برای url test آدرس تست رو به سایتی که براش دنبال vpn می‌گردید تغییر بدید، مثلاً اگر می‌خواهید یوتیوب ببینید باهاش آدرس رو روی یوتیوب بذارید.
بعضی از کانفیگ‌ها برای سایت‌های خاص طراحی شده (مثلاً فقط تلگرام) و اکثر درخواست‌های دیگه رو drop می‌کنه

۲- کانفیگ‌ها رو سعی کنید اگر تونستید با چندتا DNS که توی این مدت خوب جواب داده بهتون تست کنید.


پینوشت:
بد نیست چندین گروه برای همین کانفیگ‌های all نگه دارید.
بعضی از کانال‌ها، بعد از یک مدت خدمات vpn دادند سروری که سرعت بالایی هم شاید داشته رو خاموش می‌کنند که فیلتر نشه.

چیزی که چندین ساعت یا چندروز بهش وصل بودید رو نگهدارید، چون اکثراً بعد از یک مدت دوباره اون سرور رو فعال می‌کنند و اینبار بار سرور هم کمتر هست و سرعتش بهتر خواهد بود.
💔32
Python Hints
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید : توی شرکت چندتا نیروی بخش Backend - software engineering بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict های بسیاری خوردیم (روی پروژه‌های قبلی) حالا قرار هست با این دوستان…
توی RandRng گفتم که خیلی وقت هست که ساختار پروژه‌هام نسبت به پست قبلی عوض شده اونم به لطف ابزارهایی که تبدیل به استاندارد شدند.

مثلا؛ دیگه از requirements خیلی خیلی کم استفاده می‌کنیم؛‌ به لطف uv این مسئله برامون خیلی راحت‌تر شده بخصوص اینکه سرعت خیلی خوبی هم داره.

یا مثلا دیگه از editorconfig تقریبا می‌شه گفت استفاده نمی‌کنم؛ اینبار به لطف ruff و البته بازم uv خود ابزار ruff اکثر دیفالت‌های استاندارد رو داره و چون uv با pyproject.toml کار می‌کنه باقی ابزارها مثل mypy , ... هم داخل همین مورد قابل کانفیگ هست و تقریبا با همینا میشه کل نیازمندی رو برطرف کرد.
(دلیل اینکه pyproject.toml رو توی تصویر نمی‌بینید اینه که uv بصورت خودکار ایجادش می‌کنه)

مثل قبل pre-commit-config.yaml رو همچنان داریمش؛ تقریبا همه هم باهاش خوشحالند برای همین اصلا به اینکه عوضش کنم فکر نکردم.

معمولا python-version رو انیجا نگه نمی‌دارم بخصوص اینکه این مورد هم توسط uv ایجاد میشه ولی چون دیدم بعضی‌ها حذفش می‌کنند (نمی‌دونم چرا) گذاشتم باشه.

ادامه پست بعدی...
💔19
Python Hints
توی RandRng گفتم که خیلی وقت هست که ساختار پروژه‌هام نسبت به پست قبلی عوض شده اونم به لطف ابزارهایی که تبدیل به استاندارد شدند. مثلا؛ دیگه از requirements خیلی خیلی کم استفاده می‌کنیم؛‌ به لطف uv این مسئله برامون خیلی راحت‌تر شده بخصوص اینکه سرعت خیلی خوبی…
اول اینکه پوشه backups اشتباه توی تصویر اومده؛ شخصا یک اسکریپت دارم که اگر فایل بکاپی داخل این پوشه بود موقع راه‌اندازی اولیه postgresql اون رو هم restore کنه که خب اینجا هم اومد. چیز مهمی نیست؛ برای راحتی تیم توسعه اینکار رو می‌کنم (تصمیم شخصی هست)


شاید بشه گفت compose.yml ربطی به اینجا نداره ولی این مورد رو گذاشتم که بگم توی سال 2026 خواهشا بدون داکر پروژه دست کسی ندید پوشه docker هم برای نگهداری تنظیمات؛ Dockerfileها و اسکریپت و ... هست

تغییر مهم بعدی justfile هست که بنظرم یکی از تصمیمات خیلی خوب بوده؛ مدت طولانی هست که توی پروژه‌ها just رو با make جایگزین کردم هم کارهای بیشتری باهاش می‌شه کرد (یادتون باشه make یک builder هست خیلی برای کاری که ما باهاش می‌کردیم ساخته نشده بود) هم خیلی سریع و راحت هست.

درمورد sample.env این مورد شامل تمام تنظیماتی هست که compose.yml بهش نیاز داره؛ مثلا TAG ها چی باشه؛ port ها چطوری تعریف بشه؛‌ سایز و تعداد log ها چطور. خلاصه هرچیزی که می‌تونه درطول زمان ثابت نباشه اینجاس که بچه‌های DevOps بر اساس اون env. رو می‌سازند.

یک پوشه هم دارم به اسم envs که شامل env فایل‌های هر container می‌شه؛ که همه‌ی environment variable ها وارد همه‌ی container ها نشه؛ داخل این هم به اسم هر بخش پروژه یا کانتینر یک sample وجود داره.

پوشه doc هم تغییراتی داشته اینبار؛ plan رو بهش اضافه کردیم که یک مورد تیمی هست راجب اینکه پروژه چطوری پیش بره اول چه چیزایی کد زده بشه بعدش چه چیزهایی و ...
این پوشه نسخه اولیه داره و دائم آپدیت میشه
حتما هم داخل
.dockerignore
اضافه می‌شه که توی تصویر بالا این فایل هم جا افتاده (پروژه جدید هست)
اما مهمترین و بهترین چیزی که توی document نویسی اضافه شده فایل adr هست (راجب adr توی RandRng قبلی گفته بودم) ولی بطور خلاصه هر داکیومنت داخل پوشه adr توضیح میده چرا تیم تصمیم به استفاده از یک ابزار خاص کرده؛ ما یک قدم هم جلوتر رفتیم البته:
اگر بین ۲ نقر یا چندنفر توی پروژه اختلاف نظر پیش بیاد که یک کاری رو چطوری انجام بدیم یا با چه ابزاری انجام بدیم؛ یکی از اون افراد شروع می‌کنه راجب مزایا و معایب ابزار مدنظر خودش ADR نوشتن و میفرسته روی گیت‌هاب بعدش یک نفر از گروه مخالف راجب روش یا ابزار خودش داکیومنت رو آپدیت می‌کنه.
درنهایت من بعنوان reviewer اضافه میشم و شرایط و توضیحات هر دوتا گروه رو میخونم؛ یک مقایسه نهایی و آپدیت تصمیم؛ هم پروسه و دلیل تصمیم داکیومنت میشه و هم از بحث‌ها و جلسه‌های بی سر و ته جلوگیری میشه و توی کمترین زمان و با کمترین درگیری هم حرف همه شنیده شده و تیم تصمیم گرفته.

این مورد آخر رو بچه‌های تیم خودم خیلی خیلی دوسش دارند؛ بخصوص junior, mid ها چون قبلا برای این تصمیمات فقط senior ها توی جلسه می‌شستند.
💔23
Forwarded from RandRng
تست سرعت اینترنت بین‌الملل بنده بعنوان یک برنامه‌نویس

بعد یارو میاد:
دنبال قرارداد دلاری از ایران و ریموت هم می‌گرده
💔77