کامنتا جالب و متنوع بودن. نظره خودم هندل State هست. این موضوع به عنوان یک بک اند کار, شما رو اذیت میکنه. به عنوان فرانت کار بازم اذیتتون میکنه. حتی به عنوان دوآپس هم اذیتتون میکنه اگه چیزی که دارین دیپلوی میکنید خودش state داشته باشه (مثلا وب سوکت) یا بخواین اپی که state داره رو scale کنید. بنظرم همیشه بزرگ ترین چالش ها همین state بودن.
https://medium.com/97-things/behavior-is-easy-state-is-hard-b272356cf867
From my experience, the hardest bugs to solve are the ones caused by inconsistent state.
این مقاله رو داشتم میخوندم جالب بود. ولی با تیکه آخرش مخالفم و این قضیه state فقط به mutability object ربط نداره بلکه حالتیه که ما انتظار داشتیم باشه ولی تو واقعیت اونطوری نیست. تو واقعیت میتونه ناهماهنگی بین state چند سرویس باعث باگی بین اون سرویسا بشه. بذارین مثال بزنم:
فکر کنید ۳ تا سرویس دارین. سرویس A داره سفارشات رو میگیره, و ثبت میکنه. سرویس B پرداخت هارو پردازش میکنه از کردیت کارت مشتری. و سرویس C موجودی کالا رو به روز میکنه. هندل کردن این state که کالا یکی از موجودیش کم شه وقتی سفارش میاد و اگه پرداخت fail شه یکی زیاد شه و برگرده به حالش میتونه مثالی باشه از state management تو سطح چند تا سرویس که اگه باگی این وسط پیش میاد ممکنه پیچیده باشه troubleshoot کردنش.البته این یک مثال ساده ۲ خطی بود ولی امیدوارم context ماجرا رو فهمیده باشین.
سوالی که پیش میاد اینه که چیکار کنیم؟ یک سری دیزاین پترن های Behavioral وجود دارن که کارشون هندل state هست به روش های مختلف و در ادامه دوره دیزاین پترن از امشب از Creator pattern به سمت Behavioral pattern میریم و مثال واقعی تر میزنم براتون.
یک چیزی که تو کل دوره گفتم اینه که بد ترین کاری که میتونید کنید اینه که به جای اینکه دیزاین پترن رو درک کنید و بفهمیدش سعی کنید سریع همه جا ازش استفاده کنید. دیزاین پترن در واقع به شما قدرت حل مسئله به روش های مختلف رو میده و میتونید از ابعاد خارج از کدتون هم بهش نگاه کنید همیشه.
@ManiFoldsPython
https://medium.com/97-things/behavior-is-easy-state-is-hard-b272356cf867
From my experience, the hardest bugs to solve are the ones caused by inconsistent state.
این مقاله رو داشتم میخوندم جالب بود. ولی با تیکه آخرش مخالفم و این قضیه state فقط به mutability object ربط نداره بلکه حالتیه که ما انتظار داشتیم باشه ولی تو واقعیت اونطوری نیست. تو واقعیت میتونه ناهماهنگی بین state چند سرویس باعث باگی بین اون سرویسا بشه. بذارین مثال بزنم:
فکر کنید ۳ تا سرویس دارین. سرویس A داره سفارشات رو میگیره, و ثبت میکنه. سرویس B پرداخت هارو پردازش میکنه از کردیت کارت مشتری. و سرویس C موجودی کالا رو به روز میکنه. هندل کردن این state که کالا یکی از موجودیش کم شه وقتی سفارش میاد و اگه پرداخت fail شه یکی زیاد شه و برگرده به حالش میتونه مثالی باشه از state management تو سطح چند تا سرویس که اگه باگی این وسط پیش میاد ممکنه پیچیده باشه troubleshoot کردنش.البته این یک مثال ساده ۲ خطی بود ولی امیدوارم context ماجرا رو فهمیده باشین.
سوالی که پیش میاد اینه که چیکار کنیم؟ یک سری دیزاین پترن های Behavioral وجود دارن که کارشون هندل state هست به روش های مختلف و در ادامه دوره دیزاین پترن از امشب از Creator pattern به سمت Behavioral pattern میریم و مثال واقعی تر میزنم براتون.
یک چیزی که تو کل دوره گفتم اینه که بد ترین کاری که میتونید کنید اینه که به جای اینکه دیزاین پترن رو درک کنید و بفهمیدش سعی کنید سریع همه جا ازش استفاده کنید. دیزاین پترن در واقع به شما قدرت حل مسئله به روش های مختلف رو میده و میتونید از ابعاد خارج از کدتون هم بهش نگاه کنید همیشه.
@ManiFoldsPython
Medium
Behavior Is ‘Easy’, State Is Hard
When I was first introduced to object-oriented programming, some of the very first concepts taught were the triple of polymorphism…
👍18
به بخش دوم, قسمت هفتم پلی لیست دیزاین پترن رسیدیم 🎉
همیشه مدیریت state و رفتار کد هامون سخت بوده. دیزاین پترن های Behavioral به ما کمک میکنن که بتونیم بین آبجکت هامون ارتباط قوی تری داشته باشیم و state رو داخل کدمون بهتر هندل کنیم. نکته مهم دیزاین پترن ها به طور کلی اینه که کانپست پشتشون رو درک کنید به جای اینکه فقط سعی کنید theoryشون رو حفظ کنید و تکرارشون کنید.
تو این ویدیو قراره بپردازیم به دیزاین پترن observer و بررسی کنیم یوزکیسش رو, دیزاین پترنی که خیلی جاها استفاده شده و حتما خودمون هم ازش استفاده کردیم, مثل سینگال در جنگو یا عوض شدن توکن در فایربیس یا ارتباط وب هوک با یک سیستم دیگه.
https://www.youtube.com/watch?v=bPTBXprf2kc
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد.
https://github.com/ManiMozaffar/design-101
@ManiFoldsPython
همیشه مدیریت state و رفتار کد هامون سخت بوده. دیزاین پترن های Behavioral به ما کمک میکنن که بتونیم بین آبجکت هامون ارتباط قوی تری داشته باشیم و state رو داخل کدمون بهتر هندل کنیم. نکته مهم دیزاین پترن ها به طور کلی اینه که کانپست پشتشون رو درک کنید به جای اینکه فقط سعی کنید theoryشون رو حفظ کنید و تکرارشون کنید.
تو این ویدیو قراره بپردازیم به دیزاین پترن observer و بررسی کنیم یوزکیسش رو, دیزاین پترنی که خیلی جاها استفاده شده و حتما خودمون هم ازش استفاده کردیم, مثل سینگال در جنگو یا عوض شدن توکن در فایربیس یا ارتباط وب هوک با یک سیستم دیگه.
https://www.youtube.com/watch?v=bPTBXprf2kc
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد.
https://github.com/ManiMozaffar/design-101
@ManiFoldsPython
YouTube
دیزاین پترن observer
به بخش دوم, قسمت هفتم پلی لیست دیزاین پترن رسیدیم 🎉
همیشه مدیریت state و رفتار کد هامون سخت بوده. دیزاین پترن های Behavioral به ما کمک میکنن که بتونیم بین آبجکت هامون ارتباط قوی تری داشته باشیم و state رو داخل کدمون بهتر هندل کنیم. نکته مهم دیزاین پترن ها…
همیشه مدیریت state و رفتار کد هامون سخت بوده. دیزاین پترن های Behavioral به ما کمک میکنن که بتونیم بین آبجکت هامون ارتباط قوی تری داشته باشیم و state رو داخل کدمون بهتر هندل کنیم. نکته مهم دیزاین پترن ها…
👍6🔥3
به نظرتون یک فانکشن در چه صورتی خوبه؟ چه فاکتوری وجود داره که میگین عجب فانکشن خوبی؟ مثلا به قول مارتین بیشتر از ۱۴ خط باشه bad smell عه؟ 😁
@ManiFoldsPython
@ManiFoldsPython
👍3
Python BackendHub
به نظرتون یک فانکشن در چه صورتی خوبه؟ چه فاکتوری وجود داره که میگین عجب فانکشن خوبی؟ مثلا به قول مارتین بیشتر از ۱۴ خط باشه bad smell عه؟ 😁 @ManiFoldsPython
تو کامنتا تا حدی اشاره کردن, نظره خودم:
اینکه بخواین با خط کش کدتونو اندازه بگیرین بنظره من ملاک کلین کدی نیست. مثلا میگن اگه اول فانکشن if بیاد پس function بدیه. اوکی متوجهم چرا اینو میگن چون میتونست شرطه به نحوی تو خود arg ها بیاد ولی یک وقتا پیش میاد. یا مثلا میگن اگه ۳ تا nested بخوره پس فانکشن بدیه. اینا هیچکدوم objective نیستن و ممکنه پیش بیان و کاملا هم منطقی باشن و ملاک تمیز بودن کدمون نیست.
ملاک تمیزی یک فانکشن بنظره من, چهار چیزه:
۱. Composable بودن اون تابع
اگه متوجه نشدین لینک زیر رو بخونید
https://en.wikipedia.org/wiki/Function_composition_(computer_science)
۲. فقط یک کار انجام بده.
۳. وقتی signature و اسم فانکشن رو برای اولین بار میخونیم و مقایسش میکنیم با کد فانکشن, سورپرایز نشیم!
۴. ساید افکتی نداشته باشه که از رو اسم و signature فانکشن مشخص نباشه.
@ManiFoldsPython
اینکه بخواین با خط کش کدتونو اندازه بگیرین بنظره من ملاک کلین کدی نیست. مثلا میگن اگه اول فانکشن if بیاد پس function بدیه. اوکی متوجهم چرا اینو میگن چون میتونست شرطه به نحوی تو خود arg ها بیاد ولی یک وقتا پیش میاد. یا مثلا میگن اگه ۳ تا nested بخوره پس فانکشن بدیه. اینا هیچکدوم objective نیستن و ممکنه پیش بیان و کاملا هم منطقی باشن و ملاک تمیز بودن کدمون نیست.
ملاک تمیزی یک فانکشن بنظره من, چهار چیزه:
۱. Composable بودن اون تابع
اگه متوجه نشدین لینک زیر رو بخونید
https://en.wikipedia.org/wiki/Function_composition_(computer_science)
۲. فقط یک کار انجام بده.
۳. وقتی signature و اسم فانکشن رو برای اولین بار میخونیم و مقایسش میکنیم با کد فانکشن, سورپرایز نشیم!
۴. ساید افکتی نداشته باشه که از رو اسم و signature فانکشن مشخص نباشه.
@ManiFoldsPython
👍17
Python BackendHub
تو کامنتا تا حدی اشاره کردن, نظره خودم: اینکه بخواین با خط کش کدتونو اندازه بگیرین بنظره من ملاک کلین کدی نیست. مثلا میگن اگه اول فانکشن if بیاد پس function بدیه. اوکی متوجهم چرا اینو میگن چون میتونست شرطه به نحوی تو خود arg ها بیاد ولی یک وقتا پیش میاد.…
This media is not supported in your browser
VIEW IN TELEGRAM
👍8🔥2
یکی از جاهایی که خیلی میتونید یاد بگیرین github هست
برین یک لایبری خوب
یک pr که داره مرج میشه
دیسکاسشنش رو بخونید
یک لایبری رو برین که متوجه discussion اش بشید. مثلا ML نباشه
مثلا اگه بک اند کارین میتونید برین PR های جنگو و فست و فلسک و سلری و غیره رو بخونید.
اینطوری باعث میشه هم
۱. کالچر review کردن رو یاد بگیرین
۲. کلی چیز یاد میگیرین از maintainer های اون لایبری
۳. خوده اون لایبری هم دیپ تر میشین. مثلا اگه سلریه بروکر هارو دیپ تر میشین.
سعی کنید PR های بزرگو بخونید نه اونی که یک خط مشکل داکو رو درست کرده 😁 از تایتل PR و تعداد دیسکاسشن هاش مشخصه.
@ManiFoldsPython
برین یک لایبری خوب
یک pr که داره مرج میشه
دیسکاسشنش رو بخونید
یک لایبری رو برین که متوجه discussion اش بشید. مثلا ML نباشه
مثلا اگه بک اند کارین میتونید برین PR های جنگو و فست و فلسک و سلری و غیره رو بخونید.
اینطوری باعث میشه هم
۱. کالچر review کردن رو یاد بگیرین
۲. کلی چیز یاد میگیرین از maintainer های اون لایبری
۳. خوده اون لایبری هم دیپ تر میشین. مثلا اگه سلریه بروکر هارو دیپ تر میشین.
سعی کنید PR های بزرگو بخونید نه اونی که یک خط مشکل داکو رو درست کرده 😁 از تایتل PR و تعداد دیسکاسشن هاش مشخصه.
@ManiFoldsPython
👍18
در قسمت هشتم پلی لیست دیزاین پترن
تو این قسمت State Pattern رو بررسی کردیم, توضیح دادم که چرا این پترن خیلی خوبه و میتونه encapsulation تمیزی بهتون بده برای هر state از context و سیستمتون و البته گفتم چرا design pattern ناقصی هست و ضعفش چیه که مقدمه ای شد برای ویدیو بعدی, پترن Type State که بنظرم بهترین ویدیو این پلی لیسته خواهد شد.
لینک ویدیو:
https://youtu.be/wGAzhp8ljAk
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
تو این قسمت State Pattern رو بررسی کردیم, توضیح دادم که چرا این پترن خیلی خوبه و میتونه encapsulation تمیزی بهتون بده برای هر state از context و سیستمتون و البته گفتم چرا design pattern ناقصی هست و ضعفش چیه که مقدمه ای شد برای ویدیو بعدی, پترن Type State که بنظرم بهترین ویدیو این پلی لیسته خواهد شد.
لینک ویدیو:
https://youtu.be/wGAzhp8ljAk
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
GitHub
GitHub - ManiMozaffar/design-101: Deep Dive Into Design Patterns Lesson with python!
Deep Dive Into Design Patterns Lesson with python! - ManiMozaffar/design-101
👍6
کاربرد گروهو میخوام تغییر بدم
به گروهی برای رفع مشکل و بحث در خصوص Backend Engineering و پایتون
مرجعی هم بشه که بتونید کلا سوالات flask یا kafka یا rabbitmq یا FastAPI یا ORM هرچیز دیگه ای که ممکنه براش community پیدا نکنید. لینک:
https://news.1rj.ru/str/PythonFellow
خوشحال میشم جوین شید. قانون خاصی نداره به جز حفظ احترام اعضای گروه.
@PyBackEndHub
به گروهی برای رفع مشکل و بحث در خصوص Backend Engineering و پایتون
مرجعی هم بشه که بتونید کلا سوالات flask یا kafka یا rabbitmq یا FastAPI یا ORM هرچیز دیگه ای که ممکنه براش community پیدا نکنید. لینک:
https://news.1rj.ru/str/PythonFellow
خوشحال میشم جوین شید. قانون خاصی نداره به جز حفظ احترام اعضای گروه.
@PyBackEndHub
Telegram
Python Backend Fellow
گروه رفع اشکال و بحث در مورد Backend Engineering و پایتون
Channel: @PyBackEndHub
Channel: @PyBackEndHub
👍13❤3
👍25👎25😱2😁1
https://github.com/airtai/faststream
این لایبری رو برای کار کردن با بروکر ها چند وقت پیش معرفی کردم و الان داره به جاهای خیلی خوبی میبرسه جوری که وسوسه شدم ازش استفاده کنم 👌
@PyBackEndHub
این لایبری رو برای کار کردن با بروکر ها چند وقت پیش معرفی کردم و الان داره به جاهای خیلی خوبی میبرسه جوری که وسوسه شدم ازش استفاده کنم 👌
@PyBackEndHub
GitHub
GitHub - ag2ai/faststream: FastStream is a powerful and easy-to-use asynchronous Python framework for building asynchronous services…
FastStream is a powerful and easy-to-use asynchronous Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ, NATS and Redis. - ag2ai/fast...
🔥4👍1
Python BackendHub
ایراد دیزاین این کد چیست؟ موضوع ویدیو بعدی 🔥🔥 @PyBackEndHub
تو کامنتا اشاره کردن جوابش خیلی راحته اینه که یک کلس بنویسیم و تو کاسنتراکتورش init کنیم اپ رو. و این یک کاسنپت خیلی مهم پشتشه. که دقیقا چه اتفاقی میفته باعث بهتر شدن کیفیت کد میشه.
خیلی وقتا غریزی اینکار رو انجام میدیم
خیلی وقتا هم انجام نمیدیم!مثل کسایی که لایبری firebase رو نوشتن تو پایتون!
موضوع ویدیو بعدی TypeState هست که عمیق تر به این ۵ خط کد میپردازم و یوزکیس های خیلی بیشتری رو میگم که خیلی کم میبینم تو یک سری کد ها رعایت شده این کانسپت به خوبی.
@ManiFoldsPython
خیلی وقتا غریزی اینکار رو انجام میدیم
خیلی وقتا هم انجام نمیدیم!مثل کسایی که لایبری firebase رو نوشتن تو پایتون!
موضوع ویدیو بعدی TypeState هست که عمیق تر به این ۵ خط کد میپردازم و یوزکیس های خیلی بیشتری رو میگم که خیلی کم میبینم تو یک سری کد ها رعایت شده این کانسپت به خوبی.
@ManiFoldsPython
🤓6👍1
Python BackendHub
اینم یک مثال دیگه که تو ویدیو بهش میپردازم. ایراد این کد چیست؟ @ManiFoldsPython
ایراداتی گرفتن از کد ولی هیچکس اشاره نکرد این کد امن نیست!
این کد میتونه به دلایل خیلی زیادی fail شه
اگه ایمیل واقعا ایمیل نباشه
اگه mime multipart خوب ساخته نشه
اگه noscript و content خالی باشن
اگه email client لاگین نشه
در نتیجه تجربه توسعه رو به شدت افت میده و باعث میشه وقتی کد بیستون خیلی بزرگ شد کدتون اسپاگتی بشه و هیچوقت حس خوبی موقع توسعه نداشته باشین.
حالا سوال اینجاست که چیکار میتونیم کنیم؟
این موضوع ویدیو بعدیه. حتما توصیه میکنم ببینید این ویدیو رو. این دیزاین پترنی که بهتون معرفی میکنم سبک کد زنی منو تغییر داده و چند باریم پست گذاشتم راجبش ولی شاید خیلی خوب بهش نپرداختم.
@ManiFoldsPython
این کد میتونه به دلایل خیلی زیادی fail شه
اگه ایمیل واقعا ایمیل نباشه
اگه mime multipart خوب ساخته نشه
اگه noscript و content خالی باشن
اگه email client لاگین نشه
در نتیجه تجربه توسعه رو به شدت افت میده و باعث میشه وقتی کد بیستون خیلی بزرگ شد کدتون اسپاگتی بشه و هیچوقت حس خوبی موقع توسعه نداشته باشین.
حالا سوال اینجاست که چیکار میتونیم کنیم؟
این موضوع ویدیو بعدیه. حتما توصیه میکنم ببینید این ویدیو رو. این دیزاین پترنی که بهتون معرفی میکنم سبک کد زنی منو تغییر داده و چند باریم پست گذاشتم راجبش ولی شاید خیلی خوب بهش نپرداختم.
@ManiFoldsPython
👍7
Python BackendHub
در قسمت هشتم پلی لیست دیزاین پترن تو این قسمت State Pattern رو بررسی کردیم, توضیح دادم که چرا این پترن خیلی خوبه و میتونه encapsulation تمیزی بهتون بده برای هر state از context و سیستمتون و البته گفتم چرا design pattern ناقصی هست و ضعفش چیه که مقدمه ای شد…
در قسمت نهم پلی لیست دیزاین پترن و مهم ترین قسمت این پلی لیست, پرداختم به دیزاین پترن Type State. پترنی که سبک کد نویسی من رو به شدت تغییر داد و هر روز ازش استفاده میکنم
مفاهیم زیر رو ابتدا توضیح دادم:
- Don't validate, parse!
- Type safe operations
و توضیح دادم چطور به صورت غریزی و ابتدایی از type state استفاده میکنیم. همینطور یوزکیس های خیلی بهتر و advance تر هم توضیح دادم و دلیل محبوبیت Pydantic هم توضیح دادم.
با Type state pattern کد هاتون به شدت باگ کمتری خواهند داشت پس اگه دوست دارین کمتر با باگ سروکله بزنید این ویدیو رو از دست ندید. حتما توصیه میشه قبل از دیدن این ویدیو, ویدیو قبلی راجب state pattern هم ببینید که ۱۰ دقیقه هست.
لینک ویدیو:
https://youtu.be/DwAQ6dm-Vn8
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
مفاهیم زیر رو ابتدا توضیح دادم:
- Don't validate, parse!
- Type safe operations
و توضیح دادم چطور به صورت غریزی و ابتدایی از type state استفاده میکنیم. همینطور یوزکیس های خیلی بهتر و advance تر هم توضیح دادم و دلیل محبوبیت Pydantic هم توضیح دادم.
با Type state pattern کد هاتون به شدت باگ کمتری خواهند داشت پس اگه دوست دارین کمتر با باگ سروکله بزنید این ویدیو رو از دست ندید. حتما توصیه میشه قبل از دیدن این ویدیو, ویدیو قبلی راجب state pattern هم ببینید که ۱۰ دقیقه هست.
لینک ویدیو:
https://youtu.be/DwAQ6dm-Vn8
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
YouTube
دیزاین پترن Type State - مهم ترین ویدیو دوره!
در قسمت نهم پلی لیست دیزاین پترن و مهم ترین قسمت این پلی لیست, پرداختم به دیزاین پترن Type State
مفاهیم زیر رو ابتدا توضیح دادم:
- Don't validate, parse!
- Type safe operations
و توضیح دادم چطور به صورت غریزی و ابتدایی از type state استفاده میکنیم. همینطور…
مفاهیم زیر رو ابتدا توضیح دادم:
- Don't validate, parse!
- Type safe operations
و توضیح دادم چطور به صورت غریزی و ابتدایی از type state استفاده میکنیم. همینطور…
❤7
Python BackendHub
در قسمت نهم پلی لیست دیزاین پترن و مهم ترین قسمت این پلی لیست, پرداختم به دیزاین پترن Type State. پترنی که سبک کد نویسی من رو به شدت تغییر داد و هر روز ازش استفاده میکنم مفاهیم زیر رو ابتدا توضیح دادم: - Don't validate, parse! - Type safe operations و توضیح…
دوستانی که ویدیو های اخیر رو دیدن خیلی ممنون میشم اگه نظرشون و فیدبکشون رو داشته باشم. وب کم گرفتم که تصویرم مستقیم باشه, صدا رو هم خیلی زیاد و باکیفیت تر کردم.
خیلیام نمیدونن من تاحالا چه محتواهایی تولید کردم.
دوره دیزاین پترن - ۹ قسمت منتشر شده. تقریبا ۱۵ قسمت دیگه ازش مونده. تصمیم گرفتم functional pattern و بقیه پترن هارو تو یک پلی لیست دیگه قرار بدم.
دوره تست نویسی - ۸ قسمت منتشر شده. ۱۰ قسمت دیگه باقی مونده
دوره رشد مسیر شغلی و اموزش رزومه نویسی - ۴ قسمت منتشر شده. ۲ قسمت دیگه باقی مونده
تلاشمو میکنم هفته ای ۱-۲ ویدیو بدم (جمعه تا یک شنبه).
هفته گذشته چون ویروس عجیبی گرفتم نبودم کلا :))
@PyBackEndHub
خیلیام نمیدونن من تاحالا چه محتواهایی تولید کردم.
دوره دیزاین پترن - ۹ قسمت منتشر شده. تقریبا ۱۵ قسمت دیگه ازش مونده. تصمیم گرفتم functional pattern و بقیه پترن هارو تو یک پلی لیست دیگه قرار بدم.
دوره تست نویسی - ۸ قسمت منتشر شده. ۱۰ قسمت دیگه باقی مونده
دوره رشد مسیر شغلی و اموزش رزومه نویسی - ۴ قسمت منتشر شده. ۲ قسمت دیگه باقی مونده
تلاشمو میکنم هفته ای ۱-۲ ویدیو بدم (جمعه تا یک شنبه).
هفته گذشته چون ویروس عجیبی گرفتم نبودم کلا :))
@PyBackEndHub
👍13👏5❤3🔥1
Python BackendHub
اینم یک مثال دیگه که تو ویدیو بهش میپردازم. ایراد این کد چیست؟ @ManiFoldsPython
کد به همچین شکلی تغییر کرد در نهایت که تو ویدیو توضیح دادم چه قدر فواید خوبی داره این سبک کد زدن:
این کد به شدت امنه و فقط به شرطی fail میشه که یا خط دوم (ساخت ایمیل) اتفاق نیفته و یا تو خط سوم یک دفعه مشکل کانکشن پیش بیاد (کلاینت لاگین شده تو constructorاش و کاملا type safe هست)
@PyBackEndHub
def send_email(client: MailClient, rec_addr: EmailString, noscript: str, content: str):
email = client.build_email_body(noscript, content, rec_addr)
client.send_emails([email])
این کد به شدت امنه و فقط به شرطی fail میشه که یا خط دوم (ساخت ایمیل) اتفاق نیفته و یا تو خط سوم یک دفعه مشکل کانکشن پیش بیاد (کلاینت لاگین شده تو constructorاش و کاملا type safe هست)
@PyBackEndHub
👍5👎2🤔2
اینم اضافه کنم Typestate به شدت بین rust developer ها محبوبه و توصیه میکنم بعد ویدیو مقاله زیر رو هم بخونید
https://cliffle.com/blog/rust-typestate/#what-are-typestates
@PyBackEndHub
https://cliffle.com/blog/rust-typestate/#what-are-typestates
@PyBackEndHub
👍6
