همه ایده‌های من: کسب و کار مبتنی بر pfSense

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

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

با توجه به تجربه سه ساله کار با pfSense میدونم که بسیار خوش ساخت طراحی شده و با ثبات وکیفیت بسیار خوبی به کار  خودش ادامه میده. نیازمندی‌های سخت افزاری قابل قبولی داره و اون کاری که باید انجام بده رو به درستی انجام میده . باید اضافه کنم که شرکت‌های فعال در زمینه امنیت شبکه از این محصول به عنوان پایه محصولات بومیشون که اکثرا ورتر، فایروال و utm هست استفاده کردن. اما به نظر من این rebranding و توسعه، نیاز بازاری هست که شامل بخش دولتی و دستگاه‌های حساس میشه. این بازار معمولا بسیار پر رقابت هست و پول‌های بسیاری خوبی توش جابجا میشه پس جزابه اما این بازار دوتا ایراد داره اولا بسیار کوچک هست و دوما بزرگ نمیشه پس از نظر من واسه راه انداختن کسب و کار که بشه startup به درد نمیخوره. پس این ایده‌هایی که اینجا مطرح میشه هدفش بازار هرچه نزدیکتر به خونه مردم هست که تعدادش بزرگ باشه و بشه بصورت انبوه فروختش. ایده‌ها اینجا لیست شده:

  1. فروش سرویس نصب و راه‌اندازی pfSense: یعنی شما برای مشتری نهایی سیستم و پیکربندی کنی و راه‌اندازی کنی. این کار خوبه اما به دلیل محدود بودن نیروی متخصص pfSense این ایده که معمولا ساده‌ترین ایده استفاده از سیستم‌های متن باز هست خیلی جذاب نیست.
  2. فروش appliance که بصورت پیشفرض pfSense روی اونها نصب شده: نمونه این سخت افزارها اینجا و اینجا پیدا میشه. این کار بسیار خوب میتونه باشه چون نیاز نیروی انسانی کمی داره و شما خدماتی ارائه نمیدی و عملا یه سخت افزار میفروشی. ایراد این ایده اینه که در دنیای appliance ها معمولا از روترها و فایروال‌های cisco و یا mikrotik استفاده میشه. مهمترین دلیل این استفاده هم وجود آموزشهای تخصصی برای این روترها و آشنایی مدیران شبکه با این روترها هست. دومین مشکل این سیستم هم وارداته که خب اگه کسی از این کارها نکرده باشه بسیار میتونه به مشکل بر بخوره. همچنین قیمت تمام شده این محصول تقریبا هم سطح رقبا است و عملا رقبا به علت سابقه بیشتر برنده میشن. اما اگه کسی بتونه این مشکلات رو حل کنه که حل ناشدنی نیست بسیار میتونه موفق باشه.
  3. راه‌اندازی hotspot مبتنی بر pfsense و فروش اینترنت در سطح شهر: برای بسیاری از ما اتفاق افتاده که وسط خیابون باشیم و واقعا نیاز به اینترنت با کیفیت داشته باشیم. اخیرا با اومدا نسل سوم و چهارم موبایل این نیاز تا حدی مرتفع شده اما هنوز قیمت گران اینترنت نسل سه و  چهار جا رو برای این کار باز میگذاره. حالا شما به راحتی با config کردن pfsense اون رو به یه hotspot بسیار قوی تبدیل میکنی و با فروش اکانت اینترنت سود میبری. این کار تقریبا عملی ترین کار به حساب میاد. ممکله از نظر قانونی مشکلاتی وجود داشته باشه اما چیز خاصی به نظر نمیرسه. نیازمند یه سیستم اکانت ساختن و فروش اکانت هست که من برای حل این مشکل فاز اول رو نصب و راه‌اندازی این ایده در کنار کافی نت ها میدونم. یعنی کافی نت‌ها عامل فروش هستند و شما سیستم پورسانت اونها رو میدی. ایراد این ایده نیاز هماهنگی و همکاری با بخش‌های زیادی هست. همچنین سرمایه گذاری اولیه زیادی رو هم میطلبه. همچنین بازارش یکم نا آشناست یعنی اینکه معمولم نیست که واقعا این نیاز وجود داره یا نه.
  4. خاص منظوره کردن این سیستم مخصوص کافی شاپ‌ها، رستوران‌ها و هتل‌ها: الان وضعیت سرویس اینرنت مجانی کافی‌شاپ ها و رستوران‌ها خیلی داغونه در این حد که من تا بحال نتونستم از اینترنتشون به درستی استفاده کنم. واسه اونها ممکنه ارائه خدمات قابل اعتماد ارزشمند باشه. این کار هم بسیار به عملیاتی بودن نزدیکه اما مشکلش نیاز به سرمایه گذاری بالا و پشتیبانی زیاد هست
  5. راه اندازی سیستم accounting ساده روی این سیستم و استفاده از اشتراکی از اینترنت در ساختمان‌های بزرگ یا شرکت‌ها. در این ساختمان‌ها معمولا آدم‌هایی هستن که نمیخوان اینترنت داشته باشن و دوست دارن به اندازه مصرفشون پول بدن که میشه با استفاده از pfSense پیاده‌سازی شه. همچنین در شرکت‌ها معمولا حجم افراد محدود بوده و نباید بیشتر از یک حد در روز از اینترنت استفاده کنن. که با این سیستم قابل پیاده‌سازی هست.

این‌های به نظرم عملیاتی‌ترین ایده‌ها بود اما به علت تعدد پکیجهای این سیستم عملامیشه کارهای بسیار دیگه‌ای ازش استفاده کرد. مثلا استفاده به عنوان loadbalancer بین چند اینترنت، استفاده به عنوان cache سرور با استفاده از squid. اما این ایده‌ها خیلی خام هستن ونیاز به پختن زیادی دارن.

همین

اندازه گیری ترافیک مصرفی کاربران در pfsense

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

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

پیش‌نیازها

پیش‌نیازها به شرح زی هست:

  1. مهمترین پیش‌نیاز برای راه‌اندازی این سیستم یه کامپیوتر هست که بتونه بصورت ۲۴ ساعته روشن باشه
  2. دومین ویژگی اینه که اون کامپیوتر یا دوتا کارت شبکه داشته باشه یا اونقدر قوی باشه که بشه روش ماشین مجازی اجرا کرد
  3. حداقل هارد مورد نیاز ۱ گیگ هست
  4. حداقل رم مورد نیاز ۲۵۶ مگ هست

نصب pfSense

روند اجرای مرحله به مرحله به صورت زیره:

  1. اول تنظیمات مودمتون رو عوض کنید و dhcp اون رو خاموش کنید. فرض میکنم که آی پی مودم ۱۹۲٫۱۶۸٫۱٫۱/۲۴ هست. البته برای راحت‌تر بودن میتونید تنظیمات رو ۱۹۲٫۱۶۸٫۱٫۱/۱۶ بدید.
  2. فرض میکنم که رنج آدرس جدیدی که قرار pfsense به کاربرها بده ۱۹۲٫۱۶۸٫۲٫۰/۲۴ هست.
  3. آدرس کامپیوتری که برای پیکربندی قراره استفاده بشه رو ۱۹۲٫۱۶۸٫۲٫۵۰/۱۶ بدید که همزمان بتونید هم مودم رو ببینید هم pfsense
  4. حالا شروع به نصب pfsense روی سیستم اصلی کنید. نصب خیلی راحته در حد next زدن فقط حواستون باشه که در هنگام نصب اطلاعات هاردتون رو از دست ندید.
  5. مهمترین قسمت بعد از نصب انتخاب درست کارتهای شبکه است. یعنی اینکه کدوم کارت شبکه به عنوان LAN و کدوم کارت شبکه به عنوان WAN استفاده بشه. منظور از WAN اون کارت شبکه است که قراره ازش اینترنت بگیره و منظور از LAN هم شبکه داخلیه. اینجا فرض من اینه که هردوی اونها به یک سوئیچ وصل میشن پس فقط مهمه که درست کانفیگ بشه
  6. قدم بعد تخصیص IP به کارت شبکه wan هست. از توی منویی که نشون داده شده گزینه ۲ رو انتخاب کنید و با انتخاب wan اول گرفتن IP رو از DHCP غیر فعال کنید آدرس اون رو مثلا مقدار ۱۹۲٫۱۶۸٫۱٫۱۰ بدید. مقدار subnet mask رو هم ۲۴ بدید و آدرس gateway رو هم مقدار ۱۹۲٫۱۶۸٫۱٫۱ که همون آدرس مودم هست بدید
    منوی اصلی pfsense
    تنظیم wan
  1. قدم بعد آدرس دادن به LAN هست که در این مرحله مثل مرحله قبل عمل میکنید و آدرس رو ۱۹۲٫۱۶۸٫۲٫۱ میدید با subnet mask به مقدار ۲۴ بدون gateway

بعد از این عمل پیکربندی از طریق وب قابل انجامه و آدرس اون https://192.168.2.1 هست.

اندازه گیری ترافیک

