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
این روزا شب میخوابین صبح بلند میشین 10 تا پروداکت AI جدید اومده.
یک سایتم اومده یک لیستی از اینا درست کنه, مثل hub

https://aitoptools.com

جالبه ببینید ... 👌
@ManiFoldsPython
👍4👎1
یک productivity principle ای داریم که تو زندگی روزمره خیلی به درد میخوره :)

Eliminate, Simplify, Automate, and Delegate


Eliminate:
وظایفی که اهمیت نداره یا بی ارزش هست رو شناسایی و حذف کنی. این کار باعث میشه بیشتر تمرکزت رو بذاری رو اون چیزی که مهمه

Simplify:
وظایف رو به بخش های کوچیک تر تبدیل کن, و ساده ترشون کن تا راحت تر مدیریت بشن. هرچی وظایف ها پیچیدگی کمتری داشته باشن, انجام دادنشون هم به همون نسبت لذت بخش تره.

Automate:
اگه کاری رو بیشتر از 3 بار داری تکرار میکنی, احتمالا داری اشتباه انجامش میدی. سعی کن خودکار ترش کنی که کمتر تکرار کنی و وقتت کمتر هدر بره.

Delegate
اگه وظیفه ای داری که خارج از مهارت شما هست, و شخص دیگری میتونه بهتر از شما و موثر تر از شما انجام بده, پس وظیفه رو باید به اون بسپاری.


منم سعی میکنم تو روتین روزانم اینو رعایت کنم و تقریبا موفق بودم
@ManiFoldsPython
👍14
همیشه وقتی بنچ مارکی میبینید, کدشم ببینید و مقایسه کنید. خیلی سریع نرین سراغ result و یک تایید بهش بدین.. :>
https://github.com/teamhide/fastapi-boilerplate

مثال تو این مورد, اومده برای هر درایو یک db driver استفاده کرده که باعث شده بیشتر به جای مقایسه خود orm ها, مقایسه درایوشون بشه. مثلا تو tortoise اومده از asyncpg استفاده کرده ولی در حالی که sqlalchemy همونو ساپورت میکنه اومده درایو دیفالت خودشو استفاده کرده که sync هست !

بنظره من برای بنچ مارک میتونست orm هارو با یک درایو یکسان تو sync و async مقایسه کنه. اینطوری 2 تا بنچمارک داشت برای sync یکیم برای async
و همچنین میتونست سرعت ساخت query به صورت استرینگ هم تست کنه, تو model های پیچیده تر. طبیعتا پرفومنس sqlalchemy بهتره چون پایتونیک تره نمیایم بگیم model2___name__contains 😅

@ManiFoldsPython
👍3
این اگهی استخدام یک شرکت معمولیه برای پوزیشن سنیور با 100 تا کارمند تو حوزه IT
من تجربه ای ندارم ولی واقعا برام منطقی نیست؟ چطور میشه یک نفر این همه تجربه داشته باشه؟ چطور اصلا این شرکت قراره همچین فردی رو پیدا کنه یا استخدام کنه؟

DevSecOps
Front
Backend
Machine Learning
Data Science

@ManiFoldsPython
👍3😁3
Forwarded from Python Hints
من خیلی ازین سال‌های آخر رو خرج هوش مصنوعی کردم
هم پیشرفت و دستاورد داشتم هم پسرفت
راجب پسرفت‌ها بخوام بگم؛ می‌تونم به موارد زیادی اشاره کنم ولی یک مورد هست که خودم رو خیلی اذیت می‌کنه اونم کدهای بد هست
توی بخش تحقیقاتی کار کردن (هوش مصنوعی و دیتاساینس رو میگم) خیلی بد هست مخصوصا اگر مثل من چندین سال فقط و فقط تو همین بخش باشید

متاسفانه ازونجایی که همه چیز Notebook هست و این کدها فقط بین تیمی جابجا می‌شه و ۹۹٪ کارفرماها وقتی کارشون نزدیک لانچ شدن محصول هست سراغ اضافه کردن سیستم هوش مصنوعی میان کدهای تمیزی معمولا نمی‌بینید

