چرا گنو/لینوکس رو دوست دارم: اینجا چند بار از کلمه مهمل استفاده شده

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

چیکار می کنیم؟ من با وردپرس وبلاگ می‌نویسم. پس اول از بخش مدیریت از منوی Tools، کل پست‌ها و کامنت‌های سایت رو Export میکنم. اینجوری یک فایل ایکس ام ال دارم که همه مطالب سایت توش هستن.

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


 jadi@jeducation:~/Downloads$ grep -o مهمل wordpress.2012-12-05.xml | wc -l 
 29


بعله (: من بیست و نه بار از کلمه مهمل استفاده کردم (: اما چیزی که جالبتره اینه که از کی شروع کردم به استفاده. اینبار باید برنامه بنویسم. پایتون همیشه انتخاب راحت و خوبیه. برنامه ایکس ام ال رو می خونه، درختش رو بررسی می کنه و توی همه مطالب و کامنت‌هایی که از عبارت مهمل استفاده کردن، تاریخ رو توی خروجی می نویسه:
# -*- coding: utf8 -*- 

from xml.dom import minidom
import xml.etree.cElementTree as et
import re

tree=et.parse('wordpress.2012-12-05.xml')
root=tree.getroot();

for child in root.iter('item'):
	date = child.find('wppost_date').text
	body = child.find('content_encoded').text
	title = child.find('title').text

	try:
		if re.search (u'مهمل', body) or re.search(u'مهمل', title):
			print date;
	except:
		print date;

for child in root.iter('wpcomment'):
	date = child.find('wpcomment_date').text
	body = child.find('wpcomment_content').text

	try:
		if re.search (u'مهمل', body):
			print date
	except:
		print date;


اگر پایتون بلدین (یا حتی بلد نیستین ولی جرات داشتین کد رو نگاه کنین) می بینین که کد اصلا خوب نیست. دلیل تاریخی داره. اول نمی دونستم تو کامنت هم هست و بعد کامنت ها رو با یک کپی پیست جدا کردم. بعد دیدم گاهی اکسپشن می گیرم و بعد از بررسی فهمیدم بعضی مطالب متن یا عنوان نداره (چرا؟!) و در نتیجه خروجی مشکل پیدا می کنه که با یک اکسپشن اضافه کردن سر و ته مشکل رو هم آوردم و رسیدم به نتیجه‌ای که می‌خواستم:
jadi@jeducation:~/Downloads$ time python parsejadi.py 
2011-12
2012-07
2012-11
2011-09
2011-10
2011-10
2012-02
2012-06
2012-10
2012-11
2012-11
2012-11
2012-11
2012-12
2009-06
2009-05
2011-08
2011-09
2011-10
2011-10
2011-11
2012-06
2012-06
2012-08
2012-10
2012-10
2012-10
2012-10
2012-11

real	0m0.738s
user	0m0.700s
sys	0m0.028s
jadi@jeducation:~/Downloads$ 

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

ظاهرا که همیشه از کلمه مهمل استفاده می‌کردم ولی این دو ماه بیشتر هم شده (:

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

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

  • تنها چیزی که می‌تونه آدم و از انجام کاری تو گنو/لینوکس باز داره، قوه‌ی تخیل خودمونه!

  • میتونستی از R هم استفاده کنی بابت کارهای آماری
    راستی تو چه کنسولی هستی که میتونی فارسی بنویسی؟ من نمیتونم

    • جادی

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

      • خیخو

        جادی این وبلاگو دنبال کن ایده هاشون عالیه (حداقل روزی یکبار آدم کیف میکنه)
        http://www.r-bloggers.com/

        • جادی

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

  • جادي جان كارت حرف نداره.
    من هيج اشنايي با لينوكس ندارم. فقط يكي دوبار با خوندن مطالبت وسوسه شدم و اوبونتو رو از روي سي ديش اجرا كردم.
    به نظرت براي شروع به كار با لينوكس و ورود به اين دنياي جالب جيكار بايد بكنم؟

    • جادی

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

  • منم اوبونتو دارم ولی نوم شل من اینطوری نیست حتی من terminator هم نصب دارم
    باید سرچ اساسی بکنم.
    برای گار تو htmlهای فارسی نمیتونم از vim استفاده کنم.

    • جادی

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

  • mehdi

    جادی جان خوب بود.

  • مجید

    سلام مهندس

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

    همین (:

    • محمد

      اون «o-» باعث میشه که هر تکرار «مهمل» (حتی اگه در یک خط باشن) در یک خط جدا چاپ بشه. برا همین تعداد کل درست میشه.

  • محمد هادي

    اگه كلا ميخواستي ببيني چه كلمه هايي رو بيشتر از همه تو نوشته هات استفاده كردي چي؟

  • محمد

    منم اون روزا همیشه از «wc -l» استفاده می کردم. تا اینکه کاشف به عمل اومد که خود grep یه پارامتر «c-» داره که همونکارو می کنه.

    • محمد

      ولی خوب تأثیر «o-» از بین میره…
      :p

  • مرسی جادی :ایکس
    واقعا برام سوال بود که چند بار استفاده کردی :دی

  • nima

    جرا خودتو آزار میدی عزیز دل.
    وقتی کل پست ها و کامنت ها رو دانلود کردی به فرمت ایکس ام ال، با مایکر.سافت اکسل باز کن فایل رو یه کنترل + اف ساده بگیر، برات همه کلمات مهمل را پیدا میکنه. یا اگه میخوای میتونی از تابع count استفاده کنی. برای تاریخ ها هم میتونی از جدول های اکسل استفاده کنی. http://support.microsoft.com/kb/282851
    حمعاً در کمتر از 10 دقیقه کل کاری رو شما کردی برات انجام میده.
    من هنوز نتونستم دلیل منطقی برای استفاده از لینوکس پیدا کنم. تمام استدلال هایی هم که میشه برای مزیت های لینوکس، به نظر من حداقل برای کاربرهای شخصی حتی اونهایی که کاربر حرفه ای هستند، توجیه هستتش تا استدلال. زیاد منطقی نیست.
    قبلا فکر میکردم لینوکس کم کم برای مایکروسافت مخاطه آمیز بشه، اما خنده دار اینه که یه چیزی خیلی close source تر از لینوکس، الان شده بلای جون مایکروسافت. اپل و نرم افزارهاش با اون قوانین دست و پا گیر محدود کنندش.

    • جادی

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

    • جادی

      اوه! یادم رفت اضافه کنم که برای کاربر معمولی بهترین مزیت گنو/لینوکس ویروس و کرم و بدافزار و تروجان و غیره نگرفتن است و پایداری خوب (: و البته حتما می دونی که اپل قدرتش رو از کرنل آزاد بی اس دی می گیره (:

    • محمد

      اون کاری که شما میگی رو حتی یه text editor ساده هم انجام میده. (برای شما که توی ویندوزی notepad plus plus) ولی چیزی که جادی گفت همون بازی با لگویی هست که آدم از انجامش لذت می‌بره. با کمی دستکاری هم میشه نتایج دیگه ای گرفت. مثلا شما یه راهی بگو که با استفاده از excel تعداد پست هایی که در روزهای زوج ارسال شدن و کلمه «مهمل» توشون بیش از سه بار اومده و کلمه «أزاد» توشون وجود نداره رو پیدا کنه!

      پ.ن : جادی جان اگه یه وقت دوباره خواستی مهمل ها رو بشمری این پست رو حتما قلم بگیر!!

  • k@\/Eh

    اینجوری به نظر میاد مهمل‌هایی که دیگران احتمالا توی نظرات نوشتن هم شمرده شده که

    • جادی

      کاوه جان خب پیش فرض این بوده که کسی به جز من توی این وبلاگ مهمل نمی نویسه (((:

  • هادی

    سلام.
    من یه چی در ادامه‌ی همین پست نوشتم که چون نمودار و جدول داشت برات ایمیل کردم. فقط می‌خوام بدونم به‌دستت رسید یا نه! ممنون :)

    • جادی

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

  • محمد

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

  • nima

    خیلی خوشحالم که میبینم خودت و دوستانت هم با من هم عقیده اید که از نوشتن چنین کدهای پیشرفته ای لذت میبرید. امیدوارم اونقدر در کارتون پیشرفت کنید تا روزی بتونید از نوشتن برنامه های واقعی لذت ببرید و برای ارضای نیاز درونی تو به اینکه برنامه نویس واقعی باشید، مجبور به این مسخره بازی ها نباشید. از اونجایی که بعید میدونم به اون سطح برسید، پیشنهاد بهترم اینه که حتماً به روانشناس مراجعه کنید تا در مورد مشکل “احساس لذت از زجر دادن خودتون” رو براتون حل کنه. مازوخیست هستید شما لینوکسی ها!

    • جادی

      نیما: خب چه نیازی هست به بداخلاقی یا توهین سبک؟ (: پیشنهاد می کنم اگر چیزهایی کمی پیچیده تر دوست داری پست بعدی (یعنی این http://jadi.net/2012/12/ertebaate-mohmal-o-baroon/) و بعدیش که هنوز پست نشده رو بخون که در همین مورد است یا از روی لینک مطلب به بقیه مطالب «چرا گنو/لینوکس رو دوست دارم» سر بزن (:

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

      مهربون باش و دور هم بخندیم و خوش بگذرونیم (:

  • nima

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

    • جادی

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

  • Pingback: قانون زیف و زندگی روزمره با محوریت کلمات وبلاگ()