نصب کی.دی.ای. ۴.۴ روی اوبونتوی ۹.۱۰

نسخه کاندیدای انتشار کی دی ای ۴.۴ هم عرضه شده. کی دی ای کم کم داره تبدیل می شه به یک میزکار واقعی و کامل و از اون بالاتر، پایدار. من که فعلا در چهل درصد مواقع در کی دی ای هستم، در چهل درصد مواقع توی گنوم و در بیست درصد بعدی توی بقیه چیزها. اما تصمیم گرفتم که کی.دی.ای. رو به ۴.۴ ارتقاء بدم. پس کافیه فایل etc/sources.list/ رو ادیت کنم و بنویسم:

deb http://ppa.launchpad.net/kubuntu-ppa/beta/ubuntu karmic main

و بعد

sudo apt-get update && sudo apt-get dist-upgrade

و در مورد من بعد از نصب ۲۵۰ مگ فایل، می‌تونم توی کی.دی.ای ۴.۴ لاگین کنم که امیدوارم باگ‌هاش کمتر و کمتر شده باشه. لاگین می‌کنم و سعی می‌کنم کمی با سیستم ور برم. دو تا اپلت کرش می‌کنه و بعد زوم آوت می‌کنم که ببینم در چه وضعی است که ..

هاها… زوم به تو رو پیدا نمی‌کنم و مجبور می‌شم به شکل آزمایشی یکبار دیگه زوم بیرون کنم ولی دیگه چاره ای نیست. یک کرش دیگه و پنل می‌یاد اون پایین و همه چی هم بالا است و هم پایین – البته همه چیز به جز نشون دهنده وضعیت رم و سی پی یو که می‌بینین چطور به سقف چسبیده چون پروسس kde4d به شکل دائمی داره ۹۵٪ سی پی یو رو اشغال می‌کنه (:‌ خوشبختانه لوگ‌آوت درست کار میکنه…

نتیجه: روی دستگاه اصلی سراغ نسخه‌های پیش از انتشار اصلی (اعم از آلفا، بتا، RC و …) نرین، بخصوص توی برنامه‌هایی که نسخه‌های اصلی شون هم هنوز پایدار نشده (:

نکته مهم: به کامنت‌های اول و دوم توجه کنید!

رفع مشکل سال ۲۰۱۰ تقویم جلالی گنوم

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

حالا از سال ۲۰۱۰، یک باگ بانمک توی برنامه پیدا شده و اپلت یک روز از تاریخ واقعی جلوتر است. راه حل ساده است.

۱) برین سایت مولا و آخرین نسخه رو دانلود کنید

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


jadi@japtop:~/Desktop/jalali-calendar-1.6.9$ sudo make install

[sudo] password for jadi: inampasswordeman

mkdir -p /usr/share/jalali-calendar

mkdir -p /usr/share/jalali-calendar/date

mkdir -p /usr/lib//bonobo/servers

install -p -m644 COPYING /usr/share/jalali-calendar/.

install -p -m755 src/*.py /usr/share/jalali-calendar/.

install -p -m644 src/138*.xml /usr/share/jalali-calendar/.

install -p -m644 src/*.glade /usr/share/jalali-calendar/.

install -p -m644 src/GNOME_PyJcalendarApplet.server //usr/lib//bonobo/servers

install -p -m644 pixmaps/date/*.png /usr/share/jalali-calendar/date/.

install -p -m644 pixmaps/*.png /usr/share/jalali-calendar/.

chmod +x /usr/share/jalali-calendar/jcalendar.py

jadi@japtop:~/Desktop/jalali-calendar-1.6.9$ ps -ef | grep jalali

jadi 13486 1 1 14:39 ? 00:00:00 python /usr/share/jalali-calendar/jcalendar.py –oaf-activate-iid=OAFIID:GNOME_PyJcalendarApplet_Factory –oaf-ior-fd=19

jadi 13496 13416 0 14:40 pts/4 00:00:00 grep jalali

jadi@japtop:~/Desktop/jalali-calendar-1.6.9$ kill 13486

دانلود کامل تمام آلبوم‌های گوگوش فقط با یک دستور گنو/لینوکس

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

wget -prl2 http://ganja2dl.com/Ganja2Music/Masoud/Full%20Albums/Googoosh/

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

توضیح: wget یک برنامه خودکار دانلود از شبکه است. ما اینجا بهش یک آدرس وب دادیم. با p بهش گفتیم که عکسها و آهنگ ها و … رو هم دانلود کنه. با r بهش گفتیم که بره توی دایرکتوری ها و فقط مسیر اول رو دانلود نکنه و متوقف بشه و با l2 هم بهش گفتیم فقط تا دو مرحله بره جلو. نهایت کار مثل یک جن است که بشینه روی همه لینک ها کلیک کنه و فایل ها رو ذخیره کنه. و بعد بره دایرکتوری بعدی و … ولی هیچ وقت بیشتر از دو مرحله از صفحه اول دور نشه.

چرا عاشق گنو/لینوکس هستم؟ چون سنگ‌ریزه‌های جذاب داره

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

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

2009-11-24 09:51:05 2008-11-24 09:51:05 a.INFO
2009-11-24 09:51:10 2008-11-24 09:51:10 b.INFO
2009-11-24 09:51:16 2008-11-24 09:51:16 c.INFO
2009-11-24 09:51:24 2008-11-24 09:51:24 d.INFO
2009-11-24 09:51:30 2008-11-24 09:51:30 e.INFO
2009-11-24 09:51:34 2008-11-24 09:51:34 f.INFO
2009-11-24 09:51:39 2008-11-24 09:51:39 g.INFO
2009-11-24 09:51:43 2008-11-24 09:51:43 h.INFO
2009-11-24 09:51:48 2008-11-24 09:51:48 i.INFO
2009-11-24 09:51:52 2008-11-24 09:51:52 j.INFO
2009-11-24 09:51:58 2008-11-24 09:51:58 k.INFO
2009-11-24 09:52:03 2008-11-24 09:52:03 l.INFO

نظر خودش این بود که باید یکی یکی کپی کنه و توی براوزر بازشون کنه تا ببینه صفحه ای می یاد یا نه. اما اینجا ما لینوکس رو داریم با دستورهای زیبایی مثل cut و xargs. من به سادگی این دستور رو می زنم:

jadi@jubun:/tmp$ cut -d’ ‘ -f 7 | xargs firefox

اول به دستور cut با آپشن d می گم که space رو به عنوان جدا کننده در نظر بگیره و با f بهش می‌گم که فیلد هفتم ر ومی‌خوام (چون یک جاهایی دو تا اسپیس هست که خودشون یک فیلد حساب می‌شن) . این دسور همه اسم دامین‌ها را برمی‌گردونه. بعد خروجی رو با یک | می‌فرستم به دستور بعدی. دستور بعدی xargs است که یک دستور جلوش می‌گیره (اینجا firefox) و همه ورودی‌ها رو پشتش ردیف می‌کنه. در واقع ترکیب این دو دستور مثل اینه که من تایپ کرده باشم firefox a.Info b.info c.info تا آخر. در واقع حالا با زدن اون دستور و کپی پیست ایمیل دوستم به عنوان ورودی، کل اون دامین‌ها در فایرفاکس باز می‌ش و من می‌تونم بگم کدومشون به یک سایت اشاره می‌کنن و کدوم‌ها نه.

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

بسته‌های نصب / به روز شده خود را به دیگران بدهید

یکی از قابلیت‌های جذاب لینوکس که من واقعا دوستش دارم اینه که

 توش می‌تونیم به دیگران کمک کنیم

 توش می‌تونیم از دیگران کمک بگیریم

 هر جزء سیستم عامل خود به خود آپدیت می شه (:

با اولی و دومی که به اندازه کافی آشنا هستیم (: در مورد سومی باید بگم که هر نرم‌افزار قابل قبولی در دنیا، در یک جایی ذخیره شده و لینوکس من دقیقا می‌دونه کجاست و چه نسخه‌ای است. هر برنامه‌ای که بخوام آپدیت کنم رو کافیه از یک برنامه Add/Remove پیدا کنم و کنارش تیک بزنم و Apply کنم. مثلا اگر همین الان بخوام یک خط کش کوچیک به سیستم اضافه کنم، کافیه بازش کنم، کنار KRuler که خط کش مورد علاقه‌ام است تیک بزم و اوکی کنم:

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

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

/var/cache/apt/archives

سخته؟ اصلا (: همه فایل‌هایی که تغییر می‌کنن مثل لاگ‌ها و اینجور چیزها توی var هستن (وریبل برنامه‌نویسی یادتونه؟). فایل‌هایی که به شکل موقت نگهداری شدن و در آینده به شکل خودکار حذف خواهند شد توی cache هستن و برنامه مدیر بسته‌های من apt. کافیه این فایل‌ها رو از روی کامپیوتر روی همین مسیر در کامپیوتر دیگه با لینوکس مشابه کپی کنیم و بعد apt یا رابط گرافیکی‌اش رو اجرا کنیم (: شکی نیست که برای کپی در این مسیر باید root یا مدیر سیستم باشید. در نیتجه فایل‌ها باید با دسترسی root کپی بشن. مثلا با چیزی مثل این:

sudo cp /media/usb/archives/* /var/cache/apt/archives/

گنو/لینوکس خوبه چون به شما امکان پیاده کردن ایده‌هاتون رو می‌ده

من مشغول ترجمه یک کتاب جدید هستم. فایل انگلیسی رو به شکل یک فایل متنی دارم و در فایل فارسی، ترجمه رو می‌نویسم. به جای اون کاغذی هم که سابقا لای کتاب‌های سنتی می‌ذاشتیم، پنج تا / می‌زنم (یعنی /////) تا نشون بدم که الان در کجای کتاب هستم.

هربار که کتاب رو باز می‌کنم، دنبال ///// ‌می‌گردم و می‌رسم به جایی که تا الان ترجمه کردم و بعد ترجمه رو جلو می‌برم و در آخر کار، یک ///// می‌ذارم سر جایی که الان هستم. در واقع علامت ///// همیشه به من نشون می ده که تا کجا ترجمه کرده‌ام.

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

قدم اول اینه که ببینم چه سهمی از کتاب رو ترجمه کردم. دستور wc (مخفف word count) رو دارم که می‌تونه خط‌ها و کلمات و حروف هر چیزی رو بشمره. پس می‌زنم wc -l english.txt و بهم می‌گه که کتاب ۸۷۵۰ خط است (توجه داریم که در بحث دیجیتال، خط یعنی پاراگراف). حالا باید ببینم علامت ///// در خط چندم است. دستور grep رو داریم که هر چیزی رو توی هر چیز دیگه‌ای می‌گرده. حتما یک سوویچ هم داره که شماره خط رو برمی‌گردونه. من این سوییچ رو حفظ نیستم پس مثل هر چیز دیگه‌ای تایپ می‌کنم man grep و یک راهنمای کامل می‌گیرم که توش نوشته سوییچ n شماره خط رو برمی‌گردونه. پس من می‌زنم grep -n “////” english.txt و می‌بینم که تا پاراگراف چند رو ترجمه کرده‌ام:


به من می‌گه که ۵۰۴ پاراگراف رو ترجمه کرده‌ام. حالا کافیه قسمت اول رو جدا کنم. دستور cut می تونه در یک متن ستون‌های مختلفی که با یک علامت از هم جدا شدن رو تشخیص بده. من می خوام جدا کننده ام : باشه (:d-) و فیلد اول رو می‌خوام (f1-). توی لینوکس مثل لگو، می‌شه دستورات رو با | به هم چسبوند. پس داریم:


زیبا نیست؟ در واقع من با یک خط، درآوردم که الان کجای ترجمه هستم. حالا کافیه این رو بچسبونم به دستوری مثل ploticus که از خط فرمان، نمودار می‌کشه. من هم این دستور رو بلد نبودم ولی یک جستجوی ساده در گوگل برای command line pie chart رسوندم به صفحه این دستور و یک مثال خیلی ساده ازش. حالا فقط کافیه من عددی که بالا به دست آوردم رو به همراه تعداد کل صفحات و عنوانی که می‌خوام در نمودار نشون داده بشه بریزم توی یک فایل. دستوراتی مثل اینها:

fdone=`grep -n “/////” /home/jadi/english.txt | cut -f1 -d:`
fdarsad=`expr $fdone / 87`
echo $fdarsad% done,$fdone,green > /tmp/translate.dat
edone=`expr 8750 – $fdone`
echo English,$edone,red >> /tmp/translate.dat

فایلی مثل این را تولید خواهند کرد:

5% done,504,green
English,8246,red

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

apt-get install ploticus

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

ploticus -prefab pie -png -o /home/jadi/public_html/translate.png data=/tmp/translate.dat delim=comma values=2 labels=1 colorfld=3 -scale 1 legend=yes

چه جذاب (: حالا نمودار درست شده:

قشنگ نیست؟‌ حالا کافیه به سیستم عامل بگم که این محاسبات رو هر روز ساعت ۴ صبح انجام بده. برای اینکار دستور crontab رو داریم که به سادگی می‌شه باهاش گفت که فلان مجموعه دستورات رو هر ۲۴ ساعت یکبار یا چهارشنبه ها صبح یا جمعه هایی که ۱۳ ام باشن یا حتی هر دقیقه در هر روز و … اجرا کنه. اون رو که بذارم (الان گذاشتم) هر روز یکبار نمودار بالا دیده خواهد شد (:

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

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

دستور at ساده و فوق العاده است. مثلا من می‌خواهم که فردا ساعت ۱۰ و ۱۰ دقیقه (که حتما شرکت هستم) پادکست بدون شک خوب رادیو خاموشی را گوش کنم. الان سعی کردم دانلود کنم ولی ۱۸ مگ بود و برای الان، زیاد. پس باید به کامپیوتر بگویم که فردا دانلودش کند و بعد از دانلود پخشش کند. در واقع من می می‌خواهم به سیستم عاملم بگویم که ساعت ۱۰:۱۰ فردا، فایل را دانلود کند و بعدش پخشش کند. فقط یک ترمینال باز می‌کنم و تایپ می‌کنم:

jadi@mac$ at 10:10
wget http://muzzyr.podomatic.com/enclosu…
mpg123 2008-11-30T12_28_19-08_00.mp3

و بعد هم Ctrl + D را می‌زنم و همه چیز مرتب است. ساعت ۱۰:۱۰ فردا صبح، کامپیوتر به شکل خودکار فایل را دانلود و بعد پخش خواهد کرد. دستور at توانایی‌های خیلی بیشتری هم دارد، حتی می‌توانم به آن بگویم که وقتی CPU بیکار بود، فلان دستور را اجرا کند و داستان‌های دیگر (:

شکی نیست که این قابلیت روی سیستم‌ عامل‌های گنو (مک و لینوکس و بی اس دی و …) وجود دارد و نکته این است که به شکل پیش فرض در مک فعال نیست. در مک باید دستی آن را فعال کنیم که البته ساده است:

jadi@mac$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

شوخی کوچک با کسانی که از اینترنت بی‌سیم شما استفاده می‌کنند

این روزها که همه با گذاشتن یک مودم بی‌سیم، مشغول به اشتراک گذاشتن اینترنت ADSLشان با WiFi هستند. مشکلی که اینجا پیش می‌آید این است که همسایه‌ها هم شروع می‌کنند به استفاده از اینترنت شما. دو راه حل وجود دارد: رمزگزاری wifi و شوخی کردن با آنان. این روش را این سایت توضیح داده و آرمین مداح همیشه عزیز برای من فرستاده که من هم به خاطر دوستی خوبمان، ترجمه‌اش کرده‌امم.

برای استفاده از این روش اینترنت شما باید از طریق کارت شبکه یک کامپیوتر لینوکسی، به اشتراک گذاشته شده باشد.

برای این شوخی اول باید شبکه را به دو قسمت تقسیم کنید. بخشی که خودتان استفاده می‌کنید و بخشی که همسایه‌ها از شما قرض می‌گیرند. اینکار را از طریق تنظیمات DHCP انجام خواهیم داد. در dhcpd.conf:

ddns-updates off;
ddns-update-style interim;
authoritative;

shared-network local {

       subnet *.*.*.* netmask 255.255.255.0 {
               range *.*.*.* *.*.*.*;
               option routers *.*.*.*;
               option subnet-mask 255.255.255.0;
               option domain-name "XXXXX";
               option domain-name-servers *.*.*.*;
               deny unknown-clients;

               host trusted1 {
                       hardware ethernet *:*:*:*:*:*;
                       fixed-address *.*.*.*;
               }
                }

       subnet 192.168.0.0 netmask 255.255.255.0 {
               range 192.168.0.2 192.168.0.10;
               option routers 192.168.0.1;
               option subnet-mask 255.255.255.0;
               option domain-name-servers 192.168.0.1;
               allow unknown-clients;

       }
}

به همین سادگی.حالا شبکه به دو رنج تقسیم شده که بعدا می‌شود هر کدام را مستقل کنترل کرد. مثلا

/sbin/iptables -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp -j DNAT —to-destination 64.111.96.38

ترافیک مهمان‌ها را به KittenWar خواهد فرستاد ولی این همه شوخی ما نیست. ما می‌توانیم تمام ترافیک مهمان‌ها را از یک پروکسی شفاف رد کنیم. پس اول squid را به عنوان پروکسی نصب می‌کنیم و بعد:

/sbin/iptables -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp -m tcp —dport 80 -j DNAT —to-destination 192.168.0.1

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

#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
while (<>) {
       chomp $_;
       if ($_ =~ /(.*.jpg)/i) {
               $url = $1;
               system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.jpg", "$url");
               system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.jpg");
               print "http://127.0.0.1/images/$pid-$count.jpgn";
       }
       elsif ($_ =~ /(.*.gif)/i) {
               $url = $1;
               system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.gif", "$url");
               system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.gif");
               print "http://127.0.0.1/images/$pid-$count.gifn";

       }
       else {
               print "$_n";;
       }
       $count++;
}

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


و البته چون روی GNU هستید، امکانات بی‌نهایت است. مثلا می‌ةوانید به جای برعکس کردن تصاویر، آن‌ها را محو کنید تا لینک سایت خودتان را بالا و زیر هر صفحه نمایش دهید (: حالا دیگر تنها چیزی که جلوی شما را خواهد گرفت، تخیلتان است.