نوروز این زیباترین جشن ایرانی پیشاپیش بر همگان مبارک.
توی سال جدید
برای وطنم ایران؛ آرزوی آزادی آزادی آزادی و آبادی دارم.
برای مردمم و خودم؛ آرزوی آگاهی آگاهی آگاهی و سلامتی و شادابی دارم.
یادی هم بکنیم از همهی بچههای پاک وطن که به جرم دادخواهی؛ آزادی و آگاهی شکنجه یا کشته شدند.
سالی سراسر آزادی؛ آگاهی و شادابی رو برای همگی آرزو می کنم.
منبع تصویر، گوگل سرچ.
توی سال جدید
برای وطنم ایران؛ آرزوی آزادی آزادی آزادی و آبادی دارم.
برای مردمم و خودم؛ آرزوی آگاهی آگاهی آگاهی و سلامتی و شادابی دارم.
یادی هم بکنیم از همهی بچههای پاک وطن که به جرم دادخواهی؛ آزادی و آگاهی شکنجه یا کشته شدند.
سالی سراسر آزادی؛ آگاهی و شادابی رو برای همگی آرزو می کنم.
منبع تصویر، گوگل سرچ.
❤82🍾5❤🔥3👍2😁2🤷♀1👎1🎉1👌1
لطفاً پیامهای پین شده کانال رو بطور کامل نگاه کنید، قبل از هرگونه سوال و جواب : 🌹
زحمت این پست رو یکی از اعضا کشیدند 🌹
logging :
https://t.iss.one/pyHints/446
https://t.iss.one/pyHints/81
https://t.iss.one/pyHints/127
Dunder methods
https://t.iss.one/pyHints/12
https://t.iss.one/pyHints/14
https://t.iss.one/pyHints/20
https://t.iss.one/pyHints/29
https://t.iss.one/pyHints/43
https://t.iss.one/pyHints/320
Cache
https://t.iss.one/pyHints/30
https://t.iss.one/pyHints/33
https://t.iss.one/pyHints/107
Linux:
https://t.iss.one/pyHints/401
https://t.iss.one/pyHints/258
https://t.iss.one/pyHints/271
https://t.iss.one/pyHints/273
https://t.iss.one/pyHints/347
https://t.iss.one/pyHints/401
Data structer in python:
https://t.iss.one/pyHints/15
https://t.iss.one/pyHints/64
https://t.iss.one/pyHints/115
https://t.iss.one/pyHints/283
https://t.iss.one/pyHints/294
https://t.iss.one/pyHints/373
https://t.iss.one/pyHints/408
Exception :
https://t.iss.one/pyHints/56
https://t.iss.one/pyHints/57
https://t.iss.one/pyHints/58
https://t.iss.one/pyHints/60
https://t.iss.one/pyHints/77
https://t.iss.one/pyHints/367
Dis-Disassembler for Python bytecode:
https://t.iss.one/pyHints/96
https://t.iss.one/pyHints/99
Async:
https://t.iss.one/pyHints/117
https://t.iss.one/pyHints/137
https://t.iss.one/pyHints/150
Profiling:
https://t.iss.one/pyHints/148
https://t.iss.one/pyHints/109
https://t.iss.one/pyHints/146
https://t.iss.one/pyHints/277
https://t.iss.one/pyHints/279
https://t.iss.one/pyHints/280
https://t.iss.one/pyHints/288
decorator:
https://t.iss.one/pyHints/37
https://t.iss.one/pyHints/41
https://t.iss.one/pyHints/47
Duck tpye & dynamic protocl:
https://t.iss.one/pyHints/328
https://t.iss.one/pyHints/331
https://t.iss.one/pyHints/336
https://t.iss.one/pyHints/338
Book &roadmap &video :
https://t.iss.one/pyHints/16
https://t.iss.one/pyHints/101
https://t.iss.one/pyHints/123
https://t.iss.one/pyHints/168
https://t.iss.one/pyHints/194
https://t.iss.one/pyHints/196
https://t.iss.one/pyHints/210
https://t.iss.one/pyHints/223
https://t.iss.one/pyHints/231
Income:
https://t.iss.one/pyHints/50
https://t.iss.one/pyHints/87
https://t.iss.one/pyHints/394
Package management:
https://t.iss.one/pyHints/73
https://t.iss.one/pyHints/402
Experiments:
https://t.iss.one/pyHints/85
https://t.iss.one/pyHints/93
https://t.iss.one/pyHints/108
Standard file for software and backend developers:
https://t.iss.one/pyHints/178
https://t.iss.one/pyHints/180
https://t.iss.one/pyHints/181
https://t.iss.one/pyHints/186
https://t.iss.one/pyHints/190
Other important post:
https://t.iss.one/pyHints/111
https://t.iss.one/pyHints/27
#summary #all_in_one_1402
زحمت این پست رو یکی از اعضا کشیدند 🌹
logging :
https://t.iss.one/pyHints/446
https://t.iss.one/pyHints/81
https://t.iss.one/pyHints/127
Dunder methods
https://t.iss.one/pyHints/12
https://t.iss.one/pyHints/14
https://t.iss.one/pyHints/20
https://t.iss.one/pyHints/29
https://t.iss.one/pyHints/43
https://t.iss.one/pyHints/320
Cache
https://t.iss.one/pyHints/30
https://t.iss.one/pyHints/33
https://t.iss.one/pyHints/107
Linux:
https://t.iss.one/pyHints/401
https://t.iss.one/pyHints/258
https://t.iss.one/pyHints/271
https://t.iss.one/pyHints/273
https://t.iss.one/pyHints/347
https://t.iss.one/pyHints/401
Data structer in python:
https://t.iss.one/pyHints/15
https://t.iss.one/pyHints/64
https://t.iss.one/pyHints/115
https://t.iss.one/pyHints/283
https://t.iss.one/pyHints/294
https://t.iss.one/pyHints/373
https://t.iss.one/pyHints/408
Exception :
https://t.iss.one/pyHints/56
https://t.iss.one/pyHints/57
https://t.iss.one/pyHints/58
https://t.iss.one/pyHints/60
https://t.iss.one/pyHints/77
https://t.iss.one/pyHints/367
Dis-Disassembler for Python bytecode:
https://t.iss.one/pyHints/96
https://t.iss.one/pyHints/99
Async:
https://t.iss.one/pyHints/117
https://t.iss.one/pyHints/137
https://t.iss.one/pyHints/150
Profiling:
https://t.iss.one/pyHints/148
https://t.iss.one/pyHints/109
https://t.iss.one/pyHints/146
https://t.iss.one/pyHints/277
https://t.iss.one/pyHints/279
https://t.iss.one/pyHints/280
https://t.iss.one/pyHints/288
decorator:
https://t.iss.one/pyHints/37
https://t.iss.one/pyHints/41
https://t.iss.one/pyHints/47
Duck tpye & dynamic protocl:
https://t.iss.one/pyHints/328
https://t.iss.one/pyHints/331
https://t.iss.one/pyHints/336
https://t.iss.one/pyHints/338
Book &roadmap &video :
https://t.iss.one/pyHints/16
https://t.iss.one/pyHints/101
https://t.iss.one/pyHints/123
https://t.iss.one/pyHints/168
https://t.iss.one/pyHints/194
https://t.iss.one/pyHints/196
https://t.iss.one/pyHints/210
https://t.iss.one/pyHints/223
https://t.iss.one/pyHints/231
Income:
https://t.iss.one/pyHints/50
https://t.iss.one/pyHints/87
https://t.iss.one/pyHints/394
Package management:
https://t.iss.one/pyHints/73
https://t.iss.one/pyHints/402
Experiments:
https://t.iss.one/pyHints/85
https://t.iss.one/pyHints/93
https://t.iss.one/pyHints/108
Standard file for software and backend developers:
https://t.iss.one/pyHints/178
https://t.iss.one/pyHints/180
https://t.iss.one/pyHints/181
https://t.iss.one/pyHints/186
https://t.iss.one/pyHints/190
Other important post:
https://t.iss.one/pyHints/111
https://t.iss.one/pyHints/27
#summary #all_in_one_1402
😍81❤31👍20🙏4🎉3❤🔥1👏1
#خارج_از_بحث
توی این مدت تعطیلی ( فقط ۴ ساعت در روز, تسک داشتم ) ۲ تا پروژه جالب رو دنبال کردم که نتایجش برام جذابتر بود ؛
1- Rust
روی rust-lang خودم رو آپدیت کردم، یک سری از موارد که خوب درک نکرده بودم برام خیلی خیلی بهتر جا افتاد و دلیلش رو متوجه شدم، همین بحث رو دارم ادامه میدم و برای آخر فروردین یک مصاحبه هم برای خودم رزرو کردم.
البته این وسطا ۱۵ فروردین یک مصاحبه هم دارم ولی هدف گذاریم مصاحبه آخر فروردین هست.
اگر علاقه داشتید، این کانال من هست درحال یادگیری هستم و خیلی خوبه همین اول کار یک کامیونیتی خوب کنار خودم داشته باشم :
https://t.iss.one/pyrust
خوندن بخشهایی از کرنل لینوکس (نسخه جدید) و بخشهایی از سورس کد گیت (نسخهای که با Rust داره بازنویسی میشه, غیر رسمی) جزو اهداف بعدیم هستند.
2-droidian
خیلی وقته گوشی فعلیم رو دارم (۵-۶ سال)، دروغ چرا فوقالعاده ازش رضایت دارم ولی software update براش تموم شده و چند وقت دیگه security هم تموم میشه.
خودم چندتا Distribution مختلف رو روش تست کردم، اما دیگه مراقبت ازش وقت زیادی میگیره.
تصمیم گرفتم اگر امسال Nothing phone 3 با مشخصات flagship معرفی شد عوضش کنم (اگر نشد ۱ سال دیگه صبر کنم).
و توی تعطیلات داشتم به این فکر میکردم که این دستگاه همهی قابلیتهای خوب رو داره و حیف هست که همینطوری بذارمش توی کمد (همهی دیوایسهام رو نگه میدارم)
برای همین به ذهنم رسید روش لینوکس نصب کنم و service های سادهای که دارم برای اتوماسیون کدها و ... رو روی این دستگاه بیارم (خیلی از raspberry pi ایی که دارم قویتر هست، ۱۲ گیگ رم، ۵۱۲ گیگ حافظه و ...)
روی یک گوشی قدیمیتر (برای یکی از دوستان) بررسی کردیم و نتایج عالی بود.
https://droidian.org/
گفتم اگر شما هم مثل من گوشی قدیمی دارید، بد نیست به این پروژه سر بزنید.
مخصوصاً اگر کلی پروژه و سرویس برای مانیتور کردن دارید (مثلاً مدل هوش مصنوعی)
یا میخواید، از راه دور سیستم رو روشن کنید یا ...
توی این مدت تعطیلی ( فقط ۴ ساعت در روز, تسک داشتم ) ۲ تا پروژه جالب رو دنبال کردم که نتایجش برام جذابتر بود ؛
1- Rust
روی rust-lang خودم رو آپدیت کردم، یک سری از موارد که خوب درک نکرده بودم برام خیلی خیلی بهتر جا افتاد و دلیلش رو متوجه شدم، همین بحث رو دارم ادامه میدم و برای آخر فروردین یک مصاحبه هم برای خودم رزرو کردم.
البته این وسطا ۱۵ فروردین یک مصاحبه هم دارم ولی هدف گذاریم مصاحبه آخر فروردین هست.
اگر علاقه داشتید، این کانال من هست درحال یادگیری هستم و خیلی خوبه همین اول کار یک کامیونیتی خوب کنار خودم داشته باشم :
https://t.iss.one/pyrust
خوندن بخشهایی از کرنل لینوکس (نسخه جدید) و بخشهایی از سورس کد گیت (نسخهای که با Rust داره بازنویسی میشه, غیر رسمی) جزو اهداف بعدیم هستند.
2-droidian
خیلی وقته گوشی فعلیم رو دارم (۵-۶ سال)، دروغ چرا فوقالعاده ازش رضایت دارم ولی software update براش تموم شده و چند وقت دیگه security هم تموم میشه.
خودم چندتا Distribution مختلف رو روش تست کردم، اما دیگه مراقبت ازش وقت زیادی میگیره.
تصمیم گرفتم اگر امسال Nothing phone 3 با مشخصات flagship معرفی شد عوضش کنم (اگر نشد ۱ سال دیگه صبر کنم).
و توی تعطیلات داشتم به این فکر میکردم که این دستگاه همهی قابلیتهای خوب رو داره و حیف هست که همینطوری بذارمش توی کمد (همهی دیوایسهام رو نگه میدارم)
برای همین به ذهنم رسید روش لینوکس نصب کنم و service های سادهای که دارم برای اتوماسیون کدها و ... رو روی این دستگاه بیارم (خیلی از raspberry pi ایی که دارم قویتر هست، ۱۲ گیگ رم، ۵۱۲ گیگ حافظه و ...)
روی یک گوشی قدیمیتر (برای یکی از دوستان) بررسی کردیم و نتایج عالی بود.
https://droidian.org/
گفتم اگر شما هم مثل من گوشی قدیمی دارید، بد نیست به این پروژه سر بزنید.
مخصوصاً اگر کلی پروژه و سرویس برای مانیتور کردن دارید (مثلاً مدل هوش مصنوعی)
یا میخواید، از راه دور سیستم رو روشن کنید یا ...
Telegram
Rust for Python developers
Rust programming language for python developers
یک توسعه دهنده پایتون هستم که سعی میکنم rust یاد بگیرم.
تو این مسیر منابع و نظرات شخصی خودم رو با آیندگان هم به اشتراک میذارم
اگر به هوش مصنوعی و پایتون علاقه دارید به کانال :
@pytens
@pyhints
سر بزنید.
یک توسعه دهنده پایتون هستم که سعی میکنم rust یاد بگیرم.
تو این مسیر منابع و نظرات شخصی خودم رو با آیندگان هم به اشتراک میذارم
اگر به هوش مصنوعی و پایتون علاقه دارید به کانال :
@pytens
@pyhints
سر بزنید.
👍37❤6😍3🌚2🆒1🦄1
یکسال از زمانی که اولین پست کانال رو گذاشتم گذشت ( پیامهای پین شده؛ معرفی خودم و هدف کانال )
به لطف خیلی از شما عزیزان و با به اشتراک گذاری پستها کانال بدون هیچ تبلیغاتی حالا به بیش از 4k عضو رسیده.
توی کانال از اساتید ایرانی دانشگاهای بینالمللی؛ مدیران ایرانی شرکتهای داخلی و خارجی؛ توسعه دهندههای
چیزی که من رو شدیدا جذب ادامه نوشتن مطالب میکنه همین موضوع هست؛ توی این ۱ سال با آدمهای زیادی آشنا شدم؛ شاید هیچ سود و منفعت مالی برای هم نداشتیم اما صحبت با شما برای من بسیار ارزشمند و بسیار جذاب بوده
راجب موضوعات لذت بخشی صحبت کردیم و بسیار بسیار مطالب و دید جدید گرفتم از شما عزیزان.
حالا چرا این مطلب رو دارم مینویسم ؟
هم انگیزه هم ترس.
روز اولی که کانال رو راه اندازی کردم؛ با خودم فکر میکردم فقط و فقط مطالب سطح
اما الان که داشتم پست جدیدی رو آماده میکردم؛ دیدم نمیتونم بدون توضیح بخشهای دیگر (ابزار دیگری) کد رو بذارم و آموزش به ۷ آموزش دیگه تقصیم شد. (این شد ترس؛ دیگه آماده سازی هیچ پستی ۱ ساعته نخواهد بود.)
اما بسیار هم خوشحالم؛ با چندتا از شما عزیزان توی این تعطیلات صحبت داشتم و وقتی به چتهای روزهای اول نگاه میکنم تغییرات بسیاری رو میبینم؛ پیشرفت و انتخاب مسیر درست و این من رو بسیار خوشحال میکنه چون هدفم از روز اول همین موضوع بود.
همین پیشرفت شما باعث شد موضوعاتی رو بحث کنیم که شاید قبل از این ۱ در ۱۰۰۰ فرصتش برام پیش میومد تا بحث کنم راجبش و بعضی صحبتها و سوالات باعث شد شخصا بسیار بسیار یاد بگیرم.
برای سال جدید مسیر کانال شاید کمی متفاوت باشه؛ کمی وارد جزئیات میشم توی پستها.
خوانش گروهی کتاب رو بجای محدود کردن به ۱۰۰-۲۰۰ عضو و بر اساس فایلهایی که گروه اول درست کردند پیش خواهم برد.
سعی میکنم ارائهها با خودم باشه؛ و بعد از هر جلسه گوگل میت؛ ویدئو ارائه روی یوتیوب قرار بگیره و بصورت همزمان بعد از اتمام کتاب توسط گروه اول با بعضی از اعضا سراغ کتابهای موضوعی بریم:
و به همین ترتیب ادامه بدیم.
امیدوارم سال جدید هم؛ موضوعات و کانال و روش ارائه به اندازه سال قبل و حتی بیشتر مفید باشه.
درنهایت؛ مرسی از همگی.
پ.ن : هر پیشنهاد یا انتقادی دارید. حتماً بهم بگید، قطعاً هرچیزی که باعث پیشرفت اعضا باشه
من رو هم خوشحال خواهد کرد ☺️
به لطف خیلی از شما عزیزان و با به اشتراک گذاری پستها کانال بدون هیچ تبلیغاتی حالا به بیش از 4k عضو رسیده.
توی کانال از اساتید ایرانی دانشگاهای بینالمللی؛ مدیران ایرانی شرکتهای داخلی و خارجی؛ توسعه دهندههای
senior
پایتون بسیار باسواد تا حتی نیروهای تازه کار همه مدل افرادی رو داریم.چیزی که من رو شدیدا جذب ادامه نوشتن مطالب میکنه همین موضوع هست؛ توی این ۱ سال با آدمهای زیادی آشنا شدم؛ شاید هیچ سود و منفعت مالی برای هم نداشتیم اما صحبت با شما برای من بسیار ارزشمند و بسیار جذاب بوده
راجب موضوعات لذت بخشی صحبت کردیم و بسیار بسیار مطالب و دید جدید گرفتم از شما عزیزان.
حالا چرا این مطلب رو دارم مینویسم ؟
هم انگیزه هم ترس.
روز اولی که کانال رو راه اندازی کردم؛ با خودم فکر میکردم فقط و فقط مطالب سطح
advance
و بدون توضیحات مقدمات طوری که هر پست کمتر از ۱ ساعت وقت بگیره.اما الان که داشتم پست جدیدی رو آماده میکردم؛ دیدم نمیتونم بدون توضیح بخشهای دیگر (ابزار دیگری) کد رو بذارم و آموزش به ۷ آموزش دیگه تقصیم شد. (این شد ترس؛ دیگه آماده سازی هیچ پستی ۱ ساعته نخواهد بود.)
اما بسیار هم خوشحالم؛ با چندتا از شما عزیزان توی این تعطیلات صحبت داشتم و وقتی به چتهای روزهای اول نگاه میکنم تغییرات بسیاری رو میبینم؛ پیشرفت و انتخاب مسیر درست و این من رو بسیار خوشحال میکنه چون هدفم از روز اول همین موضوع بود.
همین پیشرفت شما باعث شد موضوعاتی رو بحث کنیم که شاید قبل از این ۱ در ۱۰۰۰ فرصتش برام پیش میومد تا بحث کنم راجبش و بعضی صحبتها و سوالات باعث شد شخصا بسیار بسیار یاد بگیرم.
برای سال جدید مسیر کانال شاید کمی متفاوت باشه؛ کمی وارد جزئیات میشم توی پستها.
خوانش گروهی کتاب رو بجای محدود کردن به ۱۰۰-۲۰۰ عضو و بر اساس فایلهایی که گروه اول درست کردند پیش خواهم برد.
سعی میکنم ارائهها با خودم باشه؛ و بعد از هر جلسه گوگل میت؛ ویدئو ارائه روی یوتیوب قرار بگیره و بصورت همزمان بعد از اتمام کتاب توسط گروه اول با بعضی از اعضا سراغ کتابهای موضوعی بریم:
Django, Pytorch, Deep learning, ...
و به همین ترتیب ادامه بدیم.
امیدوارم سال جدید هم؛ موضوعات و کانال و روش ارائه به اندازه سال قبل و حتی بیشتر مفید باشه.
درنهایت؛ مرسی از همگی.
پ.ن : هر پیشنهاد یا انتقادی دارید. حتماً بهم بگید، قطعاً هرچیزی که باعث پیشرفت اعضا باشه
من رو هم خوشحال خواهد کرد ☺️
❤99👍23❤🔥4🙏3🍾3👎2
یکی از پروژههای شرکت دستم رسیده؛ پروژه بزرگی هم هست که با
توی کدها که داشتم بررسی میکردم تیم توسعه یک پوشه درست کرده (مثل چیزی که توی
ندید باید بگید که کثیف هست؛ من پروژههای
هرکسی هم که با من کار کرده میدونه برای چیزهای کوچیک اصلا دوست ندارم از پکیجهای آماده استفاده کنم اما توی پروژه
استفاده کنید.
توی تصویر دوتا فایل رو داریم؛
ادامه پست بعدی
FastAPI
توسعه داده شده و نیاز به code review , ...
داره.توی کدها که داشتم بررسی میکردم تیم توسعه یک پوشه درست کرده (مثل چیزی که توی
Django
حا افتاده و چقدرم من بدم میاد ازش) و همه چیز رو شکونده توی ۱۲ تا اسکریپت پایتون بعد توی بخشهای مختلف test, dev, prod
اومده اینهارو patch
کرده و ...ندید باید بگید که کثیف هست؛ من پروژههای
django
رو هم نمیذارم تیمم این کار رو بکنه که خب جاش اینجا نیست.هرکسی هم که با من کار کرده میدونه برای چیزهای کوچیک اصلا دوست ندارم از پکیجهای آماده استفاده کنم اما توی پروژه
FastAPI
و هر پروژهای که pydantic
رو دارید استفاده میکنید بد نیست که بجای اینکه همه چیز رو دستی کد بزنید از pydantic-settings
استفاده کنید.
توی تصویر دوتا فایل رو داریم؛
sample.env
نقش راهنما رو داره و .env
(من همه حالاتش رو روی سیستمم میذارم ولی در واقعیت شما فقط برای ENV_STATE
مورد نظر خودتون تنظیمات رو قرار میدید)ادامه پست بعدی
👍21❤🔥4
Python Hints
یکی از پروژههای شرکت دستم رسیده؛ پروژه بزرگی هم هست که با FastAPI توسعه داده شده و نیاز به code review , ... داره. توی کدها که داشتم بررسی میکردم تیم توسعه یک پوشه درست کرده (مثل چیزی که توی Django حا افتاده و چقدرم من بدم میاد ازش) و همه چیز رو شکونده توی…
توی پست قبلی زیر
اما مهمترین فایل این مثال
راجب
اگر یک تابع در طول پروژه مقدار هربار که صدا زده میشه مقدار ثابتی رو بر میگردونه اون رو با
خط ۶ تا ۱۱ :
من از
تنها نکته مهم اینه که
ازینجا به بعد همه تنظیماتم رو بر اساس
ادامه پست بعدی.
sample.env
خروجی دستور tree
رو هم گذاشتم (نباید اینجا باشه) فقط گفتم شاید توی مثالهای بعدی لازم شد.اما مهمترین فایل این مثال
config.py
هست.راجب
lru_cache
قبلا صحبت کردیم؛ اما بطور خلاصه بخوام یادآوری کنم.اگر یک تابع در طول پروژه مقدار هربار که صدا زده میشه مقدار ثابتی رو بر میگردونه اون رو با
lru_cache
دکوریت میکنیم تا هربار سربار برای فراخونی و پردازش ندیم و بعد از یکبار پردازش خروجی ذخیره بشه و برگرده ( سرعت بیشتر؛ سربار کمتر)خط ۶ تا ۱۱ :
من از
Config
بجای Setting
استفاده میکنم که با کلاسای Pydantic
اشتباه نشه؛ وظیفه BaseConfig
رو معمولا برای پیدا کردن .env
و تنظیم ENV_STATE
تعریف میکنم.تنها نکته مهم اینه که
extra="ignore"
r رو میذارم که اگر کلید اضافی هم توی .env
داشتم pydantic
اونارو ignore
کنه و ارور نده.ازینجا به بعد همه تنظیماتم رو بر اساس
BaseConfig
انجام خواهم داد؛ چون کد من کوچیک هست دیگه بخش دیتابیس و ردیس و ... رو جدا نکردم و همه چیز رو میخوام در نهایت داخل settings
تحویل یوزر بدم.from config import settings
ادامه پست بعدی.
👍15❤🔥5
Python Hints
توی پست قبلی زیر sample.env خروجی دستور tree رو هم گذاشتم (نباید اینجا باشه) فقط گفتم شاید توی مثالهای بعدی لازم شد. اما مهمترین فایل این مثال config.py هست. راجب lru_cache قبلا صحبت کردیم؛ اما بطور خلاصه بخوام یادآوری کنم. اگر یک تابع در طول پروژه مقدار…
خط ۱۴ تا ۱۹:
همیشه اسمش رو
و بعد از این برای هر
چیزی که خیلی مهم هست
خط ۳۶ تا ۴۷:
همونطور که گفتم من هرجا تابعی دارم که
توی این تابع بر اساس مقداری که
اما برای اینکه مطمئن بشم مقدار
که یعنی مهم نیست یوزر چی خواسته یا اینکه اصن تعریف کرده یا نه باید
حواستون باشه
وظیفه
رو میکنه که اتوی آپدیتهای بعدی قرار هست
شمارو نمیدونم ولی من این تنظیم رو به شکوندن فایلها به ۱۲ تا فایل بیس و بعدم
اما اگر تنظیمات بسیار زیادی داشتید؛ میتونید ازین حالت هم استفاده کنید :
و توی init تابع get_config , settings رو داشته باشید :
موقع استفاده هم یوزر راحت هست :
بنظرم این مورد هم حتی تمیزتر هست.
همیشه اسمش رو
Global
بهش میدم تا همه بچههای تیم بدونند تحت هر ENV_STATE
ایی که باشه این تنظیمات برای پروژه واجب هست.و بعد از این برای هر
ENV_STATE
یک کلاس جداگونه تعریف میشه؛ بعضی موارد ممکنه مقدار default داشته باشند مثل MONGO_DBNAME
توی کلاس DevConfig
(دوباره برمیگردم سراغش). اما توی خط بعدی SettingsConfigDict(env_prefix="DEV_")
چیزی که خیلی مهم هست
env_prefix
هست که میگه اسمهای هرکدوم از تنظیمات لازم که توی Global
تعریف شده اگر اولش DEV_
داشت توسط این کلاس هندل میشه؛ زیاده روی هست ؟ شاید باشه ولی اینطوری مطمئن میشم طرف بیشتر حواسش جمع هست موقع ساخت .env
همین کار رو برای موارد دیگه هم انجام میدم. من case_sensitive
رو True
نمیذارم هیچوقت (شاید یکی حال نمیکنه از کاراکترهای uppercase
استفاده کنه توی .env
)خط ۳۶ تا ۴۷:
همونطور که گفتم من هرجا تابعی دارم که
return value
ثابتی رو خواهد داشت یا حتی input argument
های محدودی داره که همیشه return value
خاص خودشون رو تولید میکنند از lru_cache
استفاده میکنم که سربار کمتری روی سیستم و پردازش داشته باشه (بیشتر نمیگم چون قبلا راجبش صحبت کردم؛ مثالش توی نجات پروژه رو هم زدم)توی این تابع بر اساس مقداری که
BaseConfig
از .env
برای ENV_STATE
خواهد گرفت class
معادلش رو صدا میزنم.اما برای اینکه مطمئن بشم مقدار
ENV_STATE
برای مثلا DEV
در صورت وجود DEV_ENV_STATE
خونده نمیشه موقع ساخت instance
اینکارو کردم :return DevConfig(ENV_STATE="development")
که یعنی مهم نیست یوزر چی خواسته یا اینکه اصن تعریف کرده یا نه باید
development
باشه ENV_STATE
ایی که از DevConfig
میاد.حواستون باشه
ENV_STATE , DEV_ENV_STATE
تنظیمات متفاوتی هست از نظر کدهای بالا بخاطر env_prefix
هرچیزی که env_prefix
درست رو نداشته باشه بیاهمیت میشه توی اون کلاس.print(settings.model_dump())
وظیفه
model_dump
بازگردان خروجی بصورت dictionary
هست همون کار settings.dict()
رو میکنه که اتوی آپدیتهای بعدی قرار هست
deprecate
بشه.شمارو نمیدونم ولی من این تنظیم رو به شکوندن فایلها به ۱۲ تا فایل بیس و بعدم
monkey patch
برای هر environment
ترجیح میدم.اما اگر تنظیمات بسیار زیادی داشتید؛ میتونید ازین حالت هم استفاده کنید :
├── config
│ ├── base.py
│ ├── dev.py
│ ├── __init__.py
│ ├── prod.py
│ └── test.py
و توی init تابع get_config , settings رو داشته باشید :
from functools import lru_cache
from config.base import BaseConfig, BaseSettings
from config.dev import DevConfig
from config.prod import ProdConfig
from config.test import TestConfig
@lru_cache()
def get_config(env_state: str | None) -> GlobalConfig:
try:
match env_state.casefold(): # type: ignore
case "production" | "prod":
return ProdConfig(ENV_STATE="production") # type: ignore
case "test":
return TestConfig(ENV_STATE="test") # type: ignore
case _:
return DevConfig(ENV_STATE="development") # type: ignore
except AttributeError:
return DevConfig(ENV_STATE="development") # type: ignore
settings = get_config(BaseConfig().ENV_STATE)
موقع استفاده هم یوزر راحت هست :
from myproject.config import settings
بنظرم این مورد هم حتی تمیزتر هست.
👍17❤🔥4❤1
Python Hints
توی پست قبلی زیر sample.env خروجی دستور tree رو هم گذاشتم (نباید اینجا باشه) فقط گفتم شاید توی مثالهای بعدی لازم شد. اما مهمترین فایل این مثال config.py هست. راجب lru_cache قبلا صحبت کردیم؛ اما بطور خلاصه بخوام یادآوری کنم. اگر یک تابع در طول پروژه مقدار…
یک اشتباهی توی این تصویر هست (توی پست بعدیش درست کردم) خط ۳۷
پست خودش به محدودیت تعداد خط رسیده بود مجبور شدم ی پست جدید بزنم.
type
خروجی باید GlobalConfig
باشه یعنی حالت درستش این هست :def get_config(env_state: str | None) -> GlobalConfig:
پست خودش به محدودیت تعداد خط رسیده بود مجبور شدم ی پست جدید بزنم.
✍7❤🔥5👌4👍1
Python Hints
توی پست قبلی زیر sample.env خروجی دستور tree رو هم گذاشتم (نباید اینجا باشه) فقط گفتم شاید توی مثالهای بعدی لازم شد. اما مهمترین فایل این مثال config.py هست. راجب lru_cache قبلا صحبت کردیم؛ اما بطور خلاصه بخوام یادآوری کنم. اگر یک تابع در طول پروژه مقدار…
config.py
1.3 KB
کدهای مثال قبل
فقط جهت تمرین.
فقط جهت تمرین.
👍11❤🔥5👻2🐳1
همین ابتدا بگم این مثال ایراد فنی داره :
باید داخل
باشه و این موضوع که هربار
میخوام راجب
رو داشته باشه؛ توی همین کدهایی که داشتم review میکردم کلی کلاس دیدم که هیچ کار خاصی نمیکرد جز اینکه همین ۲ تا متد رو پیاده سازی کنه.
اگر شما هم شرایط مشابهایی داشتید از
استفاده کنید؛ کافیه یک تابع بصورت
برای
هم مورد مشابهی هست برای مواردی که
رو داریم.
connection
باید داخل
try, except, finally
باشه و این موضوع که هربار
connection
جدیدی به دیتابیس ایجاد بشه هم چیز خوبی نیست اما مثال خوبی برای آموزش هست:from contextlib import
contextmanger
میخوام راجب
contextmanager
صحبت کنم؛ وقتی میخوایم ی context manager توی پایتون بسازیم باید پروتوکل درستش رو رعایت کنیم؛ یعنی یک کلاسی بنوسیم که __enter__, __exit__
رو داشته باشه؛ توی همین کدهایی که داشتم review میکردم کلی کلاس دیدم که هیچ کار خاصی نمیکرد جز اینکه همین ۲ تا متد رو پیاده سازی کنه.
اگر شما هم شرایط مشابهایی داشتید از
contextmanager decorator
استفاده کنید؛ کافیه یک تابع بصورت
generator
بنویسید هرچیزی قبل از yield
میشه __enter__
و خود yield
مقداری هست که with connect_to_mongodb() as db
برای
db
(آنچه که بعد از as
) میاد بر میگرده و وقتی کار contextmanager
شما یا همون with
تموم شد generator
شما چیزی که بعد از yield
اومده رو بعنوان __exit__
اجرا خواهد کرد.from contextlib import asynccontextmanger
هم مورد مشابهی هست برای مواردی که
__aenter__, __aexit__
رو داریم.
👍15❤🔥5❤1
Python Hints
همین ابتدا بگم این مثال ایراد فنی داره : connection باید داخل try, except, finally باشه و این موضوع که هربار connection جدیدی به دیتابیس ایجاد بشه هم چیز خوبی نیست اما مثال خوبی برای آموزش هست: from contextlib import contextmanger میخوام راجب contextmanager…
main.py
896 B
سورس کد مثال تصویر +
پ.ن:
بهتر بود
exception handling
پ.ن:
بهتر بود
URI
رو هم خارج از connect_to_mongodb
ساخته بشه.👍8❤🔥6❤1
بزرگترین تغییری هم که توی پروژهای که دارم
Motor Github
review
میکنم لازمه اینه که pymongo
حذف بشه؛ موقع کد زدن روی FastAPI
تا جای ممکن باید از کتابخونههای async
استفاده کرد که به اندازه کافی از مزایا بهره ببریم؛ برای مانگو Motor Github
GitHub
GitHub - mongodb/motor: Motor - the async Python driver for MongoDB and Tornado or asyncio
Motor - the async Python driver for MongoDB and Tornado or asyncio - mongodb/motor
👍11👌11✍2❤🔥2👨💻1
اصلاً همه چیز این روزها عجیب شده؛
۹۰٪ آگهیهایی که میاد اینطوری شده (چرا سر و ته نداره این آگهی یا چرا انگار شغل چندنفره هست ؟)، این مورد رو نه
ولی موارد دیگری رو تست کردم؛ به طرف میگم ایمیل شرکت رو بدید رزومه بفرستم.
نگم دیگه به چی ختم میشه، بعضیها که درخواست پرداخت برای معرفی هم میکنند.
بعد چرا توسعه دهندههای AI, Python این پستهارو لایک میکنند ؟
چرا باید شبکه افراد کانکت شده با این مشاغل رو داشته باشند ؟
و اوکی دارند، چرا باید به scam بودن این آگهیها شک نکنید و برعکس پروموت هم بکنیدش ؟
لینکدین جامعه فارسی فقط برای من مزخرف شده یا برای شما هم شده ؟
۹۰٪ آگهیهایی که میاد اینطوری شده (چرا سر و ته نداره این آگهی یا چرا انگار شغل چندنفره هست ؟)، این مورد رو نه
ولی موارد دیگری رو تست کردم؛ به طرف میگم ایمیل شرکت رو بدید رزومه بفرستم.
نگم دیگه به چی ختم میشه، بعضیها که درخواست پرداخت برای معرفی هم میکنند.
بعد چرا توسعه دهندههای AI, Python این پستهارو لایک میکنند ؟
چرا باید شبکه افراد کانکت شده با این مشاغل رو داشته باشند ؟
و اوکی دارند، چرا باید به scam بودن این آگهیها شک نکنید و برعکس پروموت هم بکنیدش ؟
لینکدین جامعه فارسی فقط برای من مزخرف شده یا برای شما هم شده ؟
👍31🤔11😁2
Python Hints
اصلاً همه چیز این روزها عجیب شده؛ ۹۰٪ آگهیهایی که میاد اینطوری شده (چرا سر و ته نداره این آگهی یا چرا انگار شغل چندنفره هست ؟)، این مورد رو نه ولی موارد دیگری رو تست کردم؛ به طرف میگم ایمیل شرکت رو بدید رزومه بفرستم. نگم دیگه به چی ختم میشه، بعضیها که…
اینم از باگ تلگرام :/
همه چیز عجیب شده
همه چیز عجیب شده
🗿25😁10🎃3☃2🍓2💔1
Python Hints pinned «لطفاً پیامهای پین شده کانال رو بطور کامل نگاه کنید، قبل از هرگونه سوال و جواب : 🌹 زحمت این پست رو یکی از اعضا کشیدند 🌹 logging : https://t.iss.one/pyHints/446 https://t.iss.one/pyHints/81 https://t.iss.one/pyHints/127 Dunder methods https://t.iss.one/pyHints/12 https://t.iss.one/pyHints/14…»
#خارج_از_بحث
خبرهارو نمیدونم خوندید یا خیر؛ اما ردیس توی ی حرکت عجیب غریب لایسنساش رو عوض کرد طوری که صدای همه رو درآورد.
حالا الان داشتم خبرها رو بررسی میکردم دیدم
منتظر هستم اولین ایمیج رسمی داکر رو منتشر کنند + اولین نسخه ردیس با لایسنس جدید برای همه به نوعی اجباری بشه.
پ.ن : شما که غریبه نیستید؛ حتی منتظر ی نسخه با باگ خیلی کمتر روی Rust هم هستم.
Valkey Github
خبرهارو نمیدونم خوندید یا خیر؛ اما ردیس توی ی حرکت عجیب غریب لایسنساش رو عوض کرد طوری که صدای همه رو درآورد.
حالا الان داشتم خبرها رو بررسی میکردم دیدم
The Linux Foundation
اومده ی پروژه بر اساس آخرین نسخه Redis
و کاملا OpenSource
منتشر کرده به اسم Valkey
و تقریبا هم بسیار سریع داره پیشرفت میکنه contribution, community, github star, ...
منتظر هستم اولین ایمیج رسمی داکر رو منتشر کنند + اولین نسخه ردیس با لایسنس جدید برای همه به نوعی اجباری بشه.
پ.ن : شما که غریبه نیستید؛ حتی منتظر ی نسخه با باگ خیلی کمتر روی Rust هم هستم.
Valkey Github
GitHub
GitHub - valkey-io/valkey: A flexible distributed key-value database that is optimized for caching and other realtime workloads.
A flexible distributed key-value database that is optimized for caching and other realtime workloads. - valkey-io/valkey
❤🔥15👍3👏1🍓1
#موقت
برای سازمان سنجش :
از صبح ۷-۸ نفر از آشناها که جوان کنکوری دارند تماس گرفتند
درجا جواب دادم: شماره پلاک و طبقه خونه رو به عدد ننویسید، به حروف تایپ کنید.
خواستم بگم برنامهنویس سازمان سنجش هر کسی که هستید؛ منطق فکریات چی بوده واقعاً ؟
جالبتر اینکه به هرکس میگم، عدد ننویس و به حروف بنویس میخنده میگه ایستگاه نکن مارو وقت نداریم، ولی بعدش فحش میده به سازمان سنجش 😂
پ.ن :
چیزی که فکر میکنم، سازمان سنجش یک پیغام گذاشته و نوشته که از ()، - ، _ و ... استفاده نکنید توی آدرس
احتمالاً توی بکند رنج دادند برای regex و این رنج روی حروف فارسی هست.مثل انگلیسی :
[A-Z]
رو همین حساب اعداد رو قبول نمیکنه 😂😂
برای سازمان سنجش :
از صبح ۷-۸ نفر از آشناها که جوان کنکوری دارند تماس گرفتند
درجا جواب دادم: شماره پلاک و طبقه خونه رو به عدد ننویسید، به حروف تایپ کنید.
خواستم بگم برنامهنویس سازمان سنجش هر کسی که هستید؛ منطق فکریات چی بوده واقعاً ؟
جالبتر اینکه به هرکس میگم، عدد ننویس و به حروف بنویس میخنده میگه ایستگاه نکن مارو وقت نداریم، ولی بعدش فحش میده به سازمان سنجش 😂
پ.ن :
چیزی که فکر میکنم، سازمان سنجش یک پیغام گذاشته و نوشته که از ()، - ، _ و ... استفاده نکنید توی آدرس
احتمالاً توی بکند رنج دادند برای regex و این رنج روی حروف فارسی هست.مثل انگلیسی :
[A-Z]
رو همین حساب اعداد رو قبول نمیکنه 😂😂
😨53😁25🌚4🤔1🗿1🙊1
به بهانه معرفی فریمورک <جایخالی> با ۳ برابر سرعت در پاسخگویی نسبت به
وقتی صحبت از بکند توی پایتون میشه تا همین چندسال قبل تنها گزینه خوب فقط و فقط
گفت که پایتون فقط یک جو هست و خیلی زود هم تموم میشه؛ بعد هم ادعا کرد به همین دلیل مطالبش رو نیاورده و ترجیح میده راجب مطالب مهمتر صحبت کنه (سخنرانی به شوخی گذشت و تنها کسی که اعتراض کرد توی سالن ۳۰۰-۴۰۰ نفری من بودم) الان شنیدم همون بنده خدا داره از پایتون نون میخوره و دوره هم میذاره.
بگذریم اومد جلوتر و
دپلوی رو
حتی جوگیری زیاد شد مدل هارو سمت وب و موبایل و ... هم بردند که صحبتی نیست.
یادی کنم از شب زنده داریها و دپلوی کدها و مدلها با
۲ نسخه اول مدلهای پردازش تصویرمون روی کلاستر رزپبری پای و نسخه آخر روی لپتاپ شخصی بنده بود.
ازین دوران گذشتیم
البته اضافه کنم سرویسهایی مثل
بعد از این زمان
به لطف همهی دولوپرهای پروژههای قبلی
دولوپرهای پروژههای قبلی نشون دادند که توسعه پکیجهایی با ایدههایی حتی کمی بهتر بسیار ارزش داره و جامعه پایتون همیشه قدردان این زحمات خواهد بود.
تا اینجا که حالا
توی مطالبی که داشتم میخوندم و بنچمارکهایی که از باقی شنیدم اکثرا اشاره میکنند که به راحتی سرعتی
از نظر کدهم شخصا یک نگاهی انداختم به همون سادگی هست؛ خلاصه که شمارو نمیدونم اما شخصا فکر کردم باید قدردان زحمات تیمهای توسعه
FastAPI
و البته باهدف battery included
بودن مثل django
وقتی صحبت از بکند توی پایتون میشه تا همین چندسال قبل تنها گزینه خوب فقط و فقط
django
بود و مرسی دولوپرهاش؛ تو زمانی که همه غر میزدند پایتون کند هست و نباید و ... (تو ایرانم ازین حرفا زیاد بود) قشنگ یادمه ی بنده خدایی اسم نمیبرم ولی معروفم هست توی یکی از دانشگاها پنل سخنرانی داشت.گفت که پایتون فقط یک جو هست و خیلی زود هم تموم میشه؛ بعد هم ادعا کرد به همین دلیل مطالبش رو نیاورده و ترجیح میده راجب مطالب مهمتر صحبت کنه (سخنرانی به شوخی گذشت و تنها کسی که اعتراض کرد توی سالن ۳۰۰-۴۰۰ نفری من بودم) الان شنیدم همون بنده خدا داره از پایتون نون میخوره و دوره هم میذاره.
بگذریم اومد جلوتر و
async
معرفی شد؛ هوش مصنوعی از فقط ریسرچ بودن داشت خارج میشد و تجریه دپلوی مهم شد.دپلوی رو
django
انقدر سخت و غیر بهینه بود که عملا خیلی از تیمهایی که پروژههاشون مشتری کافی رو داشت مجبور به توسعه بکند توی زبانهای برنامه نویسی دیگه بودند؛ خیلی از بچه ها رفتند سراغ C, C++
, Go-lang
و ...حتی جوگیری زیاد شد مدل هارو سمت وب و موبایل و ... هم بردند که صحبتی نیست.
یادی کنم از شب زنده داریها و دپلوی کدها و مدلها با
Majid A.M
(آیدی نمیزارم ولی احتمالا هرکی django
کار میکنه میشناسه) عزیز و حجم اپتیمایزهای بالا جزو اولین نفرات و تیمهایی بودیم که کل مدل هوش مصنوعی و اپتیمایز و وب و ... همه روی پایتون بود و البته دسترسی و درخواست رایگان (این برای زمانی بود که همه میرفتن سراغ C, ...
برای دپلوی و کسی باورش نمیشد بشه مدلهای سنگین رو روی سرور بیاری و اون تعداد ریکوست رو با پایتون جواب بده) اون زمان همه فکر میکردند روی سرورهای خفن و ...هستیم ولی این موضوع رو اولین بار هست دارم اعلام میکنم؛۲ نسخه اول مدلهای پردازش تصویرمون روی کلاستر رزپبری پای و نسخه آخر روی لپتاپ شخصی بنده بود.
ازین دوران گذشتیم
flask
با ایدههای جدید اومد و خوبیش این بود که دیگه به اندازه django
سنگین نبود (برای تستهای کوچیک خیلی جواب بود ولی بازم همون مشکلات رو داشت)البته اضافه کنم سرویسهایی مثل
Celery, ...
خیلی از مشکلات رو توی django
حل میکردندبعد از این زمان
FastAPI
معرفی شد؛ روی همون کامیتهای اولیه که عمومی شد چون از بچهها و همکارای بکندم توی شرکتهای سیلیکونولی و ... بسیار راجبش شنیدم به خیلی از دوستان بکند دولوپرم پیشنهاد کردم که وقتش هست یاد بگیرند و بهش کد donate
کنند (کاش خودم اینکارو میکردم) خیلی هم مسخره میکردند. همون Majid A.M
جزوشون بود.به لطف همهی دولوپرهای پروژههای قبلی
django - flask - fastapi
حالا خیلیها باور دارند پایتون میتونه توی پروداکشن و برای پروژههای بزرگ استفاده بشه؛ خیلیها قبول دارند که میشه با پایتون کد زد و از پکیجهایی استفاده کرد که سرعت پردازش بسیار بیشتر بشه .دولوپرهای پروژههای قبلی نشون دادند که توسعه پکیجهایی با ایدههایی حتی کمی بهتر بسیار ارزش داره و جامعه پایتون همیشه قدردان این زحمات خواهد بود.
تا اینجا که حالا
community
زبانی مثل Rust
برای توسعه یک web framework
با سرعت بیشتر و البته به راحتی موارد قبلی برای Python
وارد شده و پروژه Robyn رو به حد خوبی رسونده بطوری که امروز توی چندین جلسه مختلف با دوستان و همکاران بسیار درمورد این پروژه شنیدم.توی مطالبی که داشتم میخوندم و بنچمارکهایی که از باقی شنیدم اکثرا اشاره میکنند که به راحتی سرعتی
۳
برابر fastapi
رو ارائه میده.از نظر کدهم شخصا یک نگاهی انداختم به همون سادگی هست؛ خلاصه که شمارو نمیدونم اما شخصا فکر کردم باید قدردان زحمات تیمهای توسعه
django, flask, fastapi
و برو بچه هایی که توی دوران سخنرانی ضد سرعت و ... پایتون با این زبان برنامه نویسی ادامه دادند باشم.Robyn Framework
Robyn - A Fast, Innovator Friendly, and Community Driven Python Web Framework.
Robyn is a fast, innovator-friendly, and community-driven Python web framework.
👍70❤10😍4❤🔥2🤪2🆒2🐳1
قشنگ
رفتم مصاحبه
بعنوان
Meme
شدم : رفتم مصاحبه
Rust
دادم، بعنوان
Senior Python Engineer
قرارداد بهم دادند.😁164🗿10👾7🤓5😢4🔥3❤🔥1🌚1🤪1