Python BackendHub
7.37K subscribers
306 photos
46 videos
11 files
427 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
یکی از اشتباهات رایج و خیلی بد تو دیزاین دیتابیس که من دیدم خیلی انجام میدن اینه که سعی میکنن 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
👌66👍231👎1🔥1
https://github.com/teamhanko/hanko
ایده pass-key رو خیلی دوست دارم. واقعا یوزرفرندلی و امنیت رو باهم تو یک level دیگه داره! اینم یک سرویس اوپن سورس برای اینکاره.

@PyBackendHub
👍11👎1
Forwarded from Django Expert (Boby Cloud)
🚫 اگه مثل توضیحات بالا عمل میکنید، یک مهندس نرم‌افزار نیستید.

™️ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
👍24👎12🤣3
Django Expert
🚫 اگه مثل توضیحات بالا عمل میکنید، یک مهندس نرم‌افزار نیستید. ™️ @DjangoIR 〰️〰️〰️〰️〰️〰️ © @DjangoEx
خیلیا منظور این متن رو متوجه نشدن، قرار نیست شما انجین دیتابیس بنویسی. ولی همین که بدونی چیه و بتونی راجبش ۵ دقیقه حرف بزنی خیلی مهمه چون بیشتر روز باهاش درگیری. یا بهتره خوده 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
👍28👎21👏1👌1
هیچوقت جنس پیچیدگی که دیزاین پترن به کد شما اضافه میکنه رو عمیقا متوجه نشده بودم (یعنی نمیتونستم توضیحش بدم)، تا اینکه این ویدیو رو دیدم:

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

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

@PyBackendHub
👍15🤔21👎1
یک باگ خیلی مزخرف تو pylance که هنوز بعد ۳ ماه اصلاح نشده هنوز

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

@PyBackendHub
👍12🤔3👎2😁1
Python BackendHub
حق @PyBackendHub
یک نقل قول (و حق) دیگه از پرایم
اگه از AI استفاده میکنید toolbox تون باشه، نه boxتون!

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

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

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

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

@PyBackendHub
👍42👎3😡21🤣1🤨1
از این زاویه بهش نگاه نکرده بودم 🤣
@PyBackendHub
🤣74🔥4👍3😁1
Forwarded from ‌BenDev
بچه هایی که نگران هوش مصنوعی هستن من حقیقتا نمی خواستم این راهو افشا ولی خب دیگ دلم نیومد به شما نگم

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

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

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

@BenDevelop
🤣74😁35👍4🔥3👏2👌21🥱1🤝1
Python BackendHub
۲ سال پیش، در همین روز gpt منتشر شد. ۲ سال گذشته و هنوز بعضیا نگرانن جاشون رو GPT ممکنه بگیره تقریبا این سوالو روزی ۱۰ بار میشنوم. اما حقیقت اینه که GPT در حال حاضر یک درصد کاره پروداکت هم نتونسته بکنه بعد از ۲ سال توسعه. توسعه یک پروداکت تو یک تیم پروداکت…
در ادامه این پست... خیلی‌ها این روزا سعی می‌کنن ChatGPT و AI رو خیلی بزرگ‌تر از واقعیت نشون بدن؛ یا برای منفعت شخصی، یا برای ترند شدن و جذب مخاطب، یا شاید واقعاً اینطوری فکر می‌کنن. مثلاً چند روز پیش توی اینستاگرام ویدیویی دیدم که یکی از داخل سوئد می‌گفت ۲۰ درصد برنامه نویس های شرکتشون به خاطر AI layoff شدن و جاشون رو AI گرفته. ولی وقتی رفتم تو لینکدین شرکتشون رو نگاه کنم، نه افتی دیدم و حتی رشد هم داشتن! بعد چند روز ویدیویی زد که توضیح می‌داد برنامه‌نویس‌ها جا به جا نشدن؛ فقط کله پروداکت جابجا شده با AI که از گوگل گرفته بود و هرکی تو اون پروداکت کار میکرد layoff شده 😅 خلاصه هرچیزی که توی اینترنت می‌بینید رو باور نکنید.

بعضی‌ها ادعا می‌کنن که با AI سرعتشون چند برابر میشه. قبلاً وقتی از کسی می‌پرسیدین کد چطور کار می‌کنه و side effectهاش چیه، جواب می‌دادن. حتی اگه از Stack Overflow هم کد می‌آوردن، کد به تنهایی کار نمی‌کرد و نیاز به درک عمیق تری داشتن. متأسفانه امروز بیشتر برنامه نویسا که خیلی به AI وابستن نمی‌دونن کدی که خودشون نوشتن چطور کار می‌کنه.

