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

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

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

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

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

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

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

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

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

بازنویسی رنجنامه پیوست ۲۹

جشنواره لینوکس امیرکبیر: دو روز تزریق پنگوئن

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

خود خود لینوکس

جشنواره لینوکس امیرکبیر
جشنواره لینوکس امیرکبیر

راس ساعت ۹:۲۰ مراسم با بیست دقیقه تاخیر شروع شد و بعد از تشریفات همیشگی، بهادر بخشی استادیار دانشگاه امیرکبیر ارائه خود درباره تاریخچه لینوکس را شروع کرد. ارائه کاملی که جزئیات کمتر شنیده‌ شده‌ای را درباره پیدایش این سیستم عامل دوست داشتنی برای ما بازگو کرد و باعث شد چیزهای جدیدی درباره تولد این سیستم عامل و سیستم‌عامل‌های دیگر یاد بگیریم. به عقیده ایشان :«اگر قصد ادامه تحصیل در مقطع دکترای کامپیوتر را دارید حتما باید لینوکس بلد باشید.» آن لحظه این را در ذهنم مقایسه کردم با اینکه مدتها پیش یکی از دانشجوهای دکترای هوش مصنوعی‌ دانشگاه شاهرود از نصب سیستم عامل ویندوز عاجز بود و با خودم گفتم: البته که ظاهرا تعریف دکتر در این کشور چیز دیگری است!

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

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

خستگی

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

در این بخش، اول مفاهیم شبکه توضیح داده شد و سپس چندین ابزار پایه مانند route, traceroute , … معرفی شد و بعد کمی از ابزار برنامه نویسی scapy گفته شد و من دائم حسرت می‌خوردم که چرا موقع درس دادن این چیزها را به ما نگفتند که ما بفهمیم پشت این همه تئوری چه خوابیده است. بعد هم سعی کردیم که یک سرور DNS راه اندازی کنیم.

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

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

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

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

وبگاه جشنواره

بخوانید:

روز آزادی نرم‌افزار ، در حسرت یک همایش واقعی

گنو لینوکس را دوست دارم چون آموخت از تغییر نترسم

 

کارهایتان را کنار بگذارید وقت یادگیری برنامه نویسی است!

هر کسی در این دنیا باید یاد بگیره که چطور یک کامپیوتر رو برنامه‌ریزی کنه به خاطر اینکه این به تو میگه چطوری فکر کنی. – استیو جابز

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

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

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

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

و حالا بحث اصلی…

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

بدون اغراق این سایت یکی از بهترین سایت‌های آموزشی است که در تمام عمرم دیدم. تنها نکته‌ی منفی تعداد کم زبان‌های برنامه نویسی و تحت وب بودن آنهاست. اما یک استثنا هم وجود دارد: پایتون.

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

در پایتون همه چیز در یک خط نوشته می‌شود:

print("hello world!")

اما در جاوا:

public class Hello {
 public static void main(String[] args) {
 System.out.println("hello world!"); } }

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

پس کارهایتان را کنار بگذارید چون وقت یاد گرفتن یک زبان برنامه‌نویسی است.