بایگانی برچسب: s

چرا گنو/لینوکس برام جالبه ۳

اولین مساله، نکته کاملا به جایی است که دوست خوبم رضا در مطلب قبلی که درباره لینوکس نوشته بودم بهش اشاره کرده بود (سهیل هم نکته دیگه ای رو تذکر داده بود در جواب):

لینوکس هسته سیستم عامل است و گنو (GNU) مجموعه ای ابزارهای دور و بر اون پس درست تر اینه که به جای لینوکس خالی بگیم گنو / لینوکس. منطقا هم هر جا من بگم لینوکس منظورم گنو لینوکس است مگه اینکه تاکید خاصی بکنم که منظورم هسته سیستم عامل (یا همون Kernel) است.

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

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

من تصمیم گرفتم از امروز 1 آذر که این اتفاق افتاد تا 40 روز ننویسم.

تا چهل روز دیگه‌! چجوری منتظر بمونیم و بگیم نوشتن سینا برامون مهمه ؟ با یک لوگو. لینوکس بهمون کمک می کنه: دستور convert می تونه یک تصویر رو تغییر بده یا چیزی بهش اضافه کنه. پس من اول یک تصویر به این شکل درست می کنم:

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

convert -draw ’text 40,10 “’$hours’”’ sina.jpg sinawillwrite.jpg

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

1 * * * * root /directory/sina.bash

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


http://jadi.hacked.in/sinawillwrite.jpg

می بینید ؟ لینوکس (منظورم گنو/لینوکس است) یک ابزار قوی است برای اجرای ایده ها و خوشحال کردن دوستان. برای این است که من دوستش دارم و عضو تهران لاگ هستم.

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

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

در لینوکس من از OpenOffice که یک نرم افزار آزاد و رایگان است به جای Office مایکروسافت استفاده می کنم. اول فایل اطلاعاتم که به این شکل است

texte - 416 bits

