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

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

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

 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 (که از کتاب‌های معتبر در مورد شیوه نوشتن برای وب است)، به این نتیجه رسیده‌اند که تا جای ممکن تیترها رو بین ۷ تا ۱۲ کلمه حفظ کنن. مشخصه که دیدن نمودار من، خوشحالشون کرد (: