-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 89c13c2
Showing
1 changed file
with
313 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|