چیت‌شیت

توضیح‌دهنده‌های دیاگرام، نمودار و زیرساخت

Diagram, Chart and Infrastructure Explainers

چهار پروژه‌ی توضیح‌دهنده‌ی محلی. آن‌ها را اجرا کنید، به آن‌ها ورودی بدهید، خروجی‌هایشان را بخوانید و خطاهایشان را رفع کنید.

  • ۱۲ بخش
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. چهار پروژه در کنار هم
  2. اجرای مرجع
  3. توضیح یک پلن واقعی Terraform
  4. پایپ‌لاین توضیح‌دهنده‌ی پلن
  5. توالی‌های اکشن
  6. Diagram companion
  7. قواعد نمودار
  8. قواعد مالکیت
  9. پیش‌فرض‌ها و محدودیت‌ها
  10. پیام‌های خطا و راهکارها
  11. نمونه‌های حل‌شده
  12. نکات

چهار پروژه در کنار هم

مقایسه
فاکتورChart Storyboard BuilderDiagram Reading CompanionInfrastructure Plan ExplainerService Ownership Navigator
زبانPython 3.10+Node 22.18 یا جدیدترPython 3.10+Node 22.18 یا جدیدتر
ورودیcsv، roles، periods، chartssvg، graphفایل JSON پلن Terraformcatalog، path
خروجی‌هاchart-N.svg، chart-specs.json، storyboard.htmlgraph.json، analysis.json، report.htmlchange-brief.md، resource-impact.json، review.htmlhandoff.json، catalog.json، report.html
فایل بازنگرینداردآرگومان سوم، ترتیب بازنگری‌شدهنداردندارد
هرگز انجام نمی‌دهداستنتاج تاریخ‌ها یا روابط علیتیخواندن معنا از هندسه‌ی SVGاعمال یک پلنارسال اعلان‌ها

اجرای مرجع

دستورها
دستورکاری که انجام می‌دهد
python3 cli.py samples/input.json --output demo-outputنمونه‌ی نمودار یا زیرساخت
node cli.ts sample.json outputنمونه‌ی دیاگرام یا مالکیت
node cli.ts <input.json> <dir> <review.json>دیاگرام با ترتیب بازنگری‌شده‌ی شما
node cli.ts --helpخط آرگومان را چاپ می‌کند
python3 scripts/project_test.py <project> --all --solution --strictمرجع را ارزیابی و نمره‌دهی می‌کند
python3 scripts/project_test.py <project> --init <dir>یک استارتر می‌سازد

توضیح یک پلن واقعی Terraform

کد
bash
terraform show -json saved.plan > input.json  # پلن ذخیره‌شده به‌صورت JSON
python3 cli.py input.json --output review     # هرگز پلن را اعمال نمی‌کند
# review/change-brief.md آدرس‌ها با انکر‌های محلی
# review/resource-impact.json یال‌های گراف و منابع
# review/review.html تغییرات، یال‌ها، موارد حل‌نشده

پایپ‌لاین توضیح‌دهنده‌ی پلن

گام‌به‌گام
  1. load_planفقط نگارش اصلی 1 را می‌پذیرد. اکشن‌ها و مقادیر ماسک‌شده‌ی before و after را نگه می‌دارد.
  2. load_planمقادیر حساس را به‌صورت [sensitive] و مقادیر محاسبه‌شده را به‌صورت [unknown] نمایش می‌دهد.
  3. classifyهر توالی دقیق اکشن‌ها را به یک نام اکشن نگاشت می‌کند.
  4. impact_graphارجاعات و depends_on را بر اساس طولانی‌ترین پیشوند آدرس پیوند می‌دهد.
  5. impact_graphمتغیرهای var، local، path، count، each، terraform و self را نادیده می‌گیرد.
  6. explainخروجی Markdown را با یک انکر به ازای هر آدرس و وابستگی‌های اعلام‌شده می‌نویسد.

توالی‌های اکشن

دستورها
دستورکاری که انجام می‌دهد
["create"]create
["update"]update، درجا
["delete", "create"]replace
["create", "delete"]replace
["delete"]delete
`["read"]`, `["no-op"]`, `["forget"]`read، بدون عملیات (no-op)، صرف‌نظر (forget)
any other listunsupported action sequence

Diagram companion

معماری
svg، graphgraphordersaverendersample.jsonsvg، graphloadDiagram()شناسه‌های گره باید شناسه‌های SVG باشندanalyzeGraph()ترتیب، branchها، چرخه‌هاreviewGraph()ترتیب، بازنگری‌شدهgraph.jsonمانیفست بازنگری‌شدهreport.htmlمرور تعاملی با کیبورد

قواعد نمودار

مفهوم‌ها
roles
مقادیر group، value و unit نام ستون‌های CSV و یک واحد نمایش را تعیین می‌کنند.
کاهنده‌ها
شامل sum، mean و count. شمارش از مقادیر غیرخالی استفاده می‌کند، واحد records.
گرامر
bar برای دسته‌بندی‌ها، line برای دوره‌های مرتب‌شده.
مقدار خالی
مقدار مفقود است، نه صفر. خط در آن نقطه قطع می‌شود.
periods
ترتیب را مشخص می‌کند. دوره‌ی غایب به‌صورت null رسم می‌شود.
محور
همیشه شامل صفر است.
حاشیه‌نویسی
نیازمند یک نقطه‌ی رسم‌شده است. متن، مقدار دقیق و واحد را دریافت می‌کند.

قواعد مالکیت

مفهوم‌ها
اولویت با آخرین تطابق
آخرین قانون تطبیق‌یافته، مالکان نهایی را تعیین می‌کند.
مهارشده (Anchored)
الگویی که با / شروع شود یا شامل / باشد از ریشه تطبیق داده می‌شود.
وایلدکاردها
کاراکتر * درون یک بخش می‌ماند، **/ چند پوشه را پوشش می‌دهد، ? یک کاراکتر است.
دایرکتوری
اسلش انتهایی /، پوشه و تمام محتویات زیر آن را تطبیق می‌دهد.
سرویس
طولانی‌ترین root سرویسی که مسیر را در بر می‌گیرد.
مالکان
فقط نام‌های @user یا @org/team.
لینک‌های ران‌بوک
لینک‌های محلی باید به یک فایل ران‌بوک ارائه‌شده اشاره کنند.

پیش‌فرض‌ها و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
reducersumبه ازای هر نمودار در charts
grammarbarیا line
schema_version1مشخصات نمودار و خلاصه‌ی پلن
SVG size500000حداکثر کاراکترها
Rule sourceCODEOWNERSنام در ردیف‌های شواهد
Output folderoutputآرگومان دوم CLIهای Node
Chart width640حداقل عرض SVG به پیکسل

پیام‌های خطا و راهکارها

عیب‌یابی
  • unsupported Terraform JSON format major

    علت
    فایل از نوع terraform show -json نیست
    راه‌حل
    پلن ذخیره‌شده را به‌صورت JSON اکسپورت کنید
  • periods omit data or duplicate a group

    علت
    یک گروه داده در periods وجود ندارد
    راه‌حل
    هر گروه را دقیقاً یک بار فهرست کنید
  • annotation needs a unique plotted point

    علت
    یادداشت روی یک گروه خالی یا نامشخص
    راه‌حل
    یک نقطه‌ی دارای مقدار را حاشیه‌نویسی کنید
  • Node missing from SVG or duplicated

    علت
    شناسه‌ی مانیفست فاقد id در SVG است
    راه‌حل
    ویژگی id را به المان SVG اضافه کنید
  • Unsupported SVG element

    علت
    تگ خارج از زیرمجموعه‌ی مجاز و امن است
    راه‌حل
    از اَشکال، متن، g، title و desc استفاده کنید
  • Review order must contain every node exactly once

    علت
    ترتیب قدیمی یا ناقص است
    راه‌حل
    هر شناسه‌ی گره را دقیقاً یک بار درج کنید
  • Earlier matching rules name different owners; last matching rule wins

    علت
    قوانین همپوشانی دارند
    راه‌حل
    بررسی کنید که قانون آخر درست باشد
  • Missing local runbook link

    علت
    ران‌بوک به فایلی ارجاع می‌دهد که ارائه نشده است
    راه‌حل
    فایل را به runbooks اضافه کنید

نمونه‌های حل‌شده

پرسش و پاسخ
W1 با sum چه مقداری رسم می‌کند؟
18. ردیف‌های آن شامل 8 و 10 است.
چه بر سر W2 و W3 می‌آید؟
W2 خالی و W3 غایب است. هر دو به‌صورت مفقود رسم می‌شوند.
چرا پایگاه داده از نوع replace است؟
اکشن‌های آن ابتدا delete و سپس create هستند.
خلاصه برای رمز عبور چه چیزی را نشان می‌دهد؟
[sensitive]، حتی درون آرایه‌ها.
مالک services/images/cache/store.ts کیست؟
طبق آخرین قانون، @fictional/cache.
دیاگرام در کجا branch می‌شود؟
در check، به سمت share و clarify.

نکات

نکته‌ها
  • یال‌های گراف وابستگی‌های اعلام‌شده هستند، نه ترتیب اجرای پرووایدر.
  • ابزار پلن زمان خرابی، هزینه یا ترتیب کامل اجرا را پیش‌بینی نمی‌کند.
  • یک ترتیب خوانش صرفاً پیشنهادی برای بازنگری است، نه اثبات روش آموزش.
  • فایل‌های SVG نمودار شامل title و desc هستند و هیچ JavaScriptی ندارند.
  • فرمت مالکیت یک زیرمجموعه‌ی محلی است، نه فرمت کامل CODEOWNERS.