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
داشتم quora میخوندم که به یک بحث جالب
با chatgpt ترجمه کردم. انگلیسیش رو میتونید از لینک زیر بخونید
لینک

میگفت دولوپر جاوا و پایتون زیاد شده و چه زمانی میرسه که supply بیشتر از demand میشه
شما نمی توانید به شدت بین تجربه 15 ساله و 10 ساله تمایز قائل شوید. به عبارت دیگر، هیچ کس نمی خواهد یک فرد با تجربه 15 ساله استخدام کند زمانی که فکر می کند که کار می تواند توسط فرد با تجربه 10 ساله انجام شود. شما باید با گذشت زمان قابلیت انجام کارهای بسیار بیشتری را داشته باشید و برای این منظور باید با مسائل حل مسئله، سیستم ها، طراحی، پلتفرم ها، چارچوب ها، زبان های برنامه نویسی، ابزارها و البته دامنه آشنایی کامل داشته باشید. مهارت نرم به جای خود، همچنین باید یک سیستم پیچیده رو تو ۵ مین توضیح بدید و تو ۵۰ صفحه ببندیدش. تنها تعداد کمی از "برنامه نویسان" به این سطح می رسند و اینجاست که کمبود واقعی وجود دارد.


اما جواب محکمی که یک نفر داد و من خیلی لذت بردم:


من با فرض شما مخالفت می‌کنم. من از اوایل سال 1984 برنامه‌نویسی می‌کنم و افرادی مانند من به دنبال کار هستند. من برنامه‌نویسی دستگاه‌های تعبیه شده برای سیستم‌های پیچیده مانند دستگاه‌های پزشکی انجام می‌دهم. اگر 10 نفر مانند من پیدا کنم، می‌توانم در عرض دو هفته برای آنان شغل دائم و با درآمد بالا پیدا کنم. چرا دو هفته؟ چون من به واقعیت نمی‌پردازم که چندین پیشنهاد کار از مشتریان یا تماس‌های سرد وجود دارد، به دلیل اینکه همیشه فرصت‌های بیشتری وجود دارد.

من دارای مدرک BSEE از دانشگاه عمومی قابل قبول میدوستی است. من به زبان برنامه‌نویسی 'C' برنامه‌نویسی می‌کنم و کمی هم C++ (در حال حاضر نه زیاد) و به نیاز نیز کمی C# استفاده می‌کنم اما در آن خیلی خوب نیستم. من درآمد قابل توجهی با شش رقمی دارم و اگر مایل به جا به جایی در شغل باشم می‌توانم بیشتر درآمد داشته باشم.

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

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

من با چند مهندس دیگر که در چهار دهه گذشته بهتر یا بهتر از من بودند، آشنا شده‌ام، اما آنها بسیار نادر هستند. آنها همیشه کار دارند. من از کار اخراج شده‌ام و اخراج شده‌ام، اما پیدا کردن شغل جدید هرگز غیر ممکن نیست و نگران نیستم زیرا می‌دانم که «آنها» به من بیشتر نیاز دارند تا من به «آنها». تنها چند نفری مانند من وجود دارند و تعداد زیادی از «آنها» وجود دارد. از بابت برگزیده شدن توسط هوش مصنوعی مانند همراه هوا، نگران نیستم، زیرا نمونه‌های کد کافی وجود ندارد که یک شبکه عصبی را در مورد آنچه که من انجام می‌دهم و چگونه انجام می‌دهم، آموزش دهد. تا زمانی که من تصمیم نگیرم که از کار برم یا بمیرم، شغل خواهم داشت.



@ManiFoldsPython
👍8💩1
یکیم تو جوابش اینو نوشته بود اینم خیلی جالب بود 😄
"People just aren't curious" this times 10. I'm not a coder but data and Analytics, the number of professional accountants, engineers etc that use Excel all day but still come to me to do pretty rudimentary stuff, because they have no curiosity. My problem is having too much, I waste time reading about a dozen things at the same time

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

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

ادم از quora و ردیت میتونه خیلی درس زندگی بگیره 👌

@ManiFoldsPython
👍6
Forwarded from Django Expert (Mehran Tarif)
‏متاسفانه صابر راستی‌کردار، خالق فونت‌های وزیر‌ متن (همون فونت زیبایی که روی تلگرام دسکتاپ و گوگل‌داکز و... به رایگان ازش استفاده می‌کنیم) و گندم و شبنم و کلی فونت دیگه، به سرطان مبتلا شده و در وبلاگش در این مورد مطلبی نوشته:
مشاهده مطلب در وبلاگ راستی‌کردار

اگر از فونت‌هاش استفاده می‌کنیم، شاید الان دونیت (حمایت مالی) ما بیشتر از قبل به کارش بیاد.
لینک دونیت:
payping.ir/@saber

🌱 صابر راستی کردار، از جمله بچه های گل روزگار هست که وب فارسی مدیونشه، تنهاش نمیذاریم.

@DjangoIR
〰️〰️〰️〰️〰️〰️〰️
© @DjangoEx |
😢8👍1
این کوییز برای درک پایتونه و فرش نگه داشتن ذهن 😅

درجه سختی: آسان
@ManiFoldsPython
👎6👍2
این یکی خیلی سخته. 15 مین طول کشید تا سوالشو طراحی کنم 😁
یک ارفاق کردم همینکه sum رو به دست بیارین کافیه. ولی بعدا جواب تک تکشو میذارم و توضیح میدم که چرا چنین شد.

اگه برای پاسخ به این سوال دارین trace میکنید که چه تغییری تو لیست رخ داده, کاملا مسیر رو دارین اشتباه میرین.
برای پاسخ دادن به result و درآوردن true یا false بودن هر کدوم, نیازی به حفظ کردن تغییرات ندارین.
@ManiFoldsPython
👎5
Python BackendHub
این یکی خیلی سخته. 15 مین طول کشید تا سوالشو طراحی کنم 😁 یک ارفاق کردم همینکه sum رو به دست بیارین کافیه. ولی بعدا جواب تک تکشو میذارم و توضیح میدم که چرا چنین شد. اگه برای پاسخ به این سوال دارین trace میکنید که چه تغییری تو لیست رخ داده, کاملا مسیر رو دارین…
اگه برای پاسخ به این سوال دارین trace میکنید که چه تغییری تو لیست رخ داده, کاملا مسیر رو دارین اشتباه میرین.
برای پاسخ دادن به result و درآوردن true یا false بودن هر کدوم, نیازی به حفظ کردن تغییرات ندارین
Python BackendHub
این یکی خیلی سخته. 15 مین طول کشید تا سوالشو طراحی کنم 😁 یک ارفاق کردم همینکه sum رو به دست بیارین کافیه. ولی بعدا جواب تک تکشو میذارم و توضیح میدم که چرا چنین شد. اگه برای پاسخ به این سوال دارین trace میکنید که چه تغییری تو لیست رخ داده, کاملا مسیر رو دارین…
برای پاسخ دادن به این سوال کافیه درک پایتون خوبی داشته باشیم.

وقتی از [:] استفاده میکنیم یعنی memory address اون آبجکت عوض میشه و کپی میشه تو یک آدرس دیگه. در حالی که وقتی از a = b استفاده میکنیم یعنی رفرنس میشه و مموری آدرس همونه. پس هر بلایی سر first بیاد سره third هم میاد. پس
first is third
> True

و بخاطر [ : ] استفاده شده هم ممورس آدرس second عوض شده. پس اگه دقیقا عینه هم باشن چون رفرنسشون یکی نیست و یکجا ذخیره نشدن همیشه is براشون false هست.
second is third
> False

مورد چهار دقیقا last و first یکی هستن چون هیچ بلایی سره first نیاوردیم.
اما مورد چهار بخاطر بحث interning که تو پایتون وجود داره و اعداد -5 تا 256 کش میشن. ولی برای اعداد بعد از 256 دیگه همیشه false هستند. پس مورد بعدی هم false میشه بخاطر وجود عدد 300
a = 300
b = 300
a is b
> False


سکند ایندکس اولش تغییری نکرده, و 1 مونده. طبق بحث بالا
a = 1
b = 1
a is b
> True


بعضی دوستان تو چند ثانیه حل کردن, حل همچین سوالی باعث میشه شما درک بهتری از مموری و رفرنس داشته باشین. اینطوری باعث میشه کد scalable بنویسید!

من یک مطلبی قبلا تو کانال فرستادم صرفا با دو پارگراف اخرش موافق بودم, وگرنه وقتی همچین سوالاتی تو interview های شرکت های بزرگ پرسیده میشه مثل ماکروفاست, پس قطعا اشتباه نیست.
@ManiFoldsPython
👍4😱1
Python BackendHub
این کوییز برای درک پایتونه و فرش نگه داشتن ذهن 😅 درجه سختی: آسان @ManiFoldsPython
در خصوص این کد, اولا یک اشتباهی کردم باید first = 1 هم میذاشتم که نکته اش سنگین تر میشد.

من یک اشتباهی تو کد نویسیم کرده بودم و یک نفر به من گفت, رفتم و دلیلش رو پیدا کردم و به این نکته رسیدم که الان میخوام بهتون بگم.

بحث namespace هست و mutable و immutable و دو تا از scope های پایتون, global و local هست. یکی از بحث های ابتدایی پایتون 😅

خب اولا وقتی تابع رو با یک Argument ای صدا میزنیم, اون Argument اگه mutable باشه, اگه اون Argument رو تغییر بدیم باعث میشه تو سطح global scope هم تغییر کنه.
یعنی دقیقا بلایی که سره second اومد.
اما چرا lst که لوکال بود تو تابع f بلایی سره lst اصلی نیاورد؟ چون اون local variable هست و دیگه Argument نیست که مربوط باشه به lst.

اما اگه first = 1 میذاشتیم تو لوکال, بازم بلایی سره var نمیومد. var همیشه 3 میمونه. چرا؟ چون immutable هست.

و حالا شاید متوجه شده باشین که چرا
Don't use mutable values as default value in function parameters


@ManiFoldsPython
قسمت نهم از فصل دوم کدنالین، مانی.
این قسمت رو با مانی از ترکیه خواهیم داشت. مانی این روزها داخل ترکیه زندگی میکنه و تاجایی که خبر دارم داره تلاش میکنه به هلند مهاجرت کاری کنه. و تاجایی بازم خبر دارم :)، رزومه هاش خیلی خوب مصاحبه میگیره. مانی متخصص پایتون و بک‌اند، در کراولینگ تخصص داره و پروژه‌هایی هم با chatGPT زده :).


سوالاتتتون میتونید زیر همین پست بپرسید ❤️🤝

@CodeNaline
Forwarded from Python for Data Science
کد بالا رو در دو محیط مختلف اجرا کنید
یکی در یک فایل .py
دیگری در فایل .ipynb
نتایج متفاوت هست!

چرا؟ 😊😊

🔎 @py4ds
👍2👎1🤮1
Forwarded from Python for Data Science
📌اختلاف این دو حالت برمیگرده به مبحث Interning که در اینجا برای مقادیر Integer در بازه‌ی
[-5, 256]
هستند.
🔺اگر دارید توی هر نوعی از شل توی پایتون (python shell , ipython, ...) کد میزنید باید حواستون باشه که این مقادیر یکبار ساخته میشن و برای همیشه از همونا استفاده میشه اما مقادیر خارج از این بازه هربار که لازم باشه از اول ساخته میشه. یعنی id اونها ممکنه با هم فرق داشته باشه
🔺اما اگر کل کد توی فایل .py به پایتون بدید اونو بهینه میکنه و تا زمانی که لازم هست مقادیر integer خارج از اون بازه رو نگه‌ می‌داره. بنابراین این مقادیر هم مثل مقادیر ذکر شده در بازه‌ی فوق فقط یکبار ساخته میشن.

🔹خلاصه هرجایی دارید از is استفاده می‌کنید حسابی حواستون رو جمع کنید که یه وقت اچتباهی کد نزنید! 😁
🔎 @py4ds
چطوری prompt نوشتن خیلی مهمه وقتی با chatgpt کار میکنید! برای بهتر prompt دادن باید سواد بیشتری داشته باشین. تو عکس فکر کنم این موضوع خیلی بدیهی باشه.
برای همینه که من معتقدم هرچقدر gpt پیشرفته تر شه, نمیتونه جای انسان رو بگیره و برنامه نویس رو بیکار کنه.
الگوریتم رو از O(n**2) کرد O(n) 👌
@Manifoldspython
👍8👎1
از serverless سرویس lambda رفتن رو EC2 و ECS و ساختار رو monolith کردن که باعث شد 90درصد هزینه کمتر شه و پرفومنس هم خیلی بهتر شه. میتونید تو بلاگ زیر بیشتر بخونید. این همون قضیه زیره
there is no solution only trade offs

Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%
برگشتم رو لایبری FastAPI ام دارم کار میکنم

یکی از قابلیت هایی که دوست دارم بهش اضافه کنم اینه که شما اینطوری feature اضافه کنی با ارث بری

import my_module


class YourFastAPI(
my_module.FastAPIExtended
):
pass
# Now my FastAPI class has redis, postgresql, Base User class, Admin Panel

main = YourFastAPI (
featrues = [
my_module.Redis,
my_module.PostgreSQL,
my_module.BaseUser,
my_module.AdminPanel
]
)


خب برای اینکار یادم اومد طبق کتاب fluent python که میتونم از مجیک متود mro استفاده کنم. حالا این مجیک متود چیکار میکنه؟
از طریق یک الگوریتم DFS یا جستجوی عمق اول در گراف ارث‌بری کلاس‌ها، کار میکنه. یعنی چی؟ یعنی مثلا شما کلسی دارین به اسم A که از B و C ارث بری کرده.
class A(B,C)
میاد تو یک عمق اول B و C رو چک میکنه. بعد چک میکنه که این دو کلس از چیا ارث بری شدند؟
تو عمق دوم بازم همین روندو ادامه میده, اینقدر تکرار میکنه تا برسه به base class که میشه object.

به چه دردی میخوره؟ اگه با یک class آشنا نیستین و خیلی سریع میخواین به همه doc string هاش دسترسی داشته باشین میتونید همچین کاری کنید.

for cls in SomeClass.__mro__:
print(
f"obj: {cls.__qualname__}",
cls.__doc__,
"-"*20,
sep="\n"
)

@Manifoldspython
🤯3👍2
اگه طرفدار fastapi و pydantic هستین و از serializer های DRF بدتون میاد این لایبری رو حتما بهش سر بزنید

https://github.com/vitalik/django-ninja


اینم یک لایبری دیگه, که برای دیتافریم هست و با rust و nodejs نوشتن که میتونید ازش استفاده کنید.
https://github.com/pola-rs/polars


@Manifoldspython
👍4
این رودمپ منه, تا چند ماه آینده. 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