Python Hints
8.96K subscribers
186 photos
11 videos
10 files
152 links
Python tips and tricks
The Good, Bad and the Ugly

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

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

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


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

دزد و مختلس و مسئولِ ناکارآمد در آرامش‌اند،
اما
این معترض و محافظ‌اند که روبه‌روی هم وایساده و همدیگر را می‌کشند.
معترض می‌دونه برای چی اعتراض می‌کند.
اما آقای محافظ…
تو هم می‌دانی از چی داری دفاع می‌کنی؟
128👍32
Forwarded from RandRng
Donald J. Trump on Truth

اگر ایران به معترضان صلح‌جو تیراندازی کند و آنها را به‌طور خشونت‌آمیز بکشد، که این کار معمول آنهاست، ایالات متحده آمریکا برای نجات آنها وارد عمل خواهد شد. ما آماده حرکت و مسلح هستیم. از توجه شما به این موضوع سپاسگزارم!
رئیس‌جمهور دونالد جِی. ترامپ


یک ۱۰ دقیقه‌ای هست دارم متن می‌نویسم؛ که با این پست به اشتراک بذارم ولی حقیقتش همرو پاک کردم چون هرچی بگم ننگ؛ درد و غم این پست رو کم می‌کنه!

نیروی نظامی کشور خودم؛ مردم خودم رو می‌کشه!
اونوقت همین مردم؛ باید از پیام تهدید به حمله کشورهای دیگه خوشحال بشوند.

با شناختی که از پدرم داشتم؛ یک وقتایی خداروشکر می‌کنم که بعنوان یک ارتشی زنده نیستند و این خبرها رو نمی‌بینه.
104👍21
Forwarded from RandRng
توی پست مربوط به رودمپ بکند :
Backend Roadmap
برای آخرین مورد گفتم که حتما همه‌ی بچه‌ها باید از روز اول ADR بنویسند؛ سر این موضوع با هیچ کدوم از بچه‌ها شوخی ندارم.

اما خیلی‌ها (مثل بچه‌هایی که باهاشون کار می‌کنم) پرسیدید چرا باید ADR بنویسیم بهتر نیست وقتمون رو روی کد زدن و تمرین و یادگیری بذاریم.

جواب کوتاه:
هیچ ابزار - هیچ کتاب و ... دیگری به اندازه نوشتن ADR شمارو تست نمی‌کنه و به شما یاد نمی‌ده حتی.

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

بخش بزرگی از کار یک مهندس نرم‌افزار (بخصوص توی سطوح بالاتر) یادگیری بحث و مناظره کردن هست؛ چیزی که توی سال‌های اخیر همکاریم با بچه‌ها توی ایران خیلی خیلی کم دیدم. این بحث‌ها اکثرا سر چه چیز‌هایی هست ؟
۱- از کدوم فریمورک استفاده کنیم
۲- با کدوم استاندارد پیش بریم
۳- دیتابیس چی بذاریم
۴- تست نویسی چطوری باشه
۵- چرا از این ابزار استفاده کنیم یا نکنیم
و ...

شما هرروز درگیر این بحث‌ها خواهید بود و اینکه بتونید از پیشنهادات خودتون بطور منطقی دفاع کنید موضوع بسیار بسیار مهمی هست.
وقتی شروع به نوشتن
ADR = Architecture Decision Records
می‌کنید یاد می‌گیرید ابزاری که دارید انتخاب می‌کنید رو همه جنبه‌هاش رو ببینید؛ خیلی وقتا ابزارهایی که افراد انتخاب می‌کنند فقط بخاطر hype هست و جو زده هست اون انتخاب بدون اینکه بدونند آیا واقعا بدردشون میخوره یا مناسب کارشون هست.
خیلی وقتا این مکالمه رو شنیدیم:

- چرا فلان ابزار رو انتخاب کردید ؟
+ گوگل داره ازین استفاده می‌کنه؛ چی ازین بهتر

آره دوست من ولی گوگل چندین میلیارد کاربر داره و تو به زور به ۵ هزارتا میرسی.
گوگل هزاران نفر توسعه دهنده داره ولی تیم تو به زور به ۱۰ نفر میرسه.
گوگل میلیاردها دلار خرج زیرساخت و دستمزد و ... میده.
تو زیرساختت به زور ۱۰۰ هزار دلار میشه.

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

درسته وقتی تنهایی کد میزنید به ADR نیازی نیست اما نوشتنش باعث میشه یاد بگیرید بحث کنید؛ توی نوشتن ADR معمولا شما به چندتا ابزار میرسیدو باید این چیزها رو توضیح بدید :

۱- این ابزارها برای چه کاری هستند و چرا فکر می‌کنید توی پروژه لازمشون داریم ؟
۲- چرا هرکدوم از ابزارها رو در نظر گرفتید؟ (چرایی مهم هست)
۳- انتخاب شما کدوم بوده ؟ و البته چرا ؟
۴- نقاط قوت و ضعف ابزاری که انتخاب کردید چی هست ؟
۵- نقاط قوت و ضعف ابزارهایی که انتخاب نشدند چی هست؟
۶- تحت چه شرایطی ابزارهای دیگر رو انتخاب می‌کردید یا اینکه شرایط پروژه چی بود که نقاط قوت ابزار انتخابی شما به باقی موارد و البته نقاط ضعف اون چربید و انتخاب شد.

فکر می‌کنم از سوال‌ها مشخص باشه که چقدر چیز مفید و مهم رو درک می‌کنید و یاد میگرید.
آیا همه پروژه‌ها این رو دارند ؟
به جرات میگم که بیش از ۹۲-۹۳٪ پروژه‌ها و حتی شاید توسعه دهنده‌ها حتی نمی‌دونند چی هست؛ ولی تمام پروژه‌ها و تمام مدیران فنی و اعضای تیم‌هاشون هرروز درگیر یکی از این تصمیم گیری‌ها هستند.

به مدیرای فنی هم پیشنهاد می‌کنم توی تیم این موضوع رو داشته باشید؛ خیلی وقتا نیرو احساس می‌کنه حرف‌هاش شنیده نمی‌شه درصورتی که شما می‌دونید چیزی که پیشنهاد می‌کنه خوب نیست برای پروژه فقط وقت برای توضیح دادن بهش رو ندارید.
معمولا با نوشتن ADR خیلی از بچه‌ها خودشون متوجه می‌شوند که چرا جواب نه بهشون داده شده.
32👍12
#Quick

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

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

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

autoflush=True

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

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

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


ولی باید بخونید؛ ببینید چرا این تنظیمات رو لازم دارید.
👍83