گزارش مهاجرتم از بیان
بذارین قبل از هر چیزی این روز زیبا و فرخنده رو به همتون تبریک بگم. امروز هم روز ولنتاین یا روز عاشقان هست و هم روز ولادت امام زمان یا نیمه شعبان هست. به قول عزیزی: «مهربونی، مهربونی میاره»، سعی کنیم از این فرصت استفاده کنیم و با عزیزان و خودمون مهربونتر باشیم، این حس خوب رو در خودمون، در دلمون دریافت میکنیم. دوست دارم بیشتر در این رابطه صحبت کنم ولی خب موضوع پست این اجازه رو بهم نمیده. داستان از اونجایی شروع شد که بیان به کل غیر فعال شد و من چند سالی بود که در فکر مهاجرت از بیان بودم اما خلاصهاش تنبلی اجازه نمیداد که جای جدیدی رو برای مهاجرت بسازم یا انتخاب کنم. ولی در اولین قدمها دامنهی منحصر به فرد این وبلاگ رو که asemanam.ir بود رو از چند سال پیش خریداری کردم و آماده حرکت بعدی بودم تا اینکه یکی از دوستان هم وبلاگی با بنده مکاتبه کرد و خبر اینکه اینجا قراره فروخته بشه و از پستهات نسخه پشتیبان بگیر و آماده باش. من هم همچنان دنبال شواهد بیشتری بودم که آیا این موضوع واقعیت داره یا ن تا اینکه به کامنت پست شرکت بیان رسیدم. از اینجا بود که مهاجرتم از بیان عملا شروع شد.
اطلاع رسانی 📰
بعد از دیدن کامنت اولین کاری که کردم این بود که به بقیه دوستانم هم این موضوع رو اطلاع بدم چرا که انجام عملیات پشتیبانگیری ممکنه زمانبر و طولانی بشه و این موضوع رو گروه وبلاگنویسها در تلگرام به اشتراک گذاشتم. چند روز بعد هم در بداهه برک ۱۳ بهمن این موضوع رو با شما در میان گذاشتم. تنها کاری که برای پشتیبان گیری از وبلاگ از ما بر میومد این بود که یک فایل با فرمت xml رو از قسمت پستهای وبلاگهای بیان خودمون دریافت میکردیم و تا جایی که من میدونم یک ابزار به درد بخور برای استفاده از این فایل موجود بود که همزمان با بسته شدن میهن بلاگ ساخته بودم تا بتونیم از فایل پشتیبان میهن بلاگ و بیان استفادهای در حد دیدن و خواندن یک صفحهی HTML داشته باشیم و بس. شما وقتی میتونین اسم یک فایل رو فایل پشتیبان یا Backup بگذارین که مکانیزمی برای بازیابی اون اطلاعات هم داشته باشین اما خب از اونجایی که بلاگ بیان در میانه راه از توسعه باز موند، مکانیزم بازگشتی نداشتیم ولی خداروشکر مثل بلاگفا فایل پشتیبان رو رمزنگاری نکرد و فایل خوانا و قابل استفاده هست پس دست به کار شدم تا از این فایل استفاده کنم و اون رو قابل بازیابی کنم.
ابزار جدا کردن پستها 🎒
فایل پشتیبان رو باز کردم و همونطور که از قبل میدونین یک فایل استاندارد به دردبخور XML هست که بر خلاف بلاگفا رمزگزاری نشده. (اینو میگم بدونین که اگر بلاگفا به مشکل خورد، فایل پشتیبانش به درد فقط خود بلاگفا میخوره و نمیتونین تبدیلش کنین یا جای دیگری ازش استفاده کنین، مگر اینکه بلاگفا ابزاری منتشر کنه یا نحوه بازگردانی فایل رو منتشر کنه). مشکلی که این فایل داره اینه که همهی پستها در یک فایل ذخیره شده هستن و اگر سالهاست که وبلاگنویسی میکنین، حجم این فایل شاید به بیش ۲ تا ۳ مگابایت برسه. ماموریت من این شد که تگهای POST وبلاگ رو جدا کرده و در فایلی مجزا ذخیره کنم تا در ادامه بتونم ازشون استفاده کنم. برای این کار برنامهای نوشتم (همونطور که در تصویر بالا میبینین 👆) که کارش تنها این هست که فایل پشتیبان بلاگ بیان رو دریافت میکنه و پستها رو از درونش بیرون کشیده و در قالب یک فایل با فرمت markdown ذخیره میکنه. این فایل در دنیای امروز کاربردهای زیادی داره. شما از این فایل میتونین برای استفاده در برنامههای محبوبی مثل Obsidian یا سرویسهای رایگان وبلاگدهی مثل Github pages استفاده کنین و محتوای ساخته دست خودتون رو وارد دنیای جدیدی بکنین و به نوشتن با خیال راحت ادامه بدین.
ابزار دریافت کامنت ها 🎭
اما مشکل اصلی کامنتها بودن، چرا که بیان نه برای صفحات مستقل و نه برای کامنتها مکانیزم دریافت فایل پشتیبانی قرار نداده و از اونجایی که کامنتها خودشون جزء مهمی از هر پست و مطلب هستن، غیر قابل نادیده گرفتن بودن برای همین هم به این فکر افتادم که چطور میتونم کامنتها رو هم در این مهاجرت با خودم همراه کنم. به این فکر افتادم که کامنتها در هر صفحهی خوانای HTML که میبینیم با ساختار مشخصی قرار داده شده ولی این ساختار در وبلاگها و قالبهای مختلف، متفاوت هست برای همین هم برای دانلود کامنتها نیاز به تغییر قالب داریم تا پیچیدگی دریافت از طریق خزنده کمتر شده و به صورت دقیقی کامنتها دانلود و در فایلها ذخیره بشن. اما خب همونطور که شاید حدس زده باشین، کامنتهای خصوصی که در صفحات وب عمومی قابل نمایش نیستن، امکان دانلود داشته و نمیتونیم اونها رو از طریق این برنامه که من ساختم، دانلود یا دریافت کنیم.
ترکیب محتوای پست با کامنت ها 🂱
خب همونطور که در بالا توضیح دادم، پستها از طریق فایلی که دانلود کردیم قابل استفاده مجدد هستن و داستان کامنتها هم داستان متفاوتی هست و باید خودمون از بدنه وبلاگهامون دانلودشون کنیم و این دو موضوع از هم جدا هستن، ولی در نهایت ما نیاز به این داریم که کامنتهای هر پست در انتهای محتوای هر پست قابل استفاده و نمایش باشن. برای حل این موضوع کامنتها و پستها رو با فایلهای هم نام ولی با فرمت فایل متفاوت ذخیره کردم تا برای ترکیب اون دو راهی داشته باشیم.
انتخاب سیستم مدیریت محتوا ⛺
بعد دانلود و تفکیک و دریافت کامنتها و پستها و فایلهای این دو کنار هم، نیاز به انتخاب سیستمی برای ادامه و مدیریت اینها داشتم. خب گزینههای تقریبا زیادی برای این کار وجود داره. گزینههایی مثل وردپرس، جکیل، هیوگو، گتسبی و آسترو که در نهایت من آسترو رو انتخاب کردم. خب به جز وردپرس، فکر کنم اسم بقیه این سیستمهای مدیریت محتوا رو کمتر شنیده باشین. خب این سیستمها اصطلاحا سیستمهای مدیریت محتوای استاتیک هستن و خروجی کار شما بسیار سبک و سریع به نمایش در میاد ولی خب پیاده سازی و شخصی سازی و ساختنشون از یک کم سخت شروع میشه تا خیلی سخت ادامه پیدا میکنه و برا همین هم میشه گفت انتخاب سختی کردم. اما چرا Astro js رو انتخاب کردم؟ خب آسترو رو میشه پیشروتر از همهی اون CMS هایی که گفتم دونست. مباحث فنی جالبی داره ولی خب پست رو طولانی میکنه اما خلاصهاش اینکه آسترو سریعتر، به روزتر و با معماری منعطفی هست که دست آدم رو برای توسعه بیشتر باز میذاره. اما از سختیهای انتقال قالب بیان به آسترو براتون بگم که خیلی طول کشید، مستنداتش بد نبود ولی خیلی به مشکل خوردم و از ابتکار گرفته تا گوگل و چت جی پی تی به دادم رسیدن و کمکم کردن تا یک سیستم مستقل برای تولید محتوا داشته باشم و بتونم هر جایی، با سرعت بالا اون رو منتقل و سرویس دهی کنم.
انتخاب سیستم ارسال کامنت 🎁
در نهایت هم مرحله سیستم ارسال نظر یا همون کامنت رو باید حل میکردم. خب وقتی از سیستم مدیریت محتوای استاتیک استفاده بکنین، دیگه خبری از سیستم ارسال کامنت و اسپم قوی و ارسال کامنت خصوصی نخواهد بود. و برای حل این مشکل دو راهکار پیش روی من بود:
- یک اینکه خودم یک سیستم میساختم که به دیتابیس وصل میشد و تمام کارهایی که در بیان میشد انجام داد رو باهاش انجام میدادم ولی خب ساختش خیلی طول میکشید و چالشهای پیاده سازی و نگهداری و دیباگ داشت که زیاد دلچسب نبود.
- گزینه دوم این بود که یک راهکار قابل میزبانی رو که دوستان دیگری زحمت پیاده سازیش رو کشیدن استفاده کنم که پاسخگوی نیاز من باشه که واقعا این گزینه منطقیتری بود. خلاصه اینکه جستجو کردم و بررسی کردم متوجه شدم به اصطلاح موتور کامنتگذاری Remark42 راه حل مناسب کار من هست چرا که قابلیت جاسازی در صفحات استاتیک رو داره و همچنین خیلی سبک و سریع هست و امکان لاگین کابر با سامانههای احراز هویت مشهور مثل گوگل رو هم داره.
مشکلات و چالشهای این مسیر 🎃
خب شاید متوجه نشده باشین یا شده باشین اما شما هم اکنون در وبلاگ مستقل آسمانم به نشانی asemanam.ir هستین و نتیجه کار رو دارین میبینین. تا جای ممکن سعی کردم خروجی کار دقیقا مثل قالب بیان و امکانات و حس کاربری اونجا باشه و اطلاعات رو کامل انتقال بدم ولی خب همونطور که میدونین همه چیز اونطوری که میخواین پیش نمیره و یک سری چالشها و اشکالاتی در کار وجود داشت که اینجا لیستشون میکنم:
- تصاویر و عکسها رو در حال حاضر نتونستم دانلود کنم، یعنی اگر سرورهای بیان خاموش بشن، تصاویری مثل آواتار کسانی که کامنت گذاشتن یا تصاویر پستهایی که در بیان باکس آپلود شدن هم به یادها میپیوندند.
- کامنت صفحات مستقل رو دانلود نکردم، امکانش وجود داره ولی باید دستی اینکار انجام بشه و هنوز انجامش ندادم.
- در حین دانلود کامنتها متوجه شدم که دانلود نشانی وبلاگ هر کامنت گذار دارای یک مشکل فنی هست که هنوز حلش نکردم و کامنتهای منتقل شده بدون نشانی وبلاگ نمایش داده میشن.
- برای انتقال فایلهای مارک داون پستها به وردپرس به صورت مستقیم امکان پذیر نیست ولی افزونهای به اسم Markdown Importer وجود داره (البته خودم تست نکردم) که این امکان رو به وجود میاره.
- کامنتهای خصوصی رو نمیشه با ابزار من دانلود کرد و اگر کسی افزونه کروم یا فایرفاکس بلده بنویسه، ابزاری برای دانلودش بسازه، امکانش به نظرم وجود داره که اونها رو هم بشه دانلود و دوباره استفاده کرد.
- برای دانلود کامنتهای هر پست هم باید قالب شما تغییر پیدا کنه تا ابزار دانلود کامنت بتونه اونها رو دانلود کنه، بنابراین نیاز به دسترسی نویسنده داریم تا قالب رو با ساختار مورد نیاز ابزار آماده کنیم. همینطور تغییر مکان خود به خود حس و حال خاص خودش رو داره و اوایل شاید سخت باشه ولی خب اگر شما هدفتون وبلاگنویسی هست و از نوشتن و به اشتراک گذاشتن افکار و تجربیات و علاقمندهاتون لذت میبرین، بالاخره ادامه میدین و از نوشتن لذت بیشتری میبرین.
قدمهای بعدی 🥊
به نظرم مهمترین قدم برای مرحله بعد ارتباط وبلاگها به هم هست. همونطور که ما در وبلاگهای به روز شده بیان متوجه میشیم که وبلاگنویس مورد علاقمون پست گذاشته و سریعا وارد پست شده و از خوندنش لذت میبریم و کلی چیزای جدید و جالب میخونیم و با کامنتها و نظراتمون کاملش میکنیم و از نویسنده حمایت میکنیم، حالا هم این نیاز بیشتر احساس میشه که وبلاگها از طریق مکان واسطی در یک جا دیده بشن همدیگه رو یکجا بتونیم ببینیم. برای همین در فکر حل این چالش هستم.