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
Python BackendHub
بنظر شما یک وب هوک رندوم اطلاعات رو چطور آپدیت میکنه
خب برگردیم جواب quiz
اگه بخوایم Theory به قضیه نگاه کنیم همونی میشه که من گذاشتم
ولی اگه بخوایم عملی به قضیه نگاه کنیم inconsistent میشه جوابش!

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

ببینید وقتی دیتا سورس از کنترلتون خارجه وب هوک میتونه بهترین گزینه integrate باشه. یعنی مثال مثالی که زدم برای آپدیت وضعیت هوا اگه به جای اینکه شما تند تند درخواست بدی به API و وضعیت رو بگیرین با وب هوک مطلع بشین کی درخواست بزنید بهتره. ولی بازم Strong consistence نیست معمولا. چرا؟ چون معمولا اینطوری کار میکنه که تلگرام مثلا یک پیام میفرستید شما به دوستتون, همون لحظه پیام رو تو دیتابیس ایجاد میکنه. بعد تو لایه پایین تر با بروکرش جاب های دیگه رو هم انجام میده مثل ارسال نوتیفیکشن به گوشی دوستتون یا هندل وب هوک اگه پیامی دریافت شده. پس ذخیره شدن پیام تو دیتابیس و مطلع شدن شما از اون پیام همیشه تاخیری وجود داره. ولی این تاخیر معمولا کمه (اگه مشکل backlog نباشه و ترافیک خیلی بالا نباشه تو سرور تلگرام) در صورتی که شما اگه درخواست بزنید تند تند بازم eventual consistent هست ولی خیلی eventual تره و با تاخیر بیشتریه نسبت به وب هوک.

ولی وب هوک چون eventually inconsistent هست پس همیشه باید یک periodic job بذارین که پیام هایی که دریافت نشدن تو وب هوک رو به صورت periodic چک کنید و ببینید ایا چیزی miss شده یا نه؟ مثلا این periodic job میتونه روزانه باشه یا ساعتی یا هفتگی بسته به نیاز شما. اینکه چقدر یک وب هوک eventually inconsistent هست هم خیلی مهمه. شما باید یک تست کنید قبل اینکه یک webhook رو کاملا integrate کنید. چطوری تست کنید؟‌مثلا ۱۰۰۰ تا پیام بدید به دوستتون و ببینید ایا ۱۰۰۰ تا درخواست گرفتین رو وب هوک یا نه؟‌
همیشه گفتم تو دپندسی خیلی دقت کنید. یک اشتباه رایج اینه که میرن کلی با وب هوک یک اپ integrate میکنن بعد میفهمنن خیلی inconsistent هست و لگ زیادی داره و درواقع اگه تند تند درخواست زده شه بهتره.

@ManiFoldsPython
👍10🔥1
سیستم دیزاین به عنوان بک اند دولوپر برای شما مهمه.
بحث های چند پست اخر کاربردش میشه مثلا وقتی دارین ربات تلگرام مینویسین یا درگاه بانکی دارین اتصال میکنید یا با third party application دارین integration انجام میدین. حتما یکی از این کارا رو انجام دادین اگه حداقل ۱ ساله که کار میکنید .... 🙂

@ManiFoldsPython
👍17
دو کتاب خوب برای سیستم دیزاین:

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems - Kleppmann, Martin

System Design Interview – An insider's guide

بالایی خوندم. پایینی رو هم به زودی سفارش میدم و میخونم 😁 تعریفشو خیلی شنیدم.
@ManiFoldsPython
👍165
از وقتی تلگرام آپدیت داده Similiar Channels اش واقعا زیاد ممبر میاره. جالبه...

@ManiFoldsPython
👍37
Forwarded from shahriaarrr
خب این سری یه نفر تونست مهمون ایندفعه رو حدس بزنه :)

مهمون بعدی کیبوردکست کسی نیست جز مانی مظفر عزیز🔥🔥

مانی مهندس نرم افزار در Noah lab هست و تمرکزش روی بک اند و فریمورک FastAPI میباشد.🚀🚀

توی این اپیزود قراره با مانی در دنیای FastAPI غرق بشیم و اطلاعات بیشتری ازش بدست بیاریم ببینیم این فریمورک که هنوز وارد ورژن 1.0 خودش نشده چطور در این مدت کلی طرفدار پیدا کرده و مزیت و عیبش نسبت به دیگر رقیبانش چیه🔥

پس اگه تو هم علاقه به حوزه بک اند و خصوصا این فریمورک علاقه داری یا دوست داری بیشتر باهاش آشنا بشی این اپیزود مال خودته👌👌

پس شما هم اگه سوالی دارید از مانی عزیز درباره خودشون و موضوع پادکست میتونید تا فردا همین ساعت توی باکس استوری اینستاگرام ازش بپرسید❤️

اگر هم به اینستاگرام دسترسی ندارید میتونید از طریق این لینک بصورت ناشناس توی تلگرام سوالتون رو بپرسید((حتما قید کنید که سوال رو از احسان دارید میپرسید))
-------
@shahriaarrr12
@manifoldspython
😍6👍4
آف تاپیک

واقعا آهنگ قشنگیه
https://www.youtube.com/watch?v=UboPPTZLFas

آهنگ بی‌کلامه.. برای تمرکز خیلی خوبه به شرطی که داستان پشتشو ندونید :))

@ManiFoldsPython
👍2👎1
https://www.youtube.com/watch?v=yD2JaAnMMo0

این ویدیو prime خیلی خوب بود :)) حتما توصیه میکنم که ببینید
اتفاقا امروز برام سوال شده بود چطور گوگل میتونه ۱۰ درصد شرکتو یک دفعه اخراج کنه و بلایی سرش نیاد؟ بعد دیدن این ویدیو جوابشو فهمیدم

@ManiFoldsPython
👍5
اسنپ فود داره افتخار میکنه دیتایی که نداشته تو دیتابیسش هک نشده 😂
@ManiFoldsPython
🤣45👏2
Python BackendHub
اسنپ فود داره افتخار میکنه دیتایی که نداشته تو دیتابیسش هک نشده 😂 @ManiFoldsPython
بعضیا میگن هک داخلی بوده بعضیا میگن زیرساخت رو زدن و ... . خلاصه من خبر معتبری ندیدم ولی

چند وقت پیش این ویدیو رو معرفی کرده بودم و گفته بودم ببینید...
https://youtu.be/LxUAnZY_08o?si=iD2nvFhyJwmEJ6Do

هنوزم همینو میگم... امنیت فقط باگ بانتی و هانت نیست... دنیای امنیت باید قابل درک باشه برای چه کسی که فرانت کاره چه کسی که بک کار میکنه چه کسی که نتورک کار میکنه.. طبیعتا سطح عمقشون باید نسبت به خودشون باشه ولی اینکه بدونن boundary چیه خیلی مهمه! شما تو هر اپی و هر دیتابیسی تا زمانی که e2e واقعی نیست میتونی ادعا کنی بالاخره یک نفر هست کل دیتا رو داره.. پس بالاخره یک راه هک اجتماعی چیزی وجود داره... ولی بحث اینجاست که اون boundary و مرز رو شما کجا میکشی؟ آیا اصلا مطلع هستی همچین چیزی وجود داره؟

توصیه میکنم حتما این ویدیو رو ببینید تا دیدتون نسبت به امنیت تغییر کنه...

@ManiFoldsPython
👍10
پس از وقفه ای, در پنجمین قسمت از ویدیو دیزاین پترن...

تو این قسمت راجب ‍دیزاین پترن Abstract Factory صحبت کردم و مثال با کد زدم, گفتم کجا و چقدر میتونه استفاده شه و کاربردش چیه و مزایا و معایب استفاده ازش چیه؟ یک دیزاین پترنی که میتونه اینترفیس خیلی جذاب به ما بده ولی پیچیدگی کد مارو زیاد کنه!

https://www.youtube.com/watch?v=_XiEQ6ns-js

لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد.
https://github.com/ManiMozaffar/design-101

@ManiFoldsPython
11👍9
امروز به یک باگ خوردم.. شاید عجیب ترین باگ زندگیم بود. از بیرون بنظر میومد لیست پایتون و ساخت آبجکت تو پایتون کار نمیکنه :)))


کلاسا اینقدر بی معنی نبودن:)) ولی خب امیدوارم مثالو درک کنید, و داشتم به python کم کم شک میکردم :))
فکر کنید یک لیستی از ابجکت ساخته بودم داخلش کلی تایپ مختلف داشتم و بعد خط بعدی که pointer رو میذاشتم میدیدم همشون یک تایپ شدن!! و یک آبجکت 🤣

*‌ خروجی کد رو تو شل ببینید و اونی که هایلایت کردم. لیست یک ادمین داشت تو کد ولی تو خروجی همه لیست آبجکت ادمین شدن!
@ManiFoldsPython
👍5
Python BackendHub
امروز به یک باگ خوردم.. شاید عجیب ترین باگ زندگیم بود. از بیرون بنظر میومد لیست پایتون و ساخت آبجکت تو پایتون کار نمیکنه :))) کلاسا اینقدر بی معنی نبودن:)) ولی خب امیدوارم مثالو درک کنید, و داشتم به python کم کم شک میکردم :)) فکر کنید یک لیستی از ابجکت ساخته…
دلیلش defensive programming هست که با try except احتمالا pydantic داره سعی میکنه schema رو بسازه...
و خب چون ابجکت ادمین ورودی نداره پس همیشه ساخته میشه بدون اینکه نیاز به kwargs داشته باشه و هیچوقت به اکسپشن نمیخوره با هر نوع ورودی ای.

پس یک وقتا بهتره آبجکتو parse کنیم و این جمله همیشه صد در صد درست نیست:

ask for forgiveness than permission

یک وقتا بهتره parse کنیم و permission بگیریم. چون ممکنه اصلا خطا نگیریم در صورتی که خروجی که میخواستیم رو نداد برناممون!
@ManiFoldsPython
👏6🤯4👍1
بعد هفت ماه نامه ریجکتی من اومد از یک شرکت که اپلای کرده بودم:)))
@ManiFoldsPython
🍌7🤔2
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند.

اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!

این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂

@ManiFoldsPython
👍261
من خیلی وقتا میشنوم که بازار اروپا خرابه و فلان... درستم هست ولی بازم خیلی شغل زیاده یعنی ادم متخصص من نمیبینم بیکار باشه. اکثر کسایی که میبینم کار پیدا نمیتونن کنن چند دلیل داره;

اولین دلیل آنبوردینگ سختیه که میتونن داشته باشن
۱. انگلیسی خیلی خوب حرف نمیزنن معمولا
۲. با ابزار ها و استک ها آشنایی ندارن مثل AWS یا مخصوصا devops ها که کلا همه چیشون فرق میکنه با ایران
۳. ویزا نیاز دارن که خودشم ۲-۳ ماه طول میکشه اوکی شه

چیکار کنیم؟‌سعی کنید این معایب رو تا جایی که میشه برطرف کنید,

۱. انگلیسیتونو قوی تر کنید. کتاب بخونید مقاله بخونید. مثلا من سره کار یکی از همکارام با وجود اینکه native نیست ولی دایره لغت خیلی خوبی داره و حتی از اون native ها هم بهتر حرف میزنه
۲. کورس آنلاین و کتاب بخونید که باهاشون آشنا شین. برین ترکیه یا کشور های همسایه امتحان بدین مدرک هاشو بگیرین. مثل مدارک aws یا gitlab یا hashicorp
۳. حضور فیزیکی اگه داشته باشین
۴. سعی کنید حتی بتونید ریموت قانونی کار کنید (طبق پست بالا) تو مدتی که نمیتونید حضوری باشین. اینم میتونه آپشن خیلی خوبی باشه که شرکت بگه خوب من حالا که قراره اینو بگیرم و چدن ماه دیگه بهم اضافه شه حداقل تو این چند ماهم دورادور کار کنه و بتونه با شرکت و پروداکت آشنا شه و کاملا آنبورد شه.


دومین دلیلشم نداشتن زرومه استاندارد و خوبه که راجبش ویدیو record کردم و ریپو گیتهاب دارم اگه ندیدین توصیه میکنم دوره اش رو از کانال یوتیوبم ببینید, تو بیو کانال هست.

و اخرین فاکتور هم نداشتن مهارت کافیه. مهارت هایی مثل تست نویسی, مثل کد خوب نوشتن, مثل مصاحبه خوب دادن و غیره.

البته اینا به این معنی نیست که نمیتونید از ایران مهاجرت کنید. صرفا این پست واسه این بود که یکم از تجربیاتمو به اشتراک بذارم که بتونید راحت تر مهاجرت کنید.

@ManiFoldsPython
👍39👌2
تا بحث داغه یک نکته هم اضافه کنم نحوه اپلای کردن خیلی خیلی مهمه.

راز خودمو بهتون میگم 😁که ربات لینکدینمم اینطوری کار میکرد.

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

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

۲. بر اساس most recent سورت کنید. تو فیلترتون بذارین یک روز اخیرو نشون بده.

۳. حالا تو get parameters لینک سرچتون ببینید‌(رو خوده مرورگر هست). یک parameter هست به اسم f_TPR=r86400. خب این یعنی چی؟‌یعنی ۱ روز اخیر اخیر. یعنی 60*60*24*7. خب پس اینو میتونید کمتر کنید. مثلا میتونید بذارین رو r3600. اگه بذارین رو r3600 کل آگهی هایی که یک ساعت گذشته گذاشته شدن رو بهتون نشون میده.

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

@ManiFoldsPython
👍32🔥91
کورس کانتنت رو به این شکل تغغیر دادم که زودتر برم به جلسه ۱۰ و ۱۱ چون خیلی مهمن...

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

@ManiFoldsPython
18👍7🙏1
چند وقتیه اینکارو انجام میدم خیلی سره حالم :))
@ManiFoldsPython
🤣34👍3
Python BackendHub
پس از وقفه ای, در پنجمین قسمت از ویدیو دیزاین پترن... تو این قسمت راجب ‍دیزاین پترن Abstract Factory صحبت کردم و مثال با کد زدم, گفتم کجا و چقدر میتونه استفاده شه و کاربردش چیه و مزایا و معایب استفاده ازش چیه؟ یک دیزاین پترنی که میتونه اینترفیس خیلی جذاب…
در ششمین قسمت از ویدیو دیزاین پترن...


تو این ویدیو پرداختم به Builder design pattern که داخل ORM ها یا GUI framework ها مشابهش استفاده شده و حتما تاحالا دیدین. پترنی جذاب ولی پیچیده برای ساخت یک آبجکت به صورت step by step.

https://www.youtube.com/watch?v=682yzK22mEU

لینک گیتهاب دوره دیزاین پترن; جزوه و مثال های دوره همه اینجا ذخیره خواهند شد.
https://github.com/ManiMozaffar/design-101

@ManiFoldsPython
👍12🥰6🔥1
کد نمک :))
@ManiFoldsPython
🤣11
یکی از بهترین منبع های یادگیری گیت, خوده داکیومنتشه .

https://git-scm.com/book/en/v2

یک از سرفصل هاش submodule هست که واقعا میتونه مفید باشه براتون مخصوصا برای فرانت کارا و کسایی که js میزنن.

It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.

https://git-scm.com/book/en/v2/Git-Tools-Submodules

@ManiFoldsPython
👍7