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
من کلی نشستم خوندم چطور exporter ها کار میکنن و push gateway ها چطورین و چطوری exporter بنویسیم تو prometheus
با کلی ذوق اومدم کار کنم ولی دیدم واسه هرچی که فکرشو میکنم exporter نوشتن و هر metricای که میتونم بهش فکر کنم ازش میگیرن, خیلی خورد تو ذوقم :))))

چند تا exporterای که استفاده کردم
Redis: https://github.com/oliver006/redis_exporter
FastAPI: https://github.com/trallnag/prometheus-fastapi-instrumentator
PostgreSQL: https://github.com/prometheus-community/postgres_exporter

خوده kludex هم یک داشبورد نسبتا خوب داره رو فست:
https://github.com/Kludex/fastapi-prometheus-grafana

برای postgresql و ردیس البته داشبورد های خیلی بهتری هست:
https://grafana.com/grafana/dashboards/11835-redis-dashboard-for-prometheus-redis-exporter-helm-stable-redis-ha/

https://grafana.com/grafana/dashboards/9628-postgresql-database/

@ManiFoldsPython
👍31😁1
دیروز چند تا دیتابیس ادمین هم تست کردم. که یک چیزی مثل جنگو ادمین داشته باشم ولی سوار رو دیتابیس
تک تک پست میذارم توضیحشون میدم

اینارو تست کردم من دیروز:
Motor Admin -> خیلی ساده و کاربردی بود
خیلی فیچر نداره ولی واقعا setup راحتی داره. پیچیدگی خیلی کمی داره و پیجینشن داره و اکشن هم میتونید تعریف کنید و form داره.. تقریبا میشه گفت عینه جنگو ادمینه

https://github.com/motor-admin/motor-admin

@ManiFoldsPython
🔥2👍1
این یکی metabase بود. خیلی فیچر های خفنی داشت و مثلا لیست و صفحه خودش خودکار جنریت میکرد! خیلی حال کردم باهاش منتهی یک مشکل بزرگ داشت و اونم اینه که لیمیت های احمقانه داشت. مثلا pagination پیدا نکردم من داشته باشه یا مثلا بیشتر از ۱ میلیون row رو نمیتونی دانلود کنی یا بیشتر از ۲۰۰۰ تا row رو نمیتونی ببینی... .
نمیدونم شایدم من کار باهاش رو بلد نبودم داکشم درست حسابی نبود

https://github.com/metabase/metabase
@ManiFoldsPython
👍1
اخرین چیزی که تست کردم appsmith بود
عجیب سنگین بود. ۴ تا کور میخواست و ۸ گیگ رم فقط واسه بالا اوردنش. ۳ تا دیتابیس و nginx کنارش بالا میاورد😂
واترمارکش میخورد رو همه صفحه هایی که میساختین باهاش. همه کار میکرد فقط نمیرفت سره کوچه نون بگیره .خیلی میشد کاستومایزش کرد.
ولی دو مشکل بزرگ داشت:
۱. خیلی خیلی ست آپش زمان میبرد. فکر کنید مثلا واسه داشتن یک list view از دیتابیس باید میومدین تک تک element های صفحه رو براشون action تعریف میکردین و لینکش میکردین به دیتابیس و sql. یا مثلا باید میگفتین این دکمه رو کلیک کنی یک modal باز شه و ... .
۲. منابع زیادی که میگرفت...
خیلی خفن بود ولی اینجا مناسب case من نبود چون حوصله و زمان زیادی میخواست کار کردن باهاش. بنظرم اگه تو شرکت میخواین یک ابزاری داشته باشین که مثلا ui ux کارتون باهاش اپلیکیشن بزنه حتما یک سر به این تولز جذاب بزنید.

https://github.com/appsmithorg/appsmith

فقط پلاگین هاشو ببینید که تو اسکرین شات گذاشتم :))))

@ManiFoldsPython
👍2
کنار تست نویسی میخوام یک دوره دیگه هم تو youtube ببرم جلو همزمان باهاش, این چهار دوره مد نظرمه. کدوم رو ترجیح میدین؟ ‌تو نظر سنجی میذارم:

۱. دوره cutting edge tools:‌ تو این دوره با ابزار و فریم ورک های جدید آشناتون میکنم و باهم رو لبه تکنولوژی راه میریم :)))

۲. دوره design patterns

۳. دوره Neat Python که بررسی میکنم چیزایی که ممکنه ازش به خوبی استفاده نکنید مثل دیتاکلس و pydantic و namedtuple و ...

@ManiFoldsPython
👏9🔥2
کدوم دوره رو بیشتر میپسندین؟
Final Results
12%
Cutting Edge Tools
65%
Design Patterns Deep Dive
23%
Neat Python
در راستای دوره neat ptyhon یک سوال هم میپرسم که جوابشو کامنت کنید اگه بلدین:

کجا از دیتاکلس frozen استفاده میکنیم؟ و کجا از namedtuple؟ بنظر میاد جفتشون یکین,نه؟ (قطعا نه 😂)
‌پس چه فرقی دارن use case هاشون؟🤔

@ManiFoldsPython
👍4
من یک رودمپ خیلی وقت پیش برای کانال یوتیوب فرستاده بودم که کمو بیش دارم طبق اون میرم ولی قبلا گفه بودم قصد دارم دوره فست بگیرم و اصلا هدفم از اولین دوره یوتیوبم همین بود, ولی حقیقتا پشیمون شدم. دلیلش اینه که یاد گرفتن فست کلا ۱-۲ هفته بیشتر زمان نمیبره و خیلی راحته. بقیش میشه نحوه کد نوشتن. شما اگه کد نویس خوبی باشین فست یا فلسک یا جنگو براتون فرقی نداره, بازم کدای maintainable مینویسید. حالا ممکنه مثلا زحمتتون تو یک فریم ورک بیشتر شه چون مثلا فلان چیزو ساپورت نمیکنه. اما فریموکر اگه باشین فقط محدودین به اون فریم ورک. بنابراین سعی میکنم مطالب کانال یوتیوبم رو محور فریم ورکی نچرخه. مثلا تست نویسی اگه قسمت اخرو دیده باشین Depends فستو بررسی کردیم و از ویدیو های بعدی کلا از فست استفاده نمیکنیم.

@ManiFoldsPython
👍7
سلام مجدد مانی هستم, در کناره دوره تست نویسی تصمیم گرفتم ریکورد دوره Design Pattern هارو هم شروع کنم. در دوره شیرجه عمیق در دیزاین پترن ها, قراره ۵۱ قسمت راجب دیزاین پترن صحبت کنیم و کد بزنیم و دیزاین پترن هارو باهم تمرین کنیم و درکشون کنیم🤝

در اولین ویدیو از پلی لیست پرداختم به معنی لغوی دیزاین پترن, تاریخچه دیزاین پترن رو توضیح دادم و گفتم چرا بهتره دیزاین پترن هارو یاد بگیرین, و در آخر قراره مباحث و پترن هایی که قراره تو دوره کاور شن رو نمایش دادم. اگه سوالی یا فیدبک یا پیشنهادی داشتین حتما کامنت کنید زیر ویدیو

https://www.youtube.com/watch?v=8IyWT2TU45M&list=PLEQ3RnweNGA5XLLANrPl5erS90EREs0F0&index=2

تشکر از عرفان بابت ساخت کاور دوره 🙌
@ManiFoldsPython
32👍8🔥3🍌2
Python BackendHub
سلام مجدد مانی هستم, در کناره دوره تست نویسی تصمیم گرفتم ریکورد دوره Design Pattern هارو هم شروع کنم. در دوره شیرجه عمیق در دیزاین پترن ها, قراره ۵۱ قسمت راجب دیزاین پترن صحبت کنیم و کد بزنیم و دیزاین پترن هارو باهم تمرین کنیم و درکشون کنیم🤝 در اولین ویدیو…
Unpopular opinion: You don't need classes to write a good code!

کلا چیزی که درک نمیکنم اینه که چرا اکثرا دیزاین پترن رو با شی گرایی اشتباه میگیرین, درسته مباحثی که مثلا تو کتاب GoF گفته شده شی گراییه ولی دلیل نمیشه این دوتا دقیقا عینه هم باشن. من تو این دوره به دیزاین پترن هایی میپردازم که تو فانکشنال پروگریمنگ مثل haskell استفاده میشه. هدف دیزاین پترن اینه که شما مغزتون باز شه و بتونید از یک سری سولوشن reusable به جای درست استفاده کنید. پس اگه فقط ملاکتون رو بذارین رو OOP نتیجش و کورکورانه دنبال کردن نتیجش این میشه که فانکشنی نمینویسید و کدتون تبدیل به یک کد OOP به شدت پیچیده میشه.

مثال میخواین؟
https://github.com/ManiMozaffar/fast-student/tree/main/fast_acl/acl
کل ACL ای که من تو اون دوره تعریف کردم از یک کلس هم استفاده نکردم توش! (به جز enum) و بنظرم به شخصه خیلی کد maintainable ای بود. توش از استراتژی پترن و ریپازیتوری پترن و Postel's law استفاده کردم.

کتابایی که مطالبو ازشون میگیرم:
design patterns: elements of reusable object-oriented software
dive into design patterns (refactoring guru)
https://www.youtube.com/watch?v=srQt1NAHYC0
https://www.youtube.com/watch?v=E8I19uA-wGY

@ManifoldsPython
👍14👎2
https://youtube.com/playlist?list=PLpPXw4zFa0uKKhaSz87IowJnOTzh9tiBk&si=-qw3jGBt84KXhkbS

یک پلی لیست خیلی عالی در مبحث ساختمان داده

@ManiFoldsPython
8
وقتی دارین JWT رو خودتون مینویسید چند تا سوال از خودتون بکنید

۱. آیا توکن سمت مرورگر یا کلا کلاینت جایی غیر از کوکی ذخیره میشه؟ یا کلا جای نا امن(مثل لوکال استوریج)
۲. آیا اتک CSRF ممکنه بخورم؟
۳. آیا یک رفرش توکن میتونه چند بار استفاده شه؟
۴. آیا کاربر نمیتونه لاگ اوت کنه؟
۵. آیا وقتی کاربر رمزشو ریست میکنه بقیه رفرش توکن هایی که با رمز قبلی بودن اکسپایر نمیشن؟
۶. ایا اصل و benefit خوده JWT رو نقض کردم؟ (مثلا با هر درخواست هیت میزنم به دیتابیس؟ و sateful هست؟)
۷. آیا دیتایی که تو رفرش توکن یا اکسز توکن هست رو یک نفر دیگه به جز کاربر ببینه میتونه باهاش دسترسی خاصی بگیره؟‌(فرضا توکن اسکپایر شده خوده دیتا رو میگم)
۸. ایا SECRET KEY من ثابته و roate نمیشه؟
۹. آیا برای منیج Env variable هام دارم از .env استفاده میکنم؟
۱۰. آیا طول عمر اکسز توکنم زیاده؟

اگه جواب یکی از این سوالا آره باشه, یعنی سیستم احراز هویتتون vulnerability داره. اگه جواب سوال ۶ آره باشه یعنی ماهیت JWT رو درک نکردین.من معمولا یک extension دارم رو مرورگرم که کوکی و لوکال استریج و سشن استوریج رو نشون میده و این مورد رو تو سایتای ایرانی بررسی کنید متاسفانه حتی سایت های خیلی معروفم اینا رو رعایت نمیکنن و همین باعث میشه که این فاجعه ها پیش بیاد در حالی که تو سایتای خارجی اکثرا میبینم این موارد رعایت شده.

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

@ManiFoldsPython
🔥21👍4👾3👏2
Joke: we don't need frontend framework to build a HTML table dynamically😎

@ManiFoldsPython
🗿2
کیفیت یک دیزاین خوب:

High Reusability
High Readability
High Testability
High Flexibility

اینو درنظر داشته باشین برای ادامه دوره دیزاین پترن. تمام هدف ما همینه که کدمون تو چهارچوب این چهار مورد باشه.

@ManiFoldsPython
👌22🤡4🤮2😁1
در ادامه دوره دیزاین پترن ها, دو ویدیو منتشر کردم/ جمع بندی از OOP کردیم که در ادامه دوره با کلمه هایی که استفاده میشه آشنایی کامل داشته باشین
تو این ویدیو پرداختم به مفاهیم ارث بری و hierarchies و مثال زدم و کاربردشون رو توضیح دادم

https://www.youtube.com/watch?v=2N-d_s1Lvqc&list=PLEQ3RnweNGA5XLLANrPl5erS90EREs0F0&index=2

تو ویدیو بعدی پرداختم به Abstraction و Encapsulation و Polymorphism و مجددا مثال زدم که کدمون بدون رعایت این موارد چطور میشد و بعد از رعایتشون چطور شد و کاربردشون کجاست؟

https://www.youtube.com/watch?v=jvXn8VcJPNY&list=PLEQ3RnweNGA5XLLANrPl5erS90EREs0F0&index=3

سوالی داشتین حتما کامنت کنید زیر ویدیو.

@ManiFoldsPython
👍43👏1
این مدت پیام‌های زیادی رو میگرفتم که بچه‌ها میپرسیدن در ایران که دسترسی به AWS نداریم، چطور AWS رو یاد بگیریم؟

توی این ویدیو ۱۰ روش مختلف رو توضیح دادم که برای یادگیری AWS در ایران میتونید استفاده کنید و خودم هم زمانی که در ایران بودم از همین روش‌ها استفاده کردم برای یادگیری AWS و سرویس دهنده‌های کلاد، امیدوارم کمک کننده باشه.

🖥 مشاهده در یوتوب
👉 Link: https://youtu.be/WXwZ33Ntss8?si=9EeCKzjaaWV0vx2y

#AWS #Cloud
〰️〰️〰️〰️〰️〰️
@BobyDotCloud
🔥86👍1