Python BackendHub @pybackendhub Channel on Telegram

Python BackendHub

@pybackendhub


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

Python BackendHub (English)

Are you interested in learning Python and Backend Engineering? Look no further than Python BackendHub! This Telegram channel is curated by Mani, a skilled professional in the field, who is dedicated to providing valuable insights and resources for those looking to enhance their skills in Python and Backend Engineering. With a strong focus on education and community building, Python BackendHub offers a wealth of resources, including tutorials, articles, and discussions to help you level up your programming game

As the admin of the channel, Mani is actively engaged in sharing his knowledge and expertise with the members. You can also find him on YouTube, where he shares insightful videos on Python and Backend Engineering. Make sure to check out his GitHub profile for access to valuable code repositories and projects. Additionally, connect with Mani on LinkedIn to stay updated on his latest endeavors and professional achievements

Join Python BackendHub today to become a part of a thriving community of Python and Backend Engineering enthusiasts. Whether you are a beginner looking to start your learning journey or an experienced developer seeking to further enhance your skills, this channel has something to offer for everyone. Don't miss out on this opportunity to connect with like-minded individuals and advance your career in the world of Python and Backend Engineering!
Channel link: https://t.me/PythonFellow

Python BackendHub

21 Jan, 10:59


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

ببینید من یه پلنی دارم که مدت هاست دارم بهش فکر می کنم
فرض کنید یهو یه هوش مصنوعی می‌آد که می‌تونه همه برنامه نویسا رو بی کار کنه مثلا همین https://devin.ai/
فرض کنید خیلی پیشرفته تر شه

حالا من یهو می‌رم ازش می‌خوام که خودش رو بسازه به اسم
https://beni.ai/
بعد منم میلیونر می‌شم

همین دیگ
فقط لطفا به کسی نگین

@BenDevelop

Python BackendHub

29 Dec, 11:52


از این زاویه بهش نگاه نکرده بودم 🤣
@PyBackendHub

Python BackendHub

25 Dec, 21:59


یک نقل قول (و حق) دیگه از پرایم
اگه از AI استفاده میکنید toolbox تون باشه، نه boxتون!

به زبون ساده تر، از AI مثل یک جعبه ابزار استفاده کنید. نه اینکه کامل بهش وابسته باشین.

ما به طور کلی دو مشکل داریم وقتی کد میزنیم،

یا داریم به کامپیوتر میگیم چیکار کنه. مثلا اگه رو این دکمه کلیک کردم، یک modal باز شه. فریم ورک و AI و جعبه ابزار هایی که داریم، به ما تو این مسیر کمک میکنن. این کاره خیلی سختی نیست. بالاخره از پسش برمیایم.

یا داریم فکر میکنیم که کامپیوتر باید چیکار کنه. اصل پیچیدگی کار ما همینجاست. و تو این مورد AI اصلا نباید و نمیتونه کمکتون کنه!

@PyBackendHub

Python BackendHub

25 Dec, 12:43


یک باگ خیلی مزخرف تو pylance که هنوز بعد ۳ ماه اصلاح نشده هنوز

وقتی type alias دارین تو پروژتون, دیگه تو یک فایل دیگه وقتی میخواین ایمپورتش کنید suggest بهتون نمیده.
اگه pylanceتون رو به نسخه 2024.9.2 داونگرید کنید درست میشه.

@PyBackendHub

Python BackendHub

23 Dec, 10:58


هیچوقت جنس پیچیدگی که دیزاین پترن به کد شما اضافه میکنه رو عمیقا متوجه نشده بودم (یعنی نمیتونستم توضیحش بدم)، تا اینکه این ویدیو رو دیدم:

https://youtu.be/SEp0NrXWwoo?si=mBy7nitVakta-SNz

پیچیدگی که به برنامه شما اضافه میکنه اسم گذاری هست😄. با دیدن این ویدیو متوجه این جملم میشین. حتما توصیه میکنم ببینید خیلی جالبه.

@PyBackendHub

Python BackendHub

19 Dec, 14:49


خیلیا منظور این متن رو متوجه نشدن، قرار نیست شما انجین دیتابیس بنویسی. ولی همین که بدونی چیه و بتونی راجبش ۵ دقیقه حرف بزنی خیلی مهمه چون بیشتر روز باهاش درگیری. یا بهتره خوده raw sql رو یاد بگیری تا اینکه orm django رو بدون یاد گرفتن sql استفاده کنی ازش.
ایا میشه بدون دونستن sql از جنگو استفاده کرد؟ بله. آیا در این صورت شما skilled worker محسوب‌میشین؟ نه.

خیلی وقتا ممکنه بخاطر دانش بیشترتون، یک راهکار بهتر به ذهنتون برسه که برد بزرگی رو برای بیزنس رقم بزنه. به خاطر دانش بیشترتون، کدتون ممکنه باگ کمتری داشته باشه که براتون پروموشن خواهد داشت. و …

نقل قول ازنظرر Kurt Guntheroth، با ۴۰ سال سابقه و نویسنده چند کتاب معروف:

Some software jobs you can get after a 2-year Associate’s Degree from a community college, or a 9-month boot camp, just like a blue-collar job.
Some software jobs don’t require much independent thought and analysis. How hard is it to arrange content on a web site? (Yes, I know, as hard as you want to make it. But not always).
Some software jobs are done in assembly-line fashion. Pull the next feature card off the stack and start coding, pull the next bug report off the list and start looking for a fix. Your job has no beginning and no end, just an endless stream of little tasks (called sprints), with no time to rest in between, just like a blue-collar job.
Some bosses of software people are Dickensian horrors, driving their team to work long, uncompensated hours. Never a word of praise, but the sure prospect of getting fired for not toeing the mark, just like a blue-collar job.
But those same bosses will insist software is a white collar job, because if it ever did become a blue-collar job, they would have to pay time-and-a-half for overtime (in the US).
I think what’s true is that the software profession is diverging into two levels of skill, professional software developers, and programmers. Once upon a time it was like this, but the original reason for programmers (typing code onto punch cards and running it on batch terminals) went away. Now we’ve got easy problems solved by programmers with limited education, and really hard problems, solved by highly educated and trained professionals.



@PyBackendHub

Python BackendHub

19 Dec, 10:34


🚫 اگه مثل توضیحات بالا عمل میکنید، یک مهندس نرم‌افزار نیستید.

™️ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx

Python BackendHub

17 Dec, 17:51


https://github.com/teamhanko/hanko
ایده pass-key رو خیلی دوست دارم. واقعا یوزرفرندلی و امنیت رو باهم تو یک level دیگه داره! اینم یک سرویس اوپن سورس برای اینکاره.

@PyBackendHub

Python BackendHub

16 Dec, 09:18


یکی از اشتباهات رایج و خیلی بد تو دیزاین دیتابیس که من دیدم خیلی انجام میدن اینه که سعی میکنن state یک entity رو با چند boolean ست کنند.
مثلا برای یوزر داریم:
is_active
is_banned
یا شما میتونی برای پردازش یک دیتایی اینطوری هم ذخیره کنی:
is_pending
is_success

اما خیلی پرکتیس بدیه. چرا؟ به ۲ دلیل:
۱. حالت هایی به وجود میاد از ترکیب این boolean ها که رخ دادنش ممکن نیست. مثلا چطوری میشه is_pending=true باشه و is_success هم true باشه؟ حالا هرچی جلوتر برید و تعداد boolean هاتون بیشتر شه این ترکیب هایی که امکان رخ دادنشون وجود نداره خیلی بیشتر میشه. مثلا ۴ تا boolean میشه ۱۶ حالت. آیا واقعا همه ۱۶ حالت رو دارین؟!
۲. راه حل دوم خیلی بهتره! راه حل دوم چیه؟‌استفاده از یک Enum تو دیتابیستون.

PENDING
SUCCESS
FAILED

حالا یک جایی نیازه که ایمیل بزنید اگه این پردازش موفقیت آمیز نبود. خیلی راحت میتونید رو همه حالت ها match case کنید. و در نهایت یک assert never هم قرار بدید.
اینطوری فردا اگه یک state جدید اضافه کنید به اپلیکیشنتون, همه جای کدتون ارور تایپینگ میخورید تا مجبور شید رفتار و ساید افکت state جدید رو تو همه جا هندل کنید.


match state:
case State.FAILED:
email_to_user()
case State.SUCCESS | State.FAILED:
pass # do nothing
case _:
assert_never(state)



@PyBackendHub

Python BackendHub

08 Dec, 17:24


حق

@PyBackendHub

Python BackendHub

04 Dec, 10:13


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

اینکه میگن یه زبان/فریم‌ورک/ابزار رو که انتخاب کردید، تمام تمرکز رو بذارید روش و حسابی توش دیپ شید کاملا اشتباهه بنظرم.

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

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

من اوایل که بعد از سالها پایتون کد زدن شروع کردم تایپ اسکریپت یاد گرفتن، بارها می‌شد که توی پایتون سعی می‌کردم مکانیزم هایی که سمت ریکت هستن رو پیاده کنم. همینجوری واسه خودم دکوریتورهایی طراحی می‌کردم تا کمبود typing پایتون رو نسبت به تایپ اسکریپت برطرف کنم. ( صرفا واسه تفریح)

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

Python BackendHub

29 Nov, 00:10


۲ سال پیش، در همین روز gpt منتشر شد. ۲ سال گذشته و هنوز بعضیا نگرانن جاشون رو GPT ممکنه بگیره تقریبا این سوالو روزی ۱۰ بار میشنوم. اما حقیقت اینه که GPT در حال حاضر یک درصد کاره پروداکت هم نتونسته بکنه بعد از ۲ سال توسعه. توسعه یک پروداکت تو یک تیم پروداکت چطوریه؟

یک تیم دیزان هست، که user research انجام میده. سعی میکنه نیاز کاربر رو متوجه شه و یک راهکار خلاقانه ارائه میده، که تو پروداکت های موفق معمولا راهکار نوین و جدید هست. یک جاهایی تیم دیزاین باید با تیم توسعه صحبت کنه و جلسه بذاره که درک کنه نرم افزار الان چطوری کار میکنه و چه چیزایی ممکنه انجام دادنش. این جلسات توسط تیم دیزاین شکل میگیره.
ایا gpt میتونه ریسرچ کنه؟ نه آیا gpt میتونه یک design problem رو حل کنه؟ نه ایا gpt خلاقیت داره؟ نه ایا gpt میتونه به صورت pro active اون جلسات و ارتباطات رو با تیم توسعه داشته باشه؟ نه

میرسیم به مرحله توسعه،
تیم توسعه دیزاین رو میبینه. دوباره ارزیابی میکنه. ادج کیس هارو بررسی میکنه. ادج کیس ها دو دسته هستن، یا تکنیکال هستن یا بیزنس. با راه حل دادن و پلن توسعه فیچر، تیم توسعه دهنده کارشو شروع میکنه. معمولا ۷۰-۸۰ درصد سختی کار، تو حل کردن مشکلات بیزنسیه که راه حل دقیق و درستی ندارن. راه حل زیاده و بر اساس خلاقیت توسعه دهنده، میتونه گزینه بهتر همیشه وجود داشته باشه
ایا gpt میتونه ادج کیس تکنیکال یا بیزنس رو متوجه نشه؟ نه ایا میتونه خلاقیت داشته باشه تو حل کردن مشکل بیزنسی؟ نه و …

من تا صبح میتونم این رو ادامه بدم… برای همین gpt الان نیم درصد تیم پروداکت هم نیست و یک سری کار های تکراری و حوصله سربر رو اتوماتیک تر کرده. اگه واقعا فکر میکنید gpt الان جاتون رو پرکرده، واقعا باید به مهارتتون شک کنید….
هر کدوم از این استیج های توسعه پروداکت، باید نوشته شه توسط یک شرکتی. تبدیل شه به یک پروداکت، مارکت رو قانع کنه استفادش کنند. و کار کنه. بنظرتون شرکتی تو دنیا هست که تو چند سال بتونه همه این فیچر هارو stable بده بیرون تست شده و فراگیر شده با هزینه معقول؟

@PyBackendHub

Python BackendHub

28 Nov, 18:10


@PyBackendHub

Python BackendHub

22 Nov, 10:02


Don't do this - PostgreSQL

بعضی چیزا رو نمیدونستم جالب بود. مثلا اینکه اسم تیبل snake case باشه یا pascal case فکر میکردم کاملا سلیقه ای هست.

@PyBackendHub

Python BackendHub

19 Nov, 19:17


یک پروژه از یکی از دوستان 👇👇

نحوه نصب و راه اندازی سیستم توسعه منابع سازمانی و حسابداری #odoo رو تو سیستم های ubuntu,centos و windows به همراه ارور ها و چالش هایی که میتونه داشته باشه و همچنین پرزنتیشنش رو ریپازیتوری کردم تا به راحتی بتونید نصب کنید.

لینک مخزن:
Https://github.com/AmirakbariSXL/Odoo-Installation

#ERP
#Odoo

@PyBackendHub

Python BackendHub

17 Nov, 23:09


#داستان_واقعی
امروز تو گروه یک آدمی از جانب شرکت vectordbcloud اومد و ۱۶ موقعیت شغلی گذاشتن همه کارآموز و بدون حقوق! فردی که این آگهی رو گذاشته بود تلگرامش هویت نداشت. لینکندین استارت آپشون رو پیدا کردم, سایز شرکت یک نفره :))

خواهشا به وقتتون احترام بذارین. کارآموزی بدون حقوق انجام ندید. تو بدترین شرایط حقتون حداقل حقوق هست! بدون حقوق تو هرجای دنیا استخدام کنند جرم محسوب میشه.
و کسی که حاضر نیست یک ریال خرج کنه, برای شما یک محیطی نمیسازه که توش رشد کنید.

@PyBackendHub

Python BackendHub

16 Nov, 18:11


بتمن حواسش به شهر هست 😂
@PyBackendHub

Python BackendHub

14 Nov, 09:33


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

@PyBackendHub

Python BackendHub

14 Nov, 09:32


گلچین مطالب کانال.

۱. رزومه نویسی و کار یافتن

دوره رزومه نویسی و رشد در مسیر شغلی

چند درصد آگهی رو خوب بلدیم رزومه بفرستیم؟‌راهنما عملکرد بهتر در مصاحبه ها

قدم های مورد نیاز برای مهاجرت

ریپازیتوری آموزش رزومه نویسی با بیش از ۲۰۰ استار

معرفی ریسورس برای مصاحبه و بهتر کردن رزومه


۲. دوره های آموزشی در یوتیوب

دوره SQLAlchemy

دوره دیزاین پترن

دوره تست نویسی


@PyBackendHub

Python BackendHub

14 Nov, 09:29


سلام خدمت دوستان. حدودا ۱ سال از تاسیس کانال میگذره. برای همین این پستو میذارم که پین بمونه تا سال دیگه😁

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

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

من مانی هستم. از سال ۲۰۲۰ برنامه نویسی رو به طور حرفه ای شروع کردم. قبلا پروداکت داشتم و به صورت تیمی روش کار میکردیم.البته الانم هستم ولی دیگه کاره تمام وقتم نیست. الان ۲ سالیه داخل یک استارت آپ آلمانی به عنوان مهندس نرم افزار کار میکنم و برلین زندگی میکنم. تجاربم بیشتر سمت بک اند, فرانت, تست نرم افزار (QA) و وب اسکرپ, و کمی آپریشن (ci/cd, observation, orchestration) هست. زبونی که باهاش کار میکنم پایتون و تایپ اسکریپت هست و در حال یادگیری rust هستم.

یوتیوب من:
https://www.youtube.com/@GitOverHere

لینکدین من:
https://www.linkedin.com/in/manimozaffar/

گیت هاب من:
https://github.com/manimozaffar


@PyBackendHub

Python BackendHub

10 Nov, 20:38


چند نفر پرسیدن, اسمش BOSGAME P3 Mini PC هست. شاید ۴۰۰ یورو گیرتون نیاد چون قیمت واقعیش ۴۷۰-۵۰۰ یوروعه, من با تخفیف موقت رو آمازون و voucher ای که بهم داد اینو گرفتم.

@PyBackendHub

Python BackendHub

10 Nov, 19:47


کمی آف تاپیک, یک مدته هوس لینوکس کرده بودم از MacOS خسته شدم.
یک PC کوچیک گرفتم از اینا که تو یک دست جا میشه. وزنش ۱ کیلو هست. با این مشخصات:

RAM: 32GB DDR5
CPU: AMD Ryzen 9, 8 core 16 thread 4.9 GHz
Storage: 1TB SSD NVMe PCIE x 4
Graphics Coprocessor: AMD Radeon 680M 12 cores 2400 MHz
Frequency
Display port: USB 4, HDMI, DP


قیمت چقدر؟‌ فقط ۴۰۰ یورو 😂 اینقدر ارزونه که دارم شک میکنم واقعا کار کنه :)) شنبه دستم میرسه ایشالا.

اسم برندش BOSGAME هست که اصلا آشنایی ندارم.
@PyBackendHub

Python BackendHub

06 Nov, 18:20


#آف_تاپیک #موقت

استارت آپ من دنبال UI UX دیزاینری هست که زبان انگلیسی بلد باشه. متن آگهی:
-------------

پوزیشن:‌ UI/UX Designer
محل کار:‌ ریموت

درباره پروداکت:
فیر تو بات یک پروداکت B2B هست که با ارائه API و داشبورد، به کسب‌وکارها امکان می‌دهد به‌طور خودکار با بازی‌های آنلاین تعامل داشته باشند و انتقال ارزهای دیجیتال درون بازی را خودکار کنند. پلتفرم ما به شرکت‌ها کمک می‌کند تا فرآیندهای مرتبط با ارزهای بازی را بهینه‌سازی کنند و هزینه ها را کاهش بدهند و تجربه کاربری بهتری را برای مشتریان خود فراهم نمایند.
ما به دنبال یک طراح UI/UX هستیم که بتواند طراحی‌های تجربه کاربری را از ابتدا تا انتها انجام دهد و با انجام تحقیقات دقیق، به بهبود مستمر پلتفرم ما کمک کند. کاندیدای ایده‌آل باید دارای توانایی ایجاد رابط‌های کاربری جذاب و کاربرپسند باشد و بتواند نیازهای کسب‌وکارهای ما را در طراحی‌های خود به خوبی منعکس کند.


وظایف:
- Design and refine intuitive, user-centered UI/UX solutions with a focus on simplicity and functionality.
- Collaborate with developers to translate designs into interactive prototypes and final implementations using Figma.
- Conduct user research, usability testing, and analyze feedback to identify and prioritize design improvements.
- Create data-driven visuals, including analytics dashboards and complex UI components.
- Facilitate user interviews and workshops in English to gather requirements and enhance the user experience.

نیازمندی ها:
- Proven experience in UI/UX design.
- Proficiency in Figma.
- Good communication skills in English, both written and verbal.
- Strong research and problem-solving abilities with an independent and proactive approach
- In-depth understanding of UX principles, information architecture, and end-to-end design processes.

آنچه ما ارائه می دهیم:
- Innovative work environment: Freedom to explore without tight deadlines
- Remote work flexibility

در صورت تمایل لطفا رزومه و portfolio در آدرس زیر وارد فرمایین.
https://forms.gle/LqPJEfccL9mB1XxRA


@PyBackendHub

Python BackendHub

04 Nov, 10:32


The Oxidation Compiler is creating a collection of high-performance tools for JavaScript and TypeScript.
Oxc is building a parser, linter, formatter, transformer, minifier, resolver ... all written in Rust.

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

https://github.com/oxc-project/oxc

@PyBackendHub

Python BackendHub

03 Nov, 21:23


یه مقاله خیلی جمع و جور نوشتم واستون. اگه به مبحث type hinting علاقه دارین، توی این مقاله راجع به Generic Typing توی پایتون نوشتم. دقیقا سینتکس زیر و اون [T] که گاها ممکنه گیج کننده باشه:

def function[T](...) -> T:
...


اینکه چیه و چیکار می‌کنه به همراه کلی مثال و تمرین کوچیک که درک این قضیه رو واستون ساده‌تر می‌کنه.

Read 👉 https://blog.imsadra.me/generic-typing-in-python

این سینتکس در ورژن ۳.۱۲ معرفی شد. در رلیزهای بعدی پایتون، خواهید دید که خیلی از این سینتکس استفاده میشه.

Python BackendHub

02 Nov, 10:50


بهترین آهنگ برای کد زدن رو یافتم :))
اونایی که داستانشو میدونن 😁

@PyBackendHub

Python BackendHub

31 Oct, 21:14


این پست جنبه اموزشی ندارد 😁

از وقتی برلین اومدم خیلی networking event میرم. در در حد هر یکی دو هفته یک بار. دوره همی فانه، کلی ادم و دوست جدید پیدا میکنم معمولا بعدش هم میریم بیرون. نکته ای که خیلی برام جالبه اینه که همه دارن یک کمپانی AI میسازن تو این event ها، و دنبال فاند raise کردن هستن که پروداکتشون رو لانچ کنند. این AI خیلی بیش از حد ترند شده مخصوصا تو VC و fundraising. اصلا انگار مردم یادشون رفته تا سال پیش هم AI وجود داشته 😅

یک استارت آپ داشت pitch انجام میداد، کارشون این بود که بگن از چه پروداکت skin care چک کن با استفاده از دوربین گوشیت. همون کاری که بری یک لوازم ارایش فروشی اون فروشنده تو ۲ دقیقه انجام میده. و این پروسه ای هست که نیاز به human interaction داره.

و چیزی که خیلیا دیدم فراموش میکنن بیزنس مدل و استراتژی فروش هست. اوکی پروداکتت خیلی باحاله ولی چرا یک e-commerce باید ده هزار یورو خرج همچین فیچری کنه؟ اصلا چه سود مالی داره همچین چیزی؟

بنظره من این عنصر پروداکت که بتونی قانع کنی کلاینتو و بتونی یک چیزی راه بندازی تو خیلی از این پروداکت های جدید AI وجود نداره و میخوان با چکش AI هرجوری شده هر میخی رو بکوبن تو دیوار.

@PyBackendHub

Python BackendHub

30 Oct, 11:23


متاسفانه کلی ربات زیاد شده تو کانال و همیشه میان کامنت میذارن زیره همه پستا. کار من شده پاک کردن این کامنتا. (و این از عملکرد بسیار ضعیف تلگرام هم میاد تو این زمینه)
برای همین مجبورم گروه رو دیگه پابلیک نکنم و برای عضو شدن باید درخواست بدید از این به بعد. در خصوص کامنت گذاشتن هم همین موضوع برقرار هست.


@PyBackendHub

Python BackendHub

29 Oct, 22:17


یک نکته خیلی بزرگ راجب رزومه نویسی که تو ریپو هم بهش اشاره کردم
سعی کنید با کمترین تعداد لغات بیشترین مفهوم رو تو رزومتون برسونید. یک مثال میزنم:

Engineered Notification System: Designed a real time notification system to notify customers about their purchases. It improved the satisfaction of customer.

سه بار کلمه نوتیفیکشن رو نوشته. بعد توضیح داده نوتیفیکشن چیه.خب ذاتا نوتیفیکشن هم real time هست تقریبا. یعنی اینطور نیست یکی تو تلگرام به شما پیام بده شما ۵ روز بعد نوتیفیشکنشو بگیرید. بعد اون قسمتی که واقعا مهم بوده رو اصلا باز نکرده (رضایت کاربر). کاربر چطور راضیه وقتی شما بهش نوتفیکیشن میدی؟ اصلا این چه ارتباطی داره؟ یوزرا بدتر ممکنه بدشون بیاد اسپم بشن. در کل خیلی بولت پوینت ساده و خسته کننده ای هست. اصلا هم مشخص نیست این سیستم رو چطور نوشته. چیکار میکنه و ... .

Boosted app engagement and revenue through timely purchase alerts by developing a multilingual purchase notification system using Firebase.

تقریبا همون تعداد کلمه ولی خیلی بیشتر و کاملتر و دقیقتر. بعضا buzz word هم دیده میشه. حواستون باشه رزومتون رو ندید به gpt براتون بنویسه یا اگه اینکارو میکنید خواهشا سه بار بخونید از روش که ۱. تابلو نباشه AI نوشته ۲. جملات مفهوم و معنی داشته باشن و straight to point باشن.

من تو هر ۱۰۰ تا رزومه ای که میبینم ۹۵ تاش خوب نیستن... توصیه میکنم حتما رو رزومه تون خیلی وقت بذارین. رزومه بخش بزرگی از presentation شماست و تو آینده شغلیتون بسیار تاثیر میذاره.

ریپو رزومه نویسی من رو هم اگه تاحالا نخوندین لینکش اینجاست.

@PyBackendHub

Python BackendHub

29 Oct, 18:16


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

https://youtu.be/FOg9zK4ikGU

@BenDevelop

Python BackendHub

26 Oct, 12:50


یک چیزه خیلی basic و قشنگ تو پایتون که من نمیدونستم, میتونید تو list comprehension از walrus operator استفاده کنید.

فقط یک نکته ای که داره اینه که اسم variable لیک میشه. حواستون باشه به این قضیه. یعنی تو این مثال اگه از list comprehension خالی استفاده میکردم i وجود نداشت.

@PyBackendHub

Python BackendHub

25 Oct, 21:22


لینکدین به روایت تصویر😂:

I shat myself today, here are 5 things I learnt from shitting myself

1. Fart isn’t always a fart only 💨
2. Shit is wet 💧
3. Shit doesn’t go away without washing 💩
4. You can’t trust yourself ⁉️
5. Shit stinks 😷


credit: the9to5slaves

@PyBackendHub

Python BackendHub

25 Oct, 20:54


قصد هیت دادن ندارم ولی واقعا لینکدین جای عجیبیه!

@PyBackendHub

Python BackendHub

24 Oct, 19:25


یک فیچر جدید به RichAPI اضافه شد.

شما میتونید اکسپشن کاستوم با context بنویسید.
اینطوری دیگه لازم نیست کل متن exception تون رو stringify کنید تو detail که اصلا پترن خوبی نیست. اینطوری دیتا رو کامل تر میتونید به کلاینت بدید و بذارین خوده کلاینت متن ارور رو بسازه.

و خوبیش هم اینجاست که صورت خودکار به سواگرتون اضافه میشه 🚀

لینک گیتهاب
لینک داکیومنتشن

@PyBackendHub

Python BackendHub

24 Oct, 09:03


این لایبری عالیه
https://github.com/adamchainz/time-machine

میتونید باهاش تایم رو ماک کنید تو پای تست.
اینطوری انگار برگشتین عقب به تایم.
اگه از این لایبری استفاده نکنید باید now رو یک جا run کنید و همه جا پاسش بدید که یکم اذیت کنندست

@PyBackendHub

Python BackendHub

24 Oct, 07:35


از این لایبری استفاده کردین؟ چطور بود؟
به زودی یک پروژه سمپل هم میذارم با این لایبری که چطور اسکیما 4xx های بهتری بسازین.

@PyBackendHub

Python BackendHub

23 Oct, 06:52


این لایبری پتانسیل زیادی داره بنظرم چون در همون راستای FastAPI هست که داکیومنت خودکار انجام شه.

سباستین هم لایک کرده پست لینکدین رو 🤞

تو لینکدین دیشب پست کردم و خیلی share شده. ممنون میشم اگه قصد حمایت دارین، ریپست کنید که بیشتر دیده شه

لینک لینکدین

@PyBackendHub

Python BackendHub

22 Oct, 21:11


خروجی لایبری به همچین چیزی تبدیل میشه که کلاینت و فرانت شما دقیقا میتونه ببینه API شما چه حالت هایی و اکسپشن هایی داره!

@PyBackendHub

Python BackendHub

22 Oct, 21:00


همیشه با خودم فکر میکردم چی میشد اگه همونطوری که FastAPI ریسپانس 2xx که ریترن میکنیم و تو سواگر میاره, بقیه حالت ها رو هم بیاره. مثلا اگه احراز هویت کاربر درست انجام نشد بهش تو سواگر نشون بده چه ریسپانسی ممکنه بگیره.

برای همین پروژه ای نوشتم که اینکارو انجام میده. شما تو این پروژه فقط یک خط کد میتونید این قابلیت رو به پروژتون اضافه کنید!

لینک گیتهاب
لینک داکیومنتشن

لایبری RichAPI با استفاده از Abstract Syntax Tree کل کد FastAPI شما رو آنالیز میکنه و میبینه زیر روتر های شما چه اکسپشن هایی ممکنه رخ بده و اون رو به سواگر اضافه میکنه!

اگه این پست یا این کتابخونه برات مفید بوده، خیلی ممنون می‌شم اگه بهش یه ستاره بدی. استار گیت هاب شما به من خیلی انگیزه میده که به توسعه و بهبود فریمورک‌های متن‌باز ادامه بدم. 🙂🙏


@PyBackendHub

Python BackendHub

21 Oct, 18:02


ما یک لایبری داریم تو راست به اسم pyo3 که بهت اجازه میده تو راست کد binding بزنی بدون اینکه بخوای یک عالمه بویلرپلیت بنویسی. اما چطور؟ core پایتون expose شده تحت لایبری C به اسم libpython

لایبری مثل Pyo3 که اجازه میده با راست برای پایتون کد binding بزنی اینطوری کار میکنه که میاد اون لایبری libpython رو wrap میکنه ولی به صورت تایپ سیف و مموری سیف. من الان یکم داکشو خوندم فکر کنم بخوام یک ادد ساده بنویسم این شکلی میشه:


use pyo3::prelude::*;

#[pyfunction]
fn add(a: i32, b: i32) -> i32 {
a + b
}

#[pymodule]
fn my_module(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(add, m)?)?;
Ok(())
}


و ظاهرا خوده ‍PyO3 برام فایل stub هم میسازه که مشخص شه اینترفیس پکیجم چطوری شده.


def add(a: int, b: int) -> int


بعد با این لایبری میام کد rustمو کامپایل میکنم. میزنم maturin develop که پکیج رو کامپایل میکنه به فایل so یا dll. و خودش هم میفرسته رو pypi همون فایلو با دستور maturin publish.
بعدش پکیجمو نصب میکنم نویسم

from my_module import add
add(1,2)

و جوابش میاد میشه ۳. اما تو ران تایم چطوری اجرا میشه؟

فایل .so بهش میگن shared object.
وقتی داری یک چیزی رو کامپایل میکنی دو حالت داره:
۱. یا اینکه بیای static linking انجام بدی. یک executable میدی بیرون که اونو اجرا میکنی درجا اجرا میشه.
۲. یا اینکه بیای dynamic loading انجام بدی. یعنی نمیای executable بدی که قابل اجراست و و همه چیز داخلش هست. به جاش میای باینری کد برنامتو کمپایل میکنی به همراه یک سری symbol و executable نیست دیگه مستقیم.سیمبل میشه function ها و variable هات.و یک برنامه دیگه اونوقت میتونه بیاد با استفاده از اون سیمبل ها, به صورت داینامیک از ماشین کدت استفاده کنه.

حالا چطوری؟ تو سیستم عامل یک چیزی وجود داره به اسم dynamic loader که وظیفش اینه دقیقا همین فایل های .so رو ران کنه. اینم رفرنس لینوکیسش.

در نهایت مفسر پایتون میتونه تو ران تایم کد rust ای که تحت فایل .so داری رو با داینامیک لودر ران کنه. و اون کد so دقیقا توابعی که تو راست نوشتی ماشین کدشو به صورت callable پایتون داره و از اون جایی که libpython هم wrap شده میتونی از api های libpython استفاده کنی. مثل گرفتن GIL و ریلیز کردنش. بقیه extension های ‍C هم همینطوری کار میکنند.

@PyBackendHub

Python BackendHub

21 Oct, 18:02


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

Python BackendHub

21 Oct, 06:21


بد ترین نحوه استفاده از AI
برید یک کدی باهاش جنریت کنید، خودتونم نفهمید چی شده و همونو مستقیم تو پروداکشن استفاده کنید

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

@PyBackendHub

Python BackendHub

17 Oct, 13:34


اگه اسلاید انجام میدین
برای presentation یک چیزی
https://sli.dev/

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

بیشتر به درد تیم های ریسرچ میخوره که زیاد اسلاید میزنن.

@PyBackendHub

Python BackendHub

13 Oct, 09:35


Next one is loading... ⌛️🚀

@PyBackendHub

Python BackendHub

13 Oct, 09:33


AioClock
در ماه ۴ هزار دانلود داره 🚀
یک شرکت بزرگ تو برزیل هم داره ازش استفاده میکنه و تو لینکدین ازم تشکر کردن خیلی حس خوبی داشت :))

واقعا دوست دارم فول تایم اوپن سورس کار کنم. و مثلا همین پروژه naked sqlalchemy ام حاصله دو شب کار بود.
ولی متاسفانه هنوز به نقطه ای نرسیدم که بتونم کسب درآمد کنم از پروژه اوپن سورسم
برای همین به حمایتتون نیاز دارم این حمایت میتونه یک استار گیت هاب باشه, که پروژه هام بیشتر دیده شه و به اون نقطه نزدیک تر شم 🫶

فریم ورک/لایبری های مفید اوپن سورسی که تاحالا منتشر کردم:

AioClock - A modern python scheduling framework with dependency injection and modular integration support. Alternative for Rocketry or apscheduler

Naked SQLA - A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM.


CfCrawler - Cloudflare scraper and cralwer written in Async, In-place library for HTTPX. Crawl website that has cloudflare enabled, easier than ever!

@PyBackendHub

Python BackendHub

12 Oct, 11:42


یکی از دلایل اصلی که این لایبری رو نوشتم این بود:

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

همین موضوع راجب view هم رخ میده. که دلایلش داکیومنت شده اینجا که چرا این موضوع fail میشه.

تست فیل شدن آپدیت
تست فیل شدن view

دوم خیلی نگران کننده نیست, چون همه از view استفاده نمیکنن. ولی باگ اول تقریبا تو کله سورس کدمون هست

@PyBackendHub

Python BackendHub

12 Oct, 11:38


امروز خیلی خوشحالم که بالاخره Naked SQLAlchemy رو معرفی میکنم، یه thin wrapper روی SQLAlchemy Core که کار با دیتابیس‌ها تو پایتون رو ساده‌تر می‌کنه. بعد از اینکه با pitfallهای ORM مواجه شدم—مثل اینکه داده‌های توی حافظه با وضعیت واقعی دیتابیس یکی نبود به خاطر پیچیدگی‌هایی مثل identity mapping و dirty tracking—فهمیدم این ویژگی‌هایی که قرار بوده کار رو راحت کنن، در واقع باعث پیچیدگی و سخت‌تر شدن یادگیری می‌شن. Naked SQLAlchemy با ترویج استفاده صریح از SQL و map مستقیم نتایج کوئری به dataclassهای پایتون، این لایه‌های غیرضروری رو کنار می‌زنه.

علاوه بر بهبود سرعت قابل توجه (تقریباً دو برابر سریع‌تر از ORM)، یادگیری Naked SQLAlchemy آسونه چون بر پایه دانشی هست که احتمالاً از قبل داری. امکاناتی مثل مپ کردن dataclass، مدیریت session بدون داشتن state، و امکان تعریف SQL View رو لایه ORM. با تمرکز روی ویژگی‌های اساسی و دوری از abstractionهای پیچیده، به شما این امکان رو می‌ده که کدهای واضح و ‍explicit و قابل نگهداری بنویسن، بدون دردسرهای معمول ORM.

فلسفه من اینه که کمتر، بیشتره. با کنار گذاشتن لایه‌های غیرضروری، Naked SQLAlchemy یه راهکار قابل اعتماد، کارآمد و ساده برای دسترسی به دیتابیس تو پایتون ارائه می‌ده. اگه دنبال ابزاری هستی که از pitfallهای معمول ORM دوری کنه و از تخصص SQLی که از قبل داری استفاده کنه، دعوتت می‌کنم Naked SQLAlchemy رو امتحان کنی.

لینک ریپازیتوری
لینک مستندات

اگه این پست یا این کتابخونه برات مفید بوده، خیلی ممنون می‌شم اگه بهش یه ستاره بدی یا این پست رو بازنشر کنی. حمایت شما به من انگیزه می‌ده که به توسعه و بهبود فریمورک‌های متن‌باز ادامه بدم. مرسی 🙂🙏

@PyBackendHub

Python BackendHub

11 Oct, 18:35


یک توصیه خوب برای جونیور ها و کسایی که تازه شروع کردن
@PyBackendHub

Python BackendHub

06 Oct, 16:22


حق 👌
درواقع این همین <توهم بدن شناگر> هست. این باور جا افتاده که شناگر ها بدشون عالیه، چون شناگر هستن. درصورتی که این باور توهمه، و اگه کسی مثل شناگر ها ورزش کنه لزوما نمیتونه بدنش عالی باشه.
درواقع ریشه این مشکل اینجاست:
Correlation is not causation
که نمیتونم خوب ترجمش کنم

@PyBackendHub

Python BackendHub

03 Oct, 21:16


میتونید git-fame رو نصب کنید
و با وارد کردن این دستور, ببینید چند خط با یک پسوند الان رو سورس کد وجود داره که شما کامیت کردین؟ (کدایی که قبلا زده شده و پاک شده و دیگه تو سورس کد نیست رو حساب نمیکنه).


git-fame --incl '(.*)py$'


@PyBackendHub

Python BackendHub

02 Oct, 14:58


سادگی همیشه خبر از پیچیدگی میده!

خیلی وقت‌ها ما از کتابخونه و فریم‌ورک‌ها استفاده میکنیم به خاطر اینکه یک کار رو ساده میشه باهاشون انجام داد، از جنگو استفاده میکنیم چون کار باهاش راحته، داخل جنگو از DRF و simple jwt استفاده میکنیم چون ساخت api و لاگین رو برامون خیلی راحت میکنن. اما اینجا یک چیزی گاهی فراموش میشه.

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

و شاید بگید خوب این خوبه دیگه یارو کد برای ما زده و استفاده می‌کنیم و لذتشو میبریم. تو خیلی از مواقع این درسته، ولی امان از اون روزی که بخوایید یکچیزی رو تغییر بدید که فریم‌ورک/کتابخونه براتون انجام داده :) اونجاست که این سادگی که ازش لذت میبردید تبدیل کابوس میشه :D

این رو نگفتم که بگم از جنگو استفاده نکنید یا فلان کتابخونه بده و ...

این گفتم که بدونید همیشه هر سادگی خوب نیست، گاهی بهتره تن به کار بدید و اون کد خودتون بزنید تا با نیاز شما هماهنگ باشه نه اینکه یک کتابخونه هزارخطی نصب کنید تا از ۱۰۰ خطش استفاده کنید.

@TorhamDevCH

Python BackendHub

30 Sep, 18:05


من شروع به استفاده testcontainer کردم و واقعا خوبه.
اگه دیتابیستون رو میبرید رو pg چند آپتمایزشن میتونید انجام بدید که سرعت دیتابیستون خیلی بالا بره:

fsync=off
full_page_writes=off
shared_buffers=256MB
checkpoint_timeout=30min
checkpoint_completion_target=0.9
autovacuum=off

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

@PyBackendHub

Python BackendHub

30 Sep, 18:00


یک مشکلی همیشه تو تستا وجود داره وقتی دارین از container استفاده میکنید
اینم اونه که container پورت میگیره. تستون به یک سری hostname و پورت دپندنسی داره و اینا خیلی راحت میتونن باهم conflict بخورن.
و خیلی‌مشکلات دیگه

و خیلی‌وقتا ماک یا استفاده از SQLite پاسخگو نیاز نیست مثلا ماگریشن دارین یا functionality خاصی از دیتابیس استفاده میکنید یا … و تستاتون flaky میشه

اکثر این مشکلات رو testcontainer حلشون کرده.

https://testcontainers.com/
@PyBackendHub

Python BackendHub

29 Sep, 18:01


وات د فاک
یک پکیج داریم به اسم is odd تو جاوا اسکریپت
به صورت هفتگی ۳۰۰۰ هزار دانلود داره
و سایز آنپک پکیج هم ۶ کیلو بایته 💀

@PyBackendHub

Python BackendHub

27 Sep, 11:31


Otel 🤝 Drake

@PyBackendHub

Python BackendHub

23 Sep, 15:17


یک گاز بدید ۴۰۰ ستاره بشه 😁

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

داکیومنت
خود ریپو برای ستاره دادن

با تیم Flowcv هم در ارتباطم و اگه همه چیز خوب پیش بره در آینده کمی دورتر, اینترفیسی خواهیم داشت برای بنچمارک و tailor کردن رزومتون به صورت آنلاین (و یا از طریق CLI به صورت لوکال) با استفاده از نرم افزار رایگانشون.

@PyBackendHub

Python BackendHub

23 Sep, 09:39


https://martinheinz.dev/blog/92

یک پست خوب از بنیامین که تو گروه گذاشته بود که چرا نباید از ایمیج Alpine استفاده کنید. سه نکته همیشه موقع تصمیم گیری یادتون باشه:

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

۲. همیشه تحقیق کنید. پیرو مورد یک, خیلی وقتا نیازه که تصمیم گیری کنید. اگه چند تا آپشن دارین, گوگل کنید که چرا اون آپشن بده. و drawback های اون آپشن چیه. درکش کنید چطور کار میکنه. همینطوری از یک توتوریال برندارین کپی پیست کنید.

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

@PyBackendHub

Python BackendHub

21 Sep, 12:09


برای اینکه بفهمین چطور کار می‌کنه، اول یه مثال ساده‌تر رو در نظر بگیرین:


adders = []
for x in [1, 2, 3]:
adders.append(lambda number: number + x)

for adder in adders:
print(adder(3))


قاعدتاً باید خروجی‌ها ۴، ۵ و ۶ باشن، درسته؟ چون یه لیست از تابع‌های lambda داره که هر کدوم یه عدد می‌گیرن و x رو بهش اضافه می‌کنن.
ولی در واقع خروجی‌ها ۶، ۶ و ۶ هستن! چرا این اتفاق می‌افته؟
چون این lambdaها تو این مثال closure هستن. تو پایتون، توابع closure زمانی اجرا می‌شن که صدا زده بشن، نه وقتی که تعریف می‌شن! و به متغیرهایی که تو scopeشون هست رفرنس می‌زنن.


def foo():
adders = []
for x in [1, 2, 3]:
adders.append(lambda number: number + x)
return adders


def main():
adders = foo()
x = 5
for adder in adders:
print(adder(3))


تو این مثال، x یه بار تو foo تعریف شده و یه بار تو main. وقتی تو main اون closureها رو صدا می‌زنه که تو foo تعریف شده بودن، xی که استفاده می‌کنن همونیه که تو foo بوده، نه اون x تو main.یعنی الان تو این مثال x داخل lambda عدد ۳ میشه نه ۵.
چرا؟ چون داخلش توابع ‍closure یک cell هست که arguement رو ذخیره کرده. و تو همون اسکوپی که تعریف شده اون مدام آپدیت میشه اگه تغییر کنه. بنابراین اینجا چون scope تابع main دیگه با closureمون یکی نیست پس دیگه تغییر نمیکنه.


یک مقاله برای درک بهتر این موضوع تو medium
یک بلاگ راجب اشتباهات رایج تو پایتون این شکلی

@PyBackendHub

Python BackendHub

21 Sep, 11:40


یک راهنمایی بزرگ:‌لاجیک کد مشکل نداره.
خروجی کنسول اینه:


Ma: Hirad
Hir: Hirad


در صورتی که باید Ma: Mani و Hir: Hirad باشه. چرا؟

@PyBackendHub

Python BackendHub

21 Sep, 11:27


داشتم کد مینوشتم
یک گافه خیلی بد دادم اصلا حواسم نبود.
باگه این کد کجاست؟

@PyBackendHub

Python BackendHub

20 Sep, 07:05


۲۷۰ هزار خط جیسون رو تو ۴ ثانیه فایل جنریت کرد.
برای همچین کاری از gpt استفاده نکنید بهتره چون:

۱. امکان خطا خیلی زیاده. جی پی تی یک LLM هست نمیتونه <فکر> کنه صرفا پترن مچ میکنه و یک ضرب و تقسیم ساده هم اشتباه میکنه. پس هیچوقت برای کد جنریت کردن ازش استفاده نکنید.

۲. سواگر یا redoc یا خانواده این ابزار ها همه از openapi استفاده میکنن. openapi یک Specification هست برای نوشتن api های rest. و داره از json schema استفاده میکنه. جیسون اسکیما هم دوباره یک Specification هست که تایپ ولیدیشن رو بین همه زبون ها استاندارد کرده. این ابزار AI نیست. چون تعداد حالت محدوده, و جیسون مشخصه چه چیزایی میتونه داخلش باشه پس میتونه به صورت static درست ‍parse کنه.
اگه از جیسون پایندنتیک بسازین احتمال اینکه یک خروجی باشه که تو اون مثالتون نبوده هست. ولی اگه از json schema پایندنتیک بسازین, دیگه امکان نداره اشتباه parse کنید.

@PyBackendHub

Python BackendHub

20 Sep, 06:41


https://jsontopydantic.com/
خیلی خوبه. بهش جیسون میدین, بهتون مدل pydantic اون جیسون رو میده. برای integrate کردن api عالیه که سریع یک مدل داشته باشین.

یک ابزار دیگه هم هست که advance تره. یک cli tool هست که بر اساس openapi یا json یا xml براتون مدل پایندنتیک مینویسه.

https://github.com/koxudaxi/datamodel-code-generator/

@PyBackendHub