گیک ها و کارهای تکراری

منبع

توضیح: بحث خوبه ولی این الزاما همه حرف ها نیست. مثلا من گاهی با اسکریپت کارم سریعتر نمی شه ولی جذابتر می شه یا گاهی کلا بیخیال می شم یا غیرگیک ممنون می شه و مسخره نمی کنه و هزار مدل سناریوی دیگه (:

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

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

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

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

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

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

در قدم اول همه صفحات بانک تجارت رو باز می کنم، با 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

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

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

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


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

ویندوز هفت


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

ویندوز هشت


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

مک


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

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

لینوکس


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

حرف اصلی


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

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

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

درصد کاربران هر روز اینترنت در ایران به تفیک رده های سنی

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

منبع اطلاعات سایت آمار ایران است و اطلاعات مربوط به سرشماری کاربران اینترنت سال ۱۳۸۹.

اطلاعات خام اینها هستن:

درصد    تعداد     رده سنی
۵ – ۹ 	13974	0.4873458865
۱۰ – ۱۴	118719	4.1403475243
۱۵ – ۱۹	374713	13.0681865739
۲۰ – ۲۴	764148	26.6498056754
۲۵ – ۲۹	583318	20.3433253074
۳۰ – ۳۴	295860	10.3181733213
۳۴ – ۳۹	230672	8.044729522
۴۰ – ۴۴	192558	6.7154965808
۴۵ – ۵۴	211789	7.3861813342
۵۵ – ۶۴	70603	2.462292946
 + ۶۵	11014	0.3841153281

می بینیم که بیشتر از نیمی از کاربران اینترنت ایران بالای بیست و پنج سال سن دارن و بیشتر از سی و پنج درصد اونها بالای سی سال. !

نمودار ارسال متوسط تعداد پیام کوتاه ارسال شده روی برخی اپراتورهای خاورمیانه در سه سال گذشته

آمارش توی یک مجله مخابراتی بود. گفتم نمودار درست کردن ازش جالبه.. نشون می ده که هر نفر خاورمیانه ای تقریبا در ماه چند تا اسمس یا همون پیام کوتاه می فرسته. حتی می تونه به شکلی یک شاخص باشه برای استفاده از سیستم های مخابراتی. (1Q10 یعنی سه ماهه اول سال ۲۰۱۰)

اینهم اطلاعات خام.

Country

Population

Operator

SMS

3Q10

4Q10

1Q11

2Q11

3Q11

Afghanistan

24.4

Afghan Wireless

SMS

169.12

177.77

186.31

195

203.78

Bahrain

1.2

Bahrain Batelco

SMS

161.12

151.77

143.17

142.21

142.91

Iran

76.2

Iran TCI

SMS

3776.11

4014.05

4511.56

4492.16

4725

Jordan

6.2

Jordan Zain

SMS

346.21

347.96

338.18

352.49

415.62

Kuwait

2.8

Kuwait Wataniya

SMS

147.43

147.46

154.08

164.9

167.81

Lebanon

4.2

Lebanon MTC

SMS

181

189.26

193.98

202.48

211.05

Oman

2.7

Oman Omantel

SMS

82.19

89.65

82.07

75.03

94.63

Palestine

4.1

Palestine Cellular

SMS

138.71

141.79

146.23

153.92

147.21

Saudi Arabia

27.1

Saudi Telecom

SMS

1452.93

1523.27

1544.38

1557.35

1585.25

UAE

8.2

UAE Etisalat

SMS

702.45

707.81

683.55

671.85

677.43

Yemen

23.8

Yemen Mobile

SMS

1001.16

1101.6

1135.39

1202.33

1284.43

Source: Informa, Telecoms. By Jadi.net

استفان ولفرام بیست سال فعالیت کیبوردش رو تحلیل می‌کنه

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

متن بالا بخشی از پست وبلاگی مغز منفجر کننده ( (: اصطلاح قشنگیه دیگه! مایند بلوئینگ) ) ولفرام در مورد اطلاعات شخصی‌اش است و عکس بالا هم نمودار نقطه‌ای نشون دهنده تک تک تقریبا سیصد هزار ایمیلی که این آدم از سال ۱۹۸۹ تا به امروز ارسال کرده.

از طریق بویینگ بویینگ

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


جادی

این آزمایش تقریبا واقعی است. مشخصه که اینجا خیلی ساده شده ولی اصلش رو استفنسون در سال ۱۹۶۷ انجام داده به این مرجع:

Stephenson, G. R. (1967). Cultural acquisition of a specific learned response among rhesus monkeys. In: Starek, D., Schneider, R., and Kuhn, H. J. (eds.), Progress in Primatology, Stuttgart: Fischer, pp. 279-288.

دانشمندها این شکلی هستند

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

تصویر بالا چدار کرینر است که متخصص ادراکات تصویری و روان شناسی کاگنیتیو است و توی اوقات فراغتش مربیگری یک تیم فوتبال بچه‌های زیر ۵ سال رو بر عهده داره و تصویر پایین هم کریستی ویلکوکس است (بیولوژیست دریایی) که به ما می گه تصویرمون از دانشمندها رو باید تلطیف کنیم (:

بقیه عکسهای جذاب دانشمندها این شکلی هستند رو توی آلبوم تامبلر lookslikescience ببینید یا حتی اگر دانشمند هستین،‌ عکس خودتون رو بفرستین (:

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

اما خب.. دانشمند آلترناتیو هم داریم که چهار تا از همین آلبوم اضافه می کنم:



میکروبیولوژیست، همسر و مادر


پاتریک، ژئوفیزیکدان


مارک و فرانک، شیمیدان


شیمیدان با تخصص داروشناسی ملکول‌های ریز(؟)

و البته آلترناتیوترین دانشمند سطح بالایی که من دیدم هم بدون شک برای من ریچارد فاینمن است که قبلا نظرم رو در باره کتاب زندگی نامه اش ( حتما شوخی می کنید آقای فینمن ) نوشته ام.