مثلا من خیلی از کدها رو توی ۲-۳ روز زدم و تحویل دادم به بخش‌های دیگه با توضیحات و جلسه که بره روی محصول
چندسال پیش وقتی دنبال کار جدیدی بودم کدهای قدیمی‌تر (قبل از کار توی حوزه هوش مصنوعی) رو اتفاقی باز کردم همراه با یکی از دوستان که مصاحبه میگرفت ازم و بدون تعارف بهم گفت :
این کدها (کدهای قدیمی) سطح سنیور داره ولی این یکی (کدهایی که توی notebook زده بودم) انگار دادی ی بچه کد زده راستم می‌گفت؛ کار تو زمینه هوش مصنوعی و notebook من رو تنیل کرده بود نه فقط من کل تیمی رو هم که نگاه کردم همین بود

Don't Repeat Yourself (DRY) 
اصلا رعایت نمی‌شد؛ ۲ تا کلید رو همزمان فشار میدادی کل cell بالایی رو کپی میکرد توی cell جدید ۲ تا کلید دیگه میزدی هرچی train بود رو با valid عوض میکردی بعد همین رو دوباره تکرار میکردی و میزدی test در نهایتم بخش‌های دیگه از ما ۴ تا فایل تمیز میخواستند که بهشون خیلی شیک و مجلسی تحویل میدادیم دیگه

بعد این صحبت‌ها مطمئن بودم دیگه فعلا نمی‌تونم برم سراغ کارهای software engineering چون اصول کد نویسی تمیز و ... رو اصلا نمی‌تونستم رعایت کنم ولی اگر یک نفر می‌گفت من این کد رو ۷ روزه تحویل میدم من همون کد رو نهایتا ۴ ساعته تحویل میدادم (اما کثیف و بدون رعایت اصول)
برای همین بجای software engineering رفتم سراغ machine learning engineering حالا خودم باید اون ۴ تا فایل رو تحویل میگرفتم تمیز میکردم و کدهای تمیز و تست و ... براش می‌نوشتم
این موضوع خیلی بهم کمک کرد تا عادت‌های بد رو کنار بذارم؛ به کدهام ساختار بدم سعی کنم کامنت و ... بذارم یا حداقل اصول اصلی رو رعایت کنم (هنوزم کامنت گذاری و docstring برام سخت هست)


اگر به هوش مصنوعی یا کارهایی که بخش تحقیقاتی زیادی داره علاقه دارید مثه من نشید دقت کنید که تمیزی و خوانایی کد رو از دست ندید؛ خیلی خیلی دارم تلاش می‌کنم و بعضی وقتا خیلی خیلی برام سخت هست که با کارفرمایی که کار عجله‌ای میخواد یا می‌گه اشکال نداره کدها تمیزم نبود بده بیاد؛ کار نکنم
و بیشتر از اون سعی می‌کنم خیلی تمیز کد بزنم

من واقعا و جدا الان دارم روزی ۱-۲ ساعت تمرین تمیز کد زدن می‌کنم؛ تا توی ناخودآگاهم بمونه این موضوع؛ علاوه بر اون دارم بسیار تمرین می‌کنم و برنامه‌ریزی می‌کنم با کارفرماهای عجول کار نکنم و اگر دارم کار می‌کنم خداحافظی کنم.

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

خلاصه که خیلی خیلی حواستون باشه؛ بخصوص دوستان سنیور.

پ.ن : اضافه کنم الان چندماهی هست ۲ تا از شغل‌هام بعنوان
software engineer 
هست ولی خب سختی زیادی کشیدم تا عادت‌های بد رو کنار بذارم و هنوزم درحال تمرین هستم؛ اینم به این معنی نیست که بگم برید کتاب clean code بخونید ( ی مدت ملت جوگیر شده بودند هرجا میرفتی دست یکی این کتاب بود؛ خلاصه بگم اصلا هم کتاب خوبی نیست قبلا مفصل راجبش توی چندتا لایو که دعوت بودم بحث کردم)
👍6🐳3
Python Hints
من خیلی ازین سال‌های آخر رو خرج هوش مصنوعی کردم هم پیشرفت و دستاورد داشتم هم پسرفت راجب پسرفت‌ها بخوام بگم؛ می‌تونم به موارد زیادی اشاره کنم ولی یک مورد هست که خودم رو خیلی اذیت می‌کنه اونم کدهای بد هست توی بخش تحقیقاتی کار کردن (هوش مصنوعی و دیتاساینس رو…
پست خوبیه ولی من با این تیکه حرف شخصا مخالفم
کثیف و سرعتی کد زدن شاید برای کارفرما فعلی خیلی خوب باشه و باعث درآمد بیشترش بشه ولی برای من توسعه دهنده باعث شکوفا شدن و پرورش عادت‌های بد می‌شه و نمی‌ذاره کار بهتر یا حتی درصورت جدا شدن از تیم کار پیدا کنم.

کد کثیف ممکنه نوشتنش راحت تر باشه چون پشتش تفکر کافی نباشه, ولی کد legacy خیلی maintain بیشتری نیاز داره و وقتی ownership کدت باهات باشه (کدو ندی بری) بیچاره میکنه... . کد تمیز رو یک بار مینویسی تست میکنی تموم میشه میره ولی کد کثیف میشه بخشی از زندگیت و همیشه یقه ات رو میگیره تا زمانی که ریفکتور نکنی بلا جون میشه.
شخصا کد legacy کم نزدم, اکثرش هم برمیگرده به 3-4 سال پیش. تو مسیری افتادم که خوب راهنمایی نشدم و خودمم تحقیق کافی نکردم. ترک عادت واقعا سخته. :(

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

@ManiFoldsPython
👍10🔥1
Forwarded from Sadra
You think you're done when it works. Nah.. you're done when it's right.
👍4🥰1
Forwarded from Sadra
First step after writing a code is cleaning that code.

خیلی سخته که کد رو همون اول بی‌نقص و تمیز بنویسی.
👍4🥰1
Forwarded from Sadra
کد کثیف باعث میشه راندمان کل تیم بیاد پایین. معمولا دلیوری ها داره توسط برنامه‌نویس ها اتفاق میوفته. اگه سرعت برنامه نویس توی توسعه کم باشه نتیجش میشه Delivery دیرهنگام. دلیوری دیر یا بدموقع هم برابره با لَنگ بودن کل تیم تا شمای دولوپر فیچر رو پوش کنی بره بالا.

حالا چی باعث میشه دولوپر سرعتش کم شه؟ کثیفی کد.

اگه دقت کرده باشی، معمولا پروژه های نرم افزاری خیلی سریع و پرشتاب شروع به توسعه میکنن. هر یکی دو هفته، یه فیچر رلیز میشه ولی رفته به رفته این گپ بین رلیزها بیشتر و بیشتر میشه. واسه یه فیکس که به ظاهر نهایتا ۲ روز مهلت احتیاجه، کدبیس به قدری ترکیده که باید ۱ ماه وقت بذاری و مطمئن شی فیکس مشکلی نداره و بعد پوش کنی.

این طرز تفکر که سریع فیچر رو رلیز کنم یا سریع کامیت بزنم فیچرو تحویل بدم باعث میشه کد کثیف شه. به قولا میگن:

The only way to go fast is to go well.

بلافاصله که کدتون کار کرد و تست هاشو نوشتید، کلینش کنید.
👍3🥰3
یک decorator قشنگ برای لاگ گرفتن که خودم استفاده میکردم موقع دیباگ کد های سمیم 😍

میتونید حتی args و kwargs هم چک کنید که دقیقا همون تایپ هستند یا نه. 👍 اونش با شما 😁

شب خواب کد های قشنگ ببینید :))
پی نوشت: -> None فراموش نشه. 👍 حتی اگه چیزی برنمیگرده. یا حتی return None
@ManiFoldsPython
👌6👏1
بهترین و تمیز ترین boilerplate ای که دیدم از FastAPI
https://github.com/iam-abbas/FastAPI-Production-Boilerplate

واقعا معنی SOLID رو تازه درک کردم.. چقدر محشره و تمیزه واقعا هرچی بگم کم گفتم. خود کداش هم عالیه. فیوچر هم خیلی خوبه.


همین موضوع باعث شد که کلا fastapi integration خودمو تو گیتهاب بخوام از صفر ریفکتور کنم که فقط ORM ترجمه شده خودمو بهش اضافه کنم با SQLAdmin
البته رو اضافه کردن SQLAdmin هم خیلی دو دل هستم, چون واقعا SOLID نیست. اگه maintainerاش همکاری کنه تو این boilerplate از صفر طبق SOLID مینویسیمش. جالبه خود author ریپو SQLAdmin هم ایرانیه 😁

@ManiFoldsPython
🔥2👍1
Python BackendHub
بهترین و تمیز ترین boilerplate ای که دیدم از FastAPI https://github.com/iam-abbas/FastAPI-Production-Boilerplate واقعا معنی SOLID رو تازه درک کردم.. چقدر محشره و تمیزه واقعا هرچی بگم کم گفتم. خود کداش هم عالیه. فیوچر هم خیلی خوبه. همین موضوع باعث شد که…
همونطور که قولشو داده بودم منم ریپو خودمو آداپت کردم به این Boilerplate
https://github.com/ManiMozaffar/fastapi-integration



چند تا چیز اضافه کردم:

1. Translated Django ORM
یک او ار ام ترجمه شده از sqlalchemy مثل جنگو. هنوز تکمیل نشده ولی برای استفاده بیسیک کافیه. جوین هم خودش خودکار هندل میکنه :)


2. Database check-up
یک اسکریپت چک آپ, که چک کنه دیتابیس بالا هست یا نه.


3. Database connection handler
اگه اکسپشنی سمت دیتابیس رخ داد تو ریسپانس مشخص کنه که اپلیکیشن ارور 500 نده.

4. CRUD
خود crud رو حرفه ای تر کردم. البته هنوز کار داره. که پیجینشن هم هندل کنه 👍

بازم مونده, دوستان اگه تمایل داشتن PR بزنن و شرکت کنند 😁
قدم بعدی ایشالا admin panel هست به صورت solid که دیگه وابسته به خود app و database نباشه که مستقیم این دو آگاه باشن از حضور ادمین پنل.


@ManiFoldsPython
🔥2
میخوام محتوی ویدیویی به زودی راجب همین معماری بذارم و توضیحش بدم یکم، بنابراین ممنون میشم به دو سوال زیر پاسخ بدین
👍3
به چه زبونی باشه؟
Anonymous Poll
60%
فارسی
40%
انگلیسی با زیرنویس‌ فارسی
👍1
Forwarded from Sadra Codes
پروفایل کردن کد مبحث جالب و مهمیه. بهتون نشون میده کدوم بخش از کدبیس، ران تایم بیشتری داره و یه سیستم مانیتورینگ کدبیسه بطور خلاصه. توی پایتون از profile و cProfile استفاده میشه.

مقاله جدیدم که جدیدا توی تورینگ پابلیش شده درباره همین موضوع هست. قراره یه مقدمه از cProfile داشته باشیم در پایتون.

امیدوارم لذت ببرید. :) ❤️

https://www.turing.com/kb/python-code-with-cprofile
2
اوایل که مصاحبه میرفتم همون اولین مصاحبه رد میشدم,
اما الان تقریبا هروقت مصاحبه میگیرم میرسم به coding challenge یا technical interview
تکنیک هایی که این مدت به کار بردم و جواب داده رو خواستم تو این پست بنویسم تا استفاده کنید:


اولین چیزی که مطرح میشه اینه که شما خودتونو معرفی کنید, تو این مرحله یک summary خلاصه از خودتون بگین و فعلا وارد جزییات نشین.

مهم ترین موضوع اینه که شما به اون شرکت علاقه نشون بدید. این موضوع به قدری مهمه که حتی اگه ممکنه کاندید بهتر از شما باشه ولی شما رو انتخاب کنند چون باعث میشه که فکر کنند شما متعهد تر هستین به اون شرکت تا اون فرد. این علاقه نشون دادن با سوال تخصصی تو اون فیلد میشه نشون داد. بهترین کار هم اینه که سایت شرکت رو دربیارین, اطلاعاتش رو بخونید و بعدش به chatgpt اون اطلاعات رو بدین و بهش بگین که چند تا سوال براتون طراحی کنه که هم یکم چالشی باشه و هم نشون بده که کاملا interested بودین.

اما کی باید این سوالات رو بپرسین؟ معمولا interviewer از شما میخواد که اول به حرفاش گوش بدین و معمولا یک introduction ای از شرکت خودشون و چالش هاش به شما میگه. بعد از شما میپرسه که آیا سوالی دارین یا نه, و بدترین جواب اینه که بگین نه ندارم. همینجاست که سوالاتی که حاضر کرده بودین, باید بپرسین و سعی کنید هم چند سوال راجب توضیحاتی که خودش داده اول بپرسین, حتی اگه کامل فهمیده بودین!


طرفی که باهاش مصاحبه میکنید رو بسنجید و سعی کنید که درجه صحبتتون بر اساس سطح technical اون آدم منطبق کنید. مثلا تو یک مصاحبه خود HR سابقه کد زنی داشت و من تونستم خیلی فنی تر حرف بزنم که تجربه خیلی خوبی برای جفتمون بود. اما اگه همینکارو با HR کنم که old fashion تره, قطعا یک red flag خواهد بود. سطح فنی اش رو از توضیحاتی که راجب شرکتشون میده میتونید ارزیابی کنید.

حالا نیمی از interview گذشته و فقط راجب شرکت حرف زده شده, احتمالا interview از شما بخواد که بک گراند بیشتری راجب خودتون بدین. حالا شما باید به نحوی مهارتتون رو بفروشید, مثلا به هر نحوی شده سعی کنید پروداکت هایی که تا امروز روش کار کردین به پروداکت این شرکت لینک کنید. حتی اگه دروغ بگین یا بزرگ نمایی کنید ایرادی نداره, فقط دروغ فنی نگین یا بزرگ نمایی از خودتون نکنید. مثلا ممکنه تو یک business domain ای اصلا کار نکرده باشین, مثل B2B. ولی اگه شب قبل حسابی راجبش بخونید میتونید ادعا کنید که اره فلان جای پروداکتمون B2B بود و من کمی درگیرش شدم. سعی کنید اگه تو این موارد دروغ میگین, خیلی خوب و متواضعانه دروغ بگین!

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


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


@ManiFoldsPython
18👍6
Forwarded from Sajad
This media is not supported in your browser
VIEW IN TELEGRAM
یه نکته خوب در مورد اپلای و استخدام شدن تو شرکت های خفن دنیا!💎🔥


youtube.com/@Tabaghe16
🔥5👎1
یکم بریم بحث فنی, چیزی که امروز ذهنمو مشغول کرده بود تو خوندن داک جنگو,
نظرتون چیه؟
بنظرتون جنگو MVC هست یا MVT 🤔

ایا میشه core خود جنگو رو controller دونست یا نه؟ یا view رو میشه controller دونست؟ اگه اره, میشه فریم ورکی که به کنترلر دسترسی نمیده رو MVC دونست؟

@ManiFoldsPython
اگه اکانت پرمیوم دارین, برای فعال سازی نسخه browsering چت جی پی تی, اول سه نقطه کنار اسمتون رو بزنید سمت چپ پایین صفحه, بعدش برین رو setting, بعد beta features و بعد تیک این دو رو بزنید.

بعدش برای مدل GPT4 قابلیت browsering فعال میشه و باعث میشه قبل از جواب دادن به شما بتونه crawl کنه. این فقط برای دوستانی قابل استفاده هست که اکانتشون پرمیومه.


@ManiFoldsPython