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

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

 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