Python BackendHub – Telegram
Python BackendHub
7.5K subscribers
314 photos
46 videos
11 files
432 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
در github که میچرخی ... کدهای ملت اینطوری است که مثلا پایتون‌ها معمولا در چند فایل محدود چند تا کتابخونه معروف صدا و یک کار قابل توجه این وسط با کدهای تجمیع شده انجام میشه ..
کدهای سی شارپ شبیه آفتابه لگن هفت دست شام و نهار هیچی!
صد جور فایل اینترفیس، مدل و انتیتی و ...
‏و نهایتاً می‌بینی چند هزار خط کد است که واقعا کار مهمی انجام نمیده و اصل کار هم شاید قابل توجه نباشه...
جاوایی‌ها و سی شارپی‌ها زیادی درگیر دیزاین پترن هستند تا کاری که کد باید انجام بده ..

@DevTwitter | <Alireza Shirazi/>
👎8👍2
DevTwitter | توییت برنامه نویسی
در github که میچرخی ... کدهای ملت اینطوری است که مثلا پایتون‌ها معمولا در چند فایل محدود چند تا کتابخونه معروف صدا و یک کار قابل توجه این وسط با کدهای تجمیع شده انجام میشه .. کدهای سی شارپ شبیه آفتابه لگن هفت دست شام و نهار هیچی! صد جور فایل اینترفیس، مدل…
مزخرف ترین طرز فکر. قطاری کد بنویسید بریزین تو چند فایل. که دیگه بعدا کسی جز خودتون نتونه اونو maintain کنه 🤦‍♂️

اینجا که به حجم کد اشاره نشده, ولی حتی کد اگه 200 خط هم باشه نباید بدون logic و architecture باشه. چون بالاخره ممکنه درآینده بیشتر برگردین و روش کار کنید. خشت اول رو که کج بذارین ساختمون کج بالا میره, اون موقع وقتی میرسین طبقه 5-10 مجبور میشین ساختمونو خراب کنید و ریفکتور کنید.

لزومی نداره حالا از یک دیزاین پترن خاص و مشخصی استفاده کنید ولی همینکه منطقی باشه و کسی که میبینتش سریع درکش کنه کافیه. هیچ کتابخونه خوبی پیدا نمیکنید که اینطوری نباشه. یک سری قواعد باید همه جا رعایت شه حتی برای کد های کم مثل SOLID و ...
@ManiFoldsPython
👍4
مشابه میخواین برین سراغ همین رفیق من undetected chromedriver 😂
یک ریپویی که 5 هزار ستاره خورده
739 تا فورک
ولی کلا 8 تا contributer داره
. کسیم سر از کدش در نمیاره. سعی میکنن خیلی به کد دست نزنن چون legacy بزرگی پشتشه 😅
اولین کامیت کد هم 250 خط بود همشو ریخته بود تو یک فایل!

همشم بخاطر همینه که معماری درستی نداشت. شاید یکی بتونه کداشو کلین کنه چون بالاخره خط به خط جلومیری کدو کلین میکنی ولی کلین کردن architecture یک پروژه واقعا پروسه سخت و طاقت فرسایی هست و البته باعث از بین رفتن backward compatibility هم میشه. یک مثال دیگه میزنم از یک پروژه بسیار بزرگ تر تا اینکه این قضیه خشت اولی که کج گذاشته میشه رو جدی تر بگیرین.
@ManiFoldsPython
👍2
یک نمونه دیگه از جنگو!
نقل قول از کتاب two scopes of django
اگه query جنگو آبجکت عجیب غریبی نبود و lazy evaluate بودنش خیلی ساده تر پیاده سازی میشد یا اصلا پیاده نمیشد, الان قابلیت تغییر درایور به asyncpg وجود داشت که تو پرفومنس در مقایسه با psycopg شوخیه, و دست زدن بهش باعث از بین رفتن backward compalitity میشه و کلا کل کد و queryهایی که زدین رو باید از اول بنویسید, که خب بنظر نمیرسه حداقل حالا حالا ها همچین اتفاقی بیفته.

@ManiFoldsPython
👍2
یکی از کارایی که من همیشه میکنم اینه که تو پروژه هام از draw.io استفاده میکنم.
یک markup language هم خودش داره, که باهاش میتونید این جدول هارو بکشید. بعد همون مارک آپش رو آپلود کنید تو سایتش نشون میده جدول رو مطابق عکس
دیزاین پروژه رو داخلش میکشم, حالا میتونه دیتابیس باشه یا design pattern یا هرچیز دیگه ای, بعد همونو تو github repo هم میذارم. اینطوری یک نفر دیگه همون فایلو باز کنه خیلی سریع دیزاین دستش میاد بدون اینکه کد رو بخونه.

@ManiFoldsPython
👍5🤝2
من در برنامه‌نویسی خیلی محافظه کار هستم.
همه چیز رو دوست دارم با خود زبان حل کنم.
و در قدم بعد با کتابخونه استانداردش.
هر پکیج جانبی رو با کلی فاکتور که در ذهنم دارم میسنجم. گاهی روزها طول میکشه تا تصمیم بگیرم به اضافه کردن چیزی!
با فریم ورک‌های بزرگ میونه‌ای ندارم...

۱/

اگر نتونم طرز کار یه چیز رو بفهمم، به کدهام اضافه اش نمیکنم.
همیشه فکر میکنم آیا ۵ سال بعد هم میتونم روی این کدها به همین راحتی کار کنم یا نه...
ده بار ساختن یک چیز به صورت کاستوم رو، به ساختن یه چیز جنرال ترجیح میدم...

این مدلی کار کردن محبوب نیست و مخالفان سرسختی داره.

۲/

برای همین خیلی وقت‌ها صحبت‌هایی که میکنم یا نظرهایی که میدم، از دید سایر افراد خیلی پرت هست.

مثلا یادم هست قدیم ها در اوج محبوبیت django، من با bottle همه کدهام رو میزدم. کتابخونش هزار خط هم نمیشد. یعنی اگر سازندش میرفت زیر اتوبوس، باز من میتونستم کار خودمو راه بندازم باهاش!

۳/

توضیح دادنش برای بقیه سخت بود که چرا من از bottle استفاده میکنم، در حالی که چیزی مثل django وجود داره...
اون دوران که گذشت، ولی امروز هم نمیتونم جور دیگه‌ای کد بزنم.

این روزها ابزارهای رنگ و وارنگ خیلی از قدیم بیشتر شدن...

۴/

ولی من پیش خودم میگم کاری که مثلا فریم‌ورک X داره میکنه رو، من ۷۰٪ اش رو فقط نیاز دارم. از اون ۷۰٪ هم اگر یکم سختی بدم به خودم و اگه همه چیز رو به اون شکل جنرال و عامه پسند نخوام، تقریبا بیشترش رو میتونم خودم بنویسم... مزیت‌اش اینه که اونطوری با زیر و بم‌اش آشناتر هستم...

۵/

تو چیزایی که نمیدونم و سر رشته ندارم، ترجیح میدم به افرادی که میشناسم و کارهاشون رو مطالعه میکنم اعتماد کنم... ولی در چیزهایی که راسته کار خودمه، خیلی سخت هست به کد شخصی اعتماد کنم که اصلا ندیدمش و هیچی ازش نمیدونم...

۶/

مخصوصا اگر فکر کنم کل کاری که از اون پکیج میخوام، میتونه در حد مثلا ۲-۳ هزار خط بشه، پس چرا این پکیج حجم اش شده ۸۰ مگابایت؟ چرا باید ۸۰ مگابایت کد رو که من هیچی ازش نمیدونم اضافه کنم به پروژه‌ام؟ ریسک‌اش از نظرم خیلی بالاست... مخصوصا که مثلا خود پروژه ام ۱۰ هزار خط باشه!

۷/

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

۸.

#تجربه
👤| Amirreza Gh (@amirr3za)

👨‍💻👩‍💻|@PGTWEET
👍6👎4
PGTWEET | توییت برنامه نویسی
من در برنامه‌نویسی خیلی محافظه کار هستم. همه چیز رو دوست دارم با خود زبان حل کنم. و در قدم بعد با کتابخونه استانداردش. هر پکیج جانبی رو با کلی فاکتور که در ذهنم دارم میسنجم. گاهی روزها طول میکشه تا تصمیم بگیرم به اضافه کردن چیزی! با فریم ورک‌های بزرگ میونه‌ای…
این پست رو ما اگه سال پیش میخوندم میگفتم چرت و پرته محضه از نظره خودم
ولی الان با بیشترش موافقم.

اینکه میگین DRY, خیلی مهمه که DRY به جای don't repeat yourself تبدیل نشه به don't respect yourself.
مثلا یک وب فریمورک اصلا نیازی نداره که از دیتابیس آگاهی داشته باشه, اتفاقی که تو جنگو نمیفته ولی تو fastapi میفته و همین موضوع fastapi رو خیلی قشنگ تر میکنه, چون به شدت solid تر از جنگو هست.
تو قاعده DRY تو یک وب فریم ورک, ما یک سری نیاز اساسی و کلی داریم که تو هر وب فریم ورکی باید تعریف شه, و FastAPI تقریبا همه رو شامل کرده. حالا در خصوص bottle نمیتونم نظری بدم چون باهاش کار نکردم.
ولی باید این مرز رو رعایت کنید, که دوباره از اون سمت نیوفتین, مثلا چه کاریه بیایم از پایتون استفاده کنیم وقتی کلی built in module داره که ما ازش استفاده نمیکنیم؟ این طرز فکر به نظره من حماقته, و باعث میشه reinvent the wheel رو انجام بدید.

پس بنظره من DRY باید تو چهارچوب SOLID باشه و کم حجم نگه داشتن پروژه به صورت همزمان با رعایت بالانس. 👍
@ManiFoldsPython
👍3👎1🤔1
Python BackendHub
این پست رو ما اگه سال پیش میخوندم میگفتم چرت و پرته محضه از نظره خودم ولی الان با بیشترش موافقم. اینکه میگین DRY, خیلی مهمه که DRY به جای don't repeat yourself تبدیل نشه به don't respect yourself. مثلا یک وب فریمورک اصلا نیازی نداره که از دیتابیس آگاهی داشته…
The DRY principle is stated as "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system". The principle has been formulated by Andy Hunt and Dave Thomas in their book The Pragmatic Programmer.[2] They apply it quite broadly to include database schemas, test plans, the build system, even documentation.[3] When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements.

اینم تعریف DRY.
خیلیا فکر میکنن DRY یعنی خودشونو تکرار نکنند, در صورتی که خیلی جاها باید کدمون رو تکرار کنیم تا دیزاین پترن و architecture تمیزی داشته باشیم که flexible و scalable باشه. چیزی که flexible نیست بنظر من به راحتی scalable نیست.

حواستون به تعاریف باشه
@ManiFoldsPython
از وقتی با pydantic آشنا شدم دیگه هیچ ولیدشنی ننوشتم.
یا خودم براش arbitrary types تعریف کردم اگه تو built in اش نبود که یک بار برای همیشه validation اش رو بنویسم تموم شه بره.
تقریبا تو همه crawler هام ازش استفاده میکنم. خلاصه دریغ نکنید از این لایبری خوشگل. 😁 هرچی کد میبینم تو لایبری های قدیمی میگم اینو میشه دقیقا با pydantic بیای ریفکتور کنی... مثل graphene که اخیرا باهاش کار کردم

@ManiFoldsPython
👍8
اگه کارت دانشجویی و ایمیل آکادمیک فعال داشته باشین, میتونید ایمیلتون رو وصل کنید به اکانت گیب هاتون و کارت رو آپلود کنید, تا اکانتتون PRO شه و از خدمات دانشجویی بهره ببرین

نمیدونم با دانشگاه های ایران بشه یا نه, ولی امتحان کنید.

https://education.github.com/pack

@ManiFoldsPython
👍4
Forwarded from Sadra Codes
دوستان اگه خودتون مشغولید یا افرادی رو می‌شناسید، ممنون می‌شم معرفی کنید. 😊

شیر کردن این پست لینکدین، موجب خوشحالیست! :) ❤️🙏

👇
این حجم کتاب هاییه که پرینت گرفتم بخونمشون. هم درد داره هم لذت 🫠😂
اگه خوب بودن پیشنهادشون میکنم اینجا ✌️
@ManiFoldsPython
🗿111👍1
Forwarded from ‌BenDev
برای مصاحبه های behavioral بسیار بسیار مهمه که شما بتونید با استفاده از تکنیک STAR پاسخ بدین
لینک زیر رو مطالعه کنید:
https://www.indeed.com/career-advice/interviewing/how-to-prepare-for-a-behavioral-interview

@BenDevelop
👍6👌1
این پلی لیست محشره

https://www.youtube.com/playlist?list=PLC0nd42SBTaNuP4iB4L6SJlMaHE71FG6N

Software Design in Python by ArjanCodes

@ManiFoldsPython
3