es
Feedback
Python Hints

Python Hints

Ir al canal en Telegram

Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار) Admin: @Abbasi_ai

Mostrar más
9 600
Suscriptores
+424 horas
+727 días
+21230 días
Archivo de publicaciones
چون خیلی ازم پرسیده شد : یک تصویر توی اینترنت داره پخش میشه با این مزمون که یک نفر از Copilot خواسته بهش یاد بده چطوری ویندوز رو بدون خرید فعال کنه. که تا اینجاش طبیعی هست و خب خیلی‌ها ازین تلاش‌ها کردند ولی جوابش رو: کوپایلت بهش گفته، برو فلان اسکریپت رو دانلود کن بعد با این دستور اجرا کن و ... فقطم اصرار دارند که توی PowerShell باشه. خداوکیلی ؟! اینکه شما برنامه نویس‌ها توی دام این چیزا میوفتید مغز آدم سوت می‌کشه، کسی اون اسکریپت رو خونده ؟ کسی مطمئن هست کد نفوذ و بکدر و ... توش نیست ؟ حواستون باشه دوستان؛ ی چیز دیگه هم که باب شده میان توی لینکدین بهتون پیام دعوت به همکاری می‌دن، بعد میگن یک تسک می‌فرستیم؛ که کد بیس رو داره و باقیش رو از شما می‌خوایم بزنید؛ داستان چیه ؟ دوحالت داره : ۱- تسک از پکیج‌ایی روی pypi, npm استفاده می‌کنه که دستوراتی برای ایجاد بکدور یا نفوذ به سیستم وجود داره. ۲- خود تسک شامل کدی هست، که به محض اجرا یک دسترسی باز می‌کنه. یادتون باشه، بسیار گفتم که صرف اینکه یک پکیج روی pypi هست هیچ دلیلی بر امن بودن اون نیست. هیچ بررسی و ... ایی روی pypi نیست؛ قبل از اجرای کد دیگران روی سیستم هم سورس کد رو بخونید، هم لیست dependency هاش رو

موقت: خصوصی سوال نپرسید: بسیاری سوالات تکراری هست : https://t.me/DevChaiChat

#موقت این آخرین پستی هست که راجب جایگزین شدن AI با کدر ها نوشته می‌نویسم توی این کانال. هرکسی هرطوری دوس داره عمل کنه؛ خیلی‌ها برداشت اشتباه داشتن خیلی ها شعور تغییر ندارند. بجای ترسیدن از این موضوع؛ سعی کنید اون کسی باشید که ازین موچ به نفع خودش استفاده می‌کنه اگر خواستید بیشتر بخونید : anthropic.com شرکت openai هم این نتایج رو منتشر کرده؛ xAi هم مثل اینکه بعد از انتشار نهایی بنچمارک رو منتشر خواهند کرد.

#موقت این آخرین پستی هست که راجب جایگزین شدن AI با کدر ها نوشته می

این تصویر مربوط هست به بنچمارک Sonnet 3.7 SWE-bench verified این بنچمارک مجموعه‌ای از درخواست پروژه‌هایی هست که روی سایت‌های
این تصویر مربوط هست به بنچمارک Sonnet 3.7
SWE-bench verified
این بنچمارک مجموعه‌ای از درخواست پروژه‌هایی هست که روی سایت‌های مختلف freelance توی سال‌های قبل گذاشته شده (برخلاف خیلی بنچمارک‌های دیگه Synthetic نیست یعنی) مدل sonnet تونست 62.3% درخواست‌های که نیازمند software engineer بوده رو تسک‌هاش رو کامل انجام بده و با کمی بهبود پرامپت این عدد به 70.3% رسیده. حالا فرض کنید این ابزار دست شما باشه + خودتون هم سواد مهندسی رو داشته باشید. بنظرتون این عدد به چند میرسه ؟

سوال کردید با این شرایط برنامه‌نویسی یاد نگیریم ؟ اول اینکه به کانال خوش اومدید پست‌ها توالی داره لطفا بخونید: https://t.me/pyHints/736 درنهایت؛ مشتی (خانوم و آقا هم نداره) من خودم ۵-۶ ماهه دارم Rust یاد میگیرم؛ توی تمریناتم هم اصلا سمت AI نمیرم بعد شما میگی برنامه‌نویسی یاد نگیریم؟ اتفاقا بنظرم بعد از این اتفاق؛ یک موج اخراج خواهیم داشت؛ یک موج کم شدن دستمزد و بعد آنهایی که نشون دادند سواد مناسب رو دارند و ازین ۲ تا موج جون سالم بدر بردند دستمزدهای خیلی بالاتری خواهند داشت. من شخصا همیشه همه‌ی آدم‌ها رو به برنامه‌نویس شدن دعوت کردم؛ ولی موج چندسال اخیر و البته توی دنیای پایتون بسیاری از آدم‌ها رو بجای برنامه‌نویس تبدیل به کدر/ سینتکس بلد و ... کرده بود. بسیار خوشحالم از پیشرفت‌های فعلی و جایگزینی AI با این مدل از توسعه دهنده‌ها؛ این پست رو بخونید: https://t.me/per3onal/182

این موضوع خیلی‌هارو سوزوند و یک سری هم خیلی منطقی گفتند که باور ندارند همیچین اتفاقی شدنی باشه: یک نفر توی توییتر به اسم levelsio یک توییتی زده و گفته که آقا من تو عمرم بازی نویسی انجام ندادم ولی یک شبیه‌ساز پرواز توی ۳ ساعت درست کردم و ۱۰۰٪ کد رو Grok3 برام زده (شخصا اضافه کنم: بله Grok توی این موارد از Sonnet 3.7 هم بهتره) ۸۰٪ رو همون بار اول درست زده ۲۰٪ رو مجبور شدم چندبار باهاش چک کنم؛ حالا هر Javascript, React, Vue, ... دولوپری که دوس داره یک سر به لینک این بزنه و بگه بدون کمک هیچکدوم از LLM/AI ها چندساعت طول می‌کشه این بازی رو بنویسه ؟ تعداد هواپیماهای قرمزی که می‌بینید؛ باقی کاربرهای داخل بازی هستند (فکر کنم چند میلیون باشه) این توییت X رو کامل بهم ریخته. https://fly.pieter.com بعد فرض کنید یک سنیور بازی نویسی + AI خودش یک ارتش چند نفره بازی نویسی خواهد بود ؟ فکر کنم باید زمانبندی قبلیم برای حذف کدرها (کسانی که مفاهیم رو درک نکردند) رو نصف کنم. پ.ن: بخش درآمدزایی رو هم طرف اضافه کرده ۲۹ دلار برای پرواز با F16 و پشتیبانی از پروژه. پ.ن: ریپلای این توییت شده مجموعه‌ای از بازی‌ها که توی این چندروز نوشته شده برید ببینید برگاتون بریزه واقعا بعضی‌هاش خیلی خوبه. پ.ن: بعضی‌هاشون هیستوری چت و سورس کد رو هم گذاشتند؛ آقا این ژانر توییت خودش یک دانشگاهی هست پیشنهاد میکنم حتما دنبال کنید سرچ کنید بازی‌هایی که با Grok3 توسعه داده شده و ببینید چیا میاد.

مکالمه چندساعت قبل من و یکی از دوستان نزدیکم : + تو روی پروژه "X" کار کردی - نه، یا اگر هم کار کردم اسمش این نبوده. چطور ؟ + اومدم یکجا برای همکاری جدید، یک نگاهی کلی به سورس کد پروژه انداختم روی سیستم یکی از نیروها، استاندارد‌های داکر و ... اش مثل تو هست. - خب بپرس ببین کی بوده دولوپر قبلی، یا لاگ گیت رو ببین + میگن "Y" بوده، می‌شناسیش ؟ - آره، ۱ سال همکار بودیم. + حله، خیالم راحت شد. من توی کدهام نه maintainer میزنم، نه چیز دیگه و حتی خیلی وقتا پیش اومده پشت سیستم نیروهام نشستم و کد زدم و مثلاً ۶-۷ ساعت کار اون روز رو با اکانت نیروم commit زدم. ولی هیچکس نگفته که فلان روز چرا کار نکردی و یک دلیل ساده هم داره؛ امضای من توی کدهام مشخص هست. هرکسی که بیش از ۳ ماه با من کار کنه می‌دونه امضای من چطور هست. بعضی وقتا، حتی کدهای Django من رو بدون خوندن سورس کد هم شناسایی می‌کنند. وقتی پوشه؛ backups وجود داره و بعد از پرکردن .env پروژه و این قضیه که دوستانم امضای من رو توی کد یا پروژه متوجه می‌شوند واقعاً برام لذت بخش هست. نمونه Dockerfile اولیه من برای پروژه‌های Django؛ این خیلی ساده هست و بر اساس پروژه تغییر می‌کنه ولی خب ۸۰-۹۰٪ پروژه‌ها با همین کار در میاد.
FROM python:3.10-slim AS build
WORKDIR /src
COPY requirements.txt .

RUN python -m venv /opt/venv &&\
  . /opt/venv/bin/activate &&\
  pip3 install --default-timeout=100 -U --upgrade pip &&\
  pip3 install --default-timeout=100 -r requirements.txt \
  && find /opt/venv \
  \( -type d -a -name test -o -name tests \) \
  -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
  -exec rm -rf '{}' +

# RUN stage
FROM python:3.10-slim
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /src
COPY --from=build /opt/venv /opt/venv
COPY . .
RUN chmod +x ./docker/scripts/entrypoint.sh
CMD ["/src/docker/scripts/entrypoint.sh"]
پیونوشت: این صحبت بهنونه شد برای اینکه نمو‌نه داکرفایل رو بذارم .

چون زیاد سوال شد، زدید که دیگه شراغ این شغل نیایم یعنی ؟ جواب : خیر منظور من این نبود، منظور اینه که باید درست یاد بگیرید. کدر شدن : یعنی سینتکس زبانی رو بلد بودن دولوپر شدن : یعنی جزییات اجرای کد و ... رو هم بدونید اینکه اون زیر داره چه اتفاقاتی میوفته بر خلاف قدیم که آدما از هر رشته و با هر پس زمینه و توی هر سنی اگر یک مقدار وقت و انرژی می‌ذاشتند وارد دنیای برنامه‌نویسی می‌شدند و با ۲ سال کار کردن و حفظ کردن (فهمیدن فرق داره) یک سری مطالب و استاندارد ها می‌تونستند خودشون رو حتی مدیور جا بزنند. الان اوضاع فرق کرده، الان یک بچه ۱۲-۱۳ ساله می‌تونه بدون سواد برنامه‌نویسی شروع کنه کار کرده: بصورت فیلم‌‌وار چند تا آموزش پایتون رو ببینه. بعد هم شروع کنه به LLM ها درخواست دادن برای کد نویسی. اکانت Andrej Karpathy (خداوندگار مهندسی و هوش مصنوعی) رو هم اگر دنبال کنید چندروز قبل و بعد از پست من به این موضوع اشاره کردند. خوشتون بیاد یا نه، دیگه باید مفاهیم رو یاد بگیرید؛ این موج توی ایران دیرتر شروع خواهد شد ولی قطعاً شروع می‌شه. بسیاری از شرکت‌ها درحال کوچیک شدن هستند، داخل استارتاپ‌های ایرانی که این موج شروع شده.

عجب خبری؛ انگلیس با سر داره میره سمت سقوط؟ چه خبره؟ بخشی که به ما مربوط میشه:
Apple can no longer offer Advanced Data Protection (ADP) in the United Kingdom to new users and current UK users will eventually need to disable this security feature. ADP protects iCloud data with end-to-end encryption, which means the data can only be decrypted by the user who owns it, and only on their trusted devices. We are gravely disappointed that the protections provided by ADP will not be available to our customers in the UK given the continuing rise of data breaches and other threats to customer privacy. Enhancing the security of cloud storage with end-to-end encryption is more urgent than ever before. Apple remains committed to offering our users the highest level of security for their personal data and are hopeful that we will be able to do so in the future in the United Kingdom. As we have said many times before, we have never built a backdoor or master key to any of our products or services and we never will,” the company said in a statement shared with me.
source: forbes خلاصه: اپل به دستور و تحت فشار مقامات دولتی؛ ویژگی cloud encryption رو برای کابران در UK حذف می‌کنه؛ یا خواهد کرد. البته قبلتر مقامات دولتی دستور داده بودند که اپل براشون backdoor درست کنه با قبول نکردن اون موضوع؛ نهایتا اپل اینکار رو کرده.

به ما رسید؛ مرسی از همگی.

پیشنهاد خوب : گروه بزنیم (اینجوری کدهای بچه‌های جونیور هم review می‌شه اگر بخوان) فقط کدهای مربوط به این سایت البته : https://t.me/codecrafter_fa

یعنی از ۷۷۷۱ نفر ۵۲ تا به ما نمیرسه ؟ Rust, Python بزنیم عید رو !
یعنی از ۷۷۷۱ نفر ۵۲ تا به ما نمیرسه ؟ Rust, Python بزنیم عید رو !

لینک ریفرال رو الان دیدم؛ بهتون ۱ هفته هم دسترسی رایگان به کانتنت های پولی میده (تست نکردم تاحالا ولی اینطوری نوشته) https://app.codecrafters.io/r/comfortable-lizard-274129 مثل اینکه ۱ هفته هم به من میده

#موقت چون خیلی سوال شد: پست‌های قبلی و کلیدواژه‌ها و ... رو سرچ کنید و بخونید.

این موضوع واقعاً گرد ناامیدی نیست، یک نیم‌نگاه به آمار اخراج‌ها یا لیست مشاغلی که دیگه نیروی جونیور نمی‌گیرند بندازید (البته بعضی‌ها زدن جونیور ولی دقت کنید لیست مهارت‌ها رو ببینید.) مثال بکند میزنم: قبلاً جونیور رو میاوردند که سنیور وقت آزادتری داشته باشه برای طراحی سیستم و بررسی بخش‌های مختلف و چیزای مهمتر؛ یعنی شرکتی نبود که به سنیور بگه یک لاگین بزن، یک صفحه بزنم اسم کاربر رو برگردونه و ... این‌ها تسک‌های جونیور بود و سنیور نهایتاً review می‌کرد؛ الان تمام اینکارهارو یک الگوریتم هوش مصنوعی می‌کنه، سنیور در لحظه مسئله رو می‌شکنه و از AI می‌پرسه کد رو تحویل می‌گیره و کپی و تمام ... همین مسیر رو ادامه میده و در نهایت حالات مختلف تست نویسی که به ذهنش میرسه رو هم دونه دونه از AI می‌خواد بنویسه بازم دابل چک می‌شه و تمام. بعد هم وقتش رو میذاره روی تسک‌های اصلی؛ طراحی سیستم، طراحی دیتابیس و ... زیر بار بردن پروژه تست‌های مختلف خارج شدن بخش‌های مختلف سیستم از دسترس و ... حالا شما بیا به من بگو من جونیور هستم، جنگو و جنگو رست و پستگرس رو بلدم. اولین سوالاتی که توی ذهن من میاد: سلری چطور ؟ کار با redis چی ؟ تست نویسی چطور ؟ پروفایلینگ چی میشه پس ؟ لاگ نویسی خوب چی ؟ (دوتا پست قبلتر یک مشکل رو مثال زدم و قدیما یک آموزش گذاشتم) و ... اگر شما نتونی اینکارها رو انجام بدی و نشناسی؛ خب تمام مدل‌های AI از شما بهتر کد می‌زنند و وقت کمتری هم میگیره اگر قرار باشه من هی برم سراغش و بهش بگم چیکار کنه و چطوری بزن و ... دو گروه اینجا بهشون بر میخوره (توی آمار‌های مختلف هم همین رو نشون داده؛ به دیتاهای آمریکای شمالی نگاه کنید) : ۱- پکیج فروش‌ها: دیگه پکیجی که فقط جنگو یاد بده بدون پروژه‌ای که استاندارد باشه بی‌ارزش می‌شه و کاسبی خراب (این نیروها استخدام نمی‌شوند و کمتر کسی سراغ این آموزش‌ها میره) ۲- افرادی که شغل برنامه‌نویسی رو برای راحتی استفاده کردند؛ جدی میگم بسیار شنیدم که می‌گن بابا کار شما که چیزی نیست ۸ ساعت پشت کامپیوتر می‌شینی بعدم میری خونه ۱۲ ساعت عشق و حال و پارتی و .... والا ما یک مهمونی هم میخوایم بریم باید ۷ روز قبل خبر داشته باشیم که بتونیم اون ۴-۵ ساعت مهمونی رو توی ۷ روز جبران کنیم تسک عقب افتاده نداشته باشیم. چرا اینارو مجدداً اینجا می‌گم: من از آموزش دادن به کسی سودی نمی‌برم، هرکسی هم با من کار کرده می‌دونه تمام دانشم تمام وقت در دسترس تمام نیروهای زیردستم هست، هیچ ترسی ازینکه کسی جام رو بگیره ندارم و ازین موضوع و رشد کردن نیروهام بسیار لذت می‌برم. برای همین بجای اینکه بگم آقای X خانم Y بیاید برنامه‌نویسی یاد بگیرید ماهی ۲۰۰ میلیون درآمد دارید (دیدی اینو میگه بعد پکیج آموزشی ۳۰۰ هزارتومنی میذاره) میگم این مسیر سختی‌هاش زیاد شده، دیگه فقط با سینتکس یاد گرفتن نمی‌تونید شغل پیدا کنید، کسی که الان شروع می‌کنه از صفر حداقل ۲ سال وقت می‌ذاره. اگر قرار نیست جدی بگیرید برنامه‌نویسی رو پیشنهاد می‌کنم برید دنبال کار مورد علاقتون. مکانیک - برق کار - آشپز - باریستا و ... همگی مشاغل کاملاً قابل احترام هست و توی ۲ سال وقتی علاقه‌ هم باشه قطعاً موفق تر خواهید بود. در نهایت، این متن باید به شمایی که برنامه‌نویسی رو انتخاب کردید انگیزه بده که برنامه‌نویسی رو جدی بگیرید و از وقت اینستاگرام و پارتی و ... بزنید و روی تخصص تمرکز کنید. اگر نه که رشته یا تخصص رو اشتباه انتخاب کردید.

یک سری‌ها اومدن گفتن چرا گرد نا امیدی می‌پاچی ؟ این گرد نا امیدی نیست این حقیقت هست؛ وقتی دنیا داره تغییر می‌کنه نمی‌تونی راه و روش ۵ سال پیش رو بری

وقتی ChatGPT 3.5 معرفی شد گفتم که نیروهای جونیور بسیار کار سختی برای یافتن شغل خواهند داشت. الان به اون وضعیت رسیده؛ طوری که نیروی جونیور توی خیلی از زمینه‌ها تبدیل شده به سنگ جلوی پای نیروهای سنیور متاسفانه. اما یک ویژگی خیلی خوب داشت وجود جونیورها؛ اونم معرفی استک‌های جدید تکنولوژی‌های بهتر و تکنیک‌های بهبود یافته بود. متأسفانه این موضوع توی ایران دیگه صادق نیست؛ ندیدم (از کسی هم نشنیدم) جونیوری که experiment های شخصی با ابزارهای مختلف که شاید مرسوم هم نباشند انجام داده باشه (علاوه بر استک اصلی) همگی همون استک اصلی رو یاد می‌گیرند و به محض استخدام دیگه حتی برای پیشرفت خودشون هم زحمت نمی‌کشند. با این وضعیت قطعاً موقعیت‌های شغلی Junior ها حذف خواهد شد؛ حتی در ایران.

از بحث گروه : سورس کد رو چطوری بخونیم ؟ سورس کد خوندن باید از نقطه شروع باشه؛ پروژه‌ای که میخواید سورس کدش رو بخونید باید مطمئن بشید استانداردها رو رعایت کرده حداقل توی شروع پیشنهاد می‌کنم به تعداد fork, star, ... پروژه نگاه کنید و قبل از خوندنش هم بهتره کمی با استانداردها آشنا باشید. همیشه سورس کد خوندن رو از پروژه‌ای استفاده کنید که توی زمینه کاری خودتون یا توی مباحث مورد علاقه خودتون هست. مثلا برای Django چندتا مورد داریم؛ Baserow جزو مواردی هست که خوب نوشته شده و یک بیزینس فعال هم هست که open source هم کردند. برای خوندن هم دو حالت داره : ۱- دنبال یک مدل استانداردسازی برای یک چیز خاص هستید و فقط همون بحث رو میخونید. مثلا من اگر بخوام ببینم چطوری swagger این پروژه نوشته شده اول وارد requirements اش می‌شم و میگردم ببینم از کدوم پکیج استفاده کرده بعد میرم روی Endpointها یا .... ببینم این موارد رو با چه استانداردی نوشته و کجاها گذاشته. ۲- هدف خاصی ندارم جز یادگیری استاندارد‌ها؛ در اینصورت یک نقطه شروع رو برای خودم پیدا می‌کنم و از اون بعنوان سر نخ استفاده می‌کنم. شخصا Integration test ها اولین چیزی هست که میرم سراغش؛ اگر نبود logic هر بخش رو از داکیومنت می‌خونم و بخش بخش میرم توی سورس کدها و ... توی هر دو مورد مهم اینه که قبل از خوندن سورس کد با پکیج‌های اصلی آشنا باشید و بلدشون باشید؛ پکیج جدید هم که می‌بینید که بلدش نیستید؛ اول یک ویدئو گوتاه و سریع از آموزشش ببینید و بعد توی سورس کد به خوندن ادامه بدید.