Python BackendHub
7.39K subscribers
308 photos
46 videos
11 files
427 links
Learning python & Backend Engineering, with Mani!

Youtube: https://www.youtube.com/@GitOverHere
Github: https://github.com/ManiMozaffar
Linkedin: https://www.linkedin.com/in/manimozaffar

تبلیغات نداریم

Admin: @Mani_nikou
Download Telegram
از pylint استفاده کنید برای اینکه هم گاف هایی که دادین تو کد بهتون نشون بده, مثل استفاده از mutable توی default.
و هم ایرادات کدتون رو براتون تا حدی تحلیل میکنه.
حتی میتونید گیت هاب اکشن هم براش بنویسید و ارور هایی که میخواین رو میتونید ایگنور کنید, مثلا اگه همه توابعتون doc string نداره باید ignore کنید یا داک استرینگ اضافه کنید.
pylint --disable=1,2,3,... --fail-under=9.5 project_root_folder

اینطوری تمام کد های پروژتون رو تحلیل میکنه و ارور هایی که مشخص کردین ایگنور میکنه و بهتون نمره میده. اگه کمتر از 9.5 شدین هم fail و exit code 1 میده بهتون که باعث میشه workflowتون fail بخوره و متوجه شین.
خروجیش رو تو تصویر میتونید ببینید

از flake8 هم غافل نشین ✌️
@ManiFoldsPython
👍6
مهم نیست بک اند کار میکنید یا فرانت.
این کتاب رو باید بخونید.

@ManiFoldsPython
👍9
CodeNaline S2E8 - Mani
torham
کدنالین اپیزود هشتم، مانی 🤩.

این اپیزود رو با مانی از ترکیه رفتیم، مانی ۱۷ سالگی مهاجرت کرده ترکیه، الان ۵ سالی هست که اونجاس، بک‌اند با پایتون کار میکنه، داخل ترکیه یک استارت آپ داره و خلاصه ادم خفنیه =)

این قسمت رو از دست ندیدا🫨

کانال مانی: @ManiFoldsPython

نسخه تصویری در یوتیوب : https://youtu.be/4yUVIAhFzS8

نسخه صوتی در کست‌باکس



🗿 @CodeNaline
🧠 @TorhamDevCH
👍6🥱1
این ریپو تا یک جاهایی جلو رفته
https://github.com/ManiMozaffar/fastapi-integration

هدفشم اینه که کار با FastAPI رو راحت کنه. سریع فیچر ادد کنید, کانفیگ کنید, با یک orm ترجمه شده مثل جنگو هم کدتون رو خوانا تر کنید و جاهایی که نمیشد با اون orm رفت اون query زد از sqlalchemy استفاده کنید. و رقیبی بشه برای اون قابلیت rapid development بودن django

البته خیلی کار داره هنوز. توضیحات readme رو بخونید یکم بیشتر میتونید درکش کنید.

کسایی که FastAPI کار میکنن یا بلدن, نظر بدن ممنون میشم, که به نظرشون اگه این ریپو به اندازه کافی stable باشه ازش استفاده میکنن یا نه؟ میخوام ببینم gap ای که پر میکنه خریدار داره یا نه 😅 که براش بیشتر زمان بذارم یا کمتر..
@ManiFoldsPython
3
یک سوال جالب امروز تو مصاحبه ازم پرسیده شد
چند تا ریاضی دان تو جزیره ای رفتند و حوصلشون سر میره. تصمیم میگیرن با هم تاس بازی کنند, به فروشگاه میرن و فقط یک cube داره که داخلش 3 تا تاسه. راهکاری معرفی کنید که بتونن تاس بازی رو انجام بدن طوری که گزینه ها مثل یک تاس (1 تا 6) با احتمال رخ دادن برابر باشه. (1/6)
میتونید حتی برنامه رو به صورت پایتون بنویسید.
راهکار های مختلفی وجود داره, و هرچی O notation کمتری داشته باشه طبیعتا راهکار بهتریه.
1. نمیتویم تاس رو خارج کنیم :))
2. نمیتونیم فقط یک تاس رو بندازیم. باید cube رو تکون بدیم تا تاس ها هم بخورن و فقط جوابشو ببینیم. سه تا تاس همزمان هم میخورن.
پاسخ رو کامنت کنید.
3. تاس ها یک شکل هستند و خاصیتی برای متمایز سازیشون وجود نداره
@ManiFoldsPython
👍6🥱1
این روزا شب میخوابین صبح بلند میشین 10 تا پروداکت AI جدید اومده.
یک سایتم اومده یک لیستی از اینا درست کنه, مثل hub

https://aitoptools.com

جالبه ببینید ... 👌
@ManiFoldsPython
👍4👎1
یک productivity principle ای داریم که تو زندگی روزمره خیلی به درد میخوره :)

Eliminate, Simplify, Automate, and Delegate


Eliminate:
وظایفی که اهمیت نداره یا بی ارزش هست رو شناسایی و حذف کنی. این کار باعث میشه بیشتر تمرکزت رو بذاری رو اون چیزی که مهمه

Simplify:
وظایف رو به بخش های کوچیک تر تبدیل کن, و ساده ترشون کن تا راحت تر مدیریت بشن. هرچی وظایف ها پیچیدگی کمتری داشته باشن, انجام دادنشون هم به همون نسبت لذت بخش تره.

Automate:
اگه کاری رو بیشتر از 3 بار داری تکرار میکنی, احتمالا داری اشتباه انجامش میدی. سعی کن خودکار ترش کنی که کمتر تکرار کنی و وقتت کمتر هدر بره.

Delegate
اگه وظیفه ای داری که خارج از مهارت شما هست, و شخص دیگری میتونه بهتر از شما و موثر تر از شما انجام بده, پس وظیفه رو باید به اون بسپاری.


منم سعی میکنم تو روتین روزانم اینو رعایت کنم و تقریبا موفق بودم
@ManiFoldsPython
👍14
همیشه وقتی بنچ مارکی میبینید, کدشم ببینید و مقایسه کنید. خیلی سریع نرین سراغ result و یک تایید بهش بدین.. :>
https://github.com/teamhide/fastapi-boilerplate

مثال تو این مورد, اومده برای هر درایو یک db driver استفاده کرده که باعث شده بیشتر به جای مقایسه خود orm ها, مقایسه درایوشون بشه. مثلا تو tortoise اومده از asyncpg استفاده کرده ولی در حالی که sqlalchemy همونو ساپورت میکنه اومده درایو دیفالت خودشو استفاده کرده که sync هست !

بنظره من برای بنچ مارک میتونست orm هارو با یک درایو یکسان تو sync و async مقایسه کنه. اینطوری 2 تا بنچمارک داشت برای sync یکیم برای async
و همچنین میتونست سرعت ساخت query به صورت استرینگ هم تست کنه, تو model های پیچیده تر. طبیعتا پرفومنس sqlalchemy بهتره چون پایتونیک تره نمیایم بگیم model2___name__contains 😅

@ManiFoldsPython
👍3
این اگهی استخدام یک شرکت معمولیه برای پوزیشن سنیور با 100 تا کارمند تو حوزه IT
من تجربه ای ندارم ولی واقعا برام منطقی نیست؟ چطور میشه یک نفر این همه تجربه داشته باشه؟ چطور اصلا این شرکت قراره همچین فردی رو پیدا کنه یا استخدام کنه؟

DevSecOps
Front
Backend
Machine Learning
Data Science

@ManiFoldsPython
👍3😁3
Forwarded from Python Hints
من خیلی ازین سال‌های آخر رو خرج هوش مصنوعی کردم
هم پیشرفت و دستاورد داشتم هم پسرفت
راجب پسرفت‌ها بخوام بگم؛ می‌تونم به موارد زیادی اشاره کنم ولی یک مورد هست که خودم رو خیلی اذیت می‌کنه اونم کدهای بد هست
توی بخش تحقیقاتی کار کردن (هوش مصنوعی و دیتاساینس رو میگم) خیلی بد هست مخصوصا اگر مثل من چندین سال فقط و فقط تو همین بخش باشید

متاسفانه ازونجایی که همه چیز Notebook هست و این کدها فقط بین تیمی جابجا می‌شه و ۹۹٪ کارفرماها وقتی کارشون نزدیک لانچ شدن محصول هست سراغ اضافه کردن سیستم هوش مصنوعی میان کدهای تمیزی معمولا نمی‌بینید

مثلا من خیلی از کدها رو توی ۲-۳ روز زدم و تحویل دادم به بخش‌های دیگه با توضیحات و جلسه که بره روی محصول
چندسال پیش وقتی دنبال کار جدیدی بودم کدهای قدیمی‌تر (قبل از کار توی حوزه هوش مصنوعی) رو اتفاقی باز کردم همراه با یکی از دوستان که مصاحبه میگرفت ازم و بدون تعارف بهم گفت :
این کدها (کدهای قدیمی) سطح سنیور داره ولی این یکی (کدهایی که توی notebook زده بودم) انگار دادی ی بچه کد زده راستم می‌گفت؛ کار تو زمینه هوش مصنوعی و notebook من رو تنیل کرده بود نه فقط من کل تیمی رو هم که نگاه کردم همین بود

Don't Repeat Yourself (DRY) 
اصلا رعایت نمی‌شد؛ ۲ تا کلید رو همزمان فشار میدادی کل cell بالایی رو کپی میکرد توی cell جدید ۲ تا کلید دیگه میزدی هرچی train بود رو با valid عوض میکردی بعد همین رو دوباره تکرار میکردی و میزدی test در نهایتم بخش‌های دیگه از ما ۴ تا فایل تمیز میخواستند که بهشون خیلی شیک و مجلسی تحویل میدادیم دیگه

بعد این صحبت‌ها مطمئن بودم دیگه فعلا نمی‌تونم برم سراغ کارهای software engineering چون اصول کد نویسی تمیز و ... رو اصلا نمی‌تونستم رعایت کنم ولی اگر یک نفر می‌گفت من این کد رو ۷ روزه تحویل میدم من همون کد رو نهایتا ۴ ساعته تحویل میدادم (اما کثیف و بدون رعایت اصول)
برای همین بجای software engineering رفتم سراغ machine learning engineering حالا خودم باید اون ۴ تا فایل رو تحویل میگرفتم تمیز میکردم و کدهای تمیز و تست و ... براش می‌نوشتم
این موضوع خیلی بهم کمک کرد تا عادت‌های بد رو کنار بذارم؛ به کدهام ساختار بدم سعی کنم کامنت و ... بذارم یا حداقل اصول اصلی رو رعایت کنم (هنوزم کامنت گذاری و docstring برام سخت هست)


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

من واقعا و جدا الان دارم روزی ۱-۲ ساعت تمرین تمیز کد زدن می‌کنم؛ تا توی ناخودآگاهم بمونه این موضوع؛ علاوه بر اون دارم بسیار تمرین می‌کنم و برنامه‌ریزی می‌کنم با کارفرماهای عجول کار نکنم و اگر دارم کار می‌کنم خداحافظی کنم.

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

خلاصه که خیلی خیلی حواستون باشه؛ بخصوص دوستان سنیور.

پ.ن : اضافه کنم الان چندماهی هست ۲ تا از شغل‌هام بعنوان
software engineer 
هست ولی خب سختی زیادی کشیدم تا عادت‌های بد رو کنار بذارم و هنوزم درحال تمرین هستم؛ اینم به این معنی نیست که بگم برید کتاب clean code بخونید ( ی مدت ملت جوگیر شده بودند هرجا میرفتی دست یکی این کتاب بود؛ خلاصه بگم اصلا هم کتاب خوبی نیست قبلا مفصل راجبش توی چندتا لایو که دعوت بودم بحث کردم)
👍6🐳3
Python Hints
من خیلی ازین سال‌های آخر رو خرج هوش مصنوعی کردم هم پیشرفت و دستاورد داشتم هم پسرفت راجب پسرفت‌ها بخوام بگم؛ می‌تونم به موارد زیادی اشاره کنم ولی یک مورد هست که خودم رو خیلی اذیت می‌کنه اونم کدهای بد هست توی بخش تحقیقاتی کار کردن (هوش مصنوعی و دیتاساینس رو…
پست خوبیه ولی من با این تیکه حرف شخصا مخالفم
کثیف و سرعتی کد زدن شاید برای کارفرما فعلی خیلی خوب باشه و باعث درآمد بیشترش بشه ولی برای من توسعه دهنده باعث شکوفا شدن و پرورش عادت‌های بد می‌شه و نمی‌ذاره کار بهتر یا حتی درصورت جدا شدن از تیم کار پیدا کنم.

کد کثیف ممکنه نوشتنش راحت تر باشه چون پشتش تفکر کافی نباشه, ولی کد legacy خیلی maintain بیشتری نیاز داره و وقتی ownership کدت باهات باشه (کدو ندی بری) بیچاره میکنه... . کد تمیز رو یک بار مینویسی تست میکنی تموم میشه میره ولی کد کثیف میشه بخشی از زندگیت و همیشه یقه ات رو میگیره تا زمانی که ریفکتور نکنی بلا جون میشه.
شخصا کد legacy کم نزدم, اکثرش هم برمیگرده به 3-4 سال پیش. تو مسیری افتادم که خوب راهنمایی نشدم و خودمم تحقیق کافی نکردم. ترک عادت واقعا سخته. :(

تازه کد کثیف هم قطعا به نفع کارفرما نیست چون هزینه نگه داری بیشتری داره. همونطور که شما زمان بیشتری میذارین پس بیشتر حقوق میگیرین و منابعی هم که میخواد بیشتره و کند تره....

@ManiFoldsPython
👍10🔥1
Forwarded from Sadra
You think you're done when it works. Nah.. you're done when it's right.
👍4🥰1
Forwarded from Sadra
First step after writing a code is cleaning that code.

خیلی سخته که کد رو همون اول بی‌نقص و تمیز بنویسی.
👍4🥰1
Forwarded from Sadra
کد کثیف باعث میشه راندمان کل تیم بیاد پایین. معمولا دلیوری ها داره توسط برنامه‌نویس ها اتفاق میوفته. اگه سرعت برنامه نویس توی توسعه کم باشه نتیجش میشه Delivery دیرهنگام. دلیوری دیر یا بدموقع هم برابره با لَنگ بودن کل تیم تا شمای دولوپر فیچر رو پوش کنی بره بالا.

حالا چی باعث میشه دولوپر سرعتش کم شه؟ کثیفی کد.

اگه دقت کرده باشی، معمولا پروژه های نرم افزاری خیلی سریع و پرشتاب شروع به توسعه میکنن. هر یکی دو هفته، یه فیچر رلیز میشه ولی رفته به رفته این گپ بین رلیزها بیشتر و بیشتر میشه. واسه یه فیکس که به ظاهر نهایتا ۲ روز مهلت احتیاجه، کدبیس به قدری ترکیده که باید ۱ ماه وقت بذاری و مطمئن شی فیکس مشکلی نداره و بعد پوش کنی.

این طرز تفکر که سریع فیچر رو رلیز کنم یا سریع کامیت بزنم فیچرو تحویل بدم باعث میشه کد کثیف شه. به قولا میگن:

The only way to go fast is to go well.

بلافاصله که کدتون کار کرد و تست هاشو نوشتید، کلینش کنید.
👍3🥰3
یک decorator قشنگ برای لاگ گرفتن که خودم استفاده میکردم موقع دیباگ کد های سمیم 😍

میتونید حتی args و kwargs هم چک کنید که دقیقا همون تایپ هستند یا نه. 👍 اونش با شما 😁

شب خواب کد های قشنگ ببینید :))
پی نوشت: -> None فراموش نشه. 👍 حتی اگه چیزی برنمیگرده. یا حتی return None
@ManiFoldsPython
👌6👏1
بهترین و تمیز ترین boilerplate ای که دیدم از FastAPI
https://github.com/iam-abbas/FastAPI-Production-Boilerplate

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


