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

الوعده وفا! گفته بودم ایده‌هام رو مینویسم اینم اولین ایده.

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

  • امکان file sharing داره
  • امکان پخش فایل‌های فیلم، صوت یا تصویر رو با استفاده از dlna داره.
  • امکان زمانبندی دانلود از طریق torrent رو داره که به درد خوره ‌های دانلود میخوره
  • من روی اون یه seafile نصب کردم که یه چیزی شبیه dropbox هست و فایل‌های مهم روی گوشی و لپ تاپم رو در چند نقطه backup میگیرم
  • همچنین آی پی من رو به صورت متناوب به  dynamic DNS گزارش میده و من میتونم از بیرون خونه به کامپیوتر خونه دسترسی داشته باشم.

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

  • استفاده از بردی مثل رزبری‌پای به عنوان اصل سیستم
  • نصب یک لینوکس خیلی سبک روی این سیستم
  • راه‌اندازی samba و مدیریتش توسط وب برای filesharing
  • راه‌اندازی minidlna یا سرویس‌های مشابه برای اشتراک فیل با تلوزیون‌های هوشمند
  • راه‌اندازی seafile و امکان تنظیم اون
  • امکان دانلود از torrent و لینک مستقیم رو داشته باشه
  • امکان اجرای دستور بصورت متناوب
  • امکان اتصال هارد دیسک یا هر سیستم usb دیگه به عنوان واسط ذخیره سازی
  • استفاده از یک usb hub برای افزایش تعداد هارد‌های متصل

از نظر من هزینه های تولید این سیستم به این شرحه

  • خرید برد با حدود ۲۰۰ هزار تومن
  • نوشتن واسط وب برای این سیستم که به نظر من بایستی با زبانی مثل python نوشته بشه که راحت بشه هم با سیستم عامل صحبت کرد و هم واسط وب ساخت. هزینه تخمینی تولید این نرم افزار از دید من عددی بین ۱۰ میلیون تومان تا ۱۵ میلیون تومان هست. یعنی اگه من به عنوان یه شرکت میخواستم این پروژه رو انجام بدم حداقل این عدد رو میگرفتم.
  • هزینه طراحی کیس و بسته بندی محصول که ایده‌ای ندارم چقدر میشه
  • هزینه کارت اس دی برای هر محصول

چالش‌های اساسی ساخت این سیستم

  • نیاز به رقابت با محصولات مشابه مثل set-top box و یا Western Digital TV و یا محصولات مشابه
  • نبود نیروی متخصص کافی برای تولید چنین محصولی
  • عدم وجود بازار فعلی برای این محصول. با توجه به شناخت شخصی من از بازار همین الان محصولات Western Digital بازار قابل توجهی ندارن
  • سخت بودن بازار رقابتی واردات محصولات الکترونیکی
  • در صورت مشتری داشتن نیاز به تعداد زیادی نیروی پشتیبانی برای محصول هست.

راه‌ بردهای جایگزین:

  • این سیستم که من توصیف کردم خیلی شبیه سیستم‌های NAS هست و میشه از سیستم عامل‌های اختصاصی سازی شده برای NAS استفاده کرد. این امر باعث میشه هزینه توسعه به حد یک سوم کاهش پیدا کنه اما دو تا بدی داره. اولا اینکه این سیستم‌ها معمولا  نسخه مخصوص یه برد ارزان قیمت مثل رزبری پای ندارن. دوم اینکه یادگرفتن یه سیستم که توسعه داده شده کار سختیه و روند نگهداری سیستم رو در دراز مدت کم میکنه.

امیدوارم این محصول به درد کسی بخوره و من منتظر نظرات شما اینجا هستم

همین!

خب به نظر میرسه وبلاگ من رو خاک گرفته! میدونم و تنها دلیلی که دارم الان مینویسم اینه دلم رزبری پی میخواد. البته بگم که من یه دونه پاندابرد دارم ولی دلم یکی از اینا رو هم میخواد.

قبلش بگم که این کار اندکی شیطنت و شیطان صفتی توش داره پس اگه خواستید انجامش بدید وجدان داشته باشید

این داستانی که میخوام براتون تعریف کنم توی چله تابستون وقتی که کسی دانشگاه نیست اتفاق افتاده و خب ما چون پایه ثابت خوابگاه بودیم! بودیم!اون سالی که من دانشجو بودم و این اتفاق افتاد دانشگاه صنعتی امیرکبیر اینترنتش رو از طریق سه یا چهارتا پروکسی squid به دانشجوها و اساتیدش در مقاطع مختلف ارائه میداد. اون سال بخاطر چله تابستون بودن دوستان انفورماتیک زحمت کشیده بودن و به همه بدون پسورد سرویس میدادن. یعنی هیچ یک از پراکسی ها پسورد نداشت و تنها محدودیت رو روی آی پی آدرس شما اعمال میکردن و شما رو محدود میکردن خب شما هم اگه جای من بودید دوست داشتید از این فرصت بوجود اومده استفاده کنید.

کل کاری که من کردم این بود که اولا تعداد آی پی هام توی لینوکسم که اگه اشتباه نکنم یه فدورا ۱۵ بود زیاد کردم. یه برنامه پیدا کردم که بتونیم بین پراکسی‌های مختلف تقسیم بار انجام بدم و خب یه سری بازی wii داشتم که میخواستم از megaupload خدا بیارمز دانلودش کنم. خب سعی میکنم که مرحله به مرحله توضیح بدم که چیکار کردم

اول : تقسیم بار روی سرور ها اولین کاری که کردم با استفاده از یه دستور خوب لینوکس به اینترفیس شبکه ام به تعداد کافی آی پی دادم

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

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

دوم: دانلود بدون نظارت از megaupload چند تا مشکل توی دانلود از megaupload وجود داشت. یکی اینکه مگا آپلود فی…ل…تر بود. خب راه حلش چی میتونست باشه. من گشتم و گشتم تا متوجه شدم که میشه آدرس سایت رو به این صورت هم استفاده کرد whateveryoucouldthinkof.megaupload.com خب این کشف بزرگی بود و خوشبختانه اکثر این آدرسا فیلتر نبود. پس اول مشکل به حول و قوت خود مگا آپلود حل شد. مشکل بعدی این بود که این سایت برای اینکه بگذاره ما ازش دانلود کنیم نیاز به یوزر نیم و پسورد داشت که معنیش این بود که باید یه بروزر بصورت دستی لاگین بشه تا بشه ازش استفاده کرد. راه حل این مساله هم خدا رو شکر ساده بود. با استفاده از گوگل و یکم سرک کشیدن اینور اونر متوجه شدم اگه بتونم کوکی لاگین رو بسازم میتونم به خیلی از برنامه های دانلود که از خط فرمان پشتیبانی میکنن این کوکی رو میخونن و کارشون رو انجام میدن. خط فرمانی که من برای لاگین کردن به مگا آپلود پیدا کردم این بود

که یه فایل کوکی به نام cook میساخت. حالا میموند اینکه من از یه برنامه با تعداد کانکشن زیاد و بصورت همزمان فایلها رو دانلود کنم. اونم به کمک دانلودر قوی aria2 حل شد. با استفاده از این دانلودر میتونستم لیستی از فایلها رو بهش بدم و بگم به چند تا کانکشن همزمان اونها رو دانلود کن. دستور دانلودم هم این بود

خب بعدش واسه اینکه کل فایلها رو یکجا بتونم دانلود کنم از یه شل اسکریپت دیگه استفاده کردم که اونم اینجا میارمش

خب حالا بریم سراغ مرحله بعد.

مرحله سوم : استخراج اتوماتیک لیست فایلها از متن یک صفحه وب بسیاری از جزئیات این بخش رو یادم نمیاد و خب خیلی هاش رو هم دستی انجام دادم. اما کلیت این بود که متن‌های تکرار شونده (تگ های html و …) توی لیست رو پیدا کردم و حذف کردم. بعدش یه پارسر با سی پلاس پلاس نوشتم‌(اون زمان به awk و sed و …) مسلط نبودم و فایلها رو استخراج کردم که توی هر کردوم یه چیری شببه این بود

همین به کسی پیشنهاد نمیکنم که این کار رو انجام بده اما من انجام دادم و لذتش رو بردم. یادم رفت بگم من اون زمان میتونستم توی یک شب تا صبح (چون در طول روز نامردی بود استفاده از این تریک) میتونستم نزدیک به ۸۰ گیگ از اینترنت دانلود کنم و بخاطر این موفقیت به خودم و لینوکسم میبالم!