بعد از راه‌اندازی نوبت به اندازه گیری ترافیک هست. راه‌های مختلفی وجود داره اما من ساده ترین راه رو توضیح میدم. البته اگه عمری بود راه‌های دیگه رو هم توضیح میدم.

  1. مرحله اول پیکربندی DHCP هست. برای اینکار به منوی services->dhcp server میریم
    03_pfsense_dhcp_server
  2. روی lan کلیک میکنیم
  3. اگه dhcp غیر فعاله اون رو فعال میکنیم.
    04_pfsense_dhcp_server_config
  4. رنج آی پی رو درست میکنیم
  5. و مهمتر از همه برای کسایی که توی خونه هستن توی قسمت DHCP static mapping یه entry اضافه میکنیم و به mac اونها یه آی پی اختصاص میدیم
    04_pfsense_dhcp_server_static
  6. بعد از اینکار میریم به منوی system->packages
  7. به بخش available packages میریم
  8. در این بخش پکیج bandwidthd رو نصب میکنیم
  9. بعد از نصب توی منو services->bandwidthd میریم و این پکیج رو برای LAN فعال میکنیم.
  10. دوتا گزینه output_cdf و recover_cdf رو تیک میزنیم که اطلاعات با reset شدن سیستم از دست نره
    05_pfsense_bandwidthd
  11. تغییرات رو ذخیره میکنیم
  12. بایستی بگذارید سیستم یه چند دقیقه‌ای کار کنه. بعد از قسمت access bandwidthd میتونید نمودارهای ساعتی هفتگی و ماهیانه رو ببینید.

با این کار بصورت ساده میتونید ببینید هر کسی در ساعت گذشته، هفته گذشته و ماه گذشته حتی سال گذشته چقدر مصرف داشته.

همین

لذت برنامه نویسی: جای خالی Continuous Integration

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

این هفته از نظر کاری بسیار شلوغ بوده من و دوستانم سعی میکردیم که یه پروژه که به زبان C++ نوشته شده بود رو تحویل بدیم. اولا که بسیار تجربه لذت بخشی بود. هم چیزهای جدید یاد گرفتیم هم اینکه بالاخره کاری انجام دادیم. اما یه چیزایی توی این هفت کلی اذیت کرد.

  • یکیش این بود که با توجه به اینکه توسعه دهنده‌ها توی محیط‌های متفاوتی برنامه می‌نوشتن، اینکه کدشون واقعا روی سیستم عملیاتی کار کنه همیشه سوال بود و زمان قابل توجهی حدودا ۱۰ درصد زمان توسعه برای تست این موضوع به کار میرفت. سیستم عملیاتی قرار بود یه Ubuntu server 14.04 باشه و سیستم من یک fedora 20 و سیستم دوستانم هم فکر کنم ubuntu desktop و یا debian باشه.
  • دومیش این بود که خب حالا کد آماده شده و موقع تحویل رسیده، روند استاندارد deploy چیه؟ چطور اولا کد پکیج بشه؟ طبق چه روند کد روی سیستم نهایی کار کنه؟
  • سومیش هم این بود که مستندات پروژه چطور تحویل داده بشه. منظور از مستندات الزاما مستندات توی کد که معمولا توسط doxygen درون کد گذاشته میشه نیست. مثلا مستند مربوط به نحوه deploy کردن یا آماده کردن مستند مربوط به پایگاه داده. اینها مستندات عملیاتی هستن نه مستندات زمان توسعه.

خب خیلی خلاصه بخوام بگم من به نظرم حضور یه سیستم Continuous Integration میتونه برخی از این مشکلات رو حل کنه. این سیستم‌ها معمولا اینجوری هستن که کدهای شما رو که فرض میشه توی یک repository هستن دانلود میکنن و اونها رو کامپایل کرده و روی باینری تست‌های توسعه داده شده رو اجرا میکنن. تهش اگه موفقیت آمیز بود میتونن یه کد رو منتشر یا deploy کنن و در صورت عدم موفقیت خبررسانی کنن. خب حالا این سیستم چه مشکلاتی رو حل میکنه

  • کد رو توی محیط شبیه محیط عملیاتی کامپایل و تست میکنن که به نظر من سربار ۱۰ درصد  توسعه در محیط‌های مختلف رو میتونن به ۴ یا ۵ درصد کاهش بدن
  • احتمالا میتونه روند استاندارد deploy تعریف کنه. من الان خیلی مطمئن نیستم که این رو میشه تعریف کرد یا نه. اما با ابزاری شبه ansible یا chef میشه این روند رو بصورت استاندارد تعریف کرد
  • مشکل پکیج کردن رو بصورت کامل حل میکنه. چون من دیدم پروژه‌های زیادی الان دارن از این ابزارها واسه release نهایی استفاده میکنن.
  • این سیستم میتونی توی روندی که برای package کردن استفاده میکنه مستندات ثانویه روهم از فرمتی مثلا markdown به فرمت مستندات نهایی تبدیل کنه.

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

همین

پ.ن. البته میشه یه بخش از این مشکلات رو هم با استفاده از docker حل کرد اما من در این پروژه به دلایل زیادی نمی‌خوام و نمی‌تونم از docker استفاده کنم.

همه ایده‌های من: سرور سرگمی خانگی

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

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

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

  • امکان 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 استفاده کرد. این امر باعث میشه هزینه توسعه به حد یک سوم کاهش پیدا کنه اما دو تا بدی داره. اولا اینکه این سیستم‌ها معمولا  نسخه مخصوص یه برد ارزان قیمت مثل رزبری پای ندارن. دوم اینکه یادگرفتن یه سیستم که توسعه داده شده کار سختیه و روند نگهداری سیستم رو در دراز مدت کم میکنه.

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

همین!

همه ایده های من: سرآغاز

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

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

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

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

ممکنه بپرسید چرا من ایده‌هام رو منتشر میکنم؟

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

ممکنه بپرسید حالا چرا ایده‌ها رو بصورت آزاد منتشر میکنی؟ چرا برای ایده‌هات هزینه‌ای دریافت نمی‌کنی؟

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

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

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

همین!

کار با kvm بجای virtualbox

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

من سال‌هاست که به لینوکس مهاجرت کردم و روی سیستم اصلیم تنهای یک لینوکس دارم. اما بخاطر موارد متعددی همیشه مجبور بودم یه ماشین مجازی ویندوزی داشته باشم. مهمترین استفاده این ماشین مجازی اجرای office هست. امیدوارم بهم پیشنهاد نکنید که از wine یا play on linux و یا چیزای دیگه برای اجرای office استفاده کنم یا حتی بگید برم سراغ latex به این دلیل که از نظر من نگهداری windows emulator ها سخته و این سیستم ها معمولا یه باگ‌هایی دارن که کار به مشکل بر میخوره، همچنین استفاده از latex امکان collaboration یا همون همکاری روی مستندات رو از بین میبره. از liberoffice هم بخاطر به هم ریختگی متون در نسخه‌های مختلف نمیشه استفاده کرد و اگه تا بحال در دنیای واقعی با آدم‌های مختلف و متفاوت کار کرده باشید میدونید که حاضر نیستن office رو رها کنن.

همچنین واسه موارد خاص نیاز داشتم که، از مجازی سازی استفاده کنم که  امکان اتصال usb به ماشین مجازی رو داشته باشه. به همین خاطر اولین انتخاب من همیشه virtualBox بود. virtualBox مجازی ساز بسیار با کیفیت وخوبیه اما مشکل اساسیش اینه که ما رو تحریم کرده. یعنی نصب کردن و اجراش کار هر کس نیست و معمولا نیاز به جنگولک  بازی‌های بسیاری داره و این از نظر من یعنی سختی نگهداری. من از kvm هم برای حالت‌هایی که نیاز به اتصال سخت افزار خاصی ندارن استفاده می‌کردم اما به علت اینکه virtaulbox همه نیازهای من رو پوشش میداده کم کم دیگه از kvm استفاده نکردم.

تا اینکه چند شب قبل به ذهنم رسید که دوباره یه سری به  kvm بزنم اما این دفعه در کمال ناباوری دیدم که اوضاع خیلی بهتر شده. با تشکر از یه پروژه به اسم spice کلی از مشکلات من حل شده. اول اینکه کارت گرافیکی خاصی نصب میشه و اون کارت امکان تغییر اندازه اتوماتیک رزولوشن صفحه با سایز ویندوزی که اون رو نشون میده، رو فراهم میکنه. دوم اینکه یه چیزی به اسم usb redirector اضافه شده که همون حرکتی که من دوست داشتم یعنی اتصال یه usb رو هم انجام میده نکته قابل توجه هم اینه که virtualbox از usb3 پشتیبانی نمیکنه اما اینجا پشتیبانی انجام میشه. هنوز نتونستم اون ویژگی virtualbox که باهاش یک فولدر رو بین ماشین‌ها به اشتراک میگذاره راه بندازم اما به نظرم همین‌ها کافی که دردسر نصب virtualbox رو بیخیال بشم و برم کاملا سراغ kvm.

همین!

غواصی در اعماق: سیستم فایل Copy-on-write

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

سیستم فایل‌ها ویژگی‌ها و امکاناتی دارند که اگه به درستی استفاده بشن می‌تونن کارایی کل سیستم رو بالا ببرن. مثلا من خودم امتحان کردم و روی فلشم از سیستم فایل btrfs استفاده کردم و دیدم که سرعت نوشتن و خوندن از روش به طرز چشمگیری اضافه شده. یکی از ویژگی‌های سیستم فایل‌های مدرن مثل zfs و همین btrfs امکان copy on write هست. امروز سعی میکنم یکم در مورد این ویژگی توضیح بدم.

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

  • امکان گرفتن snapshot: یعنی شما به سیستم فایل میگی این قطعه از تاریخچه رو نگهدار و به هیچ وجه از بین نبرش حتی اگه جا کم داشته باشی
  • استفاده در مموری مجازی سیستم عامل: وقتی یه پروسس کپی خودش رومیسازه نیاز به کپی کردن تمام حافظه نیست. تنها بخش‌هایی که تغییر میکنن توی یه بخش جدید حافظه ایجاد میشه.
  • در سیستم فایل‌های مرتبط با ماشین‌های مجازی از این تکنولوژی استفاده میشه. یعنی شما هارد ماشین مجازی رو میسازید و بهش فضا اختصاص نمی‌دید و هنگام نیاز اون فضا اختصاص داده میشه
  • در این سیستم ‌های انتقال backup ها بصورت incremental امکان پذیره و شما فقط تغییرات رو نسبت به قبل انتقال میدید.

لیست فایل سیستم‌هایی که من میشناسم و. از این ویژگی پشتیبانی می‌کنن اینا هستن

امیدوارم به درد کسی بخوره

همین!

به خودتان چه عنوانی می‌دهید

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

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

حالا نکته اساسی که وجود داره اینه که من به شخصه در راستای استفاده از توانایی‌هام در خصوص در آوردن در آمد با یه مشکل مواجه هستم که سعی میکنم توی این پست ازش بنویسم. اگه بخوام بصورت خلاصه موضوع رو بگم اینه که من از خودم میپرس «عنوان من چیه»؟ یعنی چی؟ خب جواب آسون این سوال اینه که من یک «کار آفرینم» اما به نظر من این جواب درست نیست. ممکنه یه سری بگن من «مبلغ تکنولوژی» هستم یعنی کسی که چیزاهای مختلف دنیای تکنولوژی رو بر میداره و چیزای جدیدی میسازه و یا حتی آینده پردازی میکنه و پیش بینی میکنه واز این حرفا. اما شما خواه نا خواه برای راه‌اندازی کسب و کارت بایستی خودت رو معرفی کنی. دو م اینکه با انتخاب یک کسب و کار یک  برچسب هم به خودت زدی یعنی اگه رفتی و ماشین مجازی فروختی شما یک sysadmin هستی. اگه یه پروژه نرم افزاری انجام دادی شما یک مهندس نرم افزار هستی. اگه طراحی وب کردی  شما یک طراح وب هستی. این ایرادی نداره که شما برچسب داشته باشی اما بایستی به این موضوع هم توجه کنی که داشتن برچسب‌های زیاد معمولا باعث خراب شدن تمام کسب و کارهای شما میشه و شما یه آدم «همه کاره هیچ کاره» معرفی میشی.

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

این صورت مساله بود. در مورد شخص من مشکل اینه که من با توجه به علاقه‌مندی شخصیم به پراکنده‌گی خیلی محتمله که این اتفاق برام بیفته و همین موضوع باعث شده که خیلی وقت‌ها نتونم یا نخوام که برخی از توانایی‌هام رو تبدیل به یه کسب و کار بکنم و این به نظرم یه عیبه. چون از قدیم و ندیم گفتن که «کار که عار نیست».  حالا باید سعی کنم که مشکل رو کنار بگذارم تا ببینم میتونم قدم‌های مهمتری در راستای کار آفرینی بردارم یا نه؟ این پست هم بیشتر مطرح کردن یه صورت سواله نه پیدا کردن راه‌حل برای اون.

همچنین مورد بعدی که وجود داره اینه که اگه من یک عنوان رو بپذیرم راحت‌تر می‌تونم روی اون سرمایه گذاری کنم و وقت زمان بیشتری روی موضوع بذارم. این باعث میشه که زودتر هم کسب و کارم رو بصورت اولیه راه‌اندازی کنم و ببینم که کسب و کارم جایی برای موفق شدن داره یا نه؟

همین.