Sadra Codes
Открыть в Telegram
Sadra Yahyapour ✌️ Let's dive deeper together. :) imsadra.dev github.com/lnxpy linkedin.com/in/sadra-yahyapour x.com/lnxpylnxpy lnxpylnxpy@gmail.com
Больше3 816
Подписчики
+724 часа
+667 дней
+18730 день
Загрузка данных...
Похожие каналы
Облако тегов
Входящие и исходящие упоминания
---
---
---
---
---
---
Привлечение подписчиков
август '26
август '26
+2
в 0 каналах
июль '26
+240
в 0 каналах
Get PRO
июнь '26
+226
в 3 каналах
Get PRO
май '26
+39
в 2 каналах
Get PRO
апрель '26
+57
в 0 каналах
Get PRO
март '26
+22
в 0 каналах
Get PRO
февраль '26
+162
в 1 каналах
Get PRO
январь '26
+14
в 0 каналах
Get PRO
декабрь '25
+24
в 1 каналах
Get PRO
ноябрь '25
+57
в 1 каналах
Get PRO
октябрь '25
+65
в 0 каналах
Get PRO
сентябрь '25
+54
в 1 каналах
Get PRO
август '25
+57
в 0 каналах
Get PRO
июль '25
+72
в 1 каналах
Get PRO
июнь '25
+63
в 0 каналах
Get PRO
май '25
+60
в 0 каналах
Get PRO
апрель '25
+47
в 0 каналах
Get PRO
март '25
+88
в 8 каналах
Get PRO
февраль '25
+62
в 6 каналах
Get PRO
январь '25
+159
в 2 каналах
Get PRO
декабрь '24
+204
в 5 каналах
Get PRO
ноябрь '24
+267
в 4 каналах
Get PRO
октябрь '24
+182
в 3 каналах
Get PRO
сентябрь '24
+182
в 5 каналах
Get PRO
август '24
+253
в 10 каналах
Get PRO
июль '24
+105
в 3 каналах
Get PRO
июнь '24
+392
в 7 каналах
Get PRO
май '24
+151
в 7 каналах
Get PRO
апрель '24
+126
в 7 каналах
Get PRO
март '24
+126
в 5 каналах
Get PRO
февраль '24
+143
в 5 каналах
Get PRO
январь '24
+166
в 2 каналах
Get PRO
декабрь '23
+229
в 8 каналах
Get PRO
ноябрь '23
+63
в 2 каналах
Get PRO
октябрь '23
+23
в 0 каналах
Get PRO
сентябрь '23
+90
в 0 каналах
Get PRO
август '23
+206
в 0 каналах
Get PRO
июль '23
+85
в 0 каналах
Get PRO
июнь '23
+122
в 0 каналах
Get PRO
май '23
+225
в 0 каналах
Get PRO
апрель '23
+279
в 0 каналах
Get PRO
март '23
+214
в 0 каналах
Get PRO
февраль '23
+32
в 0 каналах
Get PRO
январь '23
+80
в 0 каналах
Get PRO
декабрь '22
+97
в 0 каналах
Get PRO
ноябрь '22
+12
в 0 каналах
Get PRO
октябрь '22
+115
в 0 каналах
Get PRO
сентябрь '22
+15
в 0 каналах
Get PRO
август '22
+16
в 0 каналах
Get PRO
июль '22
+27
в 0 каналах
Get PRO
июнь '22
+26
в 0 каналах
Get PRO
май '22
+24
в 0 каналах
Get PRO
апрель '22
+20
в 0 каналах
Get PRO
март '22
+72
в 0 каналах
Get PRO
февраль '22
+5
в 0 каналах
Get PRO
январь '22
+2
в 0 каналах
Get PRO
декабрь '21
+2
в 0 каналах
Get PRO
ноябрь '21
+4
в 0 каналах
Get PRO
октябрь '21
+4
в 0 каналах
Get PRO
сентябрь '210
в 0 каналах
Get PRO
август '21
+2
в 0 каналах
Get PRO
июль '21
+2
в 0 каналах
Get PRO
июнь '21
+7
в 0 каналах
Get PRO
май '21
+4
в 0 каналах
Get PRO
апрель '21
+6
в 0 каналах
Get PRO
март '21
+5
в 0 каналах
Get PRO
февраль '21
+3
в 0 каналах
Get PRO
январь '21
+3
в 0 каналах
Get PRO
декабрь '20
+720
в 0 каналах
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 01 августа | +2 |
Посты канала
یکبار برای همیشه؛ هوشمصنوعی، جای شما رو نمیگیره؛ اما کسی که بلده با یک ذهن خلاق و با تجربه از هوشمصنوعی درست استفاده کنه، شاید. تمام!
این جمله کلیشهای "هوشمصنوعی جای برنامهنویسا رو میگیره" یه ایراد اساسی داره. چون فرض میکنه کاری که یه برنامهنویس انجام میده صرفا فقط کد نوشتنه!
چند سال پیش برنامهنویس خودش خط به خط کد مینوشت و پروژه رو جلو میبرد. امروز هم پروژه رو جلو میبره، فقط یه تفاوت داره؛ به جای اینکه مستقیم با کیبورد کار رو جلو ببره، داره یه Agent رو هدایت میکنه که بخش زیادی از کدنویسی رو انجام میده.
در واقع نقش برنامهنویس از «تایپیست کد» داره تبدیل میشه به «هدایتکننده سیستم».
وقتی ماشین اختراع شد، خیلیها فکر میکردن دوران اسب دیگه به سر اومده. ولی واقعیت این بود که مردم اسب رو برای جابهجایی نمیخواستن؛ جابهجایی یه نیاز بود و اسب فقط ابزارش بود. بعد از ماشین، نیاز از بین نرفت، فقط ابزار بهتر شد.
✅ امروز هم شرکتها دنبال «کد» نیستن. دنبال حل مسئلهان. کد فقط ابزاره. آگهیها اینطوری شدن: برام مهم نیس چی بلدی چی کد میزنی.. بلدی از AI استفاده کنی؟ اگه آره، لیتکد کار کردی؟ بیا این چندتا الگوریتم رو حل کن ببینم چیکار میکنی.
اگه فردا هوش مصنوعی بتونه ۹۰ درصد کد رو بنویسه، هنوز یکی باید مشخص کنه دقیقاً چی باید ساخته بشه، چرا باید ساخته بشه، چه معماریای مناسبه، چه Trade-offهایی وجود داره، امنیت، مقیاسپذیری، تجربه کاربر و صدها تصمیم دیگه چطور مدیریت بشن.
✅ به عقیده من، هرچی AI قویتر میشه، ارزش کسی که سؤال درست رو میپرسه و تصمیم درست رو میگیره بیشتر میشه! (خلاصه بخوام بگم: تکلیدها و CTOهای عزیز، جاتون امنه به شرطی که خودتون رو بهروز نگه دارید.)
یه نکته جالب هم اینه که قبلاً برای ساختن یه محصول شاید به ۱۰ تا برنامهنویس نیاز بود. حالا شاید همون محصول با ۳ نفر ساخته بشه. بعضیا اینو تهدید میبینن، ولی همین یعنی هزینه ساخت نرمافزار کمتر شده و آدمهای بیشتری میتونن ایدههاشون رو تبدیل به محصول کنن.
وقتی ساختن ارزونتر بشه، تعداد محصولاتی که ساخته میشن هم بیشتر میشه و در نتیجه مسائل بیشتری برای حل کردن به وجود میاد. چالشها و فرصتها بیشتری پدید میاد.
به نظرم آینده برنامهنویسی، آینده حذف برنامهنویس نیست؛ آینده تغییر نقش برنامهنویسه.
همونطور که امروز کسی مهارت رانندگی با کالسکه رو یاد نمیگیره، ولی رانندگی هنوز یه مهارته، فردا هم شاید کسی ساعتها کد Boilerplate ننویسه، اما هدایت کردن هوش مصنوعی و تبدیل ایده به یک محصول واقعی، خودش تبدیل به مهمترین مهارت این صنعت میشه.
❇️ @lnxpylnxpy
| 2 | خودم از Passmark استفاده کردم تا PasteMe رو تست کنم.
نتیجه و مقالهاش رو اینجا گذاشتم: https://blog.imsadra.dev/i-put-my-hackathon-winning-app-through-an-ai-qa-test
این پایپلاین واقعا جذاب میشه: فرض کنید یه سرویس استیج دارین که دقیقا تغییراتی که قبل از پروداکشن انجام میدین رو ابتدا اونجا دیپلوی و تست میکنید بعد میفرستین روی پروداکشن. پایپلاین از این قراره که تغییرات بعد از اینکه دیپلوی شد روی سرور استیج، تستهای پسمارک روش اجرا میشن و درصورت pass شدن وارد فاز بعد یا اصلا دیپلویمنت روی پروداکشن صورت میگیره.
❇️ @lnxpylnxpy | 575 |
| 3 | یه ابزار هست به اسم Passmark که کمک میکنه تست end-to-end رو صرفا با چندتا پراومت، روی هر سرویس وبی اجرا کنید!
توکن و کردیت AI از خودتونه، بیسش playwright هست. بعد از اجراش، کلی لاگ و ریپورت تلمتری در اختیارتون قرار میده. یه خوبی که داره، کلی prompt pattern داره. میتونید یه تست کیس رو با چندین اینپوت مختلف اجرا کنید. مثلا توی مثال زیر، وارد یه شاپ میشه و یه محصول رو به سبد خرید اضافه میکنه.
test("Shopping cart tests", async ({ page }) => {
await runSteps({
page,
test,
expect,
userFlow: "Add product to cart",
steps: [
{ description: "Navigate to https://demo.vercel.store" },
{ description: "Click Acme Circles T-Shirt" },
{ description: "Select color", data: { value: "White" } },
{ description: "Select size", data: { value: "M" } },
{ description: "Add to cart", waitUntil: "My Cart is visible" },
],
assertions: [{ assertion: "Cart shows the Acme Circles T-Shirt" }],
});
});
❇️ @lnxpylnxpy | 568 |
| 4 | بیشتر برنامهنویسها از Interactive Rebase فقط برای یکی دو کار ساده مثل Squash کردن کامیتها استفاده میکنن، در حالی که این ابزار یکی از قدرتمندترین قابلیتهای Git برای مرتب کردن تاریخچه پروژه است.
فرض کنید موقع توسعه یه فیچر جدید، دهها کامیت با پیامهایی مثل fix, oops, try again یا update ثبت کردید. موقع کدنویسی قرار نیست همه چیز از اول تمیز باشه. اما قبل از اینکه Pull Request بفرستید و چیزی مرج شه، میتونید با یک دستور ساده:
git rebase -i HEAD~10
تاریخچه اون ۱۰ کامیت آخر رو کاملاً بازنویسی کنید.
داخل محیط Rebase میتونید:
- ترتیب کامیتها رو جابهجا کنید.
- پیام کامیتها رو اصلاح کنید.
- چند کامیت رو با هم ادغام (Squash) کنید.
- یک کامیت رو به چند کامیت کوچکتر تقسیم کنید.
- حتی کامیتهای اضافی رو حذف کنید.
نتیجه؟ به جای یک تاریخچه شلوغ و پر از آزمون و خطا، پروژهتون انگار از همون اول با برنامه و تمیز توسعه داده شده.
البته یک قانون طلایی هم وجود داره: هیچوقت روی کامیتهایی که قبلاً Push کردید و بقیه هم ازشون استفاده میکنن Interactive Rebase انجام ندید. چون در واقع دارید تاریخچه Git رو بازنویسی میکنید و ممکنه کار همتیمیهاتون به هم بریزه. برای شاخههای شخصی قبل از Merge، این ابزار فوقالعادهست؛ ولی روی شاخههای مشترک باید با احتیاط ازش استفاده کرد. از فلوهایی استفاده کنید محیط توسعهاتون رو ایزوله میکنه با کمترین امکان کانفلیکت.
به نظرم Interactive Rebase یکی از اون قابلیتهاییه که هر توسعهدهنده باید یاد بگیره. شاید هفتهای فقط چند بار ازش استفاده کنید، هم هیستوری تمیزتر میشه، هم دستتون راه میوفته!
❇️ @lnxpylnxpy | 718 |
| 5 | هنر برنامهنویس بدون هدف، دروازه ای به سوی یادگیری
در دنیا نرمافزار تقریبا هر خط کدی که مینویسیم برای حل یک مشکل انجام میشه، برای حل سرعت دیتابیس، حل باگ UI یا automate کردن یکچیزی، توی دنیا پر از هدف شاید انجام یکسری کارها بدون هدف بتونه خیلی بهتون کمک نه!
چند وقت پیش با ایدهی Recreational programming آشنا شدم. Recreational programming وجه کاملا مخالف کارهای هدف دار و امروزی ما است و ایده اینه که کدی بزنیم صرفا جهت تفریح، ساخت چیزی که دوستداریم یا ساخت چیزی که کنجکاوی مارو بر انگیخته. وقتی داریم این کار میکنیم به چیزی جز تفریح و یاد گرفتن فکر نمیکنیم. کدی که مینویسیم قرار نیست پولی دربیاره و قرار نیست کسی حتی بخونتش، کدی که مینویسیم برای خودمون و یادگیری خودمون. اما چه چیزهایی به عنوان Recreational programming حساب میشن؟
- Esoteric Languages (Esolangs):
نوشتن یک برنامه تو زبانهایی که صرفا جهت MEME ساخته شدن یا کاربرد خاصی ندارن مثل brainfuck یا حتی julia
- Code Golf:
تلاش کنیم یک مشکل خاص تو کمترین خط کد ممکن حل کنیم، مثلا سعی کنی فیبوناچی توی ۴ خط حل کنیم یا کمتر. این مورد فقط درباره خط کد نیست و متونه به بایت هم محدود بشه.
- Quines:
برنامهای بنویسیم که خروجی دقیقا کپی سورس کد خودش باشه بدون اینکه فایل برنامه خودش رو بخونه. مثال های زیادیشو میتونید با HTML پیاده کنید :)
- Generative Art & Demoscene:
برنامه ای بنویسیم که یک نقاشی بسازه شاید یک عکس رو ادیت بزنه. یادمه قدیمهای یک برنامه بود که عکس تبدیل به یک گیف میکرد یک دست داشت نازش میکرد D:
- Algorithmic Puzzle:
حل کردن پازلهای برنامهنویسی. گاهی لازم نیست حتی کد بزنید میتونید چالشهای برنامهنویسی حل کنید. چالشهایی مثل Bandit یا Project Euler
اما Recreational programming چه مشکلی حل میکنه؟
اکثر برنامهنویسها وارد برنامهنویسی شدن چون برنامهنویسی فان بود و میشد کارهای بامزه باهاش کرد، یک بازی کوچولو ساخت، یک اسکریپت باحال یا یک ربات تلگرام شخصی، خیلی از ما هدفمون درامد ازش نبود اما وقتی برنامهنویسی از تفریح به شغل تبدیل شد دیگه بهش به عنوان یک چیز شاد و بامزه نگاه نمیکنیم، بهش به عنوان شغل و یک وضیفه نگاه میکنیم که باید انجام بشه تا پول دربیاریم و اگر پول در نمیاریم خوب انجامش نمیدیم!
اما اگر دیدگاهمون تغییر بدیم و دوباره تبدیلش کنیم به یک تفریح میتونیم خیلی چیزها یاد بگیریم و حتی درامد بیشتری داشته باشیم. Recreational programming به مشکلاتی مثل burnout کمک میکنه شاید عجیب باشه ولی شما میتونید burnout ناشی از کار به عنوان برنامهنویس رو با برنامهنوشتن حل کنید.
توصیههایی درباره چطوری و چگونه:
برای Recreational programming لازم نیست پروژهاتون تموم کنید.
لازم نیست پروژه خفنی باشه، یک ربات آبوهوا یا بازی ساده یا اسکریپت جالب میتونه کافی باشه.
سعی کنید از زبانهای low level استفاده کنید.
خلق کردن دوباره چرخ میتونه راه بامزهای برای یادگیری باشه، مثل نوشتن یک وبسرور از پایه یا ساختن دوباره git
در نهایت برنامهنویسی میتونه همچنان فان و بامزه باشه دقیقا مثل مواقعی که شروعش کردیم و هنوز میتونه پر از چیزهای جالب برای یادگیری باشه. Recreational programming مثل یک بسته LEGO میمونه که منتظر شما باهاش یکچیزی بسازید.
@TorhamDevCH | 718 |
| 6 | اگه از این به بعد کسی واسه فیلد AI، یادگرفتن تایپاسکریپت رو پیشنهاد داد، تعجب نکنید!
ورسل یه کامپایلر ساخته به اسم scriptc که type script رو به باینری کامپایل میکنه و اجازه میده مستقیم اجراش کنید. (واسه داروین، لینوکس و ویندوز در دسترسه)
دلیل جذابیتش اینه که نه نیاز به نود هست، نه V8. با این حرکت، شاید مسیر تایپاسکریپت از جاوا اسکریپت جدا شه و توی حوزههای متنوع (حتی محاسبات و AI)، شاهد پروژههای TypeScriptی باشیم.
https://scriptc.dev/
پیشنهاد میکنم محدودیتها و ضعفهاش رو هم بخونید:
https://scriptc.dev/limitations
❇️ @lnxpylnxpy | 937 |
| 7 | رقابت بین مدلهای هوش مصنوعی هر روز داغتر میشه و این بار Anthropic از مدل جدیدش یعنی Claude Opus 5 رونمایی کرده؛ مدلی که خودش ادعا میکنه تقریباً به قدرت پرچمدارش یعنی Fable 5 رسیده، اما با نصف هزینه!
طبق بنچ مارکهایی که Anthropic منتشر کرده، Opus 5 توی برنامهنویسی، حل مسائل پیچیده و کارهای دانشی عملکرد خیلی بهتری نسبت به نسخه قبلیش داره. حتی توی بعضی تستها تونسته از مدلهای رقیب هم جلو بزنه. اما چیزی که بیشتر از همه جلب توجه میکنه، فقط قدرتش نیست؛ بهرهوریشه. یعنی با هزینه مشابه نسخه قبلی، کار بیشتری انجام میده و برای استفاده روزمره هم انتخاب بهتریه.
یه نکته جالب دیگه اینه که Anthropic میگه Opus 5 تا امروز کمتر رفتارهای عجیب، خطرناک یا فریبکارانه از خودش نشون داده و بهتر به دستورالعملهای ایمنی پایبنده. این موضوع نشون میده که رقابت شرکتها دیگه فقط روی باهوشتر کردن مدلها نیست؛ بلکه روی قابلاعتمادتر کردنشون هم هست.
مدل Opus 5 از الان برای کاربران پولی Claude و همچنین API در دسترس قرار گرفته. علاوه بر اون، یک حالت Fast Mode هم داره که حدود ۲.۵ برابر سریعتر جواب میده.
Join 👉 @lnxpylnxpy | 1 043 |
| 8 | چند روز پیش OpenAI رسماً اعلام کرد که حین تست یکی از مدلهای جدیدش، اتفاقی افتاده که خودش ازش با عنوان «بیسابقه» یاد کرده. ماجرا از این قرار بوده که مدل داخل یک محیط آزمایشی ایزوله قرار داشته، اما به جای حل مسئله از راه عادی، شروع کرده دنبال راهی برای دور زدن محدودیتها بگرده!
مدل اول یک آسیبپذیری پیدا کرده، از محیط تست خارج شده، به اینترنت دسترسی پیدا کرده و بعد به این نتیجه رسیده که شاید راهحلی که دنبالشه داخل سرورهای Hugging Face باشه؛ یکی از بزرگترین پلتفرمهای هوش مصنوعی دنیا. بعد هم با زنجیرهای از حملات، تونسته به بخشی از زیرساخت اون نفوذ کنه و به اطلاعاتی که برای آزمون لازم داشته دسترسی پیدا کنه.
نکته جالب اینه که هیچکس به مدل نگفته بود «هک کن». فقط هدفش حل کردن آزمون بود و خودش تصمیم گرفته بود که این کوتاهترین مسیر برای رسیدن به هدفه!
خوشبختانه تیم امنیتی Hugging Face سریع متوجه فعالیت مشکوک شد و حمله رو متوقف کرد. OpenAI هم بعد از این اتفاق اعلام کرده که روشهای ارزیابی، محدودیتها و سیستمهای نظارتش رو به شکل جدی تقویت میکنه.
Join 👉 @lnxpylnxpy | 1 907 |
| 9 | الان لیسانس داری. اگه خدمت اجباری نبود، میرفتی واسه فوق یا مستقیم وارد بازار کار میشدی؟
اگه میرفتی واسه فوق، دلیلت واسه درس خوندن چی بود؟
Join 👉 @lnxpylnxpy | 1 757 |
| 10 | الان اینو کشف کردم: توی تلگرام وقتی داری چت میکنی، گوشی رو تکون بدی ازت میپرسه میخوای چیزایی که نوشتی رو undo کنی؟ 🥸
کی بودی تو تلگرام.. 🫶🙃
Join 👉 @lnxpylnxpy | 1 953 |
| 11 | فلسفه Async/Await!
یکی از رایجترین باورهای اشتباه بین برنامهنویسها اینه که اگر یه تابع رو async کنیم، خودبهخود برنامه سریعتر اجرا میشه. اما واقعیت اینه که async نه سرعت CPU رو بیشتر میکنه، نه باعث میشه کدها موازی اجرا بشن.
کاری که async انجام میده، اینه که وقتی برنامه منتظر یه عملیات ورودی/خروجی (I/O) مثل درخواست HTTP، کوئری دیتابیس، خوندن فایل یا ارتباط شبکه است، به جای اینکه بیکار منتظر بمونه، کنترل رو به Event Loop برمیگردونه تا اون بتونه کارهای دیگهای رو اجرا کنه. یعنی هدف اصلی async، استفاده بهتر از زمانهای انتظاره، نه افزایش سرعت محاسبات.
فرض کن یه API داری که برای هر درخواست، دو سرویس خارجی رو صدا میزنه و هر کدوم حدود یک ثانیه طول میکشن تا پاسخ بدن. اگر این درخواستها رو به صورت همزمان اجرا کنی، زمان پاسخ تقریباً از دو ثانیه به یک ثانیه کاهش پیدا میکنه؛ چون بیشتر زمان صرف انتظار برای شبکه بوده، نه اجرای CPU.
اما حالا یه سناریوی دیگه رو تصور کن. یه تابع داری که داره روی ده میلیون عدد اوپ میزنه یا یک الگوریتم رمزنگاری یا پردازش تصویر انجام میده. اگر فقط قبلش async بنویسی، هیچ اتفاقی نمیافته. تا زمانی که داخل تابع به یک عملیات قابل await نرسی، Event Loop اصلاً فرصت جابهجا شدن بین Taskها رو نداره. اون تابع همچنان CPU رو اشغال میکنه و بقیه Taskها باید منتظر بمونن.
حتی بدتر از اون، اگر توابعی که ذاتا سینک هستن رو داخل یک تابع async صدا بزنی، عملا Event Loop رو بلاک کردی. مثلا time.sleep، خیلی از کتابخونههای قدیمی دیتابیس یا درخواستهای HTTP همگام، همگی باعث میشن کل برنامه متوقف بشه، حتی اگر تابع async باشه.
پس async یک ابزار برای Concurrency هست، نه Performance.
خلاصه اینکه نوشتن async قبل از یک تابع، هیچ تضمینی برای سریعتر شدن برنامه نیست؛ مهم اینه که برنامه بیشترِ زمانش رو صرف انتظار میکنه یا صرف محاسبه!
Join 👉 @lnxpylnxpy | 1 912 |
| 12 | کامنت بیشتر != کد خواناتر!
کامنتها قرار نیست کدت رو ترجمه کنه.
مثلاً این کامنت هیچ ارزشی نداره:
# افزایش مقدار شمارنده
counter += 1
یا:
# بررسی معتبر بودن کاربر
if user.is_valid():
اگر برای فهمیدن این خطوط به کامنت نیاز باشد، احتمالاً مشکل از خود کد است، نه نبودن کامنت.
کد خوب باید تا جای ممکن خودش گویا باشد؛ با اسمهای مناسب، توابع کوچک و ساختار ساده. (self-descriptive)
اما این به معنی «کامنت ننویس» نیست.
کامنت زمانی ارزشمنده که چیزی رو توضیح بده که از روی کد قابل فهم نیست؛ مثلاً:
* چرا این راهحل انتخاب شده؟
* چه محدودیتی باعث این پیادهسازی شده؟
* چه باگ یا رفتار خاصی را دور زدیم؟
* اگر این بخش تغییر کنه، چه عواقبی دارد؟
* رجکس پایین، چه پترنهایی رو شناسایی میکنه؟
مثال:
# Retry انجام نمیشود تا از ثبت تراکنش تکراری جلوگیری شود.
یا:
# به دلیل باگ PostgreSQL 16 از این روش استفاده شده است.
یا:
# matches (XXX) XXX-XXXX and XXX-XXX-XXXX patterns
def hasPhoneNumber(letter) -> bool:
return regex.search('/\b((\(\d{three}\))|\d{three}[-. ])\d{three}[-. ]\d{four}\b/;', letter)
اینها اطلاعاتیه که خود کد غالبا نمیتونه منتقل کند.
یک نکته مهم دیگر اینکه کامنتها کامپایل نمیشن. یعنی وقتی کد تغییر میکنه، کامنت ممکنه قدیمی و حتی گمراهکننده شه. پس یا کامنت رو هم آپدیت کنید، یا حذفش کنید. نهایتا این کد شما هست که قراره سرو و نگهداری شه.. نه یه سری کامنت. :)
خیلی موارد بیشتر و موضوعات گوناگونی توی منبع راجع بهش صحبت کردم. این پست شاید تیکه کوچیکی از مقاله زیره:
منبع: https://blog.imsadra.dev/comments-make-your-code-unreadable
Join 👉 @lnxpylnxpy | 2 296 |
| 13 | جایی که در پایتون، ... واقعاً به کار میاد!
یکی از کاربردهای مهم Ellipsis در Type Hintهاست.
مثلاً:
from typing import Callable
def wrapper(func: Callable[..., int]):
...
اینجا ... یعنی:
«این تابع هر تعداد و هر نوع پارامتر میتواند داشته باشد، اما خروجی آن int است.»
یا برای Tupleها:
tuple[int, ...]
یعنی یک Tuple با هر تعداد عضو، به شرطی که همه از نوع int باشند.
پس هر وقت داخل Type Hint سه نقطه دیدی، احتمالاً معنی کاملاً متفاوتی نسبت به Placeholder داره.
منبع: https://blog.imsadra.dev/ellipsis-in-python-the-mysterious-three-dots
Join 👉 @lnxpylnxpy | 1 859 |
| 14 | آیا pass بهتره یا ...؟
هر دو باعث میشن این کد بدون خطا اجرا بشه:
def foo():
pass
یا
def foo():
...
اما تفاوتشون چیه؟
عبارت pass یعنی «هیچ کاری انجام نده».
عبارت ... یعنی «اینجا عمداً هنوز پیادهسازی نشده».
به همین دلیل توی پروژههای بزرگ، فایلهای Stub (`.pyi`) و بعضی کتابخونهها مثل FastAPI، Pydantic یا ابزارهای Type Hinting بیشتر ... رو میبینی تا pass.
منبع: https://blog.imsadra.dev/ellipsis-in-python-the-mysterious-three-dots
Join 👉 @lnxpylnxpy | 1 745 |
| 15 | سه نقطه (...) در پایتون فقط برای زیبایی نیست!
احتمالاً جایی در کدهای پایتون این مورد رو دیدی:
def process_data():
...
این سه نقطه در پایتون یک آبجکت واقعی به اسم Ellipsis هست، نه یک تریک یا کامنت.
>>> ...
Ellipsis
>>> type(...)
<class 'ellipsis'>
خیلیا فکر میکنن ... همون pass هست، اما این دو تا دقیقاً یکی نیستن.
درواقع pass فقط یک statement خالیه، ولی ... یک آبجکت واقعی از نوع ellipsis محسوب میشه و کاربردهای بیشتری داره.
منبع: https://blog.imsadra.dev/ellipsis-in-python-the-mysterious-three-dots
Join 👉 @lnxpylnxpy | 1 605 |
| 16 | pass یا `...`؛ کدوم بهتره؟
هر دو باعث میشن این کد بدون خطا اجرا بشه:
def foo():
pass
یا
def foo():
...
اما تفاوتشون چیه؟
* pass یعنی «هیچ کاری انجام نده».
* ... یعنی «اینجا عمداً هنوز پیادهسازی نشده».
به همین دلیل توی پروژههای بزرگ، فایلهای Stub (`.pyi`) و بعضی کتابخونهها مثل FastAPI، Pydantic یا ابزارهای Type Hinting بیشتر ... رو میبینی تا pass. | 1 |
| 17 | سه نقطه (`...`) در پایتون فقط برای زیبایی نیست!
احتمالاً جایی در کدهای پایتون این مورد رو دیدی:
def process_data():
...
این سه نقطه در پایتون یک آبجکت واقعی به اسم Ellipsis هست، نه یه کامنت یا تریک خاص.
>>> ...
Ellipsis
>>> type(...)
<class 'ellipsis'>
خیلی از برنامهنویسها فکر میکنن ... همون pass هست، اما این دو تا دقیقاً یکی نیستن.
pass فقط یک statement خالیه، ولی ... یک آبجکت واقعی از نوع ellipsis محسوب میشه و کاربردهای بیشتری داره.
pass یا `...`؛ کدوم بهتره؟
هر دو باعث میشن این کد بدون خطا اجرا بشه:
def foo():
pass
یا
def foo():
...
اما تفاوتشون چیه؟
* pass یعنی «هیچ کاری انجام نده».
* ... یعنی «اینجا عمداً هنوز پیادهسازی نشده».
به همین دلیل توی پروژههای بزرگ، فایلهای Stub (`.pyi`) و بعضی کتابخونهها مثل FastAPI، Pydantic یا ابزارهای Type Hinting بیشتر ... رو میبینی تا pass. | 1 |
| 18 | من از این متدها واسه مقابله با burnout استفاده میکنم همیشه. :)
✅ چند روز واقعاً از کار فاصله بگیر. نه اینکه فقط لپتاپ رو ببندی و همچنان به تسکها فکر کنی.
✅ خواب، ورزش، موسیقی و فعالیتهای خارج از کار رو جدی بگیر. اینها لوکس و لاکچریبازی نیست؛ بخشی از ریکاوریه.
✅ حجم مسئولیتهات رو کمتر کن. بعضا مشکل از خودت نیست، از بار کاری غیرمنطقیه که روی دوشت قرار داره.
✅ برناوت در سکوت و تنهایی بدتر میشه. پس اگه دوست، رفیق یا پارتنر داری، باهاش در تعامل باش.
✅ قبل از تصمیمهای بزرگ مثل استعفا یا تغییر مسیر شغلی، اول استراحت کن و بعد تصمیم بگیر چون وقتی burnoutی، فقط دنبال راه فراری.. ممکنه تصمیم عاقلانه نگیری.
ما ماشین نیستیم. گاها دنبال self-improvement نبودن، خودش self-improvementه. لزوما نباید هر روزمون، بهتر از دیروزمون باشه.. بعضی وقتها باید تسلیم شد. باید Give up کرد روی یک سری از مسائل. تعصب بیجا و کورکورانه و درگیر کلمات و جزئیات شدن واقعا آدم رو از راه به در میکنه و یهو خودت رو بی هدف و بی مسیر وسط یه بیابون پیدا میکنی. درک کردن این موضوع و عاقلانه فکر کردن بهش، شاید زمانبر باشه اما اگه واقعا کسی به این باور برسه و اون Ego و تخیلات کاذب رو بذاره کنار، واقعا پیشرفت میکنه و زندگیای به مراتب زیباتر و پربارتر خواهد داشت.
Join 👉 @lnxpylnxpy | 1 495 |
| 19 | If you eat your favorite food two meals a day for a month, you'll end up hating that food.
لینک مقاله: https://blog.imsadra.dev/burnout-the-time-you-hate-everything
Join 👉 @lnxpylnxpy | 1 210 |
| 20 | شاید خسته نیستی؛ شاید Burnout شدی!
نشونه اصلی Burnout این نیست که انرژی نداری؛ اینه که دیگه برات مهم نیست.
تسکی که قبلاً با ذوق انجامش میدادی، الان فقط میخوای تموم بشه. پروژهای که برات هیجان داشت، تبدیل شده به یه لیست از کارهای تکراری.
خیلیها Burnout رو با خستگی اشتباه میگیرن. خستگی معمولاً با چند روز استراحت بهتر میشه؛ اما Burnout باعث میشه حتی بعد از استراحت هم نسبت به کار، تیم یا پروژه حس خوبی نداشته باشی.
معمولا برناوت یک شبه اتفاق نمیافته. هیچکس صبح بیدار نمیشه و ناگهان Burnout نمیشه.
معمولاً داستان از اینجا شروع میشه که..
- چند هفته اضافهکاری داشتی..
- چند ماه با استرس مداوم سر و کله میزدی..
- خیلی وقته استراحت نداشتی..
- خیلی تلاش کردی از یه سرویس خاص استفاده کنی یا دسترسی به اینترنت آزاد داشته باشی و نشد..
و بعد کمکم میبینی:
- تمرکزت کمتر شده
- اشتباهاتت بیشتر شده
- انگیزهات از بین رفته
- همه چیز آزاردهنده به نظر میرسه
مشکل اینجاست که سعی میکنیم با فشار بیشتر جبرانش کنیم؛ دقیقاً همون کاری که Burnout رو شدیدتر میکنه.
چطور بفهمیم Burnout داریم یا فقط از کارمون خوشمون نمیاد؟
این دو تا خیلی شبیه هم به نظر میرسن.
یه سوال ساده:
اگر دو هفته مرخصی بگیری، بعدش دلت برای کار کردن تنگ میشه؟
اگر جواب «آره» باشه، احتمالاً خسته یا Burnout شدی.
اگر جواب «نه» باشه و حتی بعد از استراحت هم از فکر برگشتن به کار حالت بد بشه، شاید مسئله فقط خستگی نباشه و خود شغل یا محیط کارت مشکل داره.
خیلی وقتها ما دنبال استراحت بیشتر میگردیم، در حالی که مشکل اصلی جای دیگه است:
- نقش اشتباه
- تیم اشتباه
- مدیر اشتباه
- یا حتی مسیر شغلی اشتباه
استراحت میتونه انرژی رو برگردونه، ولی همیشه نمیتونه علاقه رو برگردونه.
وقتی از همه چیز بدت میاد، اولین راهحل «بیشتر تلاش کردن» نیست!
یکی از خطرناکترین واکنشها به Burnout اینه که فکر کنیم:
- باید قویتر باشم!
- باید بیشتر کار کنم!
- باید تحمل کنم!
- نباید تسلیم بشم!
قبل از هر تصمیم بزرگ مثل استعفا، مهاجرت یا تغییر مسیر، این چند سوال رو از خودت بپرس:
- آخرین باری که واقعاً استراحت کردم کی بود؟
- چند وقته بدون وقفه زیر فشارم؟
- هنوز از خود کار لذت میبرم یا فقط خستهام؟
- اگر یک ماه استراحت کنم، نظرم عوض میشه؟
گاها مشکل این نیست که از همه چیز متنفری؛ مشکل اینه که مدت زیادیه فرصت ریکاوری نداشتی.
Join 👉 @lnxpylnxpy | 1 192 |
