From 89c13c2ea21cb457de80536b6971f7243d392ccb Mon Sep 17 00:00:00 2001 From: Danny Date: Sun, 28 Jul 2024 11:18:45 +0330 Subject: [PATCH] first commit --- README.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ff9d99 --- /dev/null +++ b/README.md @@ -0,0 +1,313 @@ +## معرفی + + با پیشرفت فنّاوری و توسعه روزافزون استفاده از نرم‌افزارها و هوش مصنوعی استفاده از ابزارها و مکانیزم‌های مختلفی برای توسعهٔ سریع و باکیفیت نرم‌افزارها ضروری است. در این کتاب مجموعه مواردی بیان شده است که به معرفی و پیاده‌سازی این روش‌ها می‌پردازند. چه برای افزایش دانش در حوزه نرم‌افزار و چه برای آشنایی با ابزارها و روش‌های پیاده‌سازی نرم‌افزارهای مدرن و چه برای آمادگی برای مصاحبه‌های شغلی برای مهندسی نرم‌افزار، این کتاب برای شما بسیار مناسب است. + +## دانلود + +برای دانلود به می‌توانید از این لینک استفاده کنید. + +## فهرست مطالب + +طراحی سیستم چیست؟ 21 +معنای اعداد نسخه‌های نرم‌افزاری چیست؟ 22 +مدل‌های توسعه نرم‌افزار: آبشاری، چابک، تکراری، مارپیچ و RAD 24 +پروتکل‌های ارتباطی 26 +شبکه تحویل محتوا CDN 27 +جستجوی سیستم نام دامنه (DNS) 30 +انواع کوئری در سیستم DNS 32 +انواع رکوردها 32 +زیر دامنه (Subdomain) 34 +DNS Zones 34 +DNS Caching 34 +Reverse DNS 35 +REST API در مقابل GraphQL 36 +نحوه عملکرد gRPC 38 +Webhook چیست؟ 40 +HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC) 43 +مقایسه SOAP و REST و GraphQL و RPC. 45 +توسعه مبتنی بر کد در مقابل توسعه مبتنی بر API 46 +کدهای وضعیت HTTP 47 +تفاوت URL، URI، URN 49 +وقتی یک URL را در مرورگر خود تایپ می‌کنید چه اتفاقی می‌افتد؟ 51 +تفاوت بین کوکی (Cookie) و سشن (Session) 54 +تفاوت بین تأیید اعتبار مبتنی بر Session و JWT چیست؟ 55 +مرورگرهای مدرن چگونه کار می‌کنند؟ 57 +بررسی روش‌های API 58 +چگونه دسترسی امن به API وب برای وب‌سایت خود طراحی کنیم؟ 58 +چگونه APIهای مؤثر و امن طراحی کنیم؟ 61 +بهبود عملکرد API 62 +GET، POST، PUT... مفاهیم رایج HTTP 64 +تقلب‌نامه‌ي REST API 66 +۱۲ نکته برتر برای امنیت API 69 +۹ نوع تست API 71 +چگونه از Pagination در طراحی API استفاده کنیم؟ 73 +الگوهای معماری نرم‌افزار 76 +بررسی معماری‌های N-Tier 78 +چگونه الگوهای طراحی را یاد بگیریم؟ 81 +الگوهای طراحی کلیدی (Design Patterns) 83 +تسلط بر اصول طراحی - SOLID 86 +۱۲ فاکتور مهم در طراحی اپلیکیشن 86 +تفاوت بین Process و Thread چیست؟ 89 +مقایسه هم‌زمان (Concurrency) با موازی‌سازی (Parallelism) 91 +چگونه برنامه‌های کامپیوتری اجرا می‌شوند؟ 94 +چگونه C++، جاوا و پایتون کار می‌کنند؟ 96 +۸ اصطلاح برتر برنامه‌نویسی 97 +10 اصول مهم برنامه‌نویسی برای بهبود کیفیت کد 100 +چگونه یک فرایند خاصی که بیش از حد منابع مصرف می‌کند را تشخیص دهیم؟ 103 +9 مورد رایج که مصرف CPU را به اوج می‌رساند. 104 +بهترین روش‌های تست عملکرد سیستم 105 +۶ مورد برتر برای اعمال Idempotency 107 +سیستم نظارت و هشدار برای متریک‌ها 109 +قابلیت مشاهده: لاگ‌گیری، ردیابی و معیارها 111 +کدام پایگاه‌داده برای سیستم جمع‌آوری متریک‌ها مناسب است؟ 113 +مدل‌های Pull در مقابل Push 116 +ذخیره‌سازی 119 +چرا یک درایو حالت جامد (SSD) سریع است؟ 119 +بررسی ذخیره‌سازهای مختلف 122 +ذخیره‌ساز بلوکی (Block Storage) 123 +ذخیره‌سازی شیء (Object storage) 124 +ذخیره‌سازی فایل (File storage) 124 +حجم (Volumes) 125 +ذخیره‌ساز متصل به شبکه (NAS) 125 +سیستم فایل توزیع‌شده Hadoop (HDFS) 125 +آرایه افزونگی دیسک‌های مستقل (RAID) 126 +اعداد تأخیر که باید بدانید. 128 +انواع حافظه و ذخیره‌سازی 130 +طراحی S3 132 +بارگذاری فایل‌های بزرگ 135 +کد تصحیح خطا (Erasure coding) 138 +بررسی پایگاه‌داده‌ 141 +چه پایگاه‌داده‌ای را باید استفاده کنم؟ 141 +پایگاه‌داده‌های مختلف در سرویس‌های ابری 142 +راهنمای انتخاب پایگاه‌داده مناسب 143 +پایگاه‌داده‌های SQL 146 +پایگاه‌داده‌های NoSQL 148 +سندگرا (Document) 149 +کلید - مقدار (Key-Value) 149 +پایگاه‌داده گرافی (Graph) 150 +سری زمانی (Time Series) 151 +ستون گسترده (Wide-column) 152 +چندمدلی (Multi-model) 153 +row-based یا Column-based؟ 154 +پایگاه‌داده‌های SQL در مقابل NoSQL 156 +تکثیر پایگاه‌داده (Database Replication) 160 +ایندکس‌ها (indexes) 164 +تراکنش (Transaction) 166 +۸ ساختار داده‌ای که پایگاه‌‌داده‌ها را قدرتمند می‌کنند. 169 +چگونه یک عبارت SQL در پایگاه‌داده اجرا می‌شود؟ 171 +چگونه SQL Joins کار می‌کنند؟ 173 +نرمال‌سازی و غیر نرمال‌سازی 174 +تئوری CAP 181 +تئوری PACELC 183 +سطوح ایزولاسیون پایگاه‌داده 184 +نمایش یک کوئری در SQL 186 +زبان SQL 187 +ACID به چه معناست؟ 188 +BASE به چه معناست؟ 190 +۶ مدل برتر پایگاه‌داده 192 +چگونه داده‌های حساس را در یک سیستم مدیریت کنیم؟ 195 +پایگاه‌داده‌های بُرداری 198 +۶ مورد برتر از کاربردهای Elasticsearch 200 +تراکنش توزیع‌شده (Distributed Transactions) 202 +فدراسیون پایگاه‌داده (Database Federation) 206 +چگونه داده‌ها را در سیستم‌های توزیع‌شده مدیریت کنیم؟ 208 +پارتیشن‌بندی افقی و پارتیشن‌بندی عمودی 211 +۴ الگوریتم برتر Sharding 215 +الگوهای خواندن داده‌های replicaشده ۱ 217 +الگوهای خواندن داده‌های replica ۲ شده 219 +تعادل بین تأخیر زمانی و یکپارچگی 221 +۷ استراتژی ضروری برای مقیاس‌پذیری پایگاه‌داده 223 +مقیاس‌دهی ۱۰۰ برابری در Postgres 224 +بن‌بست (Deadlock) چیست؟ 226 +تفاوت‌های بین قفل‌های پایگاه‌داده 228 +قفل‌گذاری خوش‌بینانه 231 +بررسی کَش (Cache) 233 +کَش و memory پردازنده 233 +کاربرد‌های کش 234 +چه زمانی از کش نباید استفاده کرد؟ 238 +بررسی برخی مفاهیم در کَش: 239 +بهترین استراتژی‌های کَش کردن چیست؟ 240 +چرا Redis این‌قدر سریع است؟ 242 +‏ Memcached در مقابل Redis 243 +Redis چه کاربردهایی دارد؟ 244 +حمله گم‌شدن داده در Cache 246 +۸ استراتژی برتر برای خروج از کش 248 +تکامل معماری Redis 251 +وقتی سیستم کَش دچار مشکل می‌شود؟ 254 +مقالات Big data 256 +تکامل Big data 258 +بررسی Data Pipelines 259 +سرعت رشد بالا داده‌ها 261 +معماری‌های میکروسرویس 263 +monolith (تک‌هسته‌ای) 263 +Monolith ماژولار 264 +میکروسرویس‌ها (Microservices) 264 +میکروسرویس در مقابل معماری سرویس‌گرا (SOA) 269 +چرا به میکروسرویس نیاز ندارید؟ 270 +بررسی یک نمونه از معماری میکروسرویس 272 +بهترین روش‌های میکروسرویس 274 +چگونه میکروسرویس‌ها با یکدیگر همکاری و تعامل دارند؟ 275 +فناوری رایج برای میکروسرویس‌ها چیست؟ 277 +API gateway چه کاری انجام می‌دهد؟ 279 +۹ اصل اساسی قبل از ساختن میکروسرویس‌ها 283 +۹ جزء ضروری یک برنامه میکروسرویس 286 +بررسی Load Balancing 288 +چرا Nginx یک پروکسی «معکوس» نامیده می‌شود؟ 294 +الگوریتم‌های رایج توزیع بار (Load Balancing) 296 +کلید استفاده از توزیع‌کننده بار (Load Balancer) 298 +برآورد تقریبی در طراحی سیستم 300 +بررسی صف پیام 302 +صف پیام (Message Queue) 302 +۴ مورد از متداول‌ترین انواع صف 303 +Message Brokers 305 +Enterprise Service Bus (ESB) 307 +تحول معماری صف پیام: از IBM MQ به RabbitMQ تا Pulsar 308 +حداکثر یکبار، حداقل یکبار و دقیقاً یکبار 311 +۶ الگوی برتر پیام‌رسانی ابری 315 +چرا Kafka سریع است 318 +۵ مورد از کاربردهای برتر Kafka 320 +آیا Kafka می‌تواند پیام‌ها را گم کند؟ 322 +مقایسه Rabitmq و Kafka 325 +سرویس‌ها و معماری‌های ابری 326 +cloud native چیست؟ 327 +‏ IaaS/PaaS/SaaS چیست؟ 329 +خوشه‌بندی (Clustering) 330 +مفاهیم و تعاریف الگوهای طراحی cloud native 335 +الگوهای طراحی cloud native 340 +الگوی سفیر - پروکسی (Ambassador - Proxy) 340 +الگویBulkhead 340 +کش جانبی (Cache-aside): 341 +قطع‌کننده مدار (Circuit Breaker): 342 +تراکنش جبرانی (Compensating Transaction): 344 +مصرف‌کنندگان رقیب (Competing Consumers): 345 +تجمیع منابع محاسباتی (Compute Resource Consolidation): 345 +معماری رویدادمحور (Event-Driven Architecture - EDA) 346 +منبع رویداد (Event Sourcing): 348 +تفکیک مسئولیت فرمان و کوئری (CQRS): 351 +مخزن پیکربندی خارجی (External Configuration Store): 353 +هویت فدراتیو (Federated Identity): 354 +الگوی بک‌اند برای فرانت‌اند (Backend For Frontend - BFF) 354 +دروازه‌بان (Gatekeeper): 355 +Health Endpoint Monitoring: 355 +جدول ایندکس (Index Table): 356 +انتخاب رهبر (Leader Election): 357 +دید تحقق یافته (Materialized View): 357 +لوله‌ها و فیلترها (Pipes and Filters): 358 +صف اولویت‌دار (Priority Queue): 359 +ترازوی بارگذاری مبتنی بر صف (Queue-based Load Leveling): 360 +تکرار مجدد (Retry): 360 +ازپیکربندی زمان اجرا (Runtime Reconfiguration): 363 +سرپرست عامل زمان‌بندی (Scheduler Agent Supervisor): 363 +قطعه‌بندی (Sharding): 364 +میزبانی محتوای استاتیک (Static Content Hosting): 365 +محدودسازی (Throttling): 365 +Valet Key: 366 +بازیابی فاجعه (Disaster Recovery) 367 +کشف سرویس (Service Discovery) 369 +کاهش هزینه‌های ابری 372 +۹ الگوی برتر معماری برای جریان داده و ارتباط 374 +چگونه Event Sourcing را در سیستم‌ها ادغام کنیم؟ 377 +‏ SSO (ورود یکباره به چند سیستم) چیست؟ 379 +کدام ارائه‌دهنده ابری باید هنگام ساخت یک راهکار داده‌های بزرگ استفاده شود؟ 381 +‏ AWS Lambda پشت‌صحنه 383 +CI/CD 386 +بخش اول - SDLC با CI/CD 387 +بخش دوم - تفاوت بین CI و CD 387 +بخش سوم - pipeline CI/CD 388 +Netflix Tech Stack (CI/CD Pipeline) 389 +چرخه توسعه نرم‌افزار چابک 391 +چگونه پیکربندی‌ها را در یک سیستم مدیریت کنیم؟ 394 +مسیر کاری GitOps 396 +استراتژی‌های استقرار 398 +بررسی DevOps 400 +کتاب‌های DevOps 400 +DevOps در مقابل SRE در مقابل مهندسی پلتفرم 401 +Docker چگونه کار می‌کند؟ 403 +k8s یا Kubernetes چیست؟ 406 +چهار نوع برتر سرویس‌های Kubernetes در یک نمودار 408 +Docker در مقابل Kubernetes 410 +تفاوت‌ها بین مجازی‌سازی (VMware) و کانتینرسازی (Docker) چیست؟ 412 +DevSecOps چیست؟ 414 +بررسی GIT 416 +چطور دستورات گیت کار می‌کنند؟ 416 +گیت چگونه کار می‌کند؟ 417 +تفاوت Git merge و Git rebase 418 +بررسی دستورات ویژه در git 419 +یک خط تغییر، زمان clone را تا ۹۹ درصد کاهش داد! 422 +بررسی Linux 424 +سیستم فایل لینوکس به زبان ساده 424 +۱۸ دستور پرکاربرد لینوکس که باید بدانید 426 +فرایند بوت لینوکس به زبان ساده 428 +مجوزهای فایل‌های لینوکس 430 +ارتباط بین فرایندها IPC 432 +برگه تقلب تجزيه لاگ 434 +بررسی مباحث شبکه 436 +آشنایی با TCP/IP و مدل OSI 436 +تفاوت TCP و UDP 437 +IPv4 در مقابل IPv6، تفاوت‌ها چیست؟ 440 +۸ پروتکل محبوب در شبکه 444 +مسیریابی ترافیک اینترنت 446 +بررسی امنیت در وب 448 +چگونه HTTPS کار می‌کند؟ 448 +احراز هویت و دسترسی امن با OAuth 2.0 451 +۴ روش برتر برای مکانیزم‌های احراز هویت 453 +• کلیدهای SSH: از کلیدهای رمزنگاری برای دسترسی امن به سیستم‌های remote و سرورها استفاده می‌شود. 453 +رمزگذاری در مقابل رمزنگاری در مقابل توکن‌سازی 454 +Session، کوکی، JWT، توکن، SSO و OAuth 2.0 – این‌ها چه هستند؟ 456 +ذخیره‌سازی رمزها 458 +توکن امن وب جیسون (JWT) به زبان ساده 460 +تأیید دومرحله‌ای Google Authenticator چطور کار می‌کند؟ 462 +۶ مورد از مهم‌ترین کاربردهای فایروال 465 +هر آنچه در مورد Cross-Site Scripting (XSS) نیاز دارید بدانید 467 +الگوریتم‌های کاربردی در سیستم‌های توزیع‌شده 469 +الگوریتم‌هایی مهم در طراحی سیستم 469 +Quadtree 470 +چگونه رستوران‌های نزدیک را به کمک Geohash پیدا می‌کنیم؟ 473 +10 الگوریتم گراف که باید بدانید 476 +بررسی طراحی سیستم‌ها در دنیای واقعی 480 +چهار شگفت‌انگیز طراحی سیستم چه چیزهایی هستند؟ 480 +چگونه یک وب‌سایت را برای پشتیبانی از میلیون‌ها کاربر مقیاس‌پذیر کنیم؟ 482 +راز موفقیت آمازون، نتفلیکس و اوبر چیست؟ 486 +طراحی Google Docs 488 +تکنولوژی مورداستفاده‌ی نتفلیکس 490 +معماری توییتر ۲۰۲۲ 492 +معماری توییتر در ۲۰۱۳ 493 +تکامل غیرمعمول معماری API نتفلیکس 495 +نکته مصاحبه طراحی سیستم 496 +تحول معماری میکروسرویس Airbnb طی ۱۵ سال گذشته 498 +Monorepo در مقابل Microrepo 500 +چگونه وب‌سایت Stack Overflow را طراحی می‌کنید؟ 503 +چرا مانیتورینگ ویدئوی آمازون از Serverless به Monolithic تغییر یافت؟ 505 +چگونه Disney Hotstar ۵ میلیارد ایموجی را در طول یک تورنمنت ثبت می‌کند؟ 508 +چگونه Discord تریلیون‌ها پیام را ذخیره می‌کند. 510 +چگونه پخش زنده ویدئویی در یوتیوب، TikTok live یا Twitch کار می‌کند؟ 512 +چگونه یک سیستم به طور خودکار باگ‌ها را برای ما شناسایی و رفع کند؟ 515 +چگونه با اسکن‌کردن کد QR از کیف پول دیجیتال پرداخت کنیم؟ 517 +سؤال مصاحبه: طراحی Gmail 519 +مسیر دریافت ایمیل 520 +مسیر ارسال ایمیل 522 +سؤال مصاحبه: طراحی Google Maps 524 +رِندر کردن نقشه Google Maps 526 +موتور کدنویسی هوش مصنوعی 528 +چگونه سیستم‌هایی شبیه به ChatGPT کار می‌کنند؟ 529 +مدیریت یک خرابی گسترده 532 +چگونه شناسه‌های منحصربه‌فرد تولید کنید؟ 533 +چگونه از crawl آدرس‌های تکراری در ابعاد گوگل جلوگیری کنیم؟ 535 +نحوه ارسال نوتیفیکیشن در slack 537 +چگونه آمازون نرم‌افزارهای خود را می‌سازد و اداره می‌کند؟ 538 +بررسی طراحی سیستم‌های مالی و بانکی 540 +مبادله خارجی در پرداخت 540 +مطابقت سفارش‌های خریدوفروش 542 +طراحی بورس اوراق بهادار 544 +طراحی یک سیستم پرداخت 546 +طراحی یک سیستم فروش/حراج 548 +چگونه یک بورس اوراق بهادار مدرن به تأخیرهای میکروثانیه دست می‌یابد؟ 550 +شبکه پرداخت SWIFT 551 +فرایند جابه‌جایی پول در نرم‌افزارهای بانکی 553 +تطبیق و سازگاری در پرداخت بانکی ۱ 556 +بررسی پایگاه‌داده مناسب برای سرور جمع‌آوری متریک‌ها 558 +تطبیق و سازگاری در پرداخت بانکی ۲ 560 +جلوگیری از شارژ شدن دوباره 562 +امنیت در پرداخت بانکی 564 +سایر کتاب‌ها 565 +