کیبورد آزاد زنده است (:

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

من سرم خیلی خیلی شلوغه. غیرقابل باور… ولی دلم با شماست (:

زد ایکس اسپکتروم سی ساله شد

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

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

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

منبعی که حتی اگر حوصله نمی کنین بخونین، خوبه عکس هاش رو نگاه کنین

چرا گنو/لینوکس را دوست دارم: بررسی سال های تولد در اطلاعات افشا شده ۳۰۰۰۰۰۰ کارت بانکی

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

درود. کارهای آماری جالبی میشه با داده‌ها انجام داد. به عنوان مثال احتمال این که آدمها تاریخ تولدشون رو به عنوان رمز انتخاب کنن بالاست. به دنبال ۱۳۶ بگردبن در فهرست رمزها و مقایسه‌اش کنین با هر عدد ۳ رقمی دیگه‌ای. (۱۳۷ و ۱۳۵ و ۱۳۴ هم تعدادشون بالاست). من اگه دنبال دزدی بودم از اینجا شروع میکردم.

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

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

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

در قدم اول همه صفحات بانک تجارت رو باز می کنم، با ctrl+A متنشون رو کپی می کنم و توی یک ادیتور متنی paste می کنم. من توی لینوکس برای اینکار از gedit استفاده کردم که ادیتور ساده و دم دستی گنوم است… مشخصه که اگر توی ویندوز بودم خود این یک ماجرا بود که کدوم ادیتور ممکنه بتونه این پیست رو قبول کنه و آخ نگه.

به خاطر کپی پیست من فقط متن های توی صفحه ها رو دارم… چیزهایی مثل این:

با یک دستور تمام خط هایی که توشون + هست رو جدا می کنیم. اینها خط های حاوی پسورد هستن:

grep "+" all_tejarat.txt > only_hesab_and_pass

اوه اوه! شد این:

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

رمز مخفي , شماره کارت + رمز مخفي , شماره کارت + رمز مخفي , شماره

پس من برای راحت کردن کارم، همه + ها رو تبدیل می کنم به سر خط:

jadi@jubung:~/Desktop$ sed -e "s/\s+[+]*\s*/\n/g" only_hesab_and_pass > har_password_yek_khat
jadi@jubung:~/Desktop$ head har_password_yek_khat 
رمز مخفي , شماره کارت
رمز مخفي , شماره کارت
رمز مخفي , شماره کارت 6273531000000002,73251531609013
6273531000000087,42984601252954
6273531000000105,90683196772477 6273531000000145,14810051866743
6273531000000146,61558146155078
6273531000000150,14869351127492 6273531000000151,87078051710776
6273531000000201,17221491685028
6273531000000222,32833487680537 6273531000000232,06865382135692
6273531000000232,69595659033276

راستش درست نفهمیدم چی شد! درست کار نکرد ولی بد هم نبود… حالا یک قدم دیگه باید تیکه تیکه کنم این فایل رو. فاصله ها رو به سر خط تبدیل می کنم‌ (:

jadi@jubung:~/Desktop$ sed -e "s/ /\n/g"  har_password_yek_khat > har_password_yek_khat_2
jadi@jubung:~/Desktop$ head -20 har_password_yek_khat_2 
رمز
مخفي
,
شماره
کارت
رمز
مخفي
,
شماره
کارت
رمز
مخفي
,
شماره
کارت
6273531000000002,73251531609013
6273531000000087,42984601252954
6273531000000105,90683196772477
6273531000000145,14810051866743
6273531000000146,61558146155078

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

jadi@jubung:~/Desktop$ grep  ".," har_password_yek_khat_2 | sed "s/^.*,//" > all_passwords
jadi@jubung:~/Desktop$ head all_passwords 
73251531609013
42984601252954
90683196772477
14810051866743
61558146155078
14869351127492
87078051710776
17221491685028
32833487680537
06865382135692

حله (: ببینیم چند تا پسورد داریم:

jadi@jubung:~/Desktop$ wc -l all_passwords 
118499 all_passwords

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

مردم احتمالا سال تولدشون رو به عنوان پسورد می ذارن.

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

#!/usr/bin/perl

while ($userinput =  ) {
	chomp ($userinput);
	for($i = 0; $i <= 10 ; $i++) {
		print  substr $userinput, $i, 4;
		print "\n";
	}
}

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

jadi@jubung:~/Desktop$ echo "73251531609013" | ./find_numbers.pl 
7325
3251
2515
5153
1531
5316
3160
1609
6090
0901
9013

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

#!/usr/bin/perl

@passes = ();
for($i = 0; $i <= 9999 ; $i++) {
	$passes[$i] = 0;
}


while ($userinput =  ) {
	chomp ($userinput);
	for($i = 0; $i <= 10 ; $i++) {
		$thispass = substr $userinput, $i, 4;
		$passes[$thispass] += 1;
	}
}

for($i = 0; $i <= 9999 ; $i++) {
	print $i, ",",$passes[$i],"\n";
}

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

jadi@jubung:~/Desktop$ cat all_passwords | ./find_numbers.pl  > all_passwords_charts
jadi@jubung:~/Desktop$ head all_passwords_charts 
0,163
1,150
2,135
3,122
4,137
5,141
6,123
7,138
8,122
9,133

حالا که اینها رو داریم کافیه بریم سراغ برنامه LibreOffice برای کشیدن نمودارها. مثلا این نمودار اول است:

دیده می شه که یک جاهایی پیک داریم. بذارین یک سورت هم بکنم به ترتیب فراوانی و یک نمودار دیگه از صد تا از پرکاربردترین ها بکشیم ببینیم چی در می یاد.

اوه! نظریه دوستمون تقویت شد: مردم از سال تولد برای پسوردها استفاده می کنن (: واضح بود ولی خب از این بازی لذت بردیم و تازه یک نظریه رو هم هرچند کم،‌ تقویت کردیم. همینطوره ترکیب های «خوش دست» روی کیبورد (:

نظرتون چیه برای اختتامیه یک آمار هم بگیریم از تعداد ارقام؟ مشخصه که یک تغییر کوچیک در برنامه است فقط:

#!/usr/bin/perl

@passes = ();
for($i = 0; $i <= 9 ; $i++) {
	$passes[$i] = 0;
}


while ($userinput =  ) {
	chomp ($userinput);
	for($i = 0; $i <= 13 ; $i++) {
		$thispass = substr $userinput, $i, 1;
		$passes[$thispass] += 1;
	}
}

for($i = 0; $i <= 9 ; $i++) {
	print $i, ",",$passes[$i],"\n";
}

و نتیجه:

jadi@jubung:~/Desktop$ cat all_passwords | ./find_numbers.pl  > all_digits
jadi@jubung:~/Desktop$ cat all_digits 
0,157054
1,180318
2,169604
3,175258
4,166898
5,169252
6,162562
7,158727
8,160099
9,159214

هاه.. می بینین که احتمال استفاده از ۷ و ۹ پایینه (این رو قبلا هم شنیده بودم) و احتمالا استفاده از یک و سه بالا (: توجه داریم که در صورت درست بودن الگوریتم اعداد رندم استفاده شده برای «مخفی کردن» پسوردها، یک نویز سفید اون پایین داریم که احتمالا مساوی پخش شده.

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

آپدیت اردیبهشت ۹۳: حالا که مشغول شماره ۴۰ هستیم این فایل فشار زیادی به سرور می یاره و در نتیجه غیرفعالش کردم.. برای دانلود همه شماره ها به آرشیو رادیو گیک روی گیت آی او مراجعه کنین.

یک درخواست اومده به این عنوان:

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

webmaster@server:~/public_html/audio$ ls 
jadi.net_radio-geek_000-dragon-pirates.mp3         jadi-net_radio-geek_004_ashke-maahi-haa.mp3  
radio-geek_jadi.net_000-start.mp3                  jadi-net_radio-geek_001_singularity.mp3            
jadi-net_radio-geek_004_ashke-maahi-haa.ogg        shegeftzar.9.10.khoonasham.sample.story_low.mp3
jadi-net_radio-geek_002_space-and-beyond.mp3       radio24-23-November-2011.mp3                 
shegeftzar.9.10.khoonasham.sample.story.mp3        jadi-net_radio-geek_003_ghoole_bazare_makkare.mp3  
radio24-9-November-2011.mp3                        jadi-net_radio-geek_003_ghoole_bazare_makkare.ogg

در اصل هر فایلی که اینجا باشه و اولش با jadi-net_radio-geek شروع بشه مال رادیو است. پس می شه همه اش رو یکجا فشرده کرد:

webmaster@server:~$ cd ~/public_html/audio/ && tar cfz ../radio_geek_all.tar.gz jadi-net_radio-geek*mp3 

پس حالا فایلی دارم که فشرده همه نسخه های ام پی تری رادیو گیک است و در این مسیر قابل دسترسی:

http://jadi.net/radio_geek_all.tar.gz

فقط یک قدم دیگه می مونه که کارها رو اتوماتیک کنم. cron توی یونیکس ها این وظیفه رو داره. کافیه بزنم cron -e یعنی می خوام یک کرون جدید تعریف کنم و توش بنویسم:

# m h  dom mon dow   command
42	3	*	*	2	cd /home/jadi/public_html/audio/ && \
                                             tar cfz ../radio_geek_archive.tar.gz jadi-net_radio-geek*mp3

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

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

آپدیت اردیبهشت ۹۳: حالا که مشغول شماره ۴۰ هستیم این فایل فشار زیادی به سرور می یاره و در نتیجه غیرفعالش کردم.. برای دانلود همه شماره ها به آرشیو رادیو گیک روی گیت آی او مراجعه کنین.

اگر سیستم عامل ها ماشین بودند

ویندوز ایکس پی


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

ویندوز هفت


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

ویندوز هشت


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

مک


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

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

لینوکس


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

حرف اصلی


اینکه چیکاره هستین رو ماشینتون مشخص نمی کنه. کسی با لینوکس هکر نمی شه، با مک هنرمند نمی شه و با ویندوز مهندس یا دکتر یا نویسنده یا عکاس یا هر چیزی. برای خیلی ها شاید انتخاب ماشین یک مساله اخلاقی یا فلسفی باشه ولی برای اکثریت چیزی که مهمه خود ماشین سواری نیست بلکه مساله تعیین کننده اینه که وقتی سوار ماشینشون می شن کجا می رن.

توضیحات تکمیلی

  1. دوستان از پشت صحنه می گن اون پژو ۴۰۷ است. به حق چیزهای نشنیده و ندیده ولی ظاهرا درسته. اصلاحش کردم به ۲۰۷
  2. گفته شد که ماشین دو گانه سوز هم می شه دوال بوت
  3. داس پنج به قبل پیشنهاد شد به روروئک و داس شش به روروئک موتور دار یا اسکوتر موتوری
  4. در باز است، باز پرنده است پس در پرنده است سفسطه است. اینکه کسی مثلا از ژیان بدش بیاد و از لینوکس هم بدش بیاد دلیل نمی شه که لینوکس ژیان باشه. باید خصوصیات مشابه بیشتری نشون بدین تا بتونین ادعا کنین چیزی به چیزی شبیه است.
  5. دويست و شش يه سيستم پلاگين خور و قابل توسعه است. سيستم برقش يه چيزي داره مشابه باس که هر قطعه اي اگر با استاندارش صحبت کنه سوارش مي شه و پردازنده مرکزي مي شناسدش. تمام قطعات خودرو مثل پلاگين هستن, قابل تعويض و توسعه.
    حالا اين کجاش ويندوزه؟!

یادگرفتن از یک پرسش: خطای محدودیت میزان حافظه limits.conf

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

توی فروم فدورا اکبر پرسیده:

سلام خدمت دوستان
وقتی برنامه ardour 2.8.12 را اجرا میکنم پیغام زیر ظاهر میشه البته داخل پیام توضیحاتی داده که احتیاج اطلاعات تخصصی داره:

WARNING: Your system has a limit for maximum amount of locked memory. This might cause Ardour to run out of memory before your system runs out of memory.
You can view the memory limit with ‘ulimit -l’, and it is normally controlled by /etc/security/limits.conf

خب من جواب خیلی دقیق رو نمی دونم. ایده هایی در مورد لیمیت ها، page‌کردن در لینوکس و مدیریت حافظه دارم ولی این مورد به نظر چیز جالبی می یاد و فرصتی است برای یاد گرفتن. اول دستور ulimit رو با man ulimit یاد می گیرم. گفته با سوییچ a- میشه محدودیت ها رو دید. من مال خودم رو چک می کنم:

jadi@jubung:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62804
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62804
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

و می بینم که محدودیت لاک حافظه برای من ۶۴ کیلوبایت است. این یعنی کاربر من فقط حق داره ۶۴ کیلوبایت حافظه رو لاک کنه و احتمالا مربوط به تابع mlock توی برنامه نویسی. از اینجا شروع به سرچ می کنم و با ترکیب سرچ ها و خونده ها و اطلاعات شخصی ام به نتایج جالبی می رسم.

می دونیم که برنامه ها برای اجرا به حافظه احتیاج دارن. این حافظه معمولا از طریق تعریف متغیر و اینجور چیزها اشغال می شه و این سیستم عامل است که تصمیم می گیره چقدر از این اطلاعات رو واقعا توی مموری رم نگه داره و چقدر از اون رو page کنه توی swap. بذار یک کم برگردیم عقب.

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

همین حالا هم اون پارتیشن swap که درست می کنیم دقیقا کارش همینه. حتی اگر دستور top رو بزنی در دو خط آخر هدر این رو می بینی:

top - 11:00:56 up 1 day, 23:02,  5 users,  load average: 1.06, 1.08, 1.22
Tasks: 230 total,   2 running, 227 sleeping,   0 stopped,   1 zombie
Cpu(s):  9.2%us,  6.6%sy,  0.0%ni, 84.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8062928k total,  7358752k used,   704176k free,   139228k buffers
Swap:  8395772k total,    59136k used,  8336636k free,  2854564k cached

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

اما ممکنه یک برنامه به هردلیلی بخواد جلوی اینکار رو بگیره و مطمئن باشه که براش فلان مقدار رم واقعی از پیش کنار گذاشته شده! تابع mlock اینکار رو می کنه. من می تونم موقع برنامه نویسی به سیستم عامل دستور بدم که «برای من یک مگ رم واقعی بذار کنار، به هیچ کس نده اونو و pageش هم نکن و بذار توی رم آماده به کار باشه». خب اینو همه برنامه ها دوست خواهند داشت از جمله برنامه ضبط صدای تو که چون داره صدای حرفه ای ضبط می کنه اصلا نباید منتظر دیسک و حافظه خالی نبودن و اینها باشه پس سعی می کنه وقتی می یاد بالا برای خودش یک حافظه اختصاصی درخواست کنه.

اما توی سیستم عامل دیدیم که گفتیم:‌

jadi@jubung:~$ ulimit -a | grep memory
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
virtual memory          (kbytes, -v) unlimited

یعنی محدودیتی برای کاربر گذاشتیم که کلا همه برنامه های این کاربر روی هم نتونن بیشتر از ۶۴ کیلوبایت حافظه رو تا لحظه که می خوان توی خود رم واقعی به خودشون اختصاص بدن. این عدد خیلی کوچیکه و در اصل معنی اش اینه که «کسی نمی تونه حافظه رو برای خودش برداره، سیستم عامل است که تقسیم می کنه بر اساس تشخیص خودش». اگر کسی دوست داشته این محدودیت رو به شکل موقت عوض کنه می زنه ulimit -l 1024 یا هر عدد دیگه و اگر بخواد برای همیشه اینو تغییر بده،‌ etc/security/limits.conf/ رو ادیت می کنه.

نکته: به جای عدد اگر بزنی 0 یعنی «نامحدود»

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

دوگوله و فیسبوق : ما رسانه نیستیم، آدمیم

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

توی این سریال آقای ملکی هی می گفت «از اون دوگوله استفاده کنین» (: نمی دونم کلمه رو از کجا آورده بود ولی منظورش مغز بود! حالا حرف منم همینه.. از اون دوگوله استفاده کنین:

نمی دونم چرا این روزها از کجا عادت کردم هی می گم «واقعا؟!!» واقعا؟!! یعنی واقعا یک فوتبالیست مردمی که درود بر شرفش، قبول کرده هزینه های این کودک رو بده به شرطی که پونصد هزار تا ری-شر بشه این عکس و متن؟ واقعا کسی هم هست که فکر کنه «یک دست صدا نداره پس من اینو شر کنم که به جامعه کمک کرده باشم»؟ درک می کنم که دیدن عکس رقت بر انگیزه ولی مطمئن باشین با ری شر کرد چنین متنی کمکی به جامعه نم یکنن. فکر کنین که نویسنده اصلی اصولا درکی از پونصد هزار داشته؟ می فهمیده که اگر هر دقیقه این عکس یکبار شر بشه و این پروسه توی تمام بیست و چهار ساعت ادامه پیدا کنه یکسال طول می کشه که پونصد هزار بار شر شده باشه؟ بعد فوتبالیست مردمی اگر مردم برای یکسال هر دقیقه یکبار اینو شر نکنن پول درمان این بچه رو نمیده؟

اون دوگوله رو به کار بندازین برخی از دوستان (: به قول دوست خوبم مازیار: ما رسانه نیستیم. ما آدمیم. وظیفه ما ری شر کردن نیست، پروسس کردنه.

تصویر بالا رو قدیم ها دیده بودم ولی اصلی رو پیدا نکردم و خودم یک فارسی درست کردم. اینم الان توی کامنت ها دوستان گفتن که مرتبطه

بحرین: نامه عبدالهادی الخواجه از زندان

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

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

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

و کمی اونطرف تر هم کشته های سوریه با صد و پنجاه قتل جدید،‌ به بیش از نه هزار نفر رسیده تا شاید رژیم بعثی بتونه با قلع و قمع زن و مرد و بچه و پیر و جوون مدت بیشتری توی قدرت بمونه.