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
این رودمپ منه, تا چند ماه آینده. 4 شاخه مختلفه, معمولا 2-3 کورس/کتاب همزمان میخونم که ذهنم خسته نشه. شخصا وقتی فقط رو یک کتاب یا کورس تمرکزمو میذارم زود خسته میشم. بعضیاشو خوندم/دیدم, ولی دوست دارم یک بار دیگه بخونم/ببینم و پروژه محور کنارش کد بزنم و بیشتر باهاش بازی کنم.

——————————————————————
Linux

Linux Overview (5h)

Introduction to Linux Virtualization from the Command Line (1h)

Concepts for Securing Your Servers (1h)

LPIC-1: System Administrator Exam 101 (v5 Objectives) (20h)

LPIC-2: Linux Engineer Exam 201 (25h)

Text Editing with Vim (Vi iMproved) (8h)

——————————————————————
Backend

Python deep dive 4 (40h)

Python deep dive 1 (37h)

Two scopes of django (3.x)

Python deep dive 2 (35h)

Python deep dive 3 (35h)

FastAPI Docs

Python Tricks

SQLAlchemy ORM DOCS

Fluent Python

——————————————————————
CI/CD & Devops & Server

AWS Certified Cloud Practitioner (CLF-C01)

Source Control with Git

Github Actions

Introduction to Amazon RDS (3h)

Learn Docker by Doing (20h)

AWS Certified Solutions Architect - Associate (SAA-C03) (45h)

Introduction to Terraform Cloud (4h)

Introduction to Kubernetes (3h)

Kubernetes Essentials (5h)

Kubernetes and Cloud Native Associate (KCNA) (11h)

——————————————————————
Architecture And Software Design And Algorithm

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

The Complete Data Structures and Algorithms Course in Python

The Ultimate Data Structures & Algorithms Course (13h)

The Ultimate Design Patterns By Mosh (8h)

Software Architecture & Technology of Large-Scale Systems (25h)

Patterns of Enterprise Application Architecture (by Martin Fowler)



@ManiFoldsPython
🔥9👍1
اگر زبان انگلیسی بلد نباشید، احتمال اینکه در برنامه‌نویسی پیشرفت کنید کم هست.

اگر هم زبان انگلیسی بلد باشید تضمینی برای این پیشرفت نیست، ولی حداقل به انبوهی از منابع آموزشی رایگان (در هر موضوعی، نه فقط برنامه‌نویسی) دسترسی پیدا میکنید.

از یاد گرفتن یک زبان دوم ضرر نمیکنید.

@DevTwitter | <Amirreza Gh/>
👍14👎1
DevTwitter | توییت برنامه نویسی
اگر زبان انگلیسی بلد نباشید، احتمال اینکه در برنامه‌نویسی پیشرفت کنید کم هست. اگر هم زبان انگلیسی بلد باشید تضمینی برای این پیشرفت نیست، ولی حداقل به انبوهی از منابع آموزشی رایگان (در هر موضوعی، نه فقط برنامه‌نویسی) دسترسی پیدا میکنید. از یاد گرفتن یک زبان…
یک نکته ای که اضافه کنم اینه که اگه انگلیسی بلد نباشین همیشه از دنیا چند پله عقب ترین
یعنی تا داک فست ترجمه نشده نمیتونید بخونید
تا آموزش K8s فارسی نیاد نمیتونید یاد بگیرین
تا آموزش داکر فارسی نیاد نمیتونید یاد بگیرین
تا Mojo داکش فارسی نشه یا اموزش نیاد نمیتونید یاد بگیرین..
هیچوقت doc string رو نمیتونید بخونید.

پس هرچقدر برنامه نویس خوبیم که بشید هرچند احتمالش کم, اما همیشه عقبین از دنیا.

@ManiFoldsPython
👍2
احساس میکنم داره دروغ میگه، و fine tunned model هست، سرعت پاسخ دادنش هم مثل ada خیلی سریعه.

@ManiFoldsPython
👍5
Forwarded from Compass (Raymond)
This media is not supported in your browser
VIEW IN TELEGRAM
Manual memory management 😂😂😂
#fun
😁5
Forwarded from Sadra Codes
Compass
Manual memory management 😂😂😂 #fun
یه زمان، سیستم توی سی اینجور بود که شما باید از Malloc استفاده می‌کردید و از CPU درخواست فضا از رم واسه متغیرتون می‌کردید. بصورت دستی ست می‌کردید که فلان متغیر، فلان قدر از رم رو (به بایت) بهش اختصاص بده.

int age = malloc(32670) // 32kb

و باید حتما یادتون می‌موند وقتی که کارتون با این متغیر (دیتا) تموم شد، حتما این رفرنسش رو پاک کنید تا اون بلاک از مموری هم پاک شه.

free(age) // used to free the memory block

حالا این وسط یه سری بدبختیا بود..

- اگه برنامه‌نویس یادش می‌رفت فانکشن free رو ران کنه: خب خیلی طبیعیه که اگه یادش می‌رفت free-up کنه، به مموری لیک می‌خوردیم. گاها دیدید RAM Resource پر میشه و سیستم دیتا رو روی Swap نگه‌داری می‌کنه؟ دقیقا همون لحظه‌س.

- اگه برنامه‌نویس بلافاصله بعد از تعریف متغیر، free رو کال می‌کرد: به راحتی اون بلاک از مموری آزاد می‌شد و شما اگه جلوتر مقدار متغیر رو چاپ کنید ممکنه یه دیتاهایی پرینت شن که خیلی عجیب و غریب باشن..!! (درواقع ممکنه دیتاهایی باشن که توسط دیگر پروسه‌ها دارن توی اون بلاک از رم نگه‌داری میشن)

- اگه برنامه‌نویس دو بار free رو کال کنه: اگه بار اول فری کال شه، بلاک رم آزاد میشه و دیتایی که داخلشه از بین میره. فرض کنید بین free اول و free دوم یه وقفه ایجاد شه و سیستم‌عامل یا هر پروسه دیگه‌ای بیاد و دقیقا توی اون بلاک از رم یه دیتای حساس قرار بده. بلافاصله بعد از اینکه free دوم ران میشه، اون دیتای حساس هم از بین میره و پروسه عملا به فنا می‌ره و این اصلا خوب نیس!

خلاصه امروز که می‌بینید خیلی راحت زبان‌ها این Memory Management رو هندل می‌کنن، همچین دارک هیستوری پشت قضیه بوده.. دلیلشم اینه که سیستم‌عامل یکم واسش دردسر داره که بتونه منیج کنه مموری رو. واسه همینه که اکثر استراتژی‌های فری آپ کردن مموری توسط خود زبان‌های برنامه‌نویسی انجام میشه.
👍121
از pylint استفاده کنید برای اینکه هم گاف هایی که دادین تو کد بهتون نشون بده, مثل استفاده از mutable توی default.
و هم ایرادات کدتون رو براتون تا حدی تحلیل میکنه.
حتی میتونید گیت هاب اکشن هم براش بنویسید و ارور هایی که میخواین رو میتونید ایگنور کنید, مثلا اگه همه توابعتون doc string نداره باید ignore کنید یا داک استرینگ اضافه کنید.
pylint --disable=1,2,3,... --fail-under=9.5 project_root_folder

اینطوری تمام کد های پروژتون رو تحلیل میکنه و ارور هایی که مشخص کردین ایگنور میکنه و بهتون نمره میده. اگه کمتر از 9.5 شدین هم fail و exit code 1 میده بهتون که باعث میشه workflowتون fail بخوره و متوجه شین.
خروجیش رو تو تصویر میتونید ببینید

از flake8 هم غافل نشین ✌️
@ManiFoldsPython
👍6
مهم نیست بک اند کار میکنید یا فرانت.
این کتاب رو باید بخونید.

@ManiFoldsPython
👍9
CodeNaline S2E8 - Mani
torham
کدنالین اپیزود هشتم، مانی 🤩.

این اپیزود رو با مانی از ترکیه رفتیم، مانی ۱۷ سالگی مهاجرت کرده ترکیه، الان ۵ سالی هست که اونجاس، بک‌اند با پایتون کار میکنه، داخل ترکیه یک استارت آپ داره و خلاصه ادم خفنیه =)

این قسمت رو از دست ندیدا🫨

کانال مانی: @ManiFoldsPython

نسخه تصویری در یوتیوب : https://youtu.be/4yUVIAhFzS8

نسخه صوتی در کست‌باکس



🗿 @CodeNaline
🧠 @TorhamDevCH
👍6🥱1
این ریپو تا یک جاهایی جلو رفته
https://github.com/ManiMozaffar/fastapi-integration

هدفشم اینه که کار با FastAPI رو راحت کنه. سریع فیچر ادد کنید, کانفیگ کنید, با یک orm ترجمه شده مثل جنگو هم کدتون رو خوانا تر کنید و جاهایی که نمیشد با اون orm رفت اون query زد از sqlalchemy استفاده کنید. و رقیبی بشه برای اون قابلیت rapid development بودن django

البته خیلی کار داره هنوز. توضیحات readme رو بخونید یکم بیشتر میتونید درکش کنید.

کسایی که FastAPI کار میکنن یا بلدن, نظر بدن ممنون میشم, که به نظرشون اگه این ریپو به اندازه کافی stable باشه ازش استفاده میکنن یا نه؟ میخوام ببینم gap ای که پر میکنه خریدار داره یا نه 😅 که براش بیشتر زمان بذارم یا کمتر..
@ManiFoldsPython
3
یک سوال جالب امروز تو مصاحبه ازم پرسیده شد
چند تا ریاضی دان تو جزیره ای رفتند و حوصلشون سر میره. تصمیم میگیرن با هم تاس بازی کنند, به فروشگاه میرن و فقط یک cube داره که داخلش 3 تا تاسه. راهکاری معرفی کنید که بتونن تاس بازی رو انجام بدن طوری که گزینه ها مثل یک تاس (1 تا 6) با احتمال رخ دادن برابر باشه. (1/6)
میتونید حتی برنامه رو به صورت پایتون بنویسید.
راهکار های مختلفی وجود داره, و هرچی O notation کمتری داشته باشه طبیعتا راهکار بهتریه.
1. نمیتویم تاس رو خارج کنیم :))
2. نمیتونیم فقط یک تاس رو بندازیم. باید cube رو تکون بدیم تا تاس ها هم بخورن و فقط جوابشو ببینیم. سه تا تاس همزمان هم میخورن.
پاسخ رو کامنت کنید.
3. تاس ها یک شکل هستند و خاصیتی برای متمایز سازیشون وجود نداره
@ManiFoldsPython
👍6🥱1
این روزا شب میخوابین صبح بلند میشین 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