همین موضوع باعث شد که کلا fastapi integration خودمو تو گیتهاب بخوام از صفر ریفکتور کنم که فقط ORM ترجمه شده خودمو بهش اضافه کنم با SQLAdmin
البته رو اضافه کردن SQLAdmin هم خیلی دو دل هستم, چون واقعا SOLID نیست. اگه maintainerاش همکاری کنه تو این boilerplate از صفر طبق SOLID مینویسیمش. جالبه خود author ریپو SQLAdmin هم ایرانیه 😁

@ManiFoldsPython
🔥2👍1
Python BackendHub
بهترین و تمیز ترین boilerplate ای که دیدم از FastAPI https://github.com/iam-abbas/FastAPI-Production-Boilerplate واقعا معنی SOLID رو تازه درک کردم.. چقدر محشره و تمیزه واقعا هرچی بگم کم گفتم. خود کداش هم عالیه. فیوچر هم خیلی خوبه. همین موضوع باعث شد که…
همونطور که قولشو داده بودم منم ریپو خودمو آداپت کردم به این Boilerplate
https://github.com/ManiMozaffar/fastapi-integration



چند تا چیز اضافه کردم:

1. Translated Django ORM
یک او ار ام ترجمه شده از sqlalchemy مثل جنگو. هنوز تکمیل نشده ولی برای استفاده بیسیک کافیه. جوین هم خودش خودکار هندل میکنه :)


2. Database check-up
یک اسکریپت چک آپ, که چک کنه دیتابیس بالا هست یا نه.


3. Database connection handler
اگه اکسپشنی سمت دیتابیس رخ داد تو ریسپانس مشخص کنه که اپلیکیشن ارور 500 نده.

4. CRUD
خود crud رو حرفه ای تر کردم. البته هنوز کار داره. که پیجینشن هم هندل کنه 👍

بازم مونده, دوستان اگه تمایل داشتن PR بزنن و شرکت کنند 😁
قدم بعدی ایشالا admin panel هست به صورت solid که دیگه وابسته به خود app و database نباشه که مستقیم این دو آگاه باشن از حضور ادمین پنل.


@ManiFoldsPython
🔥2
میخوام محتوی ویدیویی به زودی راجب همین معماری بذارم و توضیحش بدم یکم، بنابراین ممنون میشم به دو سوال زیر پاسخ بدین
👍3
به چه زبونی باشه؟
Anonymous Poll
59%
فارسی
41%
انگلیسی با زیرنویس‌ فارسی
👍1