از طرفی، من بیشتر وقتم رو صرف فکر کردن در مورد چگونگی نوشتن کد خوب و maintainable می‌کنم؛ فقط هدف نوشتن کد نیست، بلکه نوشتن کدی که قابل فهم و نگهداری باشه از یک راه حل منطقی و این هست که اهمیت داره. حتی اگر AI بتونه بهترین کد رو برا شما تولید کنه (که فکر نکنم)، نمی‌تونه چندین راه حل مختلف ارائه بده؛ این نیاز به خلاقیت داره. اگر بیشتر زمانتون رو صرف این فکر کنید که کد کار کنه، بله AI سرعتتون رو چند برابر می‌کنه، ولی با این حال سرعت شما کمتر از بقیه می‌مونه چون کدهای بد و technical debt روی هم جمع می‌شه و هم تیمتون و هم خودتون رو کند تر میکنه.

من از کدهای AI استفاده می‌کنم و بعد ریفکتور می‌کنم.

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

در نهایت، وقتی می‌شنوید که AI کد خوب تولید می‌کنه، این حرف‌ها رو از برنامه‌نویسان خوب که منفعتی براشون نداره، نمی‌شنوید مثل Linus. مثلاً در پروفایل‌های گیت‌هاب برنامه‌نویسان خوب، شاید ۱۰-۲۰ درصد افزایش کامیت در ۲ سال دیده شده؛ تازه باز هم این به معنای تأثیر AI نیست، چون correlation does not imply causation.

و همچنان، گوگل سرچ خیلی بهتر از AI کار می‌کنه. چند روز پیش می‌خواستم بدونم چطور با zoxide به دایرکتوری A بروم که parent اش B باشه؛ با اینکه GPT سرچش روشن بود، جواب نادرستی داد. تو گوگل سرچ کردم fuzzy search zoxide و issue گیت‌هاب نتیجه اول سرچم بو که همه چیز توضیح داده بودن maintainer ها.

استفاده‌های منطقی از AI توی برنامه‌نویسی هم هست

۱. وقتی نمی‌دونید دقیقاً چی می‌خواهید، می‌تونید از GPT بخواید تا ۱۰ عنوان خوب برای سرچ ارائه بده.
۲. نوشتن داکیومنت؛ حتی اگر کامل نباشه، بهتر از هیچیه و می‌تونید ادیتش کنید.
۳. ریویو کردن کد؛ نه برای اینکه نحوه رسیدن به هدف رو اصلاح کنه، بلکه برای جلوگیری از اشتباهات ساده برنامه نویسی یا اشتباهات لغوی
۴. افزایش سرعت تایپتون با Auto complete

هدف من کوبیدن AI نیست بلکه هدفم اینه که استفاده صحیح رو از دید خودم توضیح بدم. در نهایت توصیه میکنم این ویدیو از Linus رو حتما ببینید. که دقیقا تو راستای همین صحبت هاست.

@PyBackendHub
👍59👎94👏2🤣2
Python BackendHub
در پی این کامنت...
توصیه میکنم اولا همیشه وقتی چیزی تو اینترنت میخونید حتما برین دنبالش و تحقیق کنید. ببینید چه کسی اونو گفته, رزومه اش رو ببینید یا لینکدینشو ببینید یا صفحه گیت هابش یا ... . اینطور افراد ۹۹درصد پروفایل های کاری بسیار ضعیفی دارن چون اگه نداشتن نیاز نبود دست به همچین کار هایی بزنن.

تو کامنتا یک سری reply زده شد در خصوص نیروی جونیور, ببینید من اگه یک تسک دارم نمیام تسک رو توضیح بدم به نیروم. سعی میکنم بهش توضیح بدم چرا داره این کد رو مینویسه و هدف نهایی چیه. و راه حل رو میذارم به عهده خودش. من اگه بخوام requirement engineering کنم و تا کوچیک ترین if elif کد رو توضیح بدم, اون نیرو رو اخراج میکنم و خودم تسکو انجام میدم چون زمان کمتری ازم میگیره. من از نیروم انتظار دارم که وقتی هدف رو نشون دادم مسیر رو خودش پیدا کنه, مشورت کنه و راه حل خلاقانه پیدا کنه. ۹۵درصد software engineering پیدا کردن یک راه حل خلاقانه و درست برای حل مسئله هست با تحقیق و ..., نه تایپ کردن کد. و هیچ AI ای نمیتونه به شما راه حل خلاقانه بده یا باهاتون بحث کنه و ... . ولی اگه از AI بخواین یک requirement حسابی تعریف شده رو تبدیل به کد کنه, بله میتونه. در واقع AI یک زبون برنامه نویسی abstract شده تر هست با احتمال خطا بالا.

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

متاسفانه تو خیلی شرکت های ایرانی/خارجی همین روند وجود داره و در نهایت نیروی جونیور هیچ پیشرفتی نمیکنه. اکثرا پروسه های جدید میسازن و optimize میکنن که اون requirement عه بیشتر مهندسی شه قبل از رسیدن به برنامه نویس که سریعتر تبدیل به کد شه, جای اینکه بخواد روش فکر شه و برنامه نویسا اصلا نمیدونن برای چی دارن این کد رو مینویسن و کارشون اینه که مثل یک ربات یک تیکت از جیرا بردارن و تکمیلش کنند. انگار دارن به مسیر اشتباهی خیلی بهینه حرکت میکنن.

There is nothing so useless as doing efficiently that which should not be done at all - Peter Drucker


@PyBackendHub
👍422👏1🤝1
شرکتی که توش کار میکنم در حال استخدام Senior frontend engineer هست

https://join.com/companies/noah-labs/13793716-senior-frontend-developer

@PyBackendHub
👍17🔥6
Forwarded from Sadra Codes
گشت گرداگرد مهر تابناك، ايران زمين
روز نو آمد و شد شادى برون زندر كمین

اى تو يزدان، اى تو گرداننده مهر و سپهر
برترين‌اش كن برايم اين زمان و اين زمين

سال خوبی داشته باشن! ❤️
41🔥3👏1
شاید باورتون نشه ولی این ته یک جواب به یک سوال بود وقتی داشتم مدل رو تست میکردم 😂😂
نمیدوستم AI هم زده تو کاره قهوه. این روزاست که جای انسانارو بگیره 😂
@PyBackendHub
🤣41👍2❤‍🔥1
Forwarded from Django Expert (Majid A.M)
ینی یه نفر پیدا نشد جای این همه سر و صدا و داد و بیداد و هوار و هیاهویی که توی یوتیوب فارسی راه انداختن که آی هوش مصنوعی اومد بدبخت شدیم فلانب ها دارن لی آف میکنن فلان و بهمان چهار تا کورس آموزشی خوب کد زدن با copilot و cusror بسازید.

™️ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
👎19👍141
Django Expert
ینی یه نفر پیدا نشد جای این همه سر و صدا و داد و بیداد و هوار و هیاهویی که توی یوتیوب فارسی راه انداختن که آی هوش مصنوعی اومد بدبخت شدیم فلانب ها دارن لی آف میکنن فلان و بهمان چهار تا کورس آموزشی خوب کد زدن با copilot و cusror بسازید. ™️ @DjangoIR 〰️〰️〰️〰️〰️〰️
واقعا متوجه نمیشم استفاده از AI برای یک برنامه نویس چه آموزشی میخواد؟ کوه قرار نیست بکنید که.

اگه برای نصب یک cursor یا auto complete نیاز به دوره یوتیوب دارین، واقعا باید یک مرحله برگردین عقب و فعلا کد نزنید.

و اینکه شما از این ابزار ها استفاده میکنید از دنیا عقب نیستین و جاتون هم قرار نیست کسی بگیره که از این ابزارا استفاده میکنه، یک سری ابزاره یک سریا استفاده کردن و یک سریا نکردن و حتی دیسیبلش کردن. من هنوز engineer ای میبینم که از AI استفاده نمیکنه و خیلی خروجی بیشتری داره نسبت به کسی که داره استفاده میکنه 🙂

خودم شخصا در حد یک اتوکامپلیت و یک وقتا به جای گوگل وقتی نمیدونم چیو باید سرچ کنم استفاده میکنم.
@PyBackendHub
👍80👎7
This media is not supported in your browser
VIEW IN TELEGRAM
یکم حق بشنوید از پرایم
@PyBackendHub
👍296
علیرضا یه ابزار درست کرده برای نوشتن ماژول های پایتون با زبان Go.
یعنی چیزی شبیه به pyo3 اما خب برای گو.

https://github.com/alireza-hariri/go4py

@PyBackendHub
👏22👍7👎2🙏1