اینم یه تجربه پراکنده دیگه!

خب اگه تاحالا خواننده وبلاگ من بوده باشید میدونید که من به خیلی چیزهای متفاوتی علاقه مندم و همیشه بین موارد مرتبط به عملیات(کارهای مرتبط با شبکه و زیرساخت و سرور و نگهداری و …) و توسعه چرخ میزنم. یکی دیگه از چیزهایی بهش واقعا علاقه‌مندم و حداقل در موردش میخونم و سعی میکنم بنویسم کارایی و افزایش اون برای استفاده بهینه از منابع و این چیزاست. از تلاقی این سه تا ایده و خب طبق معمول رونویسی از محصولات خارجی به این نتیجه رسیدم که یه سیستم cms-as-a-service درست کنم.

امروز میخوام اولا سورس اون کاری رو که انجام دادم به اشتراک با بقیه بگذارم تا دیگران هم شاید ازش چیزهایی یاد بگیرند. دوما اینکه میخوام شکست این پروژه رو اعلام کنم چون به زبان پیش‌نمونه‌سازی من شواهدی ندارم که بگه این ایده‌ی من یک چیز درست هست. پس با تمامی سختی کار برم سراغ روش انجام و مستندات اون:

  • خب من کلا از یک سیستم مجازی سازی سبک برای اینکار در محیط لینوکس استفاده کرده بودم. خب پیاده‌سازی‌های مختلفی برای اینکار در لینوکس وجود داره که انتخاب من docker بود چون خیلی ترکونده بود!
  • به عنوان loadbalancer/router من از یه nginx استفاده کردم. خب چون دیدم اولا سریع و کم مصرفه. دوما اینکه میشه با استفاده از زبان lua کلی توسعه روش داد در این حد که بشه waf (مثلا)
  • یه image برای کارهای متفاوتی که میخواستم ساختم
    • با استفاده از nginx، php-fpm و تنظیمات دروپال تونستم یه image برای دروپال بسازم
    • با استفاده از apache و mod-php دوتا image مجزا برای piwik و wordpress ساختم
    • با استفاده از nginx هم سایتهای ایستا رو سرویس میدادم
    • یه image هم ساختم که فقط توش ابزارهای مثل drush و این چیزا بود که بروزرسانی و backup رو سریع‌تر کنه.
  • از fig که اخیرا شده docker composer هم برای یه شبه orchestrator استفاده میکردم.
  • دوست داشتم از redis به عنوان cache توی loadbalancer/router و همچنین app container استفاده کنم که عمر سیستم کفاف نداد
  • میخواستم با استفاده از service recovery بصورت اتوماتیک loadbalancer/router رو کانفیگ کنم
  • دلم میخواست که بتونم این سیستم رو تبدیل به یه سیستم multi-host کنم.
  • خیلی چیزهای دیگه هم دلم میخواست که در صورت درست بودن ایده قطعا انجام میشد.

این سیستم رو من حدودا یک سال هست که بصورت عملیاتی اجرا میکنم(همین الان هم ۴ یا ۶ تا سایت روشه) اما تصمیم گرفتم به دلایل زیر دیگه توسعه ندم و سایتها رو هم از روش بردارم:

  • خب اولین و مهمترین دلیل خاموش شدنش اینه که من فکر میکردم میتونم از طریق سینه به سینه و دوستانه این سیستم رو معرفی کنم و حداقل ۲۰ تا ۳۰ سایت روش داشته باشم اما نشد! یعنی عدم وجود مشتری کافی یا عدم توانایی من در بازاریابی که نتیجه نهاییش یکیه.
  • دومین دلیلش اینه که نگهداری این سیستم کلی زمان و انرژی میخواست و میخواد که من داشتم ولی دیگه ندارم. حتی با توجه به جستجوهایی هم که انجام دادم نتونستم کسی رو پیدا کنم که حاضر باشه سیستم رو نگهداری کنه و پول براش بگیره.
  • دلیل بعدی اینه که یه ویژگی خیلی خفنی که توی این سیستم وجود نداشت email بود که با توجه به سطح دانش من از کارهای مدیریت سیستم راه‌اندازی برام توی این مدت غیر ممکن بود.
  • کسی به پست‌های مرتبط با این زمینه علاقه مندی خاصی(کامنت یا اشتراک گذاری یا سوال پرسیدن بصورت خصوصی) نشون نداد.
  • توی شرکت قبلی که کار میکردم تمام سایت‌های مبتنی بر دروپالشون به دلیل عدم تواناییشون برای بروزرسانی و نگهداری دروپال(کمبود نیروی انسانی نه توان فنی) دچار مشکل میشد. حتی اونها هم علاقه مندی به استفاده از این سیستم نشون ندادن.
  • با چندتا از شرکت‌هایی که قاعدتا میشناختمشون که توی حوزه وب فعالیت میکردن از دروپال یا وردپرس استفاده میکردن و چندتا از مدیران سیستمی که میشناختم پیشنهاد دادم که از این سیستم استفاده کنند اما اونها ترجیح میدادند از سیستم سنی «هاست» استفاده کنند یا خودشون سرورشون رو نگهداری کنند.

جمع بندی اینکه :

تمام شواهد بر علیه موفقیت سیستمی هست که من طراحی کردم و فقط چندتا ویژگی اصلیش رو ساختم. پس این پیش‌نمونه‌سازی که از روش کمینه محصول پذیرفتنی ایجاد شده بود نتونست حتی سطح علاقه اولیه مشتریان بالقوه رو بخودش جلب کنه. پس من میپذیرم که یه شکست کوچک رو تجربه کردم و میرم سراغ کارهای بعدی!

پ.ن. میتونید سورس کاری که من انجام دادم رو اینجا پیدا کنید اما یادتون باشه این سورس اونقدرها که باید مرتب و کامل نیست چون فقط یک پیش‌نمونه است.

کتاب موبایل کتابخوان epub

اینم یه تجربه پراکنده دیگه!

همانطور که میدونید من اخیرا کتاب پیش‌نمونه‌سازی رو ترجمه کردم. کلی چیزهای مفید در راه این ترجمه یاد گرفتم. حالا به پیشنهاد جادی سراغ این رفتم که نسخه epub این کتاب رو هم ایجاد کنم تا آدم‌های بیشتری بتونن راحت‌تر بخوننش و ازش استفاده کنن. همچنین باید بگم که جادی زحمت کشیده توی لینک‌های شاد دوشنبه آخر ماه این کتاب رو معرفی کرده.

کلا هم بخاطر وجود ابزار بسیار خوبی به اسم pandoc و نوشته شدن متن به فرمت markdown این عملیات تقریبا راحته!

مراحل این کار بصورت خلاصه اینهاست:

  1. اول از همه نوشتن متادیتاهای کتاب توی یک فایل خاص به اسم title.txt به فرمت yaml. این متا دیتا شامل اسم کتاب نام نویسنده و این دست اطلاعات است.
  2. تهیه کردن یک css برای تعیین فونت متن. لازم میدونم که اضافه کنم که epub یه فرمت خاص از xhtml و css یه سری متادیتای دیگه‌است که بصورت فشرده شده ارائه می شه. css بوسیله این سوئیج epub-stylesheet به pandoc معرفی می‌شه.
  3. اضافه کردن فونت‌ها درون فایل epub تا در صورتی که فایل روی خواننده مقصد وجود نداشته باشه از این فونت‌ها استفاده بشه. فرمت فونت‌هایی که بصورت رسمی پشتیبانی میشه oft و woff هست. اما استفاده از ttf و تقریبا سایر فرمت‌های فونت‌های وب هم پشتیبانی می‌شه. pandoc این کار رو با سوئیچ epub-embed-font انجام میده.
  4. اضافه کردن نحوه ورق خوردن کتاب که از راست به چپ باشه. این کار با کلید page-progression-direction توی متادیتای کتاب در فایل title.txt انجام می‌شه.
  5. برای اینکه متن‌ها هم چپ به راست باشن بایستی به تگ ‍‍‍‍‍‍ هریک از بخشها یک ویژگی اضافه بشه. اینکار بصورت مستقیم قابل انجام نبود و به همین خاطر با رجوع به میلینگ لیست pandoc و پرسیدن در این مورد با استفاده از چیزی به اسم template این مشکل هم حل شد.

نمونه انجام این کار توی شاخه epub تو github کتاب قابل روئیته.

همین!

Palm Pilot Pretotype

اینم یه تجربه پراکنده دیگه!

من یه مدت پیش با مفهوم پیش‌نمونه‌سازی آشنا شدم و بسیار از خوندنش لذت بردم. همون موقع تصمیم گرفتم که این روی این روش بیشتر کار کنم. به همین خاطر اجازه ترجمه کتاب pretotype it رو گرفتم و اون رو در وقت‌های اضافه‌ام ترجمه و آماده کردم. البته حضور ابزارهای متن باز کلی روند ترجمه رو آسون کرد.

کتاب اصلی رو می‌تونید توی این آدرس پیدا کنید و لینک سایت ترجمه کتاب هم از این قراره.

امیدوارم که کتاب رو بخونید و همونقدر که من لذت بردم شما هم لذت ببرید و نظراتتون رو از من دریغ نکنید.

همین!