Gogs Logo

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

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

یکی از بامزه ترین اونها نرم‌افزاری به نام Gogs هست که سعی کرده با استفاده از ویژگی‌های golang یک راه‌حل برای میزبانی git شبیه به github ایجاد کنه. نصب کردن این راه‌حل به شدت ساده است چون کلا نصب پکیج‌های golang ساده است. اما بزرگترین مشکلی که برای ما وجود داره تحریم از سمت گوگل هست که شما باید به نحوی اون رو برطرف کنید. این سرویس اونقدر قابل اطمینان بوده که آدم‌هایی پیدا شدن و با تغییر اندکی از اون به عنوان یک کپی github استفاده می‌کنند. اسم اون سایت notabug هست و پیشنهاد می‌کنم ببینیدش.

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

همین!

بروزرسانی: با توجه به اینکه فرود عزیر تجربه contribute کردن به این پروژه رو داشتن، گفتن که نحوه اداره این پروژه خیلی بده و به همین خاطر یک fork از این برنامه به اسم gitea بوجود اومده که انگار بهتر مدیریت میشه. و اینکه کلا توجه داشته باشید که تخم مرغ‌هاتون رو توی یک سبد نگذارید!

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

سر کار اخیرا نیاز شد که یه سیستم با قابلیت virtualization نصب کنیم. خوشبختانه همکارمون که مسئول این کار بود از من در این مورد مشورت گرفت. توی کارهای خیلی جدی شرکت معمولا از vmware ESXi استفاده میشه اما اینجا من و این دوستمون علاقه‌مند شدیم که از یه تکنولوژی دیگه استفاده کنیم. هر دومون با kvm و linux آشنایی داشتیم پس مطمئن بودیم که میتونیم در بدترین حالت با استفاده از لینوکس مشکل رو حل کنیم. پس من پیشنهاد دادم بریم سراغ smartos. یه شرکت به نام joyent از این سیستم عامل پشتیبانی میکنه که اسپانسر nodejs و چیزهای دیگه هم هست. همونطور که قبلا هم گفته بودم این سیستم عامل یه مدته «چشم من رو گرفته» دلایلش هم ایناست

  1. ریشه اش به سولاریس برمیگرده که سیستم عامل بسیار خوبیه!
  2. از zfs پشتیبانی میکنه که اون هم سیستم فایل محشریه!
  3. از kvm به عنوان مجازی ساز سخت افزار استفاده میکنه
  4. از zone های سولاریس به عنوان مجازی سازی سبک(مراجعه کنید به این و این) پشتیبانی میکنه

کاری که ما میخواستیم انجام بدیم این بود که میخواستیم علی الحساب یه ماشین مجازی pfsense توش نصب کنیم و یه کارهایی باهاش انجام بدیم در حین این کار نکات جالب و قابل توجهی برخوردیم که میخوام اینجا مستندشون کنم

نکات جالب در برخورد من با این سیستم عامل اینهاست

  1. کل سیستم نیاز به نصب نداره! و فقط کافیه که روی هارد بتونه سیستم فایل zfs رو تشخیص بده. پس بروز رسانی در حد خاموش و روشن کردن سیستم هزینه داره. از اون سمت با استفاده از pxe میشه سیستم رو بوت کرد که یعنی کل هاردهای سرور جهت ذخیره سازی اطلاعات بکار میره
  2. از json برای توصیف ماشین‌های مجازی و zone هاش استفاده میکنه. که این قضیه برنامه نویسی کردن برای اون رو به شدت ساده میکنه

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

  1. کارت شبکه mainboard یکم مشکل داشت و smartos هم درست ازش استفاده نمیکرد
  2. مدت زمان لازم برای reboot شدن ماشین مجازی pfsense زیاد بود(حدود ۵ دقیقه)
  3. نمیشد از توی pfsense سیستم رو reboot کرد
  4. نصب واسط گرافیکی برای راحت‌تر کار کردن لینوکس و یونیکس نابلدها با سیستم به نظر پر دردسر میرسید!

علی الحساب همین تا باز هم بیشتر باهاش کار کنم و نتایج رو بهتون بگم!

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

همینطور که قبلا نوشته بودم(لینک، لینک، لینک) من تقریبا دوسال میشه که یه سیستم تمام وقت روشن توی خونه دارم که باهاش کارهای بسیاری میکنم که لیست اون کارها از این قراره:

  1. یه ماشین مجازی کوچک دارم و pfsense مسئولیت مسیریابی خونه رو به عهده داره
  2. روش minidlna دارم  که مسئولیت تفریحات فیلمی خونه رو برعهده داره
  3. روش یه samba server دارم که مسئولیت اشتراک فایل رو برعهده داره
  4. روش یه seafile سرور دارم که مسئولیت بک آپ اتوماتیک از تصاویر تلفن‌ها و اطلاعات مهم لپ تاپ‌ها رو برعهده داره.
  5. روش یه deluge دارم که شبها تورنتها رو دانلود و آپلود میکنه
  6. روش یه سرور taskwarior دارم که نقط بک آپ مدیریت لیست کارهایی هست که در هفته انجام میدم

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

  1. سی پی یو: AMD sempron 3000+ AM2
  2. رم : ابتدا ۱ گیگ و سپس ارتقا به ۲٫۵ گیگ
  3. هارد: ۵۰۰ گیگ
  4. سیستم عامل: اوایل ubuntu server و mint

این سیستم تقریبا با ثبات بسیار خوبی این دو سال گذشته رو خدمت رسانی کرده و من ازش راضیم خدا هم ازش راضی باشه! توی این دو سال من تجربه بسیاری خوبی در مورد مدیریت یه سیستم تنها به کمک ssh داشتم. همچنین توی این دوسال خانمم هم به مدت کوتاهی از این سیستم به عنوان دسکتاپ استفاده کرده.

اما این سیستم بعد از دوسال نیاز به بروزرسانی داره و من میخوام به دلایل زیر این سیستم رو از نظر سخت افزاری و نرم افزاری ارتقا بدم

  1. پرشدن هارد بر اثر دانلود زیاد
  2. نیاز به راه‌اندازی یک NAS به دلیل نزدیک شدن به پایان عمر مفید هارد دیسک‌های اکسترنال(حدودا سال ۸۷ خریداری شده اند)
  3. یادگیری تکنولوژی‌های جدید
  4. بهینه سازی سیستم فعلی

اما طرح من برای بهینه کردن این سیستم از این قراره که:

  1. علی الحساب میخوام سه تا هارد دو ترا به سیستم اضافه کنم که یکیش بک آپ اون دوتای دیگه باشه. همچنین نمیخوام از کارت raid استفاده کنم و ترجیحم اینه که از سیستم فایل zfs استفاده کنم.
  2. میخوام بتونم روی این سیستم از مجازی سازی سبک یا همون container های استفاده کنم که این استفاده هم کلی چیز جدید به من یاد میده
  3. میخوام سیستم عامل رو سبک کنم و میزان مصرف منابع کاهش بدم. برای این کار به نظر میرسه باید از لینوکس به یه سیستم عامل دیگه مهاجرت کنم که این مهاجرت کلی مطالب جدید به من یاد میده
  4. در صورتی که پولم برسه میخوام یه ssd بخرم و اون رو به عنوان cache به zfs اضافه کنم,

چالشهای پیش روم هم ایناست:

  1. zfs یک سیستم فایل بسیار قوی هست اما من فکر نمیکنم که هنوز به اندازه کافی اون رو بلدم که بخوام بهش اعتماد کنم و کل هاردهام رو به اون بسپارم
  2. zfs روی سیستم عامل freebsd و illumos و حتی linux وجود داره اما من نمیدونم کدوم پیاده‌سازی بهتر و با ثبات تره. البته باید بگم که پیاده‌سازی‌های موجود روی این سیستم‌ها قدیمی و با ثبات هستن
  3. تکنولوژی مجازی سازی سبک یا container‌ ها همنطور که اینجا هم بررسی کردم روی لینوکس freebsd و illumos با هم متفاوته من هیچ دید عملیاتی ندارم که کدوم بهتره.
  4. هر کدوم از این سیستم‌های یه سری کارها رو راحت کردن مثلا freebsd با freenas و nas4free کار رو برای پیاده‌سازی آسون zfs راحت کرده و شیر کردن و تورنت بازی این چیزا خیلی ساده شده. همچنین illumos با یه محصول به نام smartos مجازی سازی و مجازی سازی سبک و مدیریت اونها رو بسیار ساده کرده. که این انتخاب رو سخت میکنه

حالا با توجه به اینکه انتخاب‌های من کم نیستن بایستی یکم بیشتر بررسی کنم و انتخاب کنم.

همین!

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

همونطور که احتمالا همه میدونید الان بازار containerها یا همون مجازی سازی سبک در دنیا و خب در ایران داغه. من توی یه سری پست سعی میکنم (قسمت اول) که راهی رو که خودم برای درک این موضوع طی کردم رو بنویسم.

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

  • لینوکس
    • Linux-VServer: این تکنولوژی یکی از قدیمی ترین(سال ۲۰۰۱) تکنولوژی‌های مجازی سازی در سطح سیستم عامل هست که نیاز به تغییر کرنل(پچ شدن کردن) برای بوجود آوردن امکان ایزوله کردن منابع سیستم هست. این سیستم متن باز بوده ولی هیچوت تغییراتش به هسته سیستم عامل راه پیدا نکرده
    • Parallels Virtuozzo Containers : این سیستم هم بسیار قدیمی است(سال ۲۰۰۱) و بصورت تجاری توسعه پیدا کرده.
    • OpenVZ: یک محصول متن بازه که اون هم نیاز به پچ کردن کرنل داره و تغییراتش هیچوت به درون هسته لینوکس راه پیدا نکرده. شروع توسعه این ابزار به سال ۲۰۰۵ برمیگرده.
    • ابزارهای مبتنی بر cgroups و namespaces در کرنل لینوکس: این تکنولوژی در سال ۲۰۰۶ توسط مهندسان گوگل شروع شده و به کرنل لینوکس راه پیدا کرده. با توجه به این ویژگی‌ها محصولات متفاوتی تولید شده
      • lmctfy: این ابزار توسط گوگل توسعه پیدا کرده و مورد استفاده قرار گرفته. شروع توسعه این ابزار به سال ۲۰۱۳ برمیگرده.
      • LXC: این ابزار تا اونجایی که من میدونم از دل اوبانتو در اومده و تبدیل به یک ابزار قابل استفاده شده. اما به دلیل مستندات محدود خیلی مورد استفاده قرار نگرفته. شروع توسعه این ابزار به سال ۲۰۰۸ برمیگرده.
      • Docker: سازندگان این ابزار ارائه دهنده سرویس paas بودند که از روند مشابهی برای مدیریت paas خود استفاده می‌کردند و تجربیات خودشون رو در قالب این ابزار ارائه دادند. این ابزار به دلیل سادگی، مستندات خوب و معرفی راه‌حلهای کارا بسیار مقبولیت پیدا کرده. شروع توسعه این ابزار به سال ۲۰۱۳ برمیگرده.
      • libvir lxc: این ابزار هم جزئی از کتابخانه libvirt برای مدیریت تکنولوژی‌های مجازی سازی هست که ابزاری برای مجازی سازی سبک هم ارائه کرده.
  • FreeBSD Jail: در این سیستم عامل از سال ۱۹۹۸ کرنل از ویژگی‌ای به نام jail پشتیبانی میکنه که مجازی سازی سبک رو بوجود میاره. برخلاف لینوکس که چند  ویژگی مجزا کرنل برای مجازی سازی سبک استفاده میشه ویژگی jail در freebsd یک ویژگی یک پارچه برای مدیریت مجازی سازی سبک به حساب میاد ابزارهای سطح بالایی هم برای این مدیریت این ویژگی بوجود اومده که لیست کوتاه اونها در پایین اومده:
  • Solaris Containers: این تکنولوژی در هسته سولاریس از سال ۲۰۰۵ وجود داره و من اطلاع زیادی از اون ندارم
  • sysjail: این تکنولوژی در هسته netbsd و openbsd تا سال ۲۰۰۹ وجود داشته و من اطلاع زیادی از اون ندارم
  • WPARs: یک سیستم خاص منظور برای سیستم عامل AIX هست(سال ۲۰۰۷) و من اطلاع زیادی از اون ندارم
  • HP-UX Containers (SRP): این تکنولوژی مختص HPUX هست(سال ۲۰۰۷) که من باز اطلاع خاصی ازش ندارم
  • Sandboxie: این یه تکنولوژی برای ویندوز هست و من دیدم دوستانی که روی بررسی ویروسها کار میکنن ازش استفاده میکنن.

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

همین!

 

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

من به شخصه این مدت با توجه به ظهور پدیده ای به نام docker شرو ع به خوندن تکنولوژی‌های زیادی کردم که مهمترینشون مجازی سازی سبک یا مجازی سازی در سطح سیستم عامل هست. سعی میکنم در چند قسمت بصورت خیلی خودمونی و تو دل برو (بخوانید user friendly) بنویسم که این تکنولوژی‌های به چه دردی می‌خورن و کجاها استفاده میشن.

بصورت خیلی خلاصه کل کاری که مجازی سازی سبک انجام میده اینه که با استفاده از کرنل موجود سیستم عامل، یه ماشین مجازی سبک با سیستم عامل همخوانواده سیستم عامل ماشین میزبان بالا میاد. در حقیقت عین اینه که شما با استفاده از اون کرنل یه محیط ایزوله شده از سیستم اصلی بوجود بیارید. این موضوع و تکنولوژی‌های مرتبط باهاش جدید نیستن و از سن زیادی برخوردار هستن.

مهمترین سوالی که بایستی بهش جواب داده بشه اینه که چرا این مجازی سازی سبک به شمار میاد. یکی از مهمترین‌هاش اینه که سرعت بوت شدن و لود شدن این سیستم‌ها به نصبت ماشین‌های مجازی معمول به شدت کمتره. میگن شما زمانی که برای آماده سازی یک ماشین فیزیکی نیاز داری چند ساعت، یک ماشین مجازی عادی نیاز داری چندین دقیقه و یک ماشین مجازی سبک نیاز داری چند ثانیه است. پس این ماشین مجازی سبکه. دومین نکته اینه که اجرای این ماشین مجازی سربار اضافه‌ای روی ماشین میزبان نداره. توی سیستم‌های مجازی سازی قدیمی عملا یک تبدیل از کد باینری یا همون اسمبلی ماشین میهمان به دستورات سی پی یو ماشین میزبان انجام میشد که خب سربار قابل توجهی داشت. این سربار با اومدن تکنولوژی‌های virtualization در سطح سی پی یو کاهش زیادی پیدا کرده اما هنوز هم این سربار قابل توجه. اما به علت یکسان بودن کرنل سیستم عامل میهمان و میزبان عملا این سربار وجود نداشته پس سیستم سبک تر خواهد بود.

فعلا همین!

منتظر قسمت‌های بعدی این نوشته باشید!

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

امروز داشتم توی وب میگشتم و در مورد docker میخوندم که چشمم به این پست خورد که چطور توی pantheon تونستن با استفاده از تکنولوژی‌های مرتبط به container تونستن یه بیزنس بسیار جذاب برای ارائه یه نوع هاستینگ خاص مرتبط با drupal و wordpress بسازن. اما نکته‌ای که داشت این بود که یکی از نکاتی که منجر به خفن شدن سیستم اونها شده بود استفاده از یه ویژگی systemd به نام socket activation بود. که من یکم در موردش خوندم و بسیار ازش لذت بردم و گفتم ازش بنویسم.

قصه از اینجا شروع میشه که توی سیستم‌های مبتنی بر یونیکس از قدیم الایام یه چیزی وجود داشته با نام SysV که قدمهای مرتبط با boot سیستم توی اونجا انجام میشده. یعنی اینکه فرض کنید برای اینکه لینوکس بطور کامل بالا بیاد نیاز به داره که ۱۰ تا سرویس اجرا بشه و هر کدوم از اونها یه سری وابستگی دارن که این سیستم این قدم‌ها رو با توجه به وابستگی‌هاش اجرا میکنه. نحوه اجرا شدن این قدم‌ها توی SysV بصورت ترتیبی است که این روند باعث افزایش زمان مورد نیاز برای boot شدن سیستم میشه. توی MacOs از سیستم به نام launchd برای کاهش زمان boot پیاده‌سازی شده. همچنین توی لینوکس  راه حل‌هایی برای اجرای موازی سرویسهایی که به همدیگه وابسته نیستن مثل upstart اوبونتو توسعه پیدا کرده. اما مشکل سرعت کم boot بصورت کامل رفع نشده. به همین خاطر systemd پیاده‌سازی شده و از ساز و کاری به اسم socket activation ایجاد شده که سرویس‌ها هم بتونن با سرعت لود بشن هم مشکلی بوجود نیاد.

تقریبا همه چیز در لینوکس معمولا این سرویسها ارتباطشون از طریق socket ها ایجاد میشه و از socket به عنوان IPC استفاده میشه. حالا ایده اینه که بجای اینکه کل پروسس مربوط به یک سرویس بالا بیاد و بعد اون بیاد و سرویس رو ایجاد کنه، systemd بجای پروسه اصلی سوکت رو ایجاد کنه و هر وقت اولین درخواست به این سوکت رسید سرویس اجرا بشه و سوکت باز شده هم در اختیار پروسس این سرویس قرار بگیره. خوبی این روش هم اینه که تقریبا تمام سرویس‌های متونن همزمان اجرا بشن و خب در صورتی که یه سرویس زودتر از یه سرویس دیگه اجرا بشه و به سرویس کند نیاز داشته باشه درخواست‌هاش رو به سوکت مربوطه میفرسته تا زمانی که این سوکت بتونه چیزی دریافت کنه-لازمه بگم که هر سوکت میتونه به حجم محدودی اطلاعات رو توی خودش نگه داره- پس از اون کرنل دخالت میکنه و برنامه‌ یا برنامه ‌هایی که میخوان به اون سوکت بنویسن رو بصورت موقت متوقف میکنه. تا سرویس دهنده اجرا بشه و بیاد به درخواست‌ها پاسخ بده و سوکت با امکان نوشته شدن داشته باشه. این ایده جدید نبوده و توی inted ملقب به superserver هم برای سرویس دهنده‌های اینترنتی مثل ftp مورد استفاده قرار گرفته. اما systemd ایده رو توسعه داده و بجای سوکت‌های اینترنتی از همه نوع سوکتی پشتیبانی میکنه. این روش سود‌های دیگه‌ای هم داره:

  • وابستگی‌ها بصورت واضحی معرفی نمیشن چون همه سوکت‌ها برای دریافت اطلاعات وجود دارن
  • اگر یک سرویس به علتی خراب بشه و به اصطلاح بمیره سوکت اون وجود خواهد داشت و پس از شروع مجدد دوباره کارهاش رو از همون جایی که بوده پی میگیره
  • اگر یک سرویس بروزرسانی بشه میتوان اون رو به راحتی restart کرد ولی سوکت مربوطه وجود داره به سرویس دهی ادامه میده
  • تغییر سرویس هم از دید کاربر مخفی میمونه

همین!

منابع:

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

  1. این سایت اصلیه که کلی اطلاعات جذاب توش داره.
  2. این سایت نویسنده یا یکی از نویسندگان اصلی systemd هست
  3. اگه برنامه نویس هستید و میخواد با این مفهوم بیشتر آشنا بشید این مطلب و این یکی رو هم بخونید

 

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

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

تنها بخش مجهول این بود که من ایده‌ای نداشتم که چطوری پروتکل ۸۵۸۳ رو بصورت بهینه توی این زبان parse کنم که این پروژه‌ها رو پیدا کردم که بهم یکم ایده میدن. گفتم لیستش رو اینجا بنویسم شاید به درد دیگران هم بخوره

https://github.com/jthmath/VirtuaPOSP

https://github.com/paopaol/bank

https://github.com/linphy/iso8583go

https://github.com/dgv/omg8583

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

همونطور که گفته بودم من توی خونه برای پخش صدا و تصویر از تکنولوژی DLNA استفاده میکنم که یه سرور برای فراهم آوردن اطلاعات دارم و تلوزیونم هم میتونه این فایل‌ها رو پخش کنه. یه مدت پیش ما مهمون داشتیم و من داشتم برای این مهمونمون این تکنولوژی رو توصیف میکردم که این دوستم روی iphone یه نرم افزار نصب کرد که این ویژگی رو داشت و حرکت جالبی که میتونست بکنه این بود که میتونست تلوزیون رو کنترل کنه.

به همین خاطر من یه سرچی کردم و دیدم که دستگاه‌هایی که از DLNA پشتیبانی میکنن چهار نوع هستن که لیستشون در پایین اومده:

  • Digital media servers (DMS):  این نوع مسئول پخش فایل‌هاست. این همون سروری هست که من توی خونه با استفاده minidlna راه انداختم.
  • Digital media renderers (DMR): همون دستگاه پخش کننده است که تلوزیون من مسئول پخش این بخش است. نکته قابل توجه توی این قسمت اینه که فایل‌های چندرسانه‌ای به این دستگاه فرستاده میشه!
  • Digital media controllers (DMC): این دستگاه مسئول کنترل پخش به جلو یا عقب بردنه که موبایل این آشنای ما این امکان رو داشت.
  • Digital media players (DMP): این دستگاه هم پخش کننده است با این تفاوت که خودش میره و فایل‌ها رو از سرور میگیره و پخش میکنه. باز هم این قسمت رو تلوزیون من برعهده داره.

بعد از یکم کمک گرفتن از گوگل من برنامه‌ای رو پیدا کردم میتونم که این کار رو کنن. برنامه ای که من روی لینوکسم برای اینکار پیدا کردم gUPnP بود که کارهای زیادی انجام میده اما یکی از اونا کنترل DLNA هست. واسه موبایل هم من BubbleUPnP رو پیدا کردم که علاوه بر اینکه میتونه سرور باشه، نقش کنترل کننده رو هم بازی میکنه.

همین!

منبع: اینجا

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

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

سرویس openshift که توسط غول دنیای متن باز redhat تاسیس شده و اتفاقا یه سرویس اولیه مجانی هم داره سعی میکنه بستر برنامه نویسی مورد نیاز رو در اختیار برنامه نویسان قرار بده و بعدش برنامه نویسی بتونن با استفاده از git نرم افزارهاشون بدون نگرانی در مورد بستری که قرار این نرم افزار رو اجرا کنه مورد آزمایش و تست قرار بدن.

اتفاقا پلتفرمهای پشتیباین شده تقریبا کامل هستند node.js، j2ee، python، django، perl، ruby، ruby on rails رو پشتیبانی میکنه و پایگاه داده‌هایی هم که داره  mySql، postgreSql و monogoDB هست. که تقریبا ۹۰ درصد نیازهای یک برنامه نویس رو پشتیبانی میکنه. اتفاقا چون از git هم برای نصب و راه‌اندازی  هر برنامه استفاده میشه نسخه‌های قبلی اون هم  نگه داشته میشه و این خودش بسیار خوبه.

همچنین یکی دیگه از چیزایی که این سیستم پشتیبانی میکنه اینه شما میتونید از jenkins هم استفاده کنید که یک پلتفرم continious integration هست که به شما کمک میکنه بصورت اتوماتیک نرم افزار شما سر هم بشه و build بشه و تست میشه که آیا قسمت‌های مختلف اون با هم تضاد دارند یا نه. که خب این نکته خیلی خارجیه و هنوز من جایی در اطرافم رو ندیدم که واقعا از یک چنین سیستم در محیط عملیاتیشون استفاده کنند

البته باید بگم که سیستم های دیگه ای مثل heroku هم برای اینکار وجود داره اما من این openshift بیشتر خوشم و اگه بازم عمری بود در مورد سیستم‌های مشابه یکم می‌نویسم.

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

امروز میخوام درباره Network Attached Storage یا همون NAS یکم بنویسم. خب از اونجایی که من علاقه‌مند به سیستم های متن بازم پس بازهم در مورد راهکارهایی که متن باز این سیستم رو پیاده‌سازی میکنن حرف میزنم. فکر کنم که بهتره هرچه سریعتر لیست این محصولات رو بگم:

من متاسفانه هیچکدوم از این محصولات رو توی خونه ندارم ولی دوست داشتم که یه کامپیوتر کم مصرف داشتم که بتونم یه دونه رو راه بندازم. اما توی شرکت ما از NAS4Free استفاده می‌کنیم که تا الان با کیفیت خوبی جواب کارمون رو داده.

پروتکل‌های ارتباطی که معمولا هر کدوم از این محصولات پشتیبانی میکنند هم توی لیست پایین اومدن:

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

مقایسه FreeNAS با Openfiler توی این لینک پیدا میشه

مقایسه FreeNAS با NAS4Free توی این لینک پیدا میشه

همین!