راه حل «ویروس»های فیسبوکی: حذف دسترسی برنامه‌ها به اکانت‌های فیسبوک

فیسبوکم ویروسی شده! این اصطلاح خاصی است که گاه گداری می شنویم. این اصطلاح از نظر فنی چندان درست نیست – توی فیسبوک ما خودمون با دست خودمون به برنامه‌ها اجازه می دیم که روی صفحه ما چیز پست کنن یا روی صفحه دوستامون عکس بهمخونن (اگر فعل می سازیم خب چرا می ترسیم بگیم فعله و فعل کمکی پشتش می یاریم؟).

این اتفاق معمولا با «گول زدن» پیش می یاد. مثلا می گن فلان اپلیکیشن رو نصب کن تا ببینی کی به صفحه ات سر زده یا یک «خبر/فیلم» خیلی مهیج نشون می دن و شما در تنهایی خودتون روش کلیک می کنین تا کنجکاوی تون ارضاء بشه ولی در اصل دارین به یک برنامه دسترسی می دین که رو صفحه دوستاتون همین خبر رو بذاره و اونها هم کلیک کنن و پخش بشه.

بهترین روش حل چنین مشکلاتی، حذف دسترسی برنامه‌ها به اکانت فیسبوکمون است. برای اینکار باید اول روی اون چرخ دنده بالا سمت راست، کلیک کنین و از منویی که باز می شه وارد بخش تنظیمات (Settings) بیشن (معقول هم هست دیگه!‌ می رین توی تنظیمات):

choose_settings

حالا می تونین انواع تنظیمات فیسبوک رو انجام بدین. از منوی سمت چپ روی Apps (برنامه هایی که به شکل خودکار می تونن با فیسبوک شما کار کنن)‌ رو انتخاب کنین و فهرست یکسری از Appها نشون داده می شه، پایین فهرست خیلی ریز نوشته Show All Apps. روی اون کلیک کنین و همه برنامه هایی که به فیسبوک شما دسترسی دارن دیده می شه:

revoke_access

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

خلاصه مدیریتی؟ اگر فیسبوکتون رو دیوار دوستان چیزهایی می نویسه که شما ازش خبر ندارین، از مسیر بالا به بخش Appها برین و هر چیز مشکوک رو از طریق فشار دادن ضربدری که سمت راست اسمش هست، حذف کنین. ویروس احتمالا بالاهای لیسته!

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

دوستان دقت کنین توی تله این اکانت دزدی ها نیافتین

حمله فیشینگ

بله… یک – احتمالا هموطن عزیز گمنام – رفته دامینی با اسمی شبیه گوگل گرفته، بعد اومده یک ایمیل با اسمی شبیه گوگل زده و به امین که خواننده جادی.نت است گفته : «بیا پسوردتو به من بگو، به خدا من گوگلم!» خجالت هم نکشیده. امین هم لطف کرده ایمیل رو برای من فرستاده تا در موردش بنویسم. (:

اما از کجا می فهمیم:

۱- گوگل هیچ وقت به کسی ایمیل شخصی نمی زنه که بیا پسوردت رو عوض کن. حداقل به من که تا حالا نزده
۲- آدرس هایی مثل settings@gmail معلومه که تقلبی هستن و فقط دارن تلاش می کنن ظاهرشون واقعی باشه
۳- من می دونم که لینک ها الزاما اون چیزی که نوشته شده نیستن. مثلا اینجا اگر ماوس رو نگه دارم روی اون لینک پایین صفحه بهم می گه که لینک داره می ره به یک جایی به اسم accountsgmail.com که معلومه مال جیمیل نیستو گوگل نیست.
۴- اگر روی این لینک کلیک کنم احتمالا می ره به یه سایتی به اسم accountsgmail.com و من همیشه می دونم قبل از لاگین درست آدرس جایی که توش هستم رو نگاه کنم و مطمئن بشم که فقط و فقط و فقط توی google.com ایمیل می کنم تازه اونم در حالتی که ارور سرتیفیکیت نگرفته باشم.

ولی اگر یک قدم جلوتر بریم می تونم اینو بزنم:


 jadi@jell:~/Pictures$ whois accountsgmail.com

 Registration Date: 05-Feb-2012 
 Expiration Date: 05-Feb-2014  

 Status:SUSPENDED
	Note: This Domain Name is Suspended. 
	In this status the domain name is InActive and will not function. 

 Name Servers:  
    ns1.accountsgmail.com
    ns2.accountsgmail.com
 
 Registrant Contact Details:
    webphp.******@gmail.com
    Vahid *****        (webphp.******@gmail.com)
    Haqani highway, Pishdad st
    ******* alley, no.7
    Tehran
    Tehran,1122334455
    IR
    Tel. +98.212225****

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

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

مرتبط:
اصل اول جادی: در مسابقه ای که شرکت نکرده‌اید، برنده نمی شین

معرفی سایت عالی: آموزش تصویری رایگان در مکتب خونه

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

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

پیشنهاد؟ ویدئوها رو قابل دانلود کنن چون با توجه به شرایط اینترنت ما، داشتن یک سی دی که روش نوشته باشیم «درس‌های اصول فلسفی کوانتوم سایت مکتبخونه» کمک بسیار بزرگی است به پخش شدن و دیده شدن و مشهور شدن این پروژه – این لینک دانلود الان هست ولی برای من کار نمی کنه ):

پس معطل نکنین و سری بزنین به مکتب‌خونه

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

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

توی اینکه درسنامه سایت خوبیه و کلی آدم ازش استفاده‌های مفید می کنن و غیره شکی نیست. من هم چند تا از دوره‌هاش رو گذروندم و برام لذت بخش بوده (مثلا دوره اقتصادش که متاسفانه خیلی لیبراله ولی هنوز ارزشمند برای گذروندن) و تبلیغ و پیشنهادش هم کردم. اما آیا به هر چیز خوب رایگان باید شک داشت؟‌

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

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

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

۱- ساعت های بیکاری و حوصله سررفتنمون تقریبا به صفر می رسه چون هر وقت که بخوایم، یک کار جالب برای کردن داریم
۲- دوستای خوبی پیدا می کنیم چون چنین فضاهایی پر هستن از آدم‌های خوب و سالم دیگه
۳- با آگاهی دادن به بقیه و با ساختن خرابی‌های اطرافمون، جامعه بهتری به وجود می‌یاد و شما از زندگی توی یک جامعه با سواد و سالم لذت بیشتری می برین
۴- به نیازهایی مثل «احترام»، «کار خلاقانه»، «احساس مفید بودن» و … جواب می دیم و رضایتمون از خودمون و زندگیمون بالا می ره

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

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

اگر دوست دارین آدم چند بعدی باشین، همین الان به درسنامه برین و یک درس مرتبط انتخاب کنین و هر روز بهتر از دیروز باشین

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

آپدیت: کد R و فایل اطلاعاتی رو اضافه کردم به ته پست.


این پست حاوی
ریاضیات است

چه عنوانی (: اگر خواننده وبلاگ باشین می دونین که چند وقت پیش به درخواست مهدی ، تعداد استفاده از کلمه مهمل در وبلاگ رو شمردیم و بعد در یک پست مهمان بامزه، هادی بنایی که توی دانشگاه سوئد درس می خونه یکسری داده کاوی روی دیتاها کرد تا نشون بده که بدون نظریه می شه با اعداد هر چیز مهملی گفت و بعدش هم توی یک پست آخر، رفتیم سراغ شمردن کلمات و کاربردشون توی وبلاگ.

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

قانون زیف می گه که

اگر تمام کلمات یک کتاب را بشماریم و از زیاد به کم مرتب کنبم به این نتیجه می‌رسیم که رتبهٔ هر کلمه با فراوانی(بسامد) همان کلمه نسبت عکس دارد، یعنی تعداد بارهایی که هر کلمه در متن ظاهر می‌شود با رتبهٔ همان کلمه در متن رابطه معکوس دارد. این نسبت در کلمات کل متن برقرار است. که به قانون زیف معروف شده‌است. بر طبق زیف کلمه‌ای که در رتبهٔ ۱ قرار دارد دوبرابر بیشتر از کلمه‌ای در متن ظاهر می‌شود که در رتبهٔ ۲ قرار دارد و ۳ برابر بیشتر از کلمه‌ای ظاهر می‌شود که در رتبهٔ ۳ قرار دارد و همینطور تا آخر.

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

f(k;s,N)=(1/(k^s))/(H(n,1))

که k میشه Rank و N میشه تعداد کلمات و تابع H هم میشه تابع اعداد هارمونیک.

این تابع رو روی یک نمودار با دو محور لگاریتیمی می کشیم تا نشون بده که هر کاربرد پر کاربردترین کلمه در یک متن تقریبا دو برابر کاربرد دومین کلمه پر کاربرد است و سه برابر کاربرد سومین کلمه و …

حالا اگر جدولی بسازیم که توش هر کلمه و تعداد ظاهر شدن اون در متن باشه و این رو به ترتیب نزولی سورت کنیم و بهشون از یک تا مثلا سیصد شماره ردیف بدیم، جدولی خواهیم داشت از هر کلمه، رتبه و تعداد استفاده اون در متن. اگر این اطلاعات رو با استفاده از برنامه R (یا هر چیز دیگه!) روی نمودار لگاریتمی – لگاریتمی ببریم به این می‌رسیم:

بررسی قانون زیف برای وبلاگ جادی

و بعدش توضیحات امین رو می خونیم:

توی ساده ترین حالت s برابر ۱ هست.
برای داده های تو هم اگر از مجموعه ۳۰۰ تایی استفاده کنی نتیجه بهتری میگیری (البته تا اونجایی که میدونم این نسبت رو بعضی از قسمتهای مجموعه داده کار نمیکنه)
عدد S هرچی به ۱ نزدیک تر باشه مدل بهتری بر اساس توزیع زیپف هست چون تکرار کلمات در زبانهای طبیعی خیلی heavy-tailed هست. (زبان شناس ها اینو به صورت اینکه مغز انسان بیشتر دوست داره کلمات تکراری استفاده بکنه تا جدید توجیح میکنن)
به نظر من ۰.۷۹ برای مجموعه داده های تو خیلی خوبه چون اینو باید در نظر بگیری که این مجموعه کلمات از یک متن یک پارچه (مثل کتاب) نیامدن و مربوط به پست های متفاوت هستن.

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

پ.ن. این سری یک پست دیگه هم داره و حسابی ممنونه از امین صفاری و وقت و حوصله اش (:

پ.ن.۲. کد R برای خوندن فایل و کشیدن نمودار چنین چیزی است (کد رو امین نوشته)

Jadi<-read.csv("/home/khikho/Downloads/300.first.words.csv",sep="\t")
plot(sort(Jadi$count/sum(Jadi$count), decreasing=TRUE), xlab="rank", ylab="density",log="xy")
x<-(1:300)
xp<-(1/(x^0.79))/(sum(1/(x^0.79)))
xp1<-(1/(x))/(sum(1/(x)))
lines(xp,co=2)
lines(xp1,co=4)
legend("topright", c("s=1","s=0.79"), cex=0.8,col=c("blue","red"),lty=1);

و فایل سیصد کلمه پر کاربرد با تعداد استفاده شون هم اینجاست

پ.ن.۳. لعنت به سانسورچی (:

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

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

برنامه پایتون رو اینطوری تغییر می‌دم:

#!/usr/bin/python
# -*- 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();

wordCount = {}

for child in root.iter('item'):
	date = child.find('wppost_date').text[:7] #find the year and month
	body = child.find('content_encoded').text # post content
	title = child.find('title').text 	  # post title

	try:
		fulltext = title + "\n" + body # all the text in the post = title + body
	except:
		pass

	fulltext = re.sub(ur'[_»«"\'&?؟a-zA-Z‌0-9/=.*+\n-%<>:;،؛,\-)(،۱۲۳۴۵۶۷۸۹۰]', ' ', fulltext) #replace extra chars
	words = fulltext.split() # words is a list of all words in this post

	for word in words:
		wordCount[word] = wordCount.get(word, 0) + 1 # wordCount[word]++

for word in wordCount:
	thisLine = (str(wordCount[word]) + "\t" + word)
	print thisLine.encode("utf-8", "ignore")


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

...
4	همسرش
1	آکر
3	خرمش
1	ویسمن
2	خرما
1	یکباری
1	مانغو
2	احساسم
1	عصبي
61	رشد
1	رشت
1	تریلیان
5	همسرم
32	هیات
1	پورتال
2	پیشانی
6	مدیربسته
4	لری
4	وجدان
...


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

jadi@jeducation:~/Downloads/weblog_word_usage$ ./count_all_words.py | wc -l
27880


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

jadi@jeducation:~/Downloads/weblog_word_usage$ ./count_all_words.py | wc -l
23405


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

jadi@jeducation:~/Downloads/weblog_word_usage$ ./count_all_words.py | sort -n -r | head -20

خروجی رو براتون نمی‌ذارم چون فقط یکسری حرف ربط بی ربط است.

پروژه جانبی بسیار مهم برای زبان فارسی: همه زبان‌ها یک فایل دارن به اسم نمی دونم چی (کسی می‌دونست لطفا بگه) که توش کلمات «بی ربط» اون زبان نوشته شدن. به اصطلاح همون am و is و are یا امثال «است» و «شد» و «و» و «یا» و … که در اینجور جاها کاربرد داره (می شه اون کلمات رو از فهرست این کلمات که برنامه بهمون داده حذف کرد تا کلمات اختصاصی من به دست بیاد و نه چیزهایی که برای جمله ساختن همه استفاده می کنن). آیا چنین فایلی داریم برای زبان فارسی؟ تو خارجی‌ها اسمش چیه؟

حالا که بیست تا اولی به درد نخوردن، به جاش کل لیست رو می‌برمش توی لیبره آفیس و مثل همیشه نمودار بیشترین کلمات (غیر حرف ربط و استاندارد مثل است و باشد و شد و اینها) رو می‌کشیم تا با یک نمودار قشنگ کار رو تموم کرده باشیم:

پ.ن. این مجموعه مهمل ، یک قسمت دیگه هم داره (: کمی دیرتر ولی.

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

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

چیکار می کنیم؟ من با وردپرس وبلاگ می‌نویسم. پس اول از بخش مدیریت از منوی 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:] دارم که باعث می‌شه فقط سال و ماه رو ذخیره کنم چون این نمودار با معنی‌تری بهمون می‌ده. راستی گفتم نمودار. اینم نمودارش (مشخصه که با لیبره آفیس لینوکس):

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

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

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

قطع دسترسی اپلیکیشن‌های ناشناسی به اکانت توییتر

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

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

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

و اونجا از سمت چپ بریم در بخش Applicationsها و فهرست رو بررسی کنیم:

اینها برنامه هایی هستن که از طرف من اجازه پیدا کردن به اکانت توییتر من دسترسی داشته باشن. هر کدوم رو که نشناسم یا حتی بشناسم ولی حس کنم که نیازی نیست از طرف من توییت کنه (مثلا فیسبوک و در نتیجه هر چیزی که اونجا دسترسی داره) رو با فشار دادن revoke access حذف می کنم و حالا دیگه چیزهای بی ربط حق ندارن روی توییتر من چیزی پست کنن (: