گنو/لینوکس رو دوست دارین؟ بگین چرا و شاید یک چیز فوق العاده برنده شدین

سایت خوب سیتو با همکاری یکی دو تا جای دیگه داره یک مسابقه خوب برگزار می که: چرا / گنو لینوکس رو دوست دارم.

بله (: عنوانش مثل مجموعه پست های «چرا گنو/لینوکس رو دوست دارم» منه (: خیلی هم عالیه. شما می تونین توی وبلاگتون، توییتر، فیسبوق، گولاس یا هر جای دیگه بگین چرا گنو/لینوکس رو دوست دارین و … بگین چی؟!!! مستقل از بودن در یک جمع عالی، این رو برنده بشین:

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

به این صفحه برین و شانس خودتون رو امتحان کنین (:

آپدیت های این چند روز

یک لپ تاپ جدید از شرکت گرفتم که داشتم مهاجرت می کردم بهش. بزرگترین لپ تاپی است که در زندگی داشتم: Dell Vostro 3550 15inch! (: لپ تاپ چرندی است و اشتباهی خریده شده (: الان روش مینت دارم. اول باتری بیشتر از یکساعت دوام نداشت که ناراحت کننده‌ترین بخش جریان بود ولی احتمالا مربوط می شد به اینکه این لپ تاپ دو تا کارت گرافیکی داره. الان یکیش رو خاموش کردم منتظرم ببینم چطوری می شه (:

بعدش اینکه یکی از جایزه‌های مسابقه «سورپرایز اوبونتو رو حدس بزنید» رسیده ولی نفر دوم هنوز حتی آدرسش رو هم برام نفرستاده‌ (: متین جانزود باش بفرست به jadijadi روی gmail (:

IMG_1795

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

تغییر تم (:

اگر حضوری وبلاگ رو می خونین متوجه تغییر تم شدین (: دنیا است و حوصله تنگ آدم ها که سر می ره دیگه… مدتی روی اون تم یک ستونه بانمک بودیم، الان دیگه ترجیح دادم برگردم به دو ستون!

ارضا نمی شیم

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

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

 3 AliBehjati
 3 Mohammad
 3 Hesam
 1 Ehsan
 1 Amir1207
 1 Ali1217
 6 Ali0202
 1 Voltan
 2 Amir0119
 1 Saeed
 2 Jamshid
 2 Matin
 3 Narcissus
 2 MassoudM

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

[jadi@jedora ghore.sh]$ cat ghore_keshi.sh 
#! /bin/bash

if [ ! -f "gklist" ]; then
    echo "Write names and scores to 'gklist' file and execute this script at the same directory"
    exit 1
fi

if [ ! -d /tmp/gk ]; then
    mkdir /tmp/gk
else
    rm /tmp/gk/*
fi
cp "gklist" /tmp/gk
cd /tmp/gk

for ((i=0; i<`cat "gklist" | wc -l`; i++)); do
    S="`cat "gklist" | head -$[i+1] | tail -1`"
    NUM="`echo "$S" | awk '{ print $1 }'`"
    NAME="$(cat "gklist" | head -$[i+1] | tail -1 | cut -d\" -f2)"
    for ((j=0; j<$NUM; j++)); do
	echo $NAME >> result
    done
done

LL="`cat "result" | wc -l`"
RANDNUM="`python -c "import random;print(random.randint(1, $LL))"`"
barande=`cat "result" | head -$RANDNUM | tail -1 | cut -d" " -f2 `
cowsay Winner of $1 $barande

نکته بسیار مهم اینه که در یک رای گیری / قرعه کشی و … تا وقتی از نرم افزار آزاد و پروسه‌های شفاف استفاده نشده یعنی یک جای کار می لنگه (منظور فقط تقلب و خباثت نیست. این لنگش(!) ممکنه سواد یا شعور یا دسترسی فنی برگزار کننده باشه).

حالا که همه پروسه‌ها شفافن و هر کسی هم به سورس برنامه انتخاباتی دسترسی داره، می ریم سراغ قرعه کشی. اگر یک سیستم درست داشتیم این بخش هم باید به شکل مستقیم در اینترنت پخش می شد ولی من به خاطر لنگیدن اینترنت درست، ضبطش کردم و آفلاین گذاشتمش روی اینترنت که شبهات به حداقل برسه. با یک خط دستور دوبار برنامه رو اجرا می کنیم برای دو جایزه: اولی تی شرت و دومی ماگ. دعا هم کنیم که برنده تکراری در نیاد! ویدئوی برگزاری رو ببینین؛ با تشکر از شرکت معظم www.aivivid.com که اسپانسری تی شرت مجری رو بر عهده داشتن



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

  • برنده اول مسعود.ام تنها شرکت کننده ما از گوگل پلاس با شانس ۲ که برنده این تی شرت میشه:
  • و برنده دوم متین – اونهم با شانس دو – که این ماگ رو از اسپانسر مسابقه یعنی سیتو دریافت می کنه

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

پ.ن. ویدئو رو با این دستور گنو/لینوکسی کوچیک کردم

 $ffmpeg -i DSCN3085.AVI -ab 56k -ar 22050 -b 300k -r 15 -s 480x360 DSCN3085.flv                             

پهپادهای شهروندی مجهز به دوربین و اسلحه

این آقای مهربون از اینترنت یک درون یا فکر کنم تو فارسی می گیم پهپاد خریده.

Screenshot from 2012-12-26 10:40:47

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

Screenshot from 2012-12-26 10:40:13

باهاش به ماکت‌های مقوایی آدم حمله کرده و تک تکشون رو با گلوله‌های به سر و گردن و سینه «کشته».

فقط برای اینکه بدونیم کدوم وری داریم می ریم و البته به عنوان الهام برای دوستانی که به کار جذب بودجه‌های عجیب غریب هستن (:‌

اگر اینترنت کم-سرکوب دارین،‌ ویدئوی کامل رو ببینین:

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

آپدیت: کد 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);

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

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

دعوت به تماشای گروهی فیلم آینه‌های روبرو

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

ولی فردا چهارشنبه (هشتم آذر ۱۳۹۱) ساعت شش و نیم می‌خوام سینما سپیده باشم برای دیدن یک فیلم و شما رو هم دعوت می‌کنم که بیاین و ببینین: فیلم سینمایی آیینه‌های روبرو به کارگردانی نگار آذرباییجانی.

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

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

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

لینک‌های مرتبط:
ترنسکشوال کیست و پاسخ به چند پرسش همیشگی
مطلب خوب لابیرنت / از پشت یک سوم در مورد فیلم آینه‌های روبرو
نقد خوب سایت گاردین در مورد فیلم آینه های روبرو : فیلم ایرانی در مورد تابوی ترنس سکشوال ها

برنامه نویسی لگویی: شمارنده جاوا اسکریپت

یکی از دوستان بهم ایمیل زده و خواسته کمکش کنم در یک اسکریپ که ثانیه شماری رو توی صفحه وب نشون بده. من برنامه نویس جاوا اسکریپت نیستم ولی راه حل چیزی است که باید بهش بگیم Lego Programming.

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

دقت کنین! این قطعات رو باید بفهمیم! یک آفت بزرگ که من دارم همه می بینم (بخصوص توی فروم های لینوکسی) کپی پیست است. چیزی که نمی فهمین رو کپی پیست نکنین. چیزها رو پیدا کنین، بفهمین، یاد بگیرین و کپی پیست کنین و تغییر بدین. مثلا من برای کد بالا یک سرچ ساده کردم به دنبال java script to count secconds و روی اولین گزینه کردم و رسیدم به این کد قشنگ:

<table border="0">
<tr>
<td align="center"><font face="Arial"><strong>You
have
visited my page for:</strong></font></td>
<td align="center"><form name="d">
<p><input type="text" size="8"
name="d2"></p>
</form>
</td>
<td align="center"><font
face="Arial"><strong>seconds!</strong></font></td>
</tr>
</table>

<script>
<!–
/*By George Chiang. (JK’s ultimate JavaScript tutorial and free JavaScripts site!)
http://www.javascriptkit.com
Credit MUST stay intact for use*/
var milisec=0
var seconds=0
document.d.d2.value=’0′
function display(){
if (milisec>=9){
milisec=0
seconds+=1
}
else
milisec+=1
document.d.d2.value=seconds+"."+milisec
setTimeout("display()",100)
}
display()
//–>
</script>

دقیقا چیزی که من می خوام نیست.. پس کد رو می خونم. دو تا متغیر داره milisec و seconds. کافیه ثانیه رو تنظیم کنم رو چیزی که می خوام مثلا کد رو عوض کنم به seconds=1000 و توی خروجی هم کلا هزارم ثانیه رو نمایش ندم یعنی: document.d.d2.value=seconds و خلاص (: به همین سادگی. لگو بازی تموم شد می ریم خونه هامون (:

You have visited my page for (starting from 1000 for fun):

seconds!

نکته ۱. این کد کپی رایت داره! نگاهش کنین و ازش یاد بگیرین و خودتون بدون قسمت های اضافی (مثلا دهم ثانیه شمار) دوباره بنویسینش تا بشه مال خودتون و ترجیحا آزاد (با لیسانس جی پی ال ۲ یا ۳) منتشرش کنین (:
نکته ۲. از لگو پروگرمینگ که حرف زدیم جا داره یاد بکنیم از لغت مشابهش زبون برنامه نویسی لوگو (َLogo) که ماروین مینسکی بزرگ از بنیانگذارانش بود و برای آموزش برنامه نویسی به بچه ها طراحی شده بود و همسن های من برنامه نویسی رو باهاش یاد گرفتن (: