cookie

ما از کوکی‌ها برای بهبود تجربه مرور شما استفاده می‌کنیم. با کلیک کردن بر روی «پذیرش همه»، شما با استفاده از کوکی‌ها موافقت می‌کنید.

avatar

Python BackendHub

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 لینک گروه: https://t.me/PythonFellow

نمایش بیشتر
پست‌های تبلیغاتی
4 768
مشترکین
+924 ساعت
+497 روز
+17130 روز

در حال بارگیری داده...

معدل نمو المشتركين

در حال بارگیری داده...

چیزی که من متعجب شدم اکثرا میگن این <خیلی پیچیدست>. ولی حقیقتا اصلا پیچیده نیست. کامیونیتی پایتون خیلی گارد زیادی نسبت به تایپینگ داره که تو دراز مدت قطعا ضربه میخورین چون پایتون الان هر نسخه ریلیز میده ۸۰ درصدش تایپینگ improvement هست و شما اگه الان typing بلد نباشین عملا از خیلی از لایبری های جدید نمیتونید استفاده کنید. تو این مثال حتی یک خط نشده. و شما اینکار رو برای آیدی ها انجام میدی. تو یک سرویس پرحجم که شما ۲۰۰ تیبل داری نهایتا میشه ۲۰۰ خط NewType. و باعث میشه signature همه کد های شما قابل خوانا باشه. این tip به درد شما میخوره اگه کد میزنی. لزوما به بک اند هیچ ربطی نداره. الان شما یک تابع بنویسید که یک سری‌آیدی موزیک و آیدی یوزر بگیره و بعد بگه برای هر موزیک هر یوزر پیش بینی کنه از صفر تا صد چقدر ممکنه دوست داشته باشه این ۳ مثال رو ببینید, مثال اول تایپینگ خوبی داره. مثال دوم تایپینگ داره ولی به درد بخور نیست خیلی. و مثال سوم تایپینگ نداره.

# WITH GOOD TYPING
Percentage: TypeAlias = int # from 0 to 100.
def calculate_music_populatiry(person_ids: list[PersonId], music_ids: list[MusicId]) -> dict[PersonId, list[tuple[Bookid, Percentage]]

# WITH BAD TYPING
def calculate_music_populatiry(person_ids: list[PersonId], music_ids: list[MusicId]) -> dict[UUID, list[tuple[UUID, int]]


# WITHOUT TYPING
def calculate_music_populatiry(person_ids, music_ids)
من میتونم بدونه اینکه کدو ببینم از فانکشن اولی استفاده کنم. فانکشن دومی معلوم نیست چی به چی لینک شده. پس باید حواسم باشه موقع استفاده ازش. و بعدا ریفکتورش هم کردم باید ۱۰۰درصد حواسم باشه signature اش تغییر نکنه. و فانکشن سوم که کلا فاجعست. اصلا maintainable نیست. قضاوت رو میذارم با خودتون. @PyBackendHub
نمایش همه...
👍 24👎 9🤡 2💋 1🤪 1
چیزی که من متعجب شدم اکثرا میگن این <خیلی پیچیدست>. ولی حقیقتا اصلا پیچیده نیست. کامیونیتی پایتون خیلی گارد زیادی نسبت به تایپینگ داره که تو دراز مدت قطعا ضربه میخورین چون پایتون الان هر نسخه ریلیز میده ۸۰ درصدش تایپینگ improvement هست و شما اگه الان typing بلد نباشین عملا از خیلی از لایبری های جدید نمیتونید استفاده کنید. تو این مثال حتی یک خط نشده. و شما اینکار رو برای آیدی ها انجام میدی. تو یک سرویس پرحجم که شما ۲۰۰ تیبل داری نهایتا میشه ۲۰۰ خط NewType. و باعث میشه signature همه کد های شما قابل خوانا باشه. این tip به درد شما میخوره اگه کد میزنی. لزوما به بک اند هیچ ربطی نداره. الان شما یک تابع بنویسید که یک سری‌آیدی موزیک و آیدی یوزر بگیره و بعد بگه برای هر موزیک هر یوزر پیش بینی کنه از صفر تا صد چقدر ممکنه دوست داشته باشه

# WITH GOOD TYPING
Percentage: TypeAlias = int # from 0 to 100.
def calculate_music_populatiry(person_ids: list[PersonId], music_ids: list[MusicId]) -> dict[PersonId, list[tuple[Bookid, Percentage]]

# WITH BAD TYPING
def calculate_music_populatiry(person_ids: list[PersonId], music_ids: list[MusicId]) -> dict[UUID, list[tuple[UUID, int]]


# WITHOUT TYPING
def calculate_music_populatiry(person_ids, music_ids)
نمایش همه...
Photo unavailableShow in Telegram
یک tip آخر دیگه در مورد ارتباط typing با maintainability استفاده درست از تایپ never باعث میشه شما همیشه سیسمتون خیلی راحت extendable باشه. مثالش اینجا تو سورس کد واقعیه. من یک enum دارم برای PaymentType. و نیاز دارم که بتونم query کنم payment هایی که خودکار هستن رو. و دستی نیستن. اگه من این مقدار رو هارد کد میکردم فردا اگه یک مدل payment جدید اضافه میکردم اون موقع یادم میرفت اینجا اضافه کنم تو query آورده نمیشد. ولی الان اون assert never منو وادار میکنه اگه تایپ جدیدی اضافه کردم و سیستم رو بزرگ تر کردم حالا بیام اینجا هندلش کنم که آيا payment خودکار هست یا نه. پس هرجایی تو سیستمم دپندسی خاصی دارم سعی میکنم یک جوری کد بنویسم که وقتی سیستم رو بزرگ تر میکنم مجبور شم هندلش کنم. کمی باعث میشه بیشتر کد بزنم و بیشتر وقت بذارم ولی از طرفی اصلا رو دیباگ اون کد وقت نمیذارم و پروداکتم خیلی stable تره. تو تایپ اسکریپت و بعضی زبونای دیگه این ایده رو میشه بدون runtime cost اجرا کرد. تو پایتون ولی یک وقتا (مثل اینجا)‌یک کوچولو ران تایم کاست داره. @PyBackendHub
نمایش همه...
👍 13👏 1
ممنون میشم دلیل دیس لایک هم بنویسید, ممکنه تایپ اسکریپت یک چیزی built in داشته باشه برای اینکار ولی من پیدا نکردم.
نمایش همه...
👎 6 5
Photo unavailableShow in Telegram
نمونش هم تو تایپ اسکریپت اینطوری میشه: @PyBackendHub
نمایش همه...
👎 16👍 10🍓 2 1
Photo unavailableShow in Telegram
یکی از چیزایی که باعث به شدت maintainable شدن کدم شده این مقاله هست و نکاتی که توشه. Writing python like rust توصیه میکنم حتما بخونید اگه تا الان نخوندین. اکثر چیزایی که تو مقاله گفته تو همه زبونا قابل پیاده سازیه یعنی اصلا ربطی به پایتون و راست و ... نداره. یکی ازچیزایی که دوست دارم NewType هست. بهتون یک تایپ جدید برمیگردونه. خوبیش اینه که signature توابعتون و دیتا استراکچر رو خیلی پرمفهوم میکنه و جلوی خطا رو میگیره. مثالش تو عکس گذاشتم. @PyBackendHub
نمایش همه...
👍 14👎 7😁 2 1👌 1
یکی از چیزایی که باعث به شدت maintainable شدن کدم شده این مقاله هست و نکاتی که توشه. Writing python like rust توصیه میکنم حتما بخونید اگه تا الان نخوندین. اکثر چیزایی که تو مقاله گفته تو همه زبونا قابل پیاده سازیه یعنی اصلا ربطی به پایتون و راست و ... نداره. یکی از تو تایپ اسکریپت که اخیرا زیاد کد میزنم ولی NewType نبود. type NewType<Base, Brand> = Base & { __brand: Brand }
نمایش همه...
Writing Python like it’s Rust

I started programming in Rust several years ago, and it has gradually changed the way I design programs in other programming languages, most notably in Python. Before I started using Rust, I was usually writing Python code in a very dynamic and type-loose way, without type hints, passing and returning dictionaries everywhere, and occasionally falling back to “stringly-typed” interfaces. However, after experiencing the strictness of the Rust type system, and noticing all the problems that it prevents “by construction”, I suddenly became quite anxious whenever I got back to Python and wasn’t provided with the same guarantees.

03:09
Video unavailableShow in Telegram
این ویدیو راجب ماکروسرویسه، و اینکه چطوری service هاتونو abstract کنید👌 توصیه میکنم حتما ببینید ، عالیه این ویدیو @PyBackendHub
نمایش همه...
IMG_4189.MP434.95 MB
👍 9 3🤣 2🤯 1
این ویدیو راجب ماکروسرویسه، و اینکه چطوری service هاتونو abstract کنید👌 توصیه میکنم حتما ببینید ، عالیه این ویدیو https://youtu.be/y8OnoxKotPQ?si=UhaxaCnb738zQV6G @PyBackendHub
نمایش همه...
Microservices

it's because of the way our backend works // unlock exclusive deleted scenes:

https://www.patreon.com/KRAZAM

// merch:

https://merch.krazam.tv

//

https://www.instagram.com/krazam.tv

//

https://twitter.com/krazamtv

Repost from ‌BenDev
پنل گفت و گو - کد قابل نگهداری @BenDevelop https://youtu.be/Pf1uk3IjTJc
نمایش همه...
پنل گفت و گو - کد قابل نگهداری

Maintainable Code - کد قابل نگهداری تست معماری نرم افزار کد تمیز + testing + clean code ▬ محتوای ویدیو ▬▬▬▬▬▬▬▬▬▬ توی این ویدیو از مهمانان محترم دعوت کردیم که به پنل گفت و گو بیان که مباحث مربوط به کد قابل نگهداری از قبیل دیزاین پترین و کلین کد و تست و ... رو با هم بحث کنیم ▬ شبکه های اجتماعی ▬▬▬▬▬▬▬▬▬▬ لینکدین: / amirbahador تلگرام:

https://t.me/BenDevelop

گیت هاب:

https://github.com/amirbahador-hub

▬ مهمانان برنامه ▬▬▬▬▬▬▬▬▬▬ @GitOverHere @BobyCloud ▬ بخش های ویدیو ▬▬▬▬▬▬▬▬▬▬ 0:00 مقدمه 03:00 معرفی 16:16 تعریف کد قابل نگهداری 28:51 تست 01:05:03 چجوری کد قابل نگهداری بنویسیم 01:55:33 رودمپ

9👍 1
یک طرح متفاوت انتخاب کنید

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