منطق ایجنت‌ها › M8 — ساختن، خودکارکردن، تحویل‌دادن
۸.۴ فرّار تدریسی ~۴۵ دقیقه

🌐 داده گرفتن از اینترنت

قبل از این فصل: فصل ۷.۵

در یک نگاه

۸.۴.۱

API در عمل

API یعنی دری که یک سرویس عمداً برای برنامه‌ها باز گذاشته. به‌جای اینکه صفحه‌ی وب را بخوانی، داده را تمیز و ساختاریافته می‌گیری.

مسیرِ داده از بیرون تا گزارش، تقریباً همیشه این پنج مرحله است:

مسیر داده از بیرون تا گزارش داده از منبع بیرونی گرفته می‌شود، ذخیره می‌شود، تمیز و پردازش می‌شود، و به گزارش تبدیل می‌شود. مرحله‌ی ذخیره همان جایی است که اغلب حذف می‌شود و نباید. منبع بیرونی API یا صفحه ذخیره‌ی خام همان‌طور که آمد تمیزکاری و محاسبه گزارش به مقصد این مرحله را حذف نکن اگر خام را نگه داری، وقتی تمیزکاری غلط بود لازم نیست دوباره بگیری و می‌توانی بفهمی خطا از منبع بود یا از کارِ خودت
پنج مرحله، و مرحله‌ی دوم همانی است که همه حذفش می‌کنند — تا روزی که لازمش شوند.

سه چیزی که در کار با API عملاً به دردت می‌خورند:

به‌خاطر بسپار داده‌ی خام را همان‌طور که آمد ذخیره کن، قبل از هر تمیزکاری. این ارزان‌ترین بیمه‌ی این فصل است: اگر منطقِ تمیزکاری‌ات غلط از آب دربیاید، داده را از دست نداده‌ای — و مهم‌تر، می‌توانی ثابت کنی خطا از منبع بوده یا از کارِ خودت.

۸.۴.۲

scraping و مرزهایش (فنی و اخلاقی)

scraping — که اسکرپینگ خوانده می‌شود — یعنی خواندنِ خودِ صفحه‌ی وب و بیرون‌کشیدنِ داده از دلِ آن، وقتی API وجود ندارد.

و اول مرزِ فنی، چون همیشه شکننده است:

و بعد مرزِ اخلاقی و حقوقی، که جدی‌تر است و کم‌تر گفته می‌شود:

۸.۴.۳

دیتابیس در یک نگاه

وقتی داده‌ات از چند فایل بیشتر شد، فایل جواب نمی‌دهد. دیتابیس جایی است که داده‌ی زیاد را نگه می‌داری و می‌توانی سریع در آن بگردی.

برای کارِ ما فقط سه چیز لازم است:

و کِی از فایل به دیتابیس برو؟ سه علامت: داده از چند هزار ردیف گذشت · مکرراً جست‌وجو می‌کنی · یا داده مدام اضافه می‌شود و نمی‌خواهی هر بار کل فایل را بازنویسی کنی. تا وقتی هیچ‌کدام نیست، CSV کافی است — و مزیتِ بزرگش این است که با چشم قابل دیدن است.

۸.۴.۴

ساخت خلاصه‌ی روزانه

حالا سرِ هم کردنش. یک خلاصه‌ی روزانه چهار تصمیم دارد:

  1. چه داده‌ای؟ — کم‌ترین چیزی که سؤالت را جواب بدهد.
  2. چه چیزی «قابل توجه» است؟ این مهم‌ترین تصمیم است. خلاصه‌ای که هر روز همه‌چیز را می‌گوید، بعد از یک هفته خوانده نمی‌شود. خلاصه باید بگوید چه چیزی فرق کرده، نه چه چیزی هست.
  3. چه وقت؟ — و مهم‌تر: قبل از اینکه لازمش داشته باشی.
  4. کجا برود؟ — فصل بعد.

و یک قاعده‌ی طراحی که خلاصه را زنده نگه می‌دارد: اگر خبری نیست، بگو «خبری نیست» — ولی چیزی بفرست. پیامِ کوتاهِ «امروز هیچ تغییر قابل توجهی نبود» دو کار می‌کند: هم خیالت را راحت می‌کند، و هم ثابت می‌کند سیستم هنوز کار می‌کند. سکوت، مبهم است — نمی‌دانی خبری نبود یا سیستم مرده (فصل ۸.۷.۴).

۸.۴.۵

وقتی منبع عوض می‌شود

و حالا حقیقتی که باید از اول بپذیری: هر چیزی که به دنیای بیرون وصل است، روزی می‌شکند. نه چون بد ساخته‌ای — چون منبع مالِ تو نیست.

چهار شکلِ شکستن، و علامتشان:

و دفاع در برابر آن چهارمی، یک چیز است: یک بررسیِ معقول‌بودن. اگر عدد امروز بیش از حدی با دیروز فرق دارد، هشدار بده به‌جای اینکه گزارش بدهی. این ده خط کار است و همان چیزی است که بین «اتوماسیونِ قابل اعتماد» و «اتوماسیونی که یک روز دروغ می‌گوید» فرق می‌گذارد.

نکته‌ی طلایی وقتی چیزی از بیرون می‌گیری، تاریخِ دریافت را کنار داده ذخیره کن. سه ماه بعد که عددی مشکوک به نظر می‌رسد، این تنها راهی است که می‌فهمی داده مالِ کِی بوده و آیا از قبلِ تغییرِ منبع است یا بعدش. بدون آن، داده‌ی خام هم کمکی نمی‌کند.

تمرین (ساختنی + توضیحی)

یک دریافت ساده بساز — چیزی عمومی و بی‌دردسر (نرخ ارز، آب و هوا، یک فید خبری). بعد:

  1. داده‌ی خام را ذخیره کن، با تاریخ دریافت.
  2. یک خلاصه‌ی سه‌خطی از آن بساز که بگوید چه چیزی فرق کرده.
  3. و بنویس: اگر منبع عوض شود، دقیقاً چه چیزی می‌شکند؟ برای هر چهار حالت بخش ۸.۴.۵ جواب بده.
پاسخنامه — و اینکه چرا حالت چهارم تنها حالتی است که باید برایش کار کنی

برای یک دریافتِ نرخ ارز:

  • ساختار عوض شود (نام فیلد rate به value): برنامه خطا می‌دهد یا مقدار خالی برمی‌گرداند. قابل تشخیص.
  • آدرس عوض شود: خطای روشن. قابل تشخیص.
  • کلید منقضی شود: خطای اجازه. قابل تشخیص.
  • واحد از ریال به تومان برود: هیچ خطایی نیست. عدد می‌آید، جدول پر می‌شود، گزارش ساخته می‌شود — و ده برابر غلط است.

و نکته این است: سه حالت اول خودشان را اعلام می‌کنند، پس لازم نیست برایشان کار خاصی بکنی — فقط باید خطاها را ببینی (فصل ۸.۷.۳). تنها حالتی که باید عمداً برایش دفاع بسازی، چهارمی است.

و آن دفاع، همان بررسیِ معقول‌بودن است: «اگر نرخ امروز بیش از ۲۰٪ با دیروز فرق دارد، به‌جای گزارش، هشدار بده.» ده خط کار، در برابر یک گزارشِ بی‌صدای غلط که ممکن است هفته‌ها ادامه پیدا کند.

ذخیره شد