رو کپی و پیست می کنم در نرم افزار SpreadSheet که برابر excel است. بعد به سادگی بهش می گم نمودارم رو بکشه. در قدم بعدی کلید PrintScreen رو می زنم و لینوکس ازم می پرسه از صفحه با چه اسمی عکس بگیره. یک اسم بهش می دم و صفحه با اون اسم در یک فایل ذخیره می شه. بعد gimp رو باز می کنم که مشابه photoshop است ولی آزاد و رایگان و بخشی از مطلب رو که می خوام بذارم توی سایتم رو می برم. حالا کافیه وبلاگم رو باز کنم و به اسپیپ بگم فایل متنی بالا و فایل تصویری رو به مقاله اضافه کنه و در با یک دبل‌کلیک در محل مناسب نشون بده (: بامزه است نه ؟



فقط برای کامل شدن بحث

ساعت پنج است و داونلود تمام شده. این هم نمودار نهایی


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

دوستی می خواست یک سایت کامل رو دریافت کنه و به دلایلی دچار مشکل شده بود. من گفتم براش دریافت می کنم. توی لینوکس به سادگی می نویسم:

wget www.foo.com -k -c -r -p

که یک قدم به یک قدم به لینوکس می گه سایت فلان رو دریافت کن، لینک هاش رو به شکلی تغییر بده که به شکل محلی هم درست دیده بشه، کار رو ادامه بده، همه لینک ها رو دریافت کن و هر فایل (عکس، تصویر، pdf و …) هم که لازم بود رو بگیر و بریز روی هارد.

برنامه تقریبا یک ساعت کار می کنه و هنوز مشغول دریافت است. برام جالب می شه که با چه روندی مشغول دریافت هستم. راستش می خوام برم استخر و وقتی برگشتم ببینم کار چطور بوده. دستور du رو می شناسم. می نویسم:

du /home/jadi/download -s

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

crontab -e

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

*/10 * * * * du /home/jadi/download -s >> /home/jadi/download/result

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

چیزی که من دوست دارم

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

نکته لینوکس محیط گرافیکی و مشابه های word و office و firefox و photoshop و … همه چیزهای دیگر را هم دارد (:

پی نوشت. مایوم کو ؟!

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

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

مشکل این بود که موقع کار با sql یا گاهی مواقع دیگه یکهو kernel شروع می کرد یکسری پیغام division by zero دادن و تقریبا تمام برنامه ها اجراشون مشکل پیدا می کرد. سعی کردم فدورای ۵ رو به فدورای ۶ آپ گرید کنم تا در همین حین احتمالا مشکلات هم حل بشه. بین کار نصب با مشکل مواجه شد: تقصیر سی دی خراب بود ! تلاش کردم کلا هارد رو فرمت کنم و دوباره نصب کنم: حتی فدورای قدیمی هم نصب نمی شد.

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

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

حتی به لینوکس شک کردم

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

نتیجه اخلاقی: هرگز به کسی که دوستش دارید شک نکنید. مشکل به احتمال زیاد از جای دیگری است.

دریافت دائمی IP سرور لینوکس از طریق ایمیل

خب مساله چیه ؟ من می خوام برم سفر و لازم دارم که در حین سفر بخشی از وظایف مدیریت سیستم ام رو انجام بدم. برای اینکار باید دائما بتونم به سرورم لاگین کنم و تنظیمات لازم رو انجام بدم یا مشکلات رو حل کنم یا هر کار دیگه ای که پیش می یاد. برای اینکار لازم دارم تا دائما IP سرورم رو بدونم. این آی پی با وجود پول زیادی که سازمان من داره برای یک خط ADSL می ده (حدود چهل هزار تومان در ماه برای یک خط ۲۵۶. قیمتی تقریبا دوبرابر اون چیزی که در بقیه کشورها مردم برای یک خط ۸ مگ می دهند) هر لحظه ممکنه عوض بشه.

راه حل ؟ می دونم در لینوکس چیزی هست به اسم Cron که وظیفه اش اجرای منظم و متوالی دستورات است. در عین حال من بلدم با ifconfig وضعیت کل کارت شبکه ها و IP اونها رو ببینم. پس کافیه از سیستم خودم درخواست کنم که مثلا هر شش ساعت یکبار ifconfig رو برای من اجرا کنه و خروجی اش رو برام میل کنه به آدرس ایمیلم. اون وقت کافیه من روزی چهار بار ایمیل هام رو چک کنم تا بدونم هر لحظه آی پی سرورم چنده و وضعیت کارت شبکه هاش چطوره.

برای اینکار کافیه فایل کنترل کننده cron رو ادیت کنم یعنی

/etc/crontabs

اون رو ادیت می کنم و آخرش اضافه می کنم:

28 5,11,17,23 * * * root /root/sendifconfig.sh

حله ؟ اون اعداد اول می گن :‌ هر روزی از هفته و ماه سر ساعت ۵ یا ساعت ۱۱ یا ساعت ۱۷ یا ساعت ۲۳ و ۲۸ دقیقه لینوکسم فایل sendifconfig.sh رو اجرا کنه. حالا کافیه توی اون فایل بنویسم:

#!/bin/sh
ifconfig > fidata && mail -s ifdata jadijadi@gmail.com < ifdata

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

در صورتی که علاقمند به اطلاعات بیشتری درباره Cron بودید به راهنمای مقدماتی cron مراجعه کنید (انگلیسی ساده)

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

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

من یک لپ تاپ vaio s580 یا همون vaio s5 دارم که روش فدورا پنج نصب است. بعد از مدت ها امروز تصمیم گرفتم شبکه بی سیم ام رو هم راه بندازم تا اگر یکهو رفتیم جایی که شبکه بی سیم داشت بتونیم استفاده کنیم (شاید یک هفته برم خارج رو بگردم ببینم چه خبره توی این خارج!).

کارت wireless من وقتی که با root دستور lspci رو می زنم به عنوان Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter نشون داده می شه. پس کرنل کارت wifi رو شناخته. مثل اینکه fedora 4 به بعد همه این کارت ها رو تحت عنوان lpw2200 می شناسه. آفرین !

حالا دگمه wifi رو روشن می کنم و به Add/Remove software می رم و دنبال lpw2200 می گردم چون می دانم که علاوه بر درایور باید firmwire رو هم نصب کنم. این جریان به برنامه اضافه می شه. یک بار کامپیوتر رو restart می کنم تا مطمئن باشم همه چیز سر جای خودشه (احتمالا اگر سواد کافی داشتم احتیاجی به این کار نبود).

حالا از منوهای گرافیکی به بخش adminstration Network می رم و در hardware می بینم که کارت بی سیمم نشون داده می شه. حالا کافیه یک device جدید تعریف کنم و بگم از نوع wireless است و کارتم رو انتخاب کنم و مشخصات شبکه (اسم شبکه و کد رمزگشایی) رو بهش بدم.

در نهایت device جدیدی که ساخته ام رو active می کنم و ip می گیره و بعد از قطع کابل شبکه، هنوز هم به شکل بی سیم وصل هستم ! لذت بخش و ساده.

راستی !‌ حالا که این کارها رو کردم و به اینترنت هم وصل هستم و اینها رو هم نوشتم بر می گردم سر کار ! قبل از رفتن به سفر باید مثل دایناسور کار کنم !

تصویر دسکتاپ

چند روزی است توی فروم ایرانی لینوکس (TechnoTux.ir) بچه ها دارند تصاویر دسکتاپشون رو می گذارند. من هم گفتم بذارم. فایل رو که آپلود کردم گفتم اینجا هم بذارم. البته من جزو اونایی هستم که دسکتاپ واقعا براشون میز کاره. در نتیجه کل علاقمندی های این چند وقت و کارهایی که می کنم و … (به جز Snow Crash.pdf) روی دسکتاپم قابل بررسی است (:‌ تصویر اصلی ضمیمه نامه است و تصویر کوچیک این شکلی:

بهینه سازی MySQL روی لینوکس

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

در حین کار رسیدم به جایی که باید روی بانک اطلاعاتی ای با حدود چهار میلیون رکورد حدود صد و شصت هزاربار جستجو و نتایج را ذخیره می کردم. برنامه مورد نظر را نوشتم و کار را شروع کردم. بعد از یکساعت تخمین زمانی اتمام کار حدود ۳۴ روز بود !

برنامه را اصلاح و بهینه کردم و بعد از اجرای دوباره تخمین اتمام کار حدود ۳۱ روز شد !

برنامه را MultiThreatMultiThreatd نوشتم (تقریبا به این معنا که برنامه می تواند به شکل موازی چندین بار اجرا شود) و اجرا کردم ولی زمان اتمام کار همان ۳۱ روز ماند ):

به کامپیوتر نگاه کردم و دیدم چراغ هارد یک نفس روشن است یعنی کل جستجو دارد از روی هارد انجام می شود. Bottle Neck پیدا شد: سرعت هارد. سعی کردم بانک اطلاعاتی چهارصد مگی را روی حافظه ببرم. اینترنت را به دنبال mysql optimization گشتم و در نهایت برای اینکار در فایل /etc/my.cnf دو خط زیر را اضافه کردم:

</pre>
[mysqld]

key_buffer_size=300M
read_buffer_size=300M
</pre >

و سرویس بانک اطلاعاتی را restart‌ کردم و برنامه را اجرا. سرعت بیشتر نشده بود ولی با نگاه کردن به /proc/meminfo می شد دید که بانک اطلاعاتی به حافظه منتقل شده است ولی به دلیل کمبود حافظه کماکان هارد به عنوان swap‌ کار می کند.

در مرحله بعد از مدیرم خواستم حافظه کامپیوترم را به 2GB ارتقاء بدهد. بعد از انجام این کار دوباره برنامه اولیه را اجرا کردم و به چراغ های کامپیوتر نگاه کردم. چراغ هارد برای چند ثانیه روشن بود و بعد کلا خاموش شد (همه بانک اطلاعاتی به رم منتقل شده بود). زمان متوسط اجرا رسید به چهار روز. حالا برنامه بهینه شده سه روز وقت می گرفت و نسخه multithread فقط یک و نیم روز. حالا برنامه در حال اجرا است.