Jan 242018
 

قرار است برای ترم آینده درس بهینه‌سازی را تحت عنوان «مفاهیم پیشرفته هوش مصنوعی» ارایه کنم. سیلابس اولیه درس را می‌توانید از اینجا پیدا کنید. البته چون بار اولی است که درس ارایه می‌شود، متناسب با ترکیب دانشجویان و غیر، احتمالا بخشی از موارد نوشته شده پوشش داده خواهند شد.

 

 Posted by at 11:53 am
Dec 072017
 

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

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

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

جامعه کنونی ما مشکلات بسیار زیادی دارد. ما که از حل این همه مسئله خسته شده‌ایم، در عمل بی‌خیال مواجه شدن با اکثر آن‌ها شده‌ایم. درباره این مشکلات صحبت نمی‌کنیم با این امید که آرامش ظاهری‌مان را مشوش نکنند. قافلیم از اینکه این «سکوت جمعی»، مشکلات و مسائل‌مان را حل نمی‌کند. بلکه شرایط را وخیم‌تر و انرژیِ چالش‌ها را چند برابر می‌کند.

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

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

 Posted by at 7:06 pm
Nov 262017
 

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

 Posted by at 12:57 pm
Oct 292017
 

آدم‌های اطراف‌مان گنج‌های زندگی‌مان هستند؛ اگر بدانیم!

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

 Posted by at 6:26 pm
Sep 252017
 

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

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

 Posted by at 10:36 pm
Aug 222017
 

قرار بود درباره سرور خانگی (home server) مطلبی بنویسم. بالاخره هرکسی سرگرمی‌هایی دارد و یکی از سرگرمی‌های من هم راه انداختن یک سرور خانگی شده است. اولین تجربه در این مورد برمی‌گردد به اواخر دوره ارشد که یک embedded board خریده بودم که سی‌پی‌یوی آن ARM بود و یک FPGA شرکت آلترا هم کنارش گذاشته بودند. قصد داشتم از این بورد به عنوان یک روتر استفاده کنم ولی چون درایورهایش باگ داشتند بعد از مدتی بی‌خیال کار کردن با آن شدم. اثر این تجربه و زمانی که در این مدت صرف کرده بودم آنقدر عمیق بود که احساس می‌کردم واقعیت و دنیای واقعی هیچوقت کامل نیستند و شروع کردم این عدم کمال را در دنیای مجرد و تئوری جستجو کنم. همین شد که با وجود اینکه از کودکی تا آن موقع علائقم بیشتر جنبه مهندسی داشتند، ولی تز دکترایم را کاملا در زمینه تئوری برداشتم و این جاذبه دنیای تئوری و کمالی که راحت‌تر می‌شود به آن رسید، هنوز هم با من است!

حالا آن ماجرا بماند برای بعد. برگردم به موضوع سرور خانگی. حدود یک‌سال و نیم تا دو سال پیش باید بوده باشد که دوباره تصمیم گرفتم با یک بورد رزبری‌پای (Raspberry Pi) که طراحی یک شرکت انگلیسی‌ست و اندازه و قیمت مناسبی دارد یک فایل‌سرور جمع‌وجور راه ‌بیاندازم. سی‌پی‌یو این برد هم ARM است ولی خیلی قوی‌تر از سی‌پی‌یو برد اول است (اگر اشتباه نکنم کلاک آن حدود پنج برابر کلاک سی‌پی‌یو قبلی‌ست و به جای یک هسته، چهار هسته دارد). نسخه دبین (Debian) لینوکسی که برایش سفارشی شده (Raspbian) هم خیلی خوب و پایدار از آب در آمده است. اما خیلی زود محدودیت‌های این برد ادامه کار را سخت کرد. من می‌خواستم برای اطمینان بیشتر حداقل دو هارد را برای سرور فایل به صورت RAID-1 پیکربندی کنم ولی بورد رزبری‌پای پورت ساتا (SATA) برای اتصال هاردها ندارد و پورت‌های یو‌اس‌بی آن هم با یکدیگر مالتیپلکس (multiplex) شده‌اند که در نتیجه آن، کارایی انتقال اطلاعات از/به دیسک‌ها به شدت افت می‌کند. قدرت سی‌پی‌یو آن هم آنقدر زیاد نیست که بشود چندین سرور را بر روی آن بالا آورد. به این ترتیب بعد از مدتی جستجو در اینترنت و بازار رضا و … بالاخره یک مادربورد Mini-ITX (که نسبت به اندازه مادربوردهای معمولی کوچکتر هستند) با سی‌پی‌یو J1900 اینتل پیدا کردم که چهار هسته دارد و تا هشت گیگابایت حافظه را پشتیبانی می‌کند. توان مصرفی J1900 هم خیلی مناسب است، چیزی در حدود ۱۰ وات. در مورد منبع تغذیه و نحوه راه‌اندازی بورد در ادامه بیشتر صحبت می‌کنم.

قبل از آن باید به دو نرم‌افزار اشاره کنم که به نظرم مهم هستند. اولی Kernel-based Virtual Machine است که یک پیاده‌سازی مجازی‌سازی (مانند Virtual box یا VMware) در خود لینوکس است که خیلی به جداکردن سرویس‌های مختلف بر روی یک سرور کمک می‌کند و فرایند تست، به‌روزرسانی و نگهداری را تسهیل می‌کند. دومین نرم‌افزار هم pfSense است که یک روتر/دیوار آتش (Router/Firewall) متن باز است و در حد خودش امکانات زیادی دارد. در ابتدای کار یک نسخه از pfSense را توسط KVM به عنوان یک ماشین مجازی اجرا و به عنوان دیوارآتش استفاده می‌کردم. بعدتر یک بورد Mini-ITX جدا با همان سی‌پی‌یو J1900 و چهار پورت شبکه برای این کار گرفتم تا برای امنیت و قابلیت اطمینان بیشتر دیوار آتش و سرور اصلی از یکدیگر جدا باشند.

با کلی سعی و خطا و پرس‌و‌جو، بالاخره یک کیس Green پیدا کردم و توانستم دو تا برد را همزمان در آن جا بدهم. برای pfSense هارد ۲/۵ اینچی قبلی لپتاپم را استفاده کردم. برای سیستم‌عامل سرور اصلی هم اول یک هارد ۲/۵ اینچی دیگر گرفته بودم ولی بعدتر که یک SSD سامسونگ گرفتم کارایی سیستم خیلی بهتر شد (خصوصا برای سرور Zabbix که بعدتر به آن اشاره می‌کند). برای نگهداری و پشتیبانی فایل‌ها هم دو هارد ۳/۵ اینچی را به صورت نرم‌افزاری با هم RAID-1 کردم (RAID-1  برای افزایش اطمینان بیشتر، دو نسخه یکسان از سیستم فایل‌ها را بر روی دو هارد نگه می‌دارد).

تا اینجای کار خیلی هم خوب بود! فقط یک مشکل بزرگ وجود داشت و آن هم این که در ایران قطعی‌های کوتاه برق (مثلا در حد یک تا چند ثانیه) زیاد داریم و همین قطعی‌ها در بهترین حالت می‌توانند سازگاری اطلاعات فایل‌ها و دیتابیس‌ها را بر روی دیسک‌ها خراب کنند. در حالت شدیدتر آن، ممکن است لازم شود دیسک‌ها فرمت شوند و سیستم‌عامل دوباره نصب شود و غیره. به هر حال برای حل کردن این مشکل می‌توان از UPS استفاده کرد. ولی یو‌پی‌اس‌ها عموما وسایل گرانی هستند، خصوصا اگر بخواهیم که برای مدت طولانی‌ای، مثلا تا ده ساعت، کار کنند (چون قطعی‌های طولانی هم کم نداریم). به همین دلیل یک راه حل ساده‌تر پیدا کردم. شرکت Meanwell که در زمینه منابع تغذیه سویچینگ کار می‌کند، مدلی از منبع تغذیه را تولید می‌کند که عملکرد UPS هم دارد (برای اطلاعات بیشتر مدل PSC-100AC را ببینید). البته خروجی این منبع تغذیه ۲۲۰ ولت نیست، بلکه تقریبا ۱۲ ولت است. با استفاده از یک باطری ۱۸ آمپر-ساعت که برای یوپی‌اس‌ها طراحی شده است و استفاده مناسب از ماژول‌های افزاینده و کاهنده ولتاژ و ماژول منبع تغذیه picoPSU می‌توان مادربردها و سی‌پی‌یو‌های کم‌مصرف را فقط با ولتاژ ۱۲ ولت هم راه انداخت. با پیکربندی‌ای که در بالا توضیح دادم، کل سیستم تا حدود ۱۰ ساعت می‌تواند بدون برق روشن باشد. امروز که نگاه کردم روتر pfSense خانه بیش از ۲۴۰ روز است که بدون خاموش شدن کار کرده است. سرور اصلی هم بیش از ۱۲۵ روز است که خاموش نشده است. مدت زمان روشن بودن می‌توانست خیلی بیشتر از این‌ها باشد، ولی به علت تغییرات سخت‌افزاری یا به‌روز رسانی نرم‌افزاری لازم بوده  که سرور و روتر را ری‌استارت کنم.

از اینجای کار به بعد، اینکه چه سرویسی بر روی سرور اجرا شود به نیازها و خلاقیت کاربر بستگی دارد. همانطور که بالا گفتم، سرویس‌های مختلف را بر روی ماشین‌های مجازی جداگانه اجرا می‌کنم. این کار باعث می‌شود عملا مسایل مربوط به سیستم عامل اصلی از هریک از ماشین‌های مجازی جدا شود. به همین دلیل عملیات به‌روزرسانی، تهیه نسخه پشتیبان، تست کردن پیکربندی جدید و غیره با سهولت و سرعت بسیار بیشتری انجام می‌شود. به عنوان مثال در این مدت سیستم عامل سرور اصلی از Ubuntu به CentOS به Debian و … تغییر کرده است. ولی ماشین‌های مجازی اصلی در طول این مدت تغییر نکرده‌اند و فقط از یک سیستم به سیستم دیگر منتقل شده‌اند.

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

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

اگر مثل من مجبورید از اینترنت بی‌سیم و موبایل و … استفاده کنید که خلاصه آی‌پی ثابت و جهانی ندارید، برای وصل شدن به سرورتان از خارج از محل آن با مشکل مواجه می‌شوید. یک راه‌حلی که می‌شود از آن استفاده کرد، اگر جای دیگر و برای کاری دیگر سروری دارید که آی‌پی ثابت دارد و شما دسترسی SSH از راه دور به آن دارید، می‌توانید از تکنیک Reverse SSH Tunneling استفاده کنید که با یک گوگل کردن ساده و مقداری man page خواندن می‌توانید به راحتی توضیحاتی درباره آن پیدا کنید. فقط چون احتمالا اینترنت به کرات ممکن است قطع شود دستور autossh خیلی به دردتان خواهد خورد.

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

در ادامه زمان ping یکی از سرورهای DNS گوگل را در یک روز خوب و یک روز نه چندان خوب برای اینترنت موبایل می‌بینید. در روزهای بد هم که کلا اینترنت قطع می‌شود!

 

پی‌نوشت: شاید بعدتر اگر نکته‌ جدیدی به ذهنم رسید به این نوشته اضافه کنم.

 Posted by at 5:41 pm
Jul 272017
 

زندگی روزمره، زندگی تکراری هر روزه، خیال‌بافی، قصه‌پردازی و داستان‌سرایی را از یادمان برده است. کاری که به نظر می‌آید اجدادمان در آن بیش از ما مهارت کسب کرده بودند. حال ما، مردم روزگار مدرن، در یک دور باطل افتاده‌ایم. به این ترتیب که با از دست دادن توانایی قصه‌پردازی، زندگی‌مان بی‌روح‌تر شده است، در نتیجهِ آن توانایی قصه‌پردازی‌مان را بیش از پیش از دست داده‌ایم. زندگیِ انسانْ بدونِ قصه‌پردازی، خیال‌بافی و داستان‌سرایی، زندگی تختِ بدونِ هیجانِ خاکستری‌ای است.

 Posted by at 1:18 pm
Jul 092017
 

شاید نوشتن علاجی باشد بر رنج‌های آدمی …، شاید!

 Posted by at 1:37 pm