یاد قدیم‌ و تاسف و خوشحالی توام

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

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

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

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

این برنامه‌ها هم با آمدن دولت احمدی‌نژاد کم‌کم دچار وقفه شد و در حال حاضر فقط بخشی از آن و آن‌هم به صورت حداقلی و به صورت فرمالیته در حال اجراست 🙁
برایم جالب بود که از چند سال پیش در مدارس غیرانتفاعی (!؟) طراز اول تهران درسی با نام پروژه ایجاد شده است (هر چند به دلیل اجباری بودن و عدم آشنایی مسوولین امر -در مدارس و آموزش پرورش- محملی برای کسب درآمد عده‌ای یا فخرفروشی مدارس به یکدیگر شده است)

امروز در راه از رادیو شنیدم که قرار است طرحی که نام آن را هوشمندسازی مدارس گذاشته‌اند تا دو سال دیگر در همه مدارس (؟!) اجرایی شود.

علی ای حال، غرض از این نوشته این بود که این نکته‌ها را گوشزد کنم:
۱. بسیاری از کارهایی که در زمان گذشته با اکراه یا مشکلات بسیار در مدارس به صورت خودجوش انجام می‌شده است بعد از مدتی تبدیل به یک حرکت فراگیر شده است.
۲. به نظر می‌رسد اثربخشی این فعالیت‌ها تا همگانی نشده و تبدیل به هدف نشده است بسیار بیشتر از زمانی است که این برنامه‌ها رسمی و همه‌گیر می‌شود
۳. کندی تحول در نظام آموزشی و مقاومت آن در مقابل تغییرات سد راه توسعه و کارایی نظام آموزش عمومی است.
۴. تغییرات از پایین به بالا بسیار موثرتر از تغییرات دستوری و از بالا به پایین است.
و …

حل مشکل ارتباط با اینترنت!

مدتی قبل یه مطلب گذاشته بودم در مورد اینکه با eeepcـم توی خونه مشکل دارم و اگه اندازه درخواست‌ها زیاد بشه اینترنتم کار نمی‌کنه.
نتیجه این مشکل این بود که مثلا بعد از وارد کردن رمز gmail وارد مرحله بعدی نمی‌شد یا اگه توی بلاگ می‌خواستم مطلب بزارم نمی‌شد و …
این مشکل باقی بود تا هفته پیش که رفتم تهران‌لاگ. اونجا این موضوع را با یکی از دوستان در میون گذاشتم و اون هم گفت یکی دیگه از دوستاش هم مشابه این مشکل را داشته و حلش کرده. قرار شد که برام بپرسه و خبر بده.
یکی دو روز بعد ایمیل زد و گفت مشکل از تنظیم mtu است.
اتفاقا همون روز یکی از دوستان همکار هم سر یه صحبتی گفت که POL اینطور مشکلی داره و باید تنظیم‌ mtu را عوض کنی. خودش عدد ۱۲۸۰ را پیشنهاد کرد (چیزی بود که خودش استفاده می‌کرد) و البته گفت با ping -s SIZE می‌شه این عدد را دقیق پیدا کرد.
شب که رفتم خونه اول با دستور ifconfig wlan0 mtu 1280 سعی کردم مشکل حل بشه. با اینکه mtu عوض شده بود اما به نظر می‌رسید مشکل باقیه. بنابراین رفتم داخل پنل کنترل مودم و از اونجا این مقدار که روی auto بود را آوردمش روی حالت دستی و عدد mtu را از 1490 که مقدار پیش‌فرض برای ارتباط‌های pppoe است را تغییرش دادم به 1280 و مشکل حل شد!
البته هنوز نفهمیدم این مشکل چطور بود که فقط توی linux دیده می‌شد اما توی ویندوز مشکل وجود نداشت! و چرا با تغییر mtu توی لینوکس حل نشد! احتمالا این مطلب مینونه کمک کنه. در این مطلب با استفاده از iptable مقدار mtu را در هنگام ایجاد ارتباط (بسته sync) به مقدار دلخواه کم یا زیاد می‌کند.

VirtualBox و مشکل با Symlink

این امکان اینجاد Symbolic Link توی لینوکس یه امکان خیلی خیلی عالی هست.
روی یکی از سیستم‌های شرکت که Debian نصب کردیم، اندازه‌های پارتیشن‌ها را بد تنظیم کرده بودیم و در نتیجه حجم پارتیشن root یا همون / دوست داشتنی کم بود.
بعد از نصب یه سری برنامه سیستم به مشکل برخورد. برای حل مشکل یکی از فولدرهای حجیم به نام usr را منتقل کردیم توی یه دیسک دیگه و symbolic link درست کردیم از / به اون یکی پارتیشنه. و بعد که همه چی اوکی بود، الان روی / به اندازه کافی فضای خالی داریم و همه چی خوب داره کار می‌کنه.

اما همیشه اوضاع به این خوبی نیست، معدود برنامه‌هایی پیدا می‌شوند که با این symblink نمی‌تونن کار کنند. VirtualBox محصول شرکت Oracle (شرکتی که این روزا داره محبوبیتش را بین لینوکسی‌ها از دست میده)، در نسخه ۳ باsymblinkسازگار بود. اما تو نسخه 4ش مشکل داره.
وقتی می‌خوای یه ماشین مجازی را روشن کنی یه پیام نامفهوم می‌ده که تهش نوشته:
failed to start machine. Error message: Failed to load VMMR0.r0 (VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED)
بعد از کلی جست و جو و خوندن VBOX.log ماشین مجازی، آخرش می‌فهمی که مشکل از این symbolic link فولدر usr/ است.
و هیچ کاری نمی‌تونی بکنی جز اینکه یه GPartEd زنده برداری و اندازه پارتیشن‌ها را عوض کنی یا اینکه برگردی سراغ همون نسخه ۳٫۲ که قبلا کار می‌کرده.

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

مشکل شناخت نام هاست در آپاچی

کسایی که وب‌کارند و کد وب می‌زننند زیاد پیش میاد که روی سیستم لوکال‌شون آپاچی، این وب سرویس محبوب را نصب کنند تا کارهاشون را بتونند تست کنند. خیلی وقت‌ها میشه که بعد از نصب آپاچی و موقع شروع به کار اون این پیام را می‌بینیم:apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName.
دلیلش چیه؟ دلیلش اینه که تنظیمات FDQN سیستم‌تون درست نیست و سیستم نمی‌تونه FDQN سیستم را اتوماتیک شناسایی کنه.

راه حلش چیه؟
۱. توی تنظیمات آپاچی بگین اسم کامل سرور Default چیه.
۲. تنظیمات FDQNت را درست کنید. در ساده‌ترین حالت برین توی فایل etc/hosts/ و جلوی 127.0.0.1 اسم کامل هاست‌تون (شامل اسم هاست و نام دامنه مثلا sadeq.localdomain) را اضافه کنید. دقت کنید که اسم کامل هاست حتما باید اولین اسم بعد از IP باشه!

مشکل‌های مشابه برای چه ابزارهای دیگه‌ای ممکنه رخ بده؟ Exim که به عنوان MTA پیشفرض در Debian استفاده می‌شه هم ممکنه همین مشکل را داشته باشه و موقع شروع به کار پیام بده که نمی‌تونه FDQN سیستم را شناسایی کنه. روش ۲م این مشکل را هم حل می‌کنه.

پی‌نوشت: FDQN چیه؟ FDQN مخفف Fully Qualified Domain Name است و بعضی وقت‌ها به عنوان نام مطلق هم بهش گفته می‌شه. این اسم نام هاست را به صورت یکتا در سلسه مراتب DNS سرورها مشخص می‌کنه (در اینترنت یا اینترانت). این نام از یه اسم هاست و یه دامنه تشکیل شده. (اسم دامنه می‌تونه تک بخشی مثلا localdomain یا چند بخشی مثلا sadeq.ir باشه)

تغییر اندازه پارتیشن دائمی در توزیع‌های زنده

یکی از چیزای خوب توی لینوکس امکان ساده درست کردن یه فلش قابل بوت و همراه داشتن اون برای استفاده‌های گوناگونه.
وقتی از فلش بوت می‌کنید سرعت دیسک زنده به نسخه‌های نصب شده خیلی نزدیک می‌شه و از همه مهمتر اینکه می‌تونید یه پارتیشن تعیین کنید که اطلاعات خاص شما (مثلا پوشه خانگی شما) روی اون ذخیره بشه و با هر بار بوت از روی اون فلش‌دیسک به اون اطلاعات دسترسی داشته باشید.
من هم با استفاده از ابزاری که در سایت پن‌درایو لینوکس( http://www.pendrivelinux.com ) معرفی می‌کنه و  ارائه می‌ده یه فلش بوت از روی دیسک نصب mint ساختم. موقع ساخت فقط ۱۲۴ مگ برای اون در نظر گرفتم. و حالا این فضا پر شده و حتی در روند عادی بوت اختلال ایجاد کرده.
اگه شما هم مثل من دچار مشکل شدید، اولین قدم اینه که موقع بوت پارامتر persist را از خط بوت حذف کنید. با اینکار انگار نه انگار که شما پارتیشن persist روی فلش‌مموری درست کردین. لینوکستون به صورت کاملا تمیز مثل زمانی که از روی سی‌دی بوت کردین بالا میاد.
یه راه دیگه هم هست و اون تغییر اندازه این پارتیشه. برای این کار اول با استفاده از دستور dd اندازه اون فایل را بزرگ می‌کنیم.
مثلا برای اینکه یک گیگ به فضای دیسک اضافه کنیم این دستور را وارد می‌کنیم:

% dd if=/dev/zero bs=1M count=1024 >> casper-rw

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

% resize2fs casper-rw

اجرای یک برنامه ویندوزی در لینوکس در پس‌زمینه

برای یک پروژه نیاز داشتیم که یه برنامه ویندوزی که خروجی کنسول داشت را توی لینوکس اجرا کنیم. مشکل این بود که وقتی برنامه را اجرا می‌کردی با وجودی که در پس‌زمینه کار می‌کرد اما به محض اینکه ارتباط sshای که دستور شروع اجرا برنامه را داده بود، بسته می‌شد. برنامه خطا می‌داد و می‌ترکید!
دو راه حل برای اینکار پیدا کردیم:
۱. اولین تجربه این بود که با استفاده از vnc یک محیط گرافیکی ایجاد کردیم و گفتیم که برنامه توی اون اجرا بشه! مشکل حل شد. توی محیط x که از طریق vnc باز شده بود. برنامه هم بعد از بستن ارتباط ssh کار می‌کرد.
۲.راه حل دوم این بود که از دستور nohup استفاده کنیم. برای اطلاعات بیشتر برین man دستور را بخونید! 🙂
اما برای روش اول (که حتی به درد نرم‌افزارهای عادی ویندوز هم قابل استفاده است) باید اول سرویس‌دهنده vnc نصب کنید:

$ apt-get install vnc4server

یه رمز برای اتصال به vnc تعیین کنید:

$ vncpasswd
Password:
Verify:
Password too long - only the first 8 characters will be used

بعد یه محیط x باهاش استارت کنید:

$ vnc4server
New 'sadeqnet:1 (sadeq)' desktop is sadeqnet:1

Creating default startup script /home/sadeq/.vnc/xstartup
Starting applications specified in /home/sadeq/.vnc/xstartup
Log file is /home/sadeq/.vnc/sadeqnet:1.log

حالا کافیه که بگید برنامه بره اون تو اجرا بشه:

$ DISPLAY="sadeqnet:1" wine explorer.exe &

تمام!

فعال و غیرفعال کردن کاربر در لینوکس

در صورتی که نیاز دارید دسترسی یک کاربر خاص به لینوکس را غیرفعال کنید کافی‌است دستور زیر را اجرا کنید:

passwd USERNAME -l

و برای فعال کردن مجدد کاربر می‌توانید دستور زیر را استفاده کنید:

passwd USERNAME -u

این دستور یک ! به ابتدای کلمه عبور کاربر مورد نظر در فایل /etc/shadow اضافه می‌‌کند یا آن را حذف می‌کند.

در صورتی که بخواهید این کار به صورت خودکار و در زمان‌های خاص انجام شود می‌توانید از crontab‌ یا at‌ استفاده کنید. crontab برای کارهای تکراری و at برای انجام کار در تاریخ/زمان مشخص!
به همین سادگی به همین خوشمزگی!