🎄 یک برنامه نویس تنبل
2.02K subscribers
1.54K photos
284 videos
37 files
1.91K links
کانال یک برنامه نویس تنبل

🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

ارتباط با مدیریت :

@CoderNap

اسپانسر هاست سایت راییوم توسط پوینا

https://rayium.ir

@poinair
Download Telegram
🔶 اخیرا یه سرویس مدیریت کاربران و احراز هویت Clerk معرفی شده که برای اپلیکیشن‌های وب و موبایل طراحی شده تا تیم ‌های توسعه بتوانند سریع وارد بخش احراز هویت و مدیریت کاربران شوند بدون اینکه همه‌ی این سیستم را از صفر بسازند.

اما بدی این سرویس اینکه داده های مدیریت کاربران و عضویت آن در سرورهای خود نگهداری می شوند و اگر داده های حساسی دارید, استفاده از احزار هویت Clerk توصیه نمی شود.

https://clerk.com

@TheRaymondDev
🥴6🤣1
🔶 برای فریم ‌ورک لاراول، الگوی Repository Pattern بهترین نوع معماری است، زیرا سازگاری کامل با ساختار این فریم ‌ورک دارد.

#لاراول

@TheRaymondDev
🔥5
Forwarded from Golden Code (@lix)
یه روش برای اینکه کارهای تکراریه مثل ساخت یه سری کلاس‌های خاص (مثلا DTO) رو خودکار کنید

اولش ببینیم چرا custom artisan command مفیده؟

صرفه‌جویی در زمان

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

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


📌 چطوری custom artisan command بسازیم؟

1. ایجاد کامند جدید:
با دستور زیر، یک کامند جدید ایجاد کنین:

php artisan make:command CreateDto

2. نوشتن منطق دستور:
در کلاس جدید،دستور مورد نظرتونو بنویسین (مثل ساخت یک DTO جدید).

یه مثال:

<?php
protected $signature = 'make:dto {name}';
protected $description = 'Create a new DTO class';

public function handle() {
$name = $this->argument('name');
file_put_contents(app_path("Dtos/{$name}.php"), "<?php\n\nclass {$name} {}\n");
$this->info("DTO {$name} created successfully!");
}

3. اجرای دستور:
حالا با این دستور میتونین بسادگی کلاس‌های DTO جدید بسازید:

php artisan make:dto MyDto

خلاصش که:

با استفاده از custom artisan command، میتونین کارهای تکراریتون رو خودکار کنین و توسعه پروژتون رو هم سرعت بدید.
#Laravel #Laravel_tip #لاراول

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1982797695568707742?t=EQ-hdRBX3rRgGuPH2EyA9Q&s=19
3👍1
خطا داریم؟ همینه که هست!

یه مثال دیدم که می‌گفت شما وقتی ماشینتون پنچر میشه صبر می‌کنید تا تعمیرکار بیاد درستش کنه، یا با همون چرخ های پنجر با سرعت کم ادامه میدین تا به مقصد برسید؟

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

در یک برنامه معمولی جوابِ (احتمالا) درست به خیلی از این سوالا اینه که خب کارکرد برنامه رو متوقف کن و بگو نمیتونم. برنامه کار نکنه تا دوباره با برطرف شدن مشکلات یکی از اول اجراش کنه،
ولی اگر برنامه ما قراره توی یکسری از محیط‌ها اجرا بشه دیگه خبری از «من کار نمیکنم تا شرایط درست بشه» نیست. چه محیط‌هایی؟ محیط‌هایی که availability بالا مهمه مثلا سیستم های امبدد یا بک‌اند.
مثلا قراره ما مسیریابی یک هواپیما رو انجام بدیم و سیگنال GPS دریافت نمی‌کنیم، خب به هواپیما بگیم فعلا من کار نمیکنم؟! یعنی چی که کار نمیکنم، با سرعت زیاد داره میره :)))
یا مثلاً توی کلود اگر ارور بدیم و برنامه کرش کنه کنیم چی میشه؟ کوبرنتیز دوباره برنامه رو اجرا می‌کنه و دوباره با مشکل درگیریم!

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

مثلا چه مشکلاتی؟
مثلاً اگه قراره کانفیگ فایل رو از بیرون لود کنیم, آمادگی نبودنش رو هم داشته باشیم، مثلا یه کانفیگ پیشفرض داشته باشیم (البته کانفیگ چون موقع اولین اجرای برنامه خودش رو نشون میده شاید نیازی هم نباشه)
مثلا اگر داده gps به ما نرسید، با کمک داده های قبلی که ذخیره کردیم و یا ترکیبش با سرعت و شتاب و ... مشکل رو موقتا و حتی نادقیق حل کنیم
یا مثلاً اگر به سرور خارجی درخواست می‌زنیم و نیست، آمادگی نبودنش رو داشته باشیم، اینجا یکسری پترن که تو صنعت استفاده میشه داریم
مثلا چه پترنهایی؟
+ دوباره درخواست بده: retry pattern
+ به یکی دیگه درخواست بده: fallback
+ اگر خرابه تا یه مدت بهش درخواست نده تا ارور الکی نگیری: circuit breaker
+ اگه سرور خارجی کنده، خیلی صبر نکن تا response time خودت هم بالا نره
+ اگر سرور خارجی دیتا قراره بهت بده، دیتای قبلی رو کش کن.

اینها در سطح کد بودن، در سطح معماری هم میشه از قبل روش‌هایی رو تدارک دید مثلاً خود دیتابیس رو چطوری High available کنیم، یا روش‌هایی که بیشتر تو سیستم های امبدد استفاده میشه مثل اینکه یه برنامه رو با چند تا پیاده سازی همزمان اجرا کنیم تا اگر یکیش خراب شد اون یکی‌ها باشن!

منابع:
https://opensource.com/article/19/9/transient-faults-devops

https://www.jrebel.com/blog/microservices-resilience-patterns

https://learn.microsoft.com/en-us/azure/architecture/best-practices/transient-faults

https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/application-resiliency-patterns

@terminal_stuff
3
در گیت‌هاب Typescript به محبوب‌ترین زبان برنامه‌نویسی تبدیل شده و از پایتون جلو زده!

@DevTwitter | <Masoud Majidi/>
8
🔶 به نظر می رسد انویدیا عملاً بازار چین را از دست داده و چین وارد عصر استقلال فناوری در حوزه هوش مصنوعی شده است.

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

#خبر
#توییت

@TheRaymondDev
👍7
Forwarded from Golden Code (@lix)
تا حالا پیش اومده بخوای یه قابلیت یا یه گزارش فقط برای درصد کمی از کاربران فعال باشه؟
لاراول یه ابزار باحال برای این کار داره: Lottery

مثال:
تست ویژگی جدیده سایتمون فقط برای ۵٪ کاربران

فرض کن میخوای یه قابلیت جدید (مثلا طراحی تازه‌ی داشبورد) رو فقط برای ۵٪ از کاربرها فعال کنی تا عملکردش رو بسنجی 👇🏾
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Lottery;

Lottery::odds(1, 20) // یعنی 5% احتمال
->winner(function () {
session(['new_dashboard' => true]);
})
->loser(function () {
session(['new_dashboard' => false]);
})
->choose();

حالا فقط ۵٪ کاربران این داشبورد جدید رو می‌بینن 🔥
بدون نیاز به feature flag سیستم یا تنظیمات پیچیده.

📌 کاربردهای دیگه ی Lottery در لاراول

مانیتورینگه سبک:
گرفتن لاگ کامل SQL در درصدی از ریکوئستها

تست A/B برای UX

اجرای وظایف سنگین فقط در بخشی از ریکوئست ها (مثلا آنالیز رفتار کاربر)

این Lottery از نسخه‌ی 9.19 به بعد اضافه شده و توی اپ‌های پر ترافیک کمک میکنه بدون کاهش سرعت، رفتار سیستم رو هوشمندانه بررسی کنی.

#Laravel #Laravel_tip‌ #لاراول

@GoldenCodeir 🔥

(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1978788530139635982?t=Hc2oNzGolFfMitfwrxC2zA&s=35
2👍2
🔶 چرا برنامه نویسان از MongoDB منتفرند؟

نفرت از MongoDB تو جامعه‌ی برنامه ‌نویس ‌ها یه پدیده‌ی واقعی و جالبِ فرهنگیه. دلیلش معمولاً یکی از ترکیبی از تجربه ‌های بد گذشته، سوءاستفاده از MongoDB در پروژه‌های اشتباه، و تفاوت فلسفی با SQL هست.

دلایل آن :

- گذشته‌ی پر از باگ و از دست دادن داده ‌ها
- بکار گیری آن برای پروژه ‌های اشتباه
- مشکل در طراحی Schema
- جامعه‌ی SQL محور و تفکر رابطه ‌ای
- سیاست‌های تجاری MongoDB Inc
- رشد سریع اما با hype

#توییت

@TheRaymondDev
👍32👎1💯1
🔶 چرا طرح «Make in India» شکست خورد؟

طرح Make in India که در سپتامبر ۲۰۱۴ توسط نارندرا مودی معرفی شد، وعده داشت هند را به یک هاب طراحی و تولید جهانی تبدیل کند. با گذشت نزدیک به یک دهه، این طرح نتوانسته به اهداف اصلی خود برسد؛ از جمله افزایش اشتغال جوانان، رشد تولید صنعتی و ارتقای سهم تولید در GDP به ۲۵٪. علت اصلی شکست را می‌توان در سه عامل بنیادین یافت که نویسنده آن را Indian 3D می‌نامد: Directionless Working (فقدان هدف‌گذاری مشخص)، Dissonant Populous (جمعیت ناسازگار) و Dishonest Administration (مدیریت غیرقابل اعتماد). اهداف MII مانند افزایش اشتغال و سهم تولید صرفاً نتایج جانبی هستند و نه اهداف واقعی قابل سنجش. اهداف واقعی باید مشخص، قابل اندازه ‌گیری، دست ‌یافتنی، مرتبط و زمان‌مند باشند، اما MII هیچ ‌یک از این ویژگی ‌ها را ندارد.

نبود اولویت ‌بندی صنایع مشخص و تغییر جهت سیاست ‌ها از ممنوعیت شرکت‌های چینی تا جذب سرمایه‌گذاری خارجی، باعث سردرگمی سرمایه ‌گذاران شد. بخشی از ناکامی هند نیز به ویژگی ‌های ذهنی و فرهنگی جامعه باز می‌گردد؛ تمایل به پافشاری بر باورها حتی در مقابل واقعیت و ناتوانی در اصلاح مشکلات موجب می‌شود اصلاحات و آموزش‌ های صنعتی ناکارآمد باشد و شرکت ‌های خارجی برای سرمایه ‌گذاری در هند ترجیح دهند به کشورهایی مانند چین، ویتنام یا اندونزی بروند. فساد و عدم شفافیت دولتی، یکی دیگر از بزرگ‌ ترین موانع برای MII است. نمونه‌هایی از بی‌ عدالتی و فرآیند های اداری پیچیده، از جمله نحوه دریافت برق صنعتی یا واگذاری قراردادهای دفاعی، باعث می‌شود سرمایه‌گذاری و تولید صنعتی دچار ریسک و عدم اعتماد شود. وجود نهاد های استخراجی به جای نهاد های فراگیر مانع رشد صنعتی و رقابت ‌پذیری می‌شود. علاوه بر این، MII صرفاً یک بازسازی سیاست ‌های قدیمی خود کفایی صنعتی بوده و نوآوری واقعی در آن وجود ندارد. طرح بدون ارزیابی دقیق و معیار های مقایسه‌ای و با شعارهای کلی ارائه شد، بدون برنامه عملیاتی مشخص. تمرکز بیش از حد بر تبلیغات و برندینگ، بدون اصلاح زیرساخت‌ها و بوروکراسی، شکست طرح را قطعی کرد.

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

#خبر

@TheRaymondDev
👍4
🔶 این از آکادمی تکانش است. اما از کی حالا مدرسان لقب دکتر داشتند؟

@TheRaymondDev
💩9
🔶 نصب Affinity جایگزین ادوبی برای لینوکس

گیت هاب :

https://github.com/ryzendew/AffinityOnLinux

#لینوکس

@TheRaymondDev
3
🔶 در ویندوز ۱۱ باگی مشاهده شده است که دکمه «Update and Shut Down» که باید پس از به ‌روز رسانی، سیستم را خاموش کند به ‌جای آن باعث راه ‌اندازی مجدد سیستم می‌شود.

#خبر
#توییت

@TheRaymondDev
🤣16😁1
🔶 ترجمه بینگ مرورگر ادج در مقابل ترجمه گوگل ایکس

@TheRaymondDev
🤣4🔥1
🔶 در 5 سال آینده VueJS بسیار محبوب تر از ReactJS خواهد بود

#توییت

@TheRaymondDev
👍9👎7
Forwarded from Linuxor ?
خبر فوری

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


@Linuxor
🤯13🤣4👍1👎1