Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
189 lines (181 loc) · 23.8 KB
/
Copy pathindex.html
File metadata and controls
189 lines (181 loc) · 23.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<!DOCTYPE html>
<html lang="en" dir="ltr" data-title-fa="یادگیری DDIA فارسی و انگلیسی — خلاصهٔ فصلها با نمودار تعاملی" data-title-en="DDIA Study Guide — Persian & English, Interactive Diagrams">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DDIA Study Guide — Persian & English, Interactive Diagrams</title>
<meta name="description" content="Free study guide to Designing Data-Intensive Applications (DDIA, 2nd ed.) in Persian and English: 14 chapter summaries, 100+ interactive diagrams, exercises and an AI-platform capstone. · راهنمای مطالعهٔ DDIA به فارسی و انگلیسی با نمودار تعاملی.">
<meta name="google-site-verification" content="F3xt4nY3fj_GuCx53DMi4GjWIy6rTzXrNwHIbdIiNO4">
<link rel="canonical" href="https://ddia-study-lab.vercel.app/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="DDIA Study Lab">
<meta property="og:title" content="Learn DDIA with 100+ interactive diagrams · یادگیری DDIA با نمودارهای تعاملی">
<meta property="og:description" content="14 chapters of Designing Data-Intensive Applications (2nd ed.) in Persian and English, with step-by-step diagram narration, exercises and an AI-platform capstone.">
<meta property="og:url" content="https://ddia-study-lab.vercel.app/">
<meta property="og:image" content="https://ddia-study-lab.vercel.app/assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://ddia-study-lab.vercel.app/assets/og-image.png">
<meta property="og:locale" content="en_US"><meta property="og:locale:alternate" content="fa_IR">
<meta name="twitter:title" content="Learn DDIA with 100+ interactive diagrams · یادگیری DDIA با نمودارهای تعاملی">
<script type="application/ld+json">{"@context": "https://schema.org", "@graph": [{"@type": "WebSite", "name": "DDIA Study Lab", "alternateName": ["Own the Stack", "مطالعهٔ DDIA"], "url": "https://ddia-study-lab.vercel.app/", "inLanguage": ["en", "fa"]}, {"@type": "Course", "name": "DDIA Study Lab: Designing Data-Intensive Applications in Persian and English", "description": "Free study guide to Designing Data-Intensive Applications (DDIA, 2nd ed.) in Persian and English: 14 chapter summaries, 100+ interactive diagrams, exercises and an AI-platform capstone. · راهنمای مطالعهٔ DDIA به فارسی و انگلیسی با نمودار تعاملی.", "url": "https://ddia-study-lab.vercel.app/", "inLanguage": ["en", "fa"], "isAccessibleForFree": true, "educationalLevel": "Intermediate", "teaches": "Distributed systems and data-intensive application design", "about": {"@type": "Book", "name": "Designing Data-Intensive Applications", "author": [{"@type": "Person", "name": "Martin Kleppmann"}, {"@type": "Person", "name": "Chris Riccomini"}]}, "provider": {"@type": "Person", "name": "Hurdad Ashouri", "url": "https://ashouri.dev", "sameAs": ["https://github.com/Hurdadd"]}, "hasPart": [{"@type": "LearningResource", "name": "DDIA Chapter 1: Trade-Offs in Data Systems Architecture", "url": "https://ddia-study-lab.vercel.app/ch1-tradeoffs/"}, {"@type": "LearningResource", "name": "DDIA Chapter 2: Defining Nonfunctional Requirements", "url": "https://ddia-study-lab.vercel.app/ch2-nonfunctional/"}, {"@type": "LearningResource", "name": "DDIA Chapter 3: Data Models and Query Languages", "url": "https://ddia-study-lab.vercel.app/ch3-data-models/"}, {"@type": "LearningResource", "name": "DDIA Chapter 4: Storage and Retrieval", "url": "https://ddia-study-lab.vercel.app/ch4-storage-retrieval/"}, {"@type": "LearningResource", "name": "DDIA Chapter 5: Encoding and Evolution", "url": "https://ddia-study-lab.vercel.app/ch5-encoding-evolution/"}, {"@type": "LearningResource", "name": "DDIA Chapter 6: Replication", "url": "https://ddia-study-lab.vercel.app/ch6-replication/"}, {"@type": "LearningResource", "name": "DDIA Chapter 7: Sharding", "url": "https://ddia-study-lab.vercel.app/ch7-sharding/"}, {"@type": "LearningResource", "name": "DDIA Chapter 8: Transactions", "url": "https://ddia-study-lab.vercel.app/ch8-transactions/"}, {"@type": "LearningResource", "name": "DDIA Chapter 9: The Trouble with Distributed Systems", "url": "https://ddia-study-lab.vercel.app/ch9-distributed-trouble/"}, {"@type": "LearningResource", "name": "DDIA Chapter 10: Consistency and Consensus", "url": "https://ddia-study-lab.vercel.app/ch10-consensus/"}, {"@type": "LearningResource", "name": "DDIA Chapter 11: Batch Processing", "url": "https://ddia-study-lab.vercel.app/ch11-batch-processing/"}, {"@type": "LearningResource", "name": "DDIA Chapter 12: Stream Processing", "url": "https://ddia-study-lab.vercel.app/ch12-stream-processing/"}, {"@type": "LearningResource", "name": "DDIA Chapter 13: A Philosophy of Streaming Systems", "url": "https://ddia-study-lab.vercel.app/ch13-streaming-philosophy/"}, {"@type": "LearningResource", "name": "DDIA Chapter 14: Doing the Right Thing", "url": "https://ddia-study-lab.vercel.app/ch14-doing-right/"}]}]}</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700;800;900&family=Vazirmatn:wght@300;400;500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/ddia.css">
<link rel="stylesheet" href="assets/final-project.css">
</head>
<body>
<header class="topbar">
<a class="wordmark" href="index.html">DDIA<em>·</em><span class="fa">مطالعه</span><span class="en">STUDY</span></a>
<nav class="topnav">
<a href="#chapters"><span class="fa">فصلها</span><span class="en">Chapters</span></a>
<a href="#final-project"><span class="fa">پروژهٔ نهایی</span><span class="en">Final project</span></a>
<a href="#how"><span class="fa">روش مطالعه</span><span class="en">How to read</span></a>
<a href="exercise-audit.html"><span class="fa">ممیزی تمرینها</span><span class="en">Exercise audit</span></a><a class="" href="https://github.com/Hurdadd/ddia-study-lab" rel="noopener"><span class="fa">⭐ ستاره در GitHub</span><span class="en">⭐ Star on GitHub</span></a></nav>
<button class="langbtn" data-lang-toggle><span class="fa">EN</span><span class="en">فارسی</span></button>
<button class="iconbtn" data-theme-toggle aria-label="theme">
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></svg>
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg>
</button>
</header>
<section class="hero">
<div class="blobs" aria-hidden="true"><i class="b1"></i><i class="b2"></i><i class="b3"></i></div>
<p class="crumb">Designing Data-Intensive Applications <span class="fa">· ویرایش دوم</span><span class="en">· 2nd Edition</span></p>
<h1 class="reveal"><span class="fa">سیستمهای دادهمحور را فصلبهفصل بشکاف</span><span class="en">Take data-intensive systems apart, chapter by chapter</span></h1>
<p class="lede reveal">
<span class="fa">۱۴ فصل با توضیحِ سادهٔ فارسی و مثالهای ملموس کنارِ موضوعها؛ همراه با نمودارهای تعاملی، روایتِ گامبهگام و پرسشهای مرور.</span>
<span class="en">Each chapter distilled to its essence — with interactive diagrams, a step-by-step teacher narration and an interview pack. In Persian and English.</span>
</p>
<div class="actions reveal">
<a class="btn" href="ch1-tradeoffs/index.html"><span class="fa">شروع از فصل ۱</span><span class="en">Start with Chapter 1</span></a>
<a class="link-arrow" href="#chapters"><span class="fa">دیدن نقشه راه ←</span><span class="en">See the roadmap →</span></a>
<a class="link-arrow" href="https://github.com/Hurdadd/ddia-study-lab" rel="noopener"><span class="fa">⭐ ستاره در GitHub</span><span class="en">⭐ Star on GitHub</span></a>
</div>
<div class="meta-row reveal">
<span><b><span class="fa">۱۴</span><span class="en">14</span></b> <span class="fa">فصل</span><span class="en">chapters</span></span><span class="dot">·</span>
<span><b><span class="fa">۱۱۳</span><span class="en">113</span></b> <span class="fa">نمودار تعاملی</span><span class="en">interactive diagrams</span></span><span class="dot">·</span>
<span><span class="fa">فارسی / English</span><span class="en">Persian / English</span></span>
</div>
</section>
<div class="chapters" id="chapters">
<div class="chapters-head">
<h2><span class="fa">نقشه راه</span><span class="en">The roadmap</span></h2>
<span><span class="fa">از انتخابِ معماری تا مسئولیتِ استفاده از داده</span><span class="en">From trade-offs to doing the right thing</span></span>
</div>
<a class="chrow reveal" href="ch1-tradeoffs/index.html">
<span class="chnum">01</span>
<span><h3><span class="fa">انتخابها و هزینههای معماری سیستمهای داده</span><span class="en">Trade-offs in data systems architecture</span></h3>
<p><span class="fa">چرا ثبتِ خرید، جستوجوی کالا و گزارشِ فروش نیازهای متفاوتی دارند؟ انتخابِ ابزار را با همین مثال دنبال میکنیم.</span><span class="en">Operational vs analytical, system of record vs derived data, cloud, and distributed vs single-machine.</span></p></span>
<span class="chmeta"><b><span class="fa">۸</span><span class="en">8</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch2-nonfunctional/index.html">
<span class="chnum">02</span>
<span><h3><span class="fa">نیازمندیهای غیرعملکردی</span><span class="en">Nonfunctional requirements</span></h3>
<p><span class="fa">با مثالِ درخواستِ سفر میبینیم سرعتِ پاسخ، تحملِ خرابی و رشدِ تعداد کاربران چگونه سنجیده میشوند.</span><span class="en">Performance and percentiles, reliability, scalability and maintainability.</span></p></span>
<span class="chmeta"><b><span class="fa">۶</span><span class="en">6</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch3-data-models/index.html">
<span class="chnum">03</span>
<span><h3><span class="fa">مدلهای داده و زبانهای کوئری</span><span class="en">Data models and query languages</span></h3>
<p><span class="fa">رزومه، سفارش و رابطهٔ آشنایی را با جدول، سند، گراف و تاریخچهٔ رویدادها مدل میکنیم.</span><span class="en">Relational vs document, normalization, graphs and Cypher, event sourcing and CQRS.</span></p></span>
<span class="chmeta"><b><span class="fa">۸</span><span class="en">8</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch4-storage-retrieval/index.html">
<span class="chnum">04</span>
<span><h3><span class="fa">ذخیرهسازی و بازیابی</span><span class="en">Storage and retrieval</span></h3>
<p><span class="fa">میبینیم شمارهٔ یک سفارش چگونه سریع پیدا میشود و جمعِ میلیونها فروش چگونه محاسبه میشود.</span><span class="en">Indexes, LSM-trees and B-trees, columnar storage, text and vector indexes.</span></p></span>
<span class="chmeta"><b><span class="fa">۶</span><span class="en">6</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch5-encoding-evolution/index.html">
<span class="chnum">05</span>
<span><h3><span class="fa">کدگذاری و تکامل</span><span class="en">Encoding and evolution</span></h3>
<p><span class="fa">وقتی نسخهٔ جدیدِ اپ فیلد تازهای میفرستد، نسخههای قدیمی و دادههای قبلی چگونه همچنان کار میکنند؟</span><span class="en">Backward/forward compatibility, JSON, Protobuf and Avro, modes of dataflow.</span></p></span>
<span class="chmeta"><b><span class="fa">۶</span><span class="en">6</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch6-replication/index.html">
<span class="chnum">06</span>
<span><h3><span class="fa">تکثیر</span><span class="en">Replication</span></h3>
<p><span class="fa">با مثالِ ویرایشِ پروفایل و یادداشتِ آفلاین میبینیم نسخههای داده چگونه همگام میشوند و تعارض از کجا میآید.</span><span class="en">Single-leader, multi-leader and leaderless — from lag to quorum conflict resolution.</span></p></span>
<span class="chmeta"><b><span class="fa">۶</span><span class="en">6</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch7-sharding/index.html">
<span class="chnum">07</span>
<span><h3><span class="fa">تقسیم داده (شاردینگ)</span><span class="en">Sharding</span></h3>
<p><span class="fa">سفارشِ مشتریان را میان چند سرور تقسیم میکنیم و اثرِ کلیدِ تقسیم، بارِ نامتوازن و جابهجایی را میبینیم.</span><span class="en">Key-range vs hash, rebalancing, request routing and secondary indexes.</span></p></span>
<span class="chmeta"><b><span class="fa">۶</span><span class="en">6</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch8-transactions/index.html">
<span class="chnum">08</span>
<span><h3><span class="fa">تراکنشها</span><span class="en">Transactions</span></h3>
<p><span class="fa">دو نفر آخرین صندلی را میخواهند؛ تراکنش و کنترلِ همزمانی چگونه جلوی رزروِ ناسازگار را میگیرند؟</span><span class="en">ACID in practice, isolation levels up to serializability, anomalies and 2PC.</span></p></span>
<span class="chmeta"><b><span class="fa">۸</span><span class="en">8</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch9-distributed-trouble/index.html">
<span class="chnum">09</span>
<span><h3><span class="fa">دردسرهای سیستمهای توزیعشده</span><span class="en">The trouble with distributed systems</span></h3>
<p><span class="fa">درخواست فرستاده شده ولی پاسخی نرسیده؛ با مثالِ مرسوله، نتیجهٔ نامشخص، بازتلاش و مجوزِ قدیمی را بررسی میکنیم.</span><span class="en">Timeout ambiguity, skewed clocks, zombies with fencing tokens, the system model.</span></p></span>
<span class="chmeta"><b><span class="fa">۹</span><span class="en">9</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch10-consensus/index.html">
<span class="chnum">10</span>
<span><h3><span class="fa">سازگاری و اجماع</span><span class="en">Consistency and consensus</span></h3>
<p><span class="fa">پس از خرابیِ سرورِ اصلی، گرهها چگونه بر رهبرِ تازه توافق میکنند و تصمیمهای قبلی را حفظ میکنند؟</span><span class="en">Linearizability, logical clocks, consensus over a shared log, Raft.</span></p></span>
<span class="chmeta"><b><span class="fa">۱۰</span><span class="en">10</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch11-batch-processing/index.html">
<span class="chnum">11</span>
<span><h3><span class="fa">پردازش دستهای</span><span class="en">Batch processing</span></h3>
<p><span class="fa">گزارشِ شبانهٔ فروش را از فایلِ خام تا تقسیمِ کار، بازیابیِ خطا و انتشارِ خروجیِ کامل دنبال میکنیم.</span><span class="en">From Unix pipelines to MapReduce and dataflow engines with shuffle and sort-merge joins.</span></p></span>
<span class="chmeta"><b><span class="fa">۱۲</span><span class="en">12</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch12-stream-processing/index.html">
<span class="chnum">12</span>
<span><h3><span class="fa">پردازش جریانی</span><span class="en">Stream processing</span></h3>
<p><span class="fa">سفارشها زنده میرسند؛ پیامِ تکراری یا دیررس چگونه باید در شمارش و گزارش مدیریت شود؟</span><span class="en">Log-based brokers, dual writes and CDC, windows, event time and exactly-once.</span></p></span>
<span class="chmeta"><b><span class="fa">۱۰</span><span class="en">10</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch13-streaming-philosophy/index.html">
<span class="chnum">13</span>
<span><h3><span class="fa">فلسفه سیستمهای جریانی</span><span class="en">A philosophy of streaming systems</span></h3>
<p><span class="fa">تغییرِ قیمت از مرجع به کش، جستوجو و گزارش میرسد؛ چطور این مسیر را قابلبازسازی و قابلاعتماد نگه داریم؟</span><span class="en">Derived data, causal ordering, correctness without distributed transactions, the coordination sweet spot.</span></p></span>
<span class="chmeta"><b><span class="fa">۱۱</span><span class="en">11</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
<a class="chrow reveal" href="ch14-doing-right/index.html">
<span class="chnum">14</span>
<span><h3><span class="fa">کار درست را انجام بده</span><span class="en">Doing the right thing</span></h3>
<p><span class="fa">با مثالِ استخدام و مسیریابی، اثرِ سوگیری، ردیابی، رضایت و جمعآوریِ دادهٔ اضافی را بررسی میکنیم.</span><span class="en">Predictive analytics and the algorithmic prison, bias and proxies, surveillance and consent, data as power.</span></p></span>
<span class="chmeta"><b><span class="fa">۱۰</span><span class="en">10</span></b> <span class="fa">نمودار</span><span class="en">diagrams</span></span>
</a>
</div>
<section class="capstone-feature" id="final-project"><div class="capstone-copy"><h2 class="capstone-slogan" lang="en" dir="ltr">Own the Stack.<br>Make Your Own<br><em>AI Platform.</em></h2><p><span class="fa"><strong>پروژهٔ نهایی DDIA.</strong> ۱۴ فصل را به یک پلتفرم AI وصل کن: دادهٔ زنده، agent پایدار، بررسی رخداد، ارزیابی نسخه و مدیریت مدل. از معماری و UML تا آزمون خرابی و مدارک رزومه.</span><span class="en"><strong>The DDIA final project.</strong> Turn 14 chapters into one AI platform: live data, durable agents, incident investigation, release evaluation, and model management. From architecture and UML to failure tests and portfolio evidence.</span></p><a class="btn" href="final-project/index.html"><span class="fa">وارد پروژهٔ نهایی شو</span><span class="en">Enter the capstone</span></a></div><div class="capstone-outline"><p><span class="fa">یک پلتفرم. پنج قابلیت.</span><span class="en">One platform. Five capabilities.</span></p><ol><li lang="en" dir="ltr">Live Context</li><li lang="en" dir="ltr">Durable Agent Runtime</li><li lang="en" dir="ltr">AI Incident Investigator</li><li lang="en" dir="ltr">Evaluation & Release</li><li lang="en" dir="ltr">Model Gateway & Serving</li></ol><p class="small"><span class="fa">کارگاه مرحلهبهمرحله؛ نیازها، تخمینها، ADR و فلوِ متحرکِ پیشنهادی.</span><span class="en">A guided workshop: requirements, estimates, ADRs, and a proposed animated flow.</span></p></div></section>
<section class="how" id="how">
<h2 class="reveal"><span class="fa">در هر فصل چه میخوانی</span><span class="en">What each chapter gives you</span></h2>
<div class="step reveal">
<span class="stepnum">i.</span>
<div><h3><span class="fa">اصل مطلب، نه حاشیه</span><span class="en">The essence, not the digressions</span></h3>
<p><span class="fa">هر فصل به مهمترین مفاهیم و تریدآفهایش فشرده شده است.</span><span class="en">Each chapter is compressed to its key ideas and trade-offs.</span></p></div>
</div>
<div class="step reveal">
<span class="stepnum">ii.</span>
<div><h3><span class="fa">نمودار با روایت مدرس</span><span class="en">Diagrams with a teacher narration</span></h3>
<p><span class="fa">بعد از هر نمودار، شکل گامبهگام خوانده میشود؛ انگار مدرسی کنار تخته ایستاده است.</span><span class="en">After each diagram the figure is read aloud step by step, as if a teacher stood at the board.</span></p></div>
</div>
<div class="step reveal">
<span class="stepnum">iii.</span>
<div><h3><span class="fa">بسته مصاحبه و تمرین</span><span class="en">Interview pack and exercises</span></h3>
<p><span class="fa">جدول یکنگاه، سوالات پرتکرار، اشتباهات رایج، چکلیست پنجدقیقهای و ۴۹ تمرینِ بازبینیشده با سطح، اولویت و نسخهٔ مصاحبهای.</span><span class="en">An at-a-glance table, frequent questions, common mistakes, a five-minute checklist and 49 reviewed exercises with levels, priorities and interview briefs.</span></p><p><a href="exercise-audit.html"><span class="fa">ارزیابی ۲۰۲۶ و مسیر مطالعهٔ Senior / Staff</span><span class="en">2026 assessment and Senior / Staff study path</span></a></p></div>
</div>
</section>
<footer class="footer">
<div class="giant">DDIA<em>·</em>STUDY</div>
<p class="small">
<span class="fa">بر پایه «Designing Data-Intensive Applications, ویرایش ۲» · نمودارها با Archify · مناسب یادگیری و مصاحبه</span>
<span class="en">Based on “Designing Data-Intensive Applications, 2nd Edition” · Diagrams with Archify · Built for learning and interviews</span>
</p>
<p class="small"><a href="https://github.com/Hurdadd/ddia-study-lab" rel="noopener"><span class="fa">⭐ ستاره در GitHub</span><span class="en">⭐ Star on GitHub</span></a><span class="fa"> · پروژهٔ متنباز؛ اگر مفید بود، ستاره بده و برای دوستانت بفرست.</span><span class="en"> · Open source. If it helped, star the repo and share it.</span></p>
</footer>
<script src="assets/site.js"></script>
</body>
</html>