برنامه نویسی

ساخت یک برنامه برای جستجوی آرشیو APOD بر اساس رنگ 🪐

tl;dr، من آپاد-رنگ-جستجو را ساختم!

خبر استقرار موفقیت آمیز تلسکوپ فضایی جیمز وب (JWST) در مدار به من یادآوری کرد که چقدر فضای بیرونی جذاب است. هابل قبلاً به ما نشان داده است که جهان مرئی چقدر تماشایی و غیرقابل درک است، و اکنون با JWST مانند زمین است که عینک بسیار بهتری دریافت کرده است!

اگر دنبال نکرده‌اید، در اینجا مقایسه قانع‌کننده‌ای از سحابی مشابهی که توسط هر دو تلسکوپ در اینستاگرام ناسا ارسال شده است، آمده است:

مدت‌ها قبل از اینکه این تصاویر از طریق رسانه‌های اجتماعی به اشتراک گذاشته شوند، تصویر نجومی روز (APOD) خود را به عنوان یکی از اولین وب‌سایت‌ها برای این منظور معرفی کرد. از 16 ژوئیه 1995، هر روز یک تصویر (یا ویدیو) جدید با برخی اطلاعات همراه ارسال می شود و خود را به عنوان منبع OG محتوای مرتبط با فضا تثبیت می کند.

آرشیو مجموعه ای از تصاویر کاملاً خیره کننده با پالت های رنگی اخروی است. تعداد بسیار زیاد آنها و دسترسی آسان آنها، همراه با تمایل شخصی من برای یک پروژه جانبی جدید، به این فکر منجر شد: چرا پایگاه داده تصویر APOD را قابل جستجو بر اساس رنگ نباشیم؟ 🎨

محصول نهایی 👨‍🚀

با ادامه ارسال تصاویر بیشتر از JWST به ما، من می خواستم چیزی بسازم که دقیقاً این کار را انجام دهد. با احساس الهام گرفتن، شروع به ساختن آپاد-رنگ-جستجو کردم!

آن را امتحان کنید و نظر خود را به من بگویید. من در طول چند ماه گذشته برای روشن و خاموش کردن آن وقت گذاشته ام اما در نهایت احساس می کنم آماده هستم تا آن را برای عموم منتشر کنم.

بخشی از این کار، به حداکثر رساندن سطوح مختلف رایگان سرویس‌های ابری بود که استفاده می‌کند – فقط ساعت‌های زیادی برای اجرای GitHub Actions برای پردازش تقریباً دو دهه تصاویر در نظر گرفته شده است! خوشحالم که بگویم من حتی یک سنت هم برای هیچ زیرساخت ابری خرج نکردم، اگرچه این به قیمت پیچیدگی بیشتری تمام شد که بعداً به جزئیات آن خواهم پرداخت.

اگر می خواهید در این میان به این موضوع بپردازید، منبع اینجاست:

عکس های APOD را بر اساس رنگ جستجو کنید! از چهار بخش کاربردی تشکیل شده است:

وب

یک برنامه Svelte برای ارائه رابط جستجو. از رنگ وانیلی برای انتخاب رنگ استفاده می کند.

api

API مبتنی بر Deno که اطلاعات APOD را از پایگاه داده برای تصاویری که با مقدار هگز داده شده مطابقت دارند بازیابی می کند.

حافظه پنهان

سرور گره به عنوان پروکسی کش معکوس برای حفظ اتصال Redis دائمی عمل می کند. جدا از محدودیت‌های اتصال، به نظر می‌رسد معیارها نشان می‌دهند که این کار نسبت به اتصال مستقیم به Redis از طریق Deno برای هر درخواست کارآمدتر است.

src

ابزار Rust برای تجزیه و تحلیل و پردازش تصاویر. برای پر کردن پایگاه داده با داده های تاریخی استفاده می شود، اکنون برنامه ریزی شده است که ماهانه برای پردازش APOD های جدید اجرا شود.

  1. متاتادای APOD را از طریق apod-api واکشی می کند.
  2. تصویر را برای دریافت رنگ‌های غیر خاکستری با بالاترین فرکانس تجزیه و تحلیل می‌کند.
  3. نتیجه را در Postgres ذخیره می کند.

از طریق GitHub Actions UI اجرا می شود تا سپس جریان های کاری اضافی را راه اندازی کند. این برای استفاده از GitHub Actions برای پردازش دسته ای تعداد زیادی از تصاویر به صورت همزمان و از راه دور استفاده شد.


این آغاز یک سری پست در مورد نحوه ساخت من از بخش های مختلف خواهد بود، از جمله:

  • ساخت یک کنترل کننده درخواست و پردازشگر تصویر در Rust
  • استفاده از GitHub Actions به عنوان یک ابزار ابری رایگان برای پردازش دسته ای تصاویر
  • ساخت یک API برای بازیابی و کش کردن نتایج جستجو
  • ساخت یک برنامه وب برای نمایش تصاویر نمایه شده با رنگ در یک رابط قابل جستجو

گوش به زنگ باشید! 🔭

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا