بایگانی ماهیانه: آوریل 2014

پای فون؛ یک تلفن موبایل هوشمند مبتنی بر رزبری‌پای

من همیشه می‌گم که یکی از مشکلات تکنولوژی در دوره ما اینه که سر درآوردن ازش برای تازه‌کارها راحت نیست. مثلا خیلی از ما یا می گیریم با PHP برنامه بنویسیم ولی نمی دونم اون پشت داره دقیقا چی می گذره یا با ویژوال بیسیک دگمه ها رو میچینیم و به توابع وصلش می کنیم اما درک نمی کنیم دقیقا کامپیوتر از اون دگمه و کدها چی می فهمه – افراد بسیار کمتری هستن که واقعا پشت این رابط‌های راحت رو هم نگاه کنن و درک کنن اون پشت دقیقا چه خبره.

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

piphone

مجموع هزینه‌های ۱۵۸ دلار بوده و نتیجه پروژه درک خیلی خوب یک آدم از شیوه ای است که اجزای یک تلفن همراه در کنار هم قرار می‌گیرن. معلومه که قرار نیست یک نفری کل الکترونیک و مخابرات رو دوباره اختراع کنیم اما بخش جذابش درک کردن اینه که اون چیزی که صبح تا شب دستمونه، از نظر فانکشنی چه اجزایی داره و چطوری به همدیگه وصل شدن. نکته جالب این طرح اینه که هیچ مداری براش درست نشده و کل سیستم فقط با وصل کردن اجزا به همدیگه و نوشتن برنامه براشون درست شدن.

غیرقابل اعتماد؛ گیکی‌ترین بازی ای که این هفته خواهید دید

قبلا بازی‌های گیکی معرفی کردم. از ۲۰۴۸ تا هل بدین و به گنج برسین تا ایکس‌ اوی گیک‌ها تا نوشته‌هایی مثل چه کسی بازی‌های کامپیوتری را کشت اما غیرقابل اعتماد‌ یک چیز دیگه است! بازی رو سعید نجاتی معرفی کرد و من رو برای چند ساعت معتاد (: در این بازی کاملا ساده از نظر گرافیکی، شما یک کامپیوتر پیدا می کنین که چنین کدی رو اجرا می کنه:

/********************
 * theLongWayOut.js *
 ********************
 *
 * Well, it looks like they're on to us. The path isn't as
 * clear as I thought it'd be. But no matter - four clever
 * characters should be enough to erase all their tricks.
 */

function startLevel(map) {
    map.placePlayer(7, 5);

    var maze = new ROT.Map.DividedMaze(map.getWidth(), map.getHeight());

    maze.create( function (x, y, mapValue) {

        // don't write maze over player
        if (map.getPlayer().atLocation(x,y)) {
            return 0;
        }

        else if (mapValue === 1) { //0 is empty space 1 is wall
            map.placeObject(x,y, 'block');
        }
        else {
            map.placeObject(x,y,'empty');
        }
    });

    map.placeObject(map.getWidth()-4, map.getHeight()-4, 'block');
    map.placeObject(map.getWidth()-6, map.getHeight()-4, 'block');
    map.placeObject(map.getWidth()-5, map.getHeight()-5, 'block');
    map.placeObject(map.getWidth()-5, map.getHeight()-3, 'block');

    map.placeObject(map.getWidth()-5, map.getHeight()-4, 'exit');
}

و از طریقش دور شما یک حصار قرص و محکم می کشه:

javascriptgame

و برای رسیدن به خروجی لازمه بخش‌هایی از این کد رو عوض کنین تا دیوارهای اطرافتون تغییر کنن و بتونین ازش بیرون برین و خودتون رو نجات بدین! در مراحل پیشرفته‌تر تغییر کدها نیاز به دقت و هوش و تلاش بیشتری داره چون زندانبان لعنتی شروع می کنه به پیشرفت کردن و به شما اجازه ادیت بخش های کمتری از کد رو می ده و حتی لازم می شه API زندان رو چک کنین و …

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

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

ضریب اتوبوس

در ادامه پروژه کتاب نارنجی

bus_factor

ضریب اتوبوس یا Bus Factor در توسعه نرم‌افزار مقیاسی است برای بررسی تجمع اطلاعات در دست اعضای تیم. ضریب اتوبوس در یک پروژه، تعداد نفراتی است که در صورت از بین رفتنشان (مثلاً در صورت تصادف با یک اتوبوس) باعث توقف یا اختلال جدی در کار پروژه می‌شوند. ضریب اتوبوس بالا نشان دهنده پروژه‌ای است که در آن افراد زیادی در مورد اجزای پروژه اطلاعات کافی دارند.

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

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

ترجمه متون در کامند لاین

میلاد زنگنه این پروژه بامزه رو برام فرستاده:

یک برنامه صد خطی AWK بازمتن و آزاد که می‌تونه سرویس ترجمه گوگل رو صدا بزنه و از همون خط فرمان، جمله‌های شما رو ترجمه کنه. کافیه
فایل فشرده رو دریافت کنین و بازش کنین و نصبش کنین و صداش بزنین:

jadi@funlife:/tmp$ axel -q https://github.com/soimort/google-translate-cli/archive/master.tar.gz
jadi@funlife:/tmp$ tar xf master.tar.gz 
jadi@funlife:/tmp$ ./google-translate-cli-master/translate "سلام گیک. حالت چطوره؟"
Hi geek. How are you?
jadi@funlife:/tmp$

البته قبلش باید بسته gawk رو نصب کرده باشین.

روز جهانی علف

cannabis

امروز ۲۰ آوریل یا همون ۴/۲۰ است و در سطح جهان روز جهانی گیاه کانابیس یا همون ماری جوانا است که یکی از محصولات جانبی‌اش می‌شه حشیش. این روز معمولا برای معرفی یک خرده فرهنگ که حول مصرف این ماده شکل گرفته شناخته می شه و علامت جهانی این ماده هم برگ گیاه کانابیس است.

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

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

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

نکته: این یک مطلب در دفاع از ماری جوانا نیست. این مطلب سعی می کنه به ما بگه چطور باید فکر کنیم و شدیدا مطلبی است در دفاع از نحوه استدلال صحیح. مثلا گفتن اینکه «یکی رو می شناسم که با ماری جوانا مرده» یا «منظورتون اینه که ماری جوانا باید آزاد بشه؟! دیگه چی؟» یک استدلال صحیح نیست (:

منابع برای مطالعه بیشتر:

چی شد که ماری جوانا ممنوع شد. نگاهی به تاریخچه و تبلیغات و سخنرانی ها
گفتگوی TED در این مورد