Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
DannyRavi committed Jul 28, 2024
0 parents commit 89c13c2
Showing 1 changed file with 313 additions and 0 deletions.
313 changes: 313 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 89c13c2

Please sign in to comment.