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

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Dev Dastan
🧱 5 Core Pillars of System Design


✔️ Designing systems is one thing, but mastering the principles that guide their creation is where the real magic happens.


1️⃣ Availability Ensures systems are up and running.
⚠️ Trade-off: Complexity vs. uptime.


2️⃣ Scalability Handles growing loads efficiently.
⚠️ Trade-off: Cost vs. performance.


3️⃣ Reliability Guarantees consistent performance.
⚠️ Trade-off: Redundancy vs. simplicity.


4️⃣ Maintainability Eases updates and debugging.
⚠️ Trade-off: Initial effort vs. long-term gains.


5️⃣ Performance Optimizes speed and responsiveness.
⚠️ Trade-off: Resources vs. user experience.




📚 Article: [here]

#systemDesign #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dev Dastan
📱 How Notion Handles 200 BILLION Notes (Without Crashing)


✔️ In this video, you can see Notion's incredible engineering journey from a single database to an infrastructure that manages over 200 BILLION blocks without breaking a sweat. You can see the following in the video:


1️⃣ How Notion's engineers tackled explosive growth that doubled every 6-12 months

2️⃣ The sharding strategy that transformed performance

3️⃣ Why they built their own custom data lake after outgrowing traditional solutions

4️⃣ The behind-the-scenes story of how they tripled their infrastructure without any downtime



🟥 YouTube: [here]

#systemDesign #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dev Dastan
This media is not supported in your browser
VIEW IN TELEGRAM
🖼️ The Hidden Cost of JavaScript Arrays (Part 1 - Memory Allocation)


✔️ JS arrays can tank performance and there are ways to optimize them.


Operations like push(), pop(), and splice() can trigger memory reallocation, copying, and fragmentation.

Using fixed-size or oversized arrays can be more efficient.


// Inefficient: Repeatedly resizing the array

let arr = [];
console.time("Resizing Array");
for (let i = 0; i < 10000; i++) {
arr.push(i);
}
console.timeEnd("Resizing Array");

// Time varies, typically slow

// Efficient: Using a pre-sized array

let arr2 = new Array(10000);

console.time("Pre-sized Array");

for (let i = 0; i < 10000; i++) {
arr2[i] = i;
}

console.timeEnd("Pre-sized Array"); // Time varies, typically faster


📚 Article: [here]

#javaScript #performance #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dev Dastan
This media is not supported in your browser
VIEW IN TELEGRAM
🖼️ The Hidden Cost of JavaScript Arrays (Part 1 - Memory Allocation)


✔️ JS arrays can tank performance and there are ways to optimize them.

Operations like push(), pop(), and splice() can trigger memory reallocation, copying, and fragmentation.

Using fixed-size or oversized arrays can be more efficient.



// Inefficient: Repeatedly resizing the array

let arr = [];

for (let i = 0; i < 10000; i++) {
arr.push(i);
}

// Efficient: Using a pre-sized array

let arr2 = new Array(10000);


for (let i = 0; i < 10000; i++) {
arr2[i] = i;
}





📚 Article: [here]

#javaScript #performance #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dev Dastan
🔸 Epic Programming Principles



📚 Article: [here]

#softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔵 عنوان مقاله
Using Go Channels to Solve Interface Impedance Mismatch

🟢 خلاصه مقاله:
استفاده از Go Channels برای رفع ناسازگاری بین رابط‌ها
این یادداشت نشان می‌دهد که چگونه می‌توان از Go Channels نه برای همزمانی، بلکه به‌عنوان یک لایه تطبیق سبک استفاده کرد. Zach Musgrave توضیح می‌دهد که در مواجهه با “interface impedance mismatch”—جایی که یک API داده را به‌صورت push می‌دهد و دیگری آن را به‌صورت pull مصرف می‌کند، یا یکی جریان‌محور است و دیگری تکرارشونده—یک Channel می‌تواند به‌عنوان بافری خنثی، این دو جهان را بدون تغییرات اساسی در کد به هم متصل کند. در این الگو، تولیدکننده در همان جریان اجرای عادی داده‌ها را داخل Channel می‌گذارد و مصرف‌کننده با الگوی خواندن رایج از روی Channel آن‌ها را برمی‌دارد؛ نیازی به goroutine یا معماری همزمانی پیچیده نیست. مزیت‌ها شامل جداسازی بهتر، ساده‌سازی تبدیل بین رابط‌ها، و تست‌پذیری بالاتر است؛ با این احتیاط‌ها که اندازه بافر معقول انتخاب شود و استفاده غیرهمزمانی از Channel به‌وضوح مستند گردد. پیام اصلی: Channels فقط برای همزمانی نیستند؛ آن‌ها یک واسط ترکیبی مفید برای آشتی دادن APIها—به‌ویژه در تبدیل push/pull و جریان/تکرار—هستند.

#Go #Golang #Channels #APIDesign #InterfaceImpedanceMismatch #SoftwareEngineering #DesignPatterns #GoTips

🟣لینک مقاله:
https://golangweekly.com/link/174421/web


👑 @gopher_academy
Forwarded from Gopher Academy
🔵 عنوان مقاله
explains more, including why this matters.

🟢 خلاصه مقاله:
آخرین شماره Golang Weekly مقاله‌ای دارد که یک موضوع به‌روز در اکوسیستم Go را با زمینه‌سازی روشن و کاربردی شرح می‌دهد: چرا اکنون مهم است، چه مزایا و ملاحظاتی دارد و چه بده‌بستان‌هایی پیشِ‌روست. با توضیح‌های فشرده و مثال‌های قابل اتکا، الگوهای مناسب تولید، خطاهای رایج و مسیرهای مهاجرت برای سرویس‌ها و کتابخانه‌ها را نشان می‌دهد. همچنین به پیامدهای معمول چنین تغییراتی بر modules، مدیریت وابستگی، CI، راهبرد تست، بنچ‌مارک و پروفایلینگ می‌پردازد و راهکارهایی برای کاهش ریسک و سازگاری پیشنهاد می‌کند. در پایان، اثر آن بر جامعه و تیم‌ها را جمع‌بندی کرده و منابع تکمیلی برای مطالعه بیش‌تر معرفی می‌کند؛ نکاتی عملی، چه برای بک‌اند‌های پُرترافیک و چه برای CLIهای کوچک.

#Go #Golang #GolangWeekly #SoftwareEngineering #Backend #DevOps #Performance #Concurrency

🟣لینک مقاله:
https://golangweekly.com/link/174442/web


👑 @gopher_academy
Forwarded from Gopher Academy
🔵 عنوان مقاله
The Day the Linter Broke My Code

🟢 خلاصه مقاله:
**
روزِ خراب‌کاریِ linter یادآور این واقعیت است که تحلیل ایستا همیشه تمامِ زمینه را نمی‌بیند. یک «اصلاح بی‌ضرر»—مثل حذف یک متغیر به‌ظاهر بلااستفاده—می‌تواند رفتار پنهانی یا الگوهای پویا را از کار بیندازد و کد را بشکند. راه‌حل، کنار گذاشتن linter نیست؛ بلکه تنظیم دقیق قوانین، پرهیز از autofix برای تغییرات معنایی، کاهش شدت برخی قوانین، افزودن مستندات و استثناهای صریح، و تکیه بر تست‌ها و بازبینی انسانی است. از lint باید به‌عنوان راهنما استفاده کرد، نه مرجع نهایی؛ به‌ویژه در کدهایی که با الگوهای پویا، reflection یا codegen کار می‌کنند. با بازخورد به نگه‌داران ابزارها، استفاده از حالت‌های آگاه به نوع (مثل ESLint با TypeScript) و سیاست‌های روشن در CI، می‌توان مزایای lint را گرفت و ریسک «اصلاحات خطرناک» را کم کرد.

#linting #staticanalysis #codequality #developerexperience #CI #autofix #falsepositives #softwareengineering

🟣لینک مقاله:
https://golangweekly.com/link/174418/web


👑 @gopher_academy
Forwarded from Gopher Academy
🔵 عنوان مقاله
Valgo 0.7: An Expressive Validator Library

🟢 خلاصه مقاله:
اValgo 0.7 یک کتابخانه اعتبارسنجی است که با تکیه بر generics، API ایمن از نظر نوع و قابل‌گسترش ارائه می‌دهد. به‌جای استفاده از struct tags، قواعد به‌صورت توابع نوشته می‌شوند؛ رویکردی که خوانایی، تست‌پذیری و ترکیب‌پذیری را افزایش می‌دهد و وابستگی به رشته‌ها و reflection را کاهش می‌دهد. نتیجه، اعتبارسنجی شفاف‌تر و قابل‌نگهداری‌تری است که از بررسی‌های ساده تا منطق‌های پیچیده و دامنه‌محور را پوشش می‌دهد و به‌سادگی با لایه‌های مختلف کد ادغام می‌شود.

#Validation #Generics #TypeSafety #Extensibility #CleanCode #DeveloperExperience #SoftwareEngineering

🟣لینک مقاله:
https://golangweekly.com/link/174655/web


👑 @gopher_academy
Forwarded from Gopher Academy
🔵 عنوان مقاله
the top 'programming languages' in 2025

🟢 خلاصه مقاله:
فهرست برترین زبان‌های برنامه‌نویسی در 2025 نشان می‌دهد کجا واقعاً نرم‌افزار ساخته و نگه‌داری می‌شود؛ معیارهایی مثل میزان استفاده، تقاضای شغلی، بلوغ اکوسیستم، عملکرد و ابزارها در نظر گرفته شده است. زبان‌های جاافتاده مثل Python، JavaScript/TypeScript، Java و C# همچنان ستون‌های اصلی‌اند؛ C/C++ برای کارهای کم‌تأخیر و سیستم‌ها و SQL برای داده ضروری‌اند، و رشد Rust بر اهمیت ایمنی و کارایی تاکید دارد؛ Kotlin و Swift نیز در موبایل قدرتمند مانده‌اند. در این میان، Go در رتبه ۱۰ قرار گرفته چون سادگی، کامپایل سریع، هم‌روندی با goroutine و channel و باینری‌های مستقل را با پذیرش گسترده در فضای cloud‑native ترکیب می‌کند؛ پروژه‌هایی مثل Docker و Kubernetes نقش آن را در زیرساخت نشان می‌دهند. جمع‌بندی: 2025 ترکیبی از ثبات و نوآوری است و انتخاب زبان باید بر اساس مسئله، مهارت تیم و نگه‌داشت بلندمدت باشد—اغلب در چارچوبی چندزبانه و عمل‌گرایانه.

#ProgrammingLanguages #GoLang #Trends2025 #SoftwareEngineering #CloudNative #Developers #Rust #Python

🟣لینک مقاله:
https://golangweekly.com/link/174641/web


👑 @gopher_academy