فلوچارت انتخاب کتاب از بین صد اثر برتر علمی تخیلی و فانتزی

موسسه NPR اخیرا نتایج نظر سنجی‌اش در مورد ۱۰۰ کتاب برتر علمی تخیلی و فانتزی رو منتشر کرده. لیست عالی نیست چون به جای متخصص‌ها از عموم سوال شده و در نتیجه مشهورترین کتاب‌های جامعه آمریکا انتخاب شدن ولی به هرحال لیستی است جذاب برای کسی که می خواد کتاب بعدی اش رو انتخاب کنه. راستش هوس کردم یکی از این کتاب ها رو بخونم. بررسی اولیه نشون داده که شونزده تاشون رو خوندیم! خوشحال شدم. البته یکسری اش خب کتاب های خیلی مشهوره ملث مثل بیست هزار فرسنگ زیر دریا یا اودیسه فضایی یا آی.روبوت. اما کتاب بعدی رو باید چطوری انتخاب کنیم از یک لیست عظیم؟

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

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

کوتاهه و ناقص ولی ایده عالیه و جذاب. شکی هم نیست که یک نقد و بررسی علمی نیست…

جاوا

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

پرل

یدک کش. بسیار قدرتمند برای اینطرف و آنطرف کشیدن حتی جاوا.. آنهم در کمتر از هشتاد کاراکتر.

رابی روبی

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

پی اچ پی

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

سی

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

سی پلاس پلاس

ناو هواپیما بر. کاپیتانی اش مهارت زیادی می خواهد و بسیار قوی و کارا است اما به این راحتی‌ها نمی‌شود هدایتش کرد.

اسمبلی

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

اچ تی ام ال

اچ تی ام ال اصولا کشتی نیست. قایق هم نیست.

نقشه بزرگ لینوکسی جهان

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

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

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

نقشه لینوکس جهان

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

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

دب روی در مورد یادگیری زبان توسط کودک

دب روی مدیر و موسس ‌Bluefin Labs است و در دانشگاه MIT روی این کار می‌کند که بچه‌ها چطور زبان یاد می‌گیرند. برای اینکار در طول پنج سال در تمام.. دقیقا تمام خونه دوربین و میکروفون کار گذاشته‌اند و ۲۰۰ ترابایت فیلم و صدا از کل زندگی ضبط کرده‌اند تا ببینن که بچه‌ در طول چه مراحلی چی می‌شنوه و چی یاد می‌گیره و کجا هر چیزی رو می‌شنوه و … و اونقدر اطلاعات جمع شده تا دانشگاه MIT بتونه باهاش انواع معجزات رو بکنه. اگر پهنای باند دارید دیدن این ویدئو عمیقا پیشنهاد می شه. مثلا در دقیقه حوالی چهار، یک صدای چهل ثانیه‌ای است از تمام تلاش بچه از ابتدا تا انتها برای گفتن کلمه «water» که فوق العاده است (اگر پهنای باند کافی ندارین برین پایین ویدئو).

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

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

یا حتی صدا رو به این بخش اضافه کرد و دید که در سطح خونه کدوم کلمات در کدوم مکان هایی فیزیکی توسط بچه شنیده شدن و کوه‌هایی کشید از کمیت اونها:

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

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

امسال هدیه‌هایی عالی گرفتم. کم ولی عـــالی. بهترینش رو نمی تونم با شما شیر کنم اما در رده بهترین‌ها، دومی این بود:

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

محبوبترین زبانهای برنامه نویسی

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

جواب واقعی چیه؟ کسی نمی دونه (: اما یک نفر یک ایده عالی به فکرش رسیده تا وضعیت زبان های برنامه نویسی رو بررسی کنه. طرف اومده با یک ایده بامزه، تعداد پروژه‌های هر زبان توی گیت‌هاب و بعد تعداد تگ‌هاش توی استک‌اورفلو رو شمرده. اولی نشون دهنده تعداد پروژه‌های هر زبان است و دومی – با تسامح – نشون دهنده اندازه جامعه کاربری اون.

نتیجه چیزی شبیه نمودار زیر شده:

خط آبی نشون دهنده کرولیشن است (نزدیک ۰.۸) و این یعنی هرچقدر یک زبان جامعه بزرگتری داره، پروژه‌های بیشتری هم داره (: پیش بینی عجیبنی نیست ولی همیشه دیدن اعداد و آمار، جذابه.

بعضی زبان‌ها شرایط خاص دارن، مثلا دلفی یا viml. اولی یک زبان است با تعداد پروژه‌های کم اما سوال‌های زیاد و دومی یک زبان با پروژه‌های زیاد و سوالات کم (جامعه کوچیک). اما زبان‌های متعادل زبان‌هایی هستن که هم پروژه‌های زیادی دارن و هم جامعه فعالی. اینها زبون‌هایی هستن که حوالی خط آبی می‌افتن. در اوج، جاوا اسکریپت است، پایتون، سی، روبی، پرل و شل. به نظر من که نتیجه خیلی جذابی است (: درست زبون‌هایی که من دوست دارم. البه به جز جاوا اسکریپت (:

چرا لینوکس رو دوست دارم یا «آیا توییتر باعث طولانی‌تر شدن تیتر مطالب وبلاگها شده؟»

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

من علاقمند شدم این نظریه رو روی سایت نارنجی تست کنم. پس نیاز دارم به همه مطالبش تا به امروز تا از اونها تیترها رو بیرون بیارم. با یک گشت توی سایت معلوم می شه که در هر صفحه ۶ مطلب قابل مشاهده است و مثلا برای دیدن مطالب ۷ تا ۱۲ باید این صفحه رو دانلود کنیم:

 http://narenji.ir/index.php?start=6

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

for($i = 0; $i < 1638; $i+=6) {
    `wget http://narenji.ir/index.php?start=$i -q -O $i.out `;
    print "$i ";
}

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

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

jadi@debian:~/narenji$ egrep "contentpagetitle|createdate" *.out -A 1 \
                             | egrep -v "contentpagetitle|createdate"

اینکار باعث می شه من یک فایل داشته باشم با کلی (در اصل ۱۶۳۸ که تعداد مطالب است ضربدر ۴) خط خواهم داشت به این شکل:

یک حافظه یو اس بی با ظرفیت نامحدود‬</a>
--
Friday, 26 November 2010 08:23  </td>

تمامش رو کپی پیست می‌کنم به یک فایل و بخش‌های اضافی رو با Replace All حذف می‌کنم.

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

awk 'NR%2==0' all.out > dates.txt ; awk 'NR%2==1' all.out > titrs.out

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

open FILE, "titrs.out" or die $!;
    while () {
    print scalar (split(" ", $_)) "\n";
}

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

نمودار تعداد کلمات تیترهای سایت نارنجی در طول زمان

و خب تئوری اولیه ما رد می شه. ظاهرا در سایت نارنجی تعداد کلمات تیتر هر مطلب در طول زمان تغییر چندانی نداشته (: ولی یکبار دیگه لذت بردیم از کار کردن با گنو/لینوکس و ابزارهای بسیار قدرتمندی که زیرانگشتامون می ذاره.


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

از کتاب Letting Go of the Words (که از کتاب‌های معتبر در مورد شیوه نوشتن برای وب است)، به این نتیجه رسیده‌اند که تا جای ممکن تیترها رو بین ۷ تا ۱۲ کلمه حفظ کنن. مشخصه که دیدن نمودار من، خوشحالشون کرد (:

آخرین خبر: همه چی آرومه (:

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

من هم دیدم بد نیست نمودار تعداد طلاق در ده سال گذشته رو بکشم تا «بدون شرح»ی باشه بر حرف رییس سازمان ثبت احوال کشور که باز جای شکرش باقیه رسما اعلام نکرده که دروغ بگن تا مردم امیدوار بشن به زندگی (:

راستی به این هم فکر می‌کنم که چرا در بعضی از کشورها واقعیت که هیچ، انتقاد و تظاهرات هم که هیچ، حتی حرکت تندی در حد آتیش زدن پرچم همون کشور حین جنگ با کشور خارجی و مخالفت با جنگ و حتی نشستن سر کلاس درس با پرچم کشور دشمن هم نمی‌تونه خللی به نظم عمومی یا اتحاد ملی وارد کنه اما در یک کشور دیگه … بگذریم (: