Dev Perfects – Telegram
Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 선진국이 쇠퇴하는 중요한 요인은 사실에서 진실을 구하지 않고, 자신이 얼마나 강대하고 발전했는지 끊임없이 회상하며, 항상 자신이 다른 나라보다 앞서 있다고 생각한다는 점이다.

یک عامل مهم در افول کشورهای توسعه یافته این است که آنها حقیقت را از واقعیت ها جستجو نمی کنند، دائماً به یاد می آورند که چقدر قدرتمند و توسعه یافته هستند و همیشه فکر می کنند که از سایر کشورها جلوتر هستند.

#متفرقه
@TheRaymondDev
توی پروژه اخیرم که خیلی پیچیده نبود و زمان زیادی نداشتم، از Scribe استفاده کردم برای داکیومنت‌سازی API، و باید بگم با یه دستور ساده:
php artisan scribe:generate
کل داکیومنت تمیز و حرفه‌ای آماده شد!
برای پروژه‌هایی که نمی‌خوای وقت زیادی روی داکیومنت‌سازی بذاری، ولی نتیجه کار باید مرتب و خوانا باشه، Scribe واقعاً گزینه عالی‌ایه.
اگه ابزارای دیگه‌ای می‌شناسین که کار مشابه یا حتی بهتری می‌کنن، خوشحال می‌شم پیشنهاداتتون رو بشنوم.

@DevTwitter | <mohamadali mahboobi/>
Forwarded from Python Hints
https://github.com/pykeras/neovim

بالاخره آماده شد.

تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچه‌های گروه خودمون.

فکر می‌کنم خوب باشه.

توی ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که می‌اندیشند وجود داره
Forwarded from CleverDevs (CleverDevs Ads)
This media is not supported in your browser
VIEW IN TELEGRAM
اینم اکستنشن باحالیه 😂

#vscode
@CleverDevs - @CleverDevsGp
Forwarded from CleverDevs (Mammad)
This media is not supported in your browser
VIEW IN TELEGRAM
اینم اکستنشن باحالیه 😂

#vscode
@CleverDevs - @CleverDevsGp
Forwarded from Python Hints
چون پرسیدید چرا (تو گروه توضیح دادم همون رو میذارم اینجا) :

تعداد پروژه‌های همزمان من زیاده و خیلی هم طرفدار استفاده از تولز نیستم
سری آخری که از vim زدم بیرون هم برای این بود که همه تنظیماتم بدون بکاپ بود و هاردم سوخت (هیچوقت حال نداشتم تنظیم کنم) و هم اینکه خیلی از پلاگین‌های الان هم نبود.

موقعی که تعداد پروژه‌های همزمان زیاد میشه :
۱- کندی شدیدی توی vscode دارم
۲- مصرف رم خیلی زیاد میشه
۳- ی وقتایی حتی خود به خود vscode بسته می‌شد
و ...

که همگی این ها مشکلات اساسی مربوط به الکترون هست.

مختصرش این بود.

آیا vim بدرد همه میخوره ؟ نه
آیا باید یاد گرفت ؟ نه

ولی اگر کندی vscode اذیت کننده بود یا lag , ... داشتید.
—————————————————————————
چرا پایچارم نه ؟
سعی کن باهاش روی python, rust, javanoscript کار کنی 😂
بعد اینجوری هم هست که؛ تا دستت می‌خوره روش میگه علی الحساب ی ۴-۶ گیگ رم بده بعد می‌بینم چیکار داری.
Forwarded from Yasha
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Linuxor ?
مفهوم شاردینگ در یک عکس

@Linuxor
Forwarded from Armon technical logs (armon Taheri)
توازن توسعه شخصی و تسک های شرکت
Forwarded from C & micro & fpga (فرهاد ناصری زاده)
Learn C++ Programming Language

🆔 @c_micro
Forwarded from Sadra Codes
😂🤙
نسخه ۲.۲۵ از برنامه #oblivionDesktop با تمرکز بر روی بهبود اتصال از طریق حالت Tun، بهینه‌سازی و کاهش مصرف منابع سخت‌افزار، رفع مشکلات گزارش‌شده و اضافه‌کردن ۳ زبان جدید (از فهرست کشورهای صدرنشین اعمال #فیلترینگ)، در دسترس قرار گرفت.

🚀 github.com/bepass-org/oblivion-desktop/releases
🛟 github.com/bepass-org/oblivion-desktop/issues

🔍 ircf.space/software
@ircfspace
🔥1
معرفی پکیج Laravel OTP Manager در وب سایت Laravel News

https://laravel-news.com/one-time-password-manager-for-laravel

@DevTwitter | <Saleh Hashemi/>
Forwarded from Anophel | آنوفل
💢 اگه یه میلیون کار داشته باشی و بخوای همزمان اجراشون کنی، ولی فقط 8 تا CPU داری، چه‌جوری بهینه‌ترین حالت رو پیدا می‌کنی؟



⭐️تو گولنگ، گوروتین‌ها خیلی سبک هستن. می‌تونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمی‌صرفه حافظه‌ رو با صدها هزار گوروتین که همزمان نمی‌تونن اجرا بشن، هدر بدی.



یه راه خفن برای کنترل این داستان استفاده از چیزی به اسم Semaphore هست. اینجوری می‌تونی تعداد گوروتین‌های در حال اجرا رو محدود کنی.



⭐️حالا چجوری کار می‌کنه؟

1. یه کانال با ظرفیت مشخص (N) درست می‌کنی که این ظرفیت میشه تعداد گوروتین‌های همزمانی که می‌خوای اجرا بشه.



2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر می‌کنی.



3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد، توکن رو برمی‌گردونه.



4. اگه توکن نباشه، گوروتین منتظر می‌مونه تا یکی آزاد بشه.

کد داخل تصویر یه مثال ساده با N=2 هست.



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



💠شما چجوری همزمانی کارهاتون رو مدیریت می‌کنید؟


💙 Anophel | آنوفل

#Golang #go #گو #گولنگ
Please open Telegram to view this post
VIEW IN TELEGRAM
مفهوم Race Condition رو تا حالا شنیدی؟!
در واقع به درخواست‌های همزمانی که روی یه اندپوینت مشخص یا یه داده خاص در سیستم ما اتفاق میفته، Race Condition میگن.
این اتفاق معمولاً زمانی رخ میده که چندین درخواست همزمان بخوان روی یک داده مشترک اثر بذارن یا تغییراتی ایجاد کنن، و اگه به درستی مدیریت نشه، می‌تونه منجر به باگ‌های جدی و رفتار غیرمنتظره در سیستم بشه.

چطور Race Condition رو مدیریت کنیم؟
برای رفع این مشکل، من درخواست‌های همزمان رو به دو بخش کلی تقسیم کردم:

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

راه‌حل پیشنهادی:
از Cache::lock استفاده می‌کنیم. این روش برای ایجاد یک قفل موقت روی منابع مشترک کاربرد داره.
مثلاً با استفاده از Redis می‌تونیم مطمئن بشیم که فقط یک درخواست در یک زمان خاص اجازه دسترسی داره.

۲. همزمانی روی دیتابیس:
اینجا از قفل‌های دیتابیس استفاده می‌کنیم تا درخواست‌های همزمان رو کنترل کنیم:

FOR SHARE:
این نوع قفل وقتی استفاده میشه که فقط می‌خوایم داده رو بخونیم، ولی مطمئن بشیم کسی در همون لحظه نمی‌تونه اون رو تغییر بده.
این قفل اجازه میده درخواست‌های دیگه فقط بخونن ولی هیچ عملیات نوشتن یا دستکاری نمی‌تونه انجام بشه.

FOR UPDATE:
این قفل وقتی استفاده میشه که می‌خوایم داده رو بخونیم و تغییر بدیم.
وقتی این قفل فعال بشه، هیچ درخواست دیگه‌ای نمی‌تونه داده رو حتی بخونه یا تغییر بده تا وقتی که تراکنش فعلی کامل بشه.

با این روش‌هایی که گفتم، می‌تونیم از درخواست‌های همزمان که باعث ایجاد باگ تو پروژمون میشن جلوگیری کنیم.
یادگیری این مفاهیم نه‌تنها توی پروژه‌های واقعی خیلی به‌درد می‌خوره، بلکه می‌تونه یه سؤال کلیدی توی مصاحبه‌های شغلی باشه!

@DevTwitter | <Saber Qadimi/>
Forwarded from Linuxor ?
گشتم دنبالت ولی N/A بودی



@Linuxor
کاربری به اسم frosty این سوالات رو تو Stack Overflow پرسیده و FBI هم از طریق این اسمش و کدهایی که تو سایتش استفاده کرده تونسته ردشو بزنه.

فریمورکی که هم که استفاده کرده CodeIgniter پی‌اچ‌پی بوده. یه نفر بهش میگه که چتاشون لو رفته و باید سریع پاکش کنه که اومده سرچ کرده چطوری session رو تو CodeIgniter پاکش کنه.

پ.ن: این کاربر راس ویلیام اولبریکت، بنیان‌گذار سایت خرید و فروش مواد مخ.در در دارک وب به نام Silk Road بود که در اکتبر ۲۰۱۳ تحت عملیاتی مشترک از سوی اف‌بی‌آی، اداره مبارزه با مواد مخدر، وزارت دادگستری و آژانس امنیت ملی دستگیر و به حبس ابد محکوم شد.

پ.ن۲: اگه خواستین جرمی مرتکب بشین، جوابای Stack Overflow رو مستقیم کپی نکنید، خودتون بنویسید

پادکست جذاب Silk Road از چنل‌بی رو حتما گوش کنید فوق‌العاده هس.

@DevTwitter | <Reza Asgharzadeh />
Forwarded from Software Engineer Labdon
📣 هش SHA 256 چگونه کار می‌کند؟
این وبسایت قدم به قدم فرآیند هش کردن رشته با الگوریتم Sha256 را بصورت گرافیکی نشان می‌دهد:

🔗 https://sha256algorithm.com/
🔹🔹🔹🔹🔹

https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Syntax | سینتکس (Daimon)
6 الگوی برتر معماری نرم‌افزار

معماری مونولیتیک (Monolithic Architecture)


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

این معماری برای پروژه‌های کوچک و تیم‌های کوچک مناسب است، اما برای پروژه‌های بزرگ‌تر، به دلیل وابستگی‌های زیاد میان اجزاء، مدیریت تغییرات بسیار دشوار می‌شود.


الگوی (Controller-Worker Pattern)

این الگو منطق کنترل (Control Logic) را از منطق پردازش (Processing Logic) جدا می‌کند. کنترلر وظیفه مدیریت درخواست‌های ورودی، جریان داده‌ها و تخصیص وظایف به اجزای کارگر (Worker) را بر عهده دارد. اجزای کارگر وظایف پردازشی واقعی را انجام می‌دهند. این الگو برای مدیریت وظایف غیرهمزمان (Asynchronous Tasks) مفید است و می‌تواند مقیاس‌پذیری را با امکان اجرای همزمان چندین نمونه از اجزای کارگر بهبود بخشد.

مناسب برای سیستم‌هایی است که بار پردازشی غیرهمزمان دارند، مانند پردازش صف‌ها (Queues) یا مدیریت درخواست‌های سنگین.

معماری میکروسرویس‌ها (Microservices Architecture)

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

این معماری مناسب سازمان‌هایی است که نیاز به توسعه سریع و مقیاس‌پذیری خدمات دارند. اما نیازمند ابزارهای مناسب برای نظارت، هماهنگی و مدیریت ارتباطات میان سرویس‌ها است.


مدل (Model-View-Controller یا MVC)

الگوی MVC یک برنامه را به سه بخش مرتبط تقسیم می‌کند:
- مدل (Model): وظیفه مدیریت داده‌ها و منطق کسب‌وکار را دارد.
- نما (View): داده‌ها را به کاربر نمایش می‌دهد.
- کنترلر (Controller): ورودی کاربر را مدیریت کرده و با مدل تعامل دارد.

این جداسازی باعث سازماندهی بهتر کد می‌شود و مدیریت و مقیاس‌پذیری برنامه، به‌ویژه در توسعه وب، را آسان‌تر می‌کند.

این الگو در اکثر فریم‌ورک‌های وب مانند Django و Ruby on Rails استفاده می‌شود و برای پروژه‌هایی که نیاز به تعامل زیاد با کاربر دارند، ایده‌آل است.


معماری رویداد-محور (Event-Driven Architecture)

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

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


معماری لایه‌ای (Layered Architecture)

در معماری لایه‌ای، برنامه به لایه‌های مجزا با وظایف مشخص تقسیم می‌شود. لایه‌های رایج شامل موارد زیر هستند:
- لایه ارائه (Presentation Layer): وظیفه نمایش داده به کاربر.
- لایه منطق کسب‌وکار (Business Logic Layer): مدیریت منطق اصلی برنامه.
- لایه دسترسی به داده (Data Access Layer): مدیریت تعامل با پایگاه داده.

هر لایه تنها با لایه مجاور خود ارتباط برقرار می‌کند که باعث جداسازی وظایف (Separation of Concerns) می‌شود. این الگو نگهداری را آسان کرده و به تیم‌ها اجازه می‌دهد به‌طور مستقل روی لایه‌های مختلف کار کنند. با این حال، وجود لایه‌های متعدد ممکن است باعث کاهش عملکرد به دلیل سربار ناشی از ارتباط میان لایه‌ها شود.

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

source

@Syntax_fa