در قسمت هشتم پلی لیست دیزاین پترن
تو این قسمت 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
از شکوه sqlalchemy اینه که شما میتونید compiler ORM رو extend کنید و خودتون compiler کاملا کاستوم بنویسید که اصلا تو لایبری وجود نداشته. نکته خفن ترش اینه که میتونید تعیین کنید این کامپایلر کاستوم شما تو هر دیتابیس (مثلا pg یا sqllite) چطوری ران شه پس تستون رو همچنان بدون دوپلیکت کردن query ها رو sqllite ران کنید و به شدت سریعتر شه در عینه حال رو pg با استفاده از فانکشن های pg ران شه که پرفومنس بهتری داره.
واقعا این قابلیت عجیب ترین و خفن ترین چیزی بود که دیدم!
https://docs.sqlalchemy.org/en/20/core/compiler.html#synopsis
@PyBackEndHub
واقعا این قابلیت عجیب ترین و خفن ترین چیزی بود که دیدم!
https://docs.sqlalchemy.org/en/20/core/compiler.html#synopsis
@PyBackEndHub
🔥8🤔2👍1
قول هفته ای دو ویدیو رو دادم. یک ویدیو اش میپردازم به دیزاین پترن. ویدیو دومو پیشنهاد بدین چه چیزی کار کنم تو کامنتا 👇👇 بعدش رای گیری میذارم بین گزینه ها.
تو ذهن خودم این پیشنهادا هست:
۱. انجام coding assigment های مصاحبه ها
۲. دوره faststream لایبری event streams با بروکر های مختلف
۳. دوره cloud instrumentation با opentelemetr
۴. دوره تایپ هینت و تایپینگ در پایتون
@PyBackEndHub
تو ذهن خودم این پیشنهادا هست:
۱. انجام coding assigment های مصاحبه ها
۲. دوره faststream لایبری event streams با بروکر های مختلف
۳. دوره cloud instrumentation با opentelemetr
۴. دوره تایپ هینت و تایپینگ در پایتون
@PyBackEndHub
👍3🔥2❤1
یک نظر سنجی میذارم. فقط یک جمع بندی میکنم قبلش:
۱. دوره اول احتمالا چند اپلیکیشن پایتونی (fastapi یا اپ های مختلف پایتونی لزوما میتونه استریم نباشه)مینویسم. که هر کدوم خودشون coding assigment یک شرکت برای backend engineer هست. سطح دوره نسبتا بالا خواهد بود. (حدودا ۵-۱۰ قسمت)
۲. یک لایبری هست که کارش اینه که کارتونو با بروکر راحت تر کنه. تو دوره سعی میکنم این لایبری رو استفاده کنم و باهاش اپ استریم پایتونی بنویسیم. (شبیه سلری ولی یوزکیسش فرق میکنه کمی. سلری تسک منیجره ولی این streamer هست). سطح دوره متوسط خواهد بود. (حدودا ۱۰-۱۵ قسمت)
۳. دوره ای که opentelemtry رو باهم دوره میکنیم. بست پرکتیس های instrumentation یک اپ wsgi یا asgi یا استریمینگ پایتونی رو بررسی میکنیم. و یک نمونه پیاده میکنیم مثلا یک فروشگاه اینترنتی که فعالیت کاربر داخلش کاملا instrument شده باشه.سطح دوره نسبتا بالا خواهد بود. (حدودا ۱۰-۱۵ قسمت)
۴. اگه پایتون کد میزنید و از تایپینگش خوب استفاده نمیکنید این دوره برای شماست. دوره ای که سری میزنیم به ماژول typing پایتون. با کل ماژول آشنا میشیم. با چند لایبری stdlib مثل دیتا کلس و چند لایبری external مثل pydantic آشنا میشیم و تخصصی بهشون میپردازیم. سطح دوره متوسط خواهد بود. (حدودا ۱۰-۱۵ قسمت)
@PyBackEndHub
۱. دوره اول احتمالا چند اپلیکیشن پایتونی (fastapi یا اپ های مختلف پایتونی لزوما میتونه استریم نباشه)مینویسم. که هر کدوم خودشون coding assigment یک شرکت برای backend engineer هست. سطح دوره نسبتا بالا خواهد بود. (حدودا ۵-۱۰ قسمت)
۲. یک لایبری هست که کارش اینه که کارتونو با بروکر راحت تر کنه. تو دوره سعی میکنم این لایبری رو استفاده کنم و باهاش اپ استریم پایتونی بنویسیم. (شبیه سلری ولی یوزکیسش فرق میکنه کمی. سلری تسک منیجره ولی این streamer هست). سطح دوره متوسط خواهد بود. (حدودا ۱۰-۱۵ قسمت)
۳. دوره ای که opentelemtry رو باهم دوره میکنیم. بست پرکتیس های instrumentation یک اپ wsgi یا asgi یا استریمینگ پایتونی رو بررسی میکنیم. و یک نمونه پیاده میکنیم مثلا یک فروشگاه اینترنتی که فعالیت کاربر داخلش کاملا instrument شده باشه.سطح دوره نسبتا بالا خواهد بود. (حدودا ۱۰-۱۵ قسمت)
۴. اگه پایتون کد میزنید و از تایپینگش خوب استفاده نمیکنید این دوره برای شماست. دوره ای که سری میزنیم به ماژول typing پایتون. با کل ماژول آشنا میشیم. با چند لایبری stdlib مثل دیتا کلس و چند لایبری external مثل pydantic آشنا میشیم و تخصصی بهشون میپردازیم. سطح دوره متوسط خواهد بود. (حدودا ۱۰-۱۵ قسمت)
@PyBackEndHub
❤🔥6👍2
کدوم دوره به نظرتون براتون مفید تره؟
Final Results
36%
انجام coding assignment
18%
دوره فست استریم
14%
دوره opentelemetry
33%
دوره آشنایی با تایپینگ و تایپ هینت در پایتون
Python BackendHub
کدوم دوره به نظرتون براتون مفید تره؟
با توجه به نتیجه نظرسنجی coding assignment رو انتخاب میکنم و باهم چالش چند شرکت رو انجام میدیم. Record این دوره از ۳ هفته آینده شروع میشه تا تو این مدت دوره تست هم به انتها برسه.
اگه چالش مصاحبه ای داشتین که براتون جالب بوده ممنون میشم با من اشتراک بذارین تا ایده بگیرم.
@Mani_nikou
@PyBackEndHub
اگه چالش مصاحبه ای داشتین که براتون جالب بوده ممنون میشم با من اشتراک بذارین تا ایده بگیرم.
@Mani_nikou
@PyBackEndHub
❤9👍9
نمیدونم چرا مغزم قفل شده
۱. موقع ریکورد ویدیو یادم میره صدا میکروفونو بیشتر کنم. برای همین باید دوباره ظبط کنم. و این باره ۳امه این دوهفته این اتفاق واسم میفته
۲. هنوزم وقتی پست میذارم تو کانال به جای @PyBackEndHub از @ManifoldsPython استفاده میکنم:)) . همه پستا ادیت خورده سره همین موضوع :))
@PyBackEndHub
۱. موقع ریکورد ویدیو یادم میره صدا میکروفونو بیشتر کنم. برای همین باید دوباره ظبط کنم. و این باره ۳امه این دوهفته این اتفاق واسم میفته
۲. هنوزم وقتی پست میذارم تو کانال به جای @PyBackEndHub از @ManifoldsPython استفاده میکنم:)) . همه پستا ادیت خورده سره همین موضوع :))
@PyBackEndHub
😁13❤2🤔2
Python BackendHub
نمیدونم چرا مغزم قفل شده ۱. موقع ریکورد ویدیو یادم میره صدا میکروفونو بیشتر کنم. برای همین باید دوباره ظبط کنم. و این باره ۳امه این دوهفته این اتفاق واسم میفته ۲. هنوزم وقتی پست میذارم تو کانال به جای @PyBackEndHub از @ManifoldsPython استفاده میکنم:)) . همه…
این ffpmeg چقدر خوبه :))
صداتون کمه؟ زیادش کنید
https://ffmpeg.org/ffmpeg-filters.html#Commands-53
ffmpeg -i input.mp4 -c:v copy -af "volume=10dB" output.mp4
نویز داره صداتون؟ نویز رو بگیرین
https://ffmpeg.org/ffmpeg-filters.html#afftdn
ffmpeg -i input.mp4 -c:v copy -af "afftdn=nr=20" output.mp4
چقدر فیچر داره!
@PyBackEndHub
صداتون کمه؟ زیادش کنید
https://ffmpeg.org/ffmpeg-filters.html#Commands-53
ffmpeg -i input.mp4 -c:v copy -af "volume=10dB" output.mp4
نویز داره صداتون؟ نویز رو بگیرین
https://ffmpeg.org/ffmpeg-filters.html#afftdn
ffmpeg -i input.mp4 -c:v copy -af "afftdn=nr=20" output.mp4
چقدر فیچر داره!
@PyBackEndHub
🔥10👍2🎃1💅1
در قسمت دهم پلی لیست دیزاین پترن
تو این قسمتChain of Responsibility رو بررسی کردیم. یک مثال پروداکشنی با کد بویلرپلیت هم نمایش دادم که نسبتا مثال پیچیده ای بود تا واقعا یوزکیس این دیزاین پترن رو درک کنید. در نهایت به نقاط ضعف و قوت این دیزاین پترن پرداختیم. اگه سوالی داشتین حتما زیره ویدیو کامنت کنید. برای حمایت ممنون میشم سابسکرایب کنید و داخل گیتهاب استار بدین به ریپو.
لینک ویدیو:
https://youtu.be/F0YyisF7Hq4
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
تو این قسمتChain of Responsibility رو بررسی کردیم. یک مثال پروداکشنی با کد بویلرپلیت هم نمایش دادم که نسبتا مثال پیچیده ای بود تا واقعا یوزکیس این دیزاین پترن رو درک کنید. در نهایت به نقاط ضعف و قوت این دیزاین پترن پرداختیم. اگه سوالی داشتین حتما زیره ویدیو کامنت کنید. برای حمایت ممنون میشم سابسکرایب کنید و داخل گیتهاب استار بدین به ریپو.
لینک ویدیو:
https://youtu.be/F0YyisF7Hq4
لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد:
https://github.com/ManiMozaffar/design-101
@PyBackEndHub
❤8👍3
