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

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

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

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

  • هاها.نمودار جالبی بود و روش تولید نمودار هم جذاب و عالی :)

  • Pingback: Tweets that mention چرا لینوکس رو دوست دارم یا «آیا توییتر باعث طولانی‌تر شدن تیتر مطالب وبلاگها شده؟» -- Topsy.com()

  • farhad

    salam ghashang bood… man hodode 3 sale pish ye chand mahi say kardam ke be linux ro biyaram… ziyad jazbam nakaed… alan az mac osx estefade mikonam… taghribam ye chizi bine windows va linux va khili azsh raziyam… ama hamishe linux dost dashtam… ama sakhish ejazeje estefadaro behem nadade…. matlabetam khili ghashang bood.,,, ama fekr konam in etefagh dar morede site haye khareji oftade bashe…. ke titreshon tolani tar shode ye meghrad… 

  • عااااااااااااالی بود:)

    از خط خطش هز بردم ;)

    مرسی

  • کار جالب‌ای بود. اما این‌طوری هنوز ادعا رد نشده است. الان تعداد زیادی داده وجود دارد که در یک محدوده‌ی کم و بیش ثابت بالا و پایین می‌روند ولی این‌که آیا متوسطش تغییر کرده یا خیر مساله‌ی دیگری است. برای حل این مشکل می‌شود مثلا یک فیلتر moving average طراحی کرد و دید رفتار متوسط تعداد کلمه‌های هر پست چقدر است.
    طراحی‌ی چنین فیلتری هم این‌گونه می‌تواند باشد: در هر نوشته‌ای که هستیم، متوسط مثلا ده-بیست نوشته‌ی پیشین را گزارش دهیم. وقتی هم که در ابتدای فایل هستیم، فقط از ابتدا تا نقطه‌ی فعلی متوسط بگیریم.

  • admin

    کاملا حق با توئه سولوژن (: ولی راستش حوصله نوشتن اون رو ندارم. حداقلش این بود که یک «برازش» داشته باشیم از کل جریان و مثلا یک خط بکشیم ببینیم رو به بالا است یا پایین ولی من حوصله برنامه عددی نوشتن ندارم. برنامه خوبی هم دم دستم نبود. توی همون آفیس یک نمودار کشیدم و خلاص (:

  • پدرام

    سلام جادی جان :)

    چیزی هم مونده که نگفته باشی؟!
    فوق العاده بود. مثل همیشه. واقعا مثل همیشه… باعث افتخاری مرد….

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

  • مهدی

    خیلی عالی بود. کلی لذت بردم از مثال کاربردیت.