اضافه کردن تابع هش sha1 در مایکروسافت اکسل

hash

کی فکر میکرد من یک روز راهنمای ویژوال بیسیک و اکسل بنویسم؟ ولی خب دست روزگاره دیگه. روم به دیوار روم به دیوار،‌ گفتم اینجا هم بنویسم شاید روزی کسی رو از سرگردونی نجات داد.

اگر در اکسل لازم دارین از SHA1 استفاده کنین یا اصولا رشته‌ای رو هش کنین باید بدونین که شرکت عزیز مایکروسافت لازم ندیده برای اکسل تابع هش بذاره. پس اول باید یک ماجول درست کنین.

توجه: اگر در اکسل ۲۰۱۳ هستین، منوی Developer Tools به شکل پیش فرض غیرفعال است. باید با رفتن به File ~ Options ~ Customize Ribbon توی بخش Main، اونو تیک بزنین تا فعال بشه.

روش ساخت ماجول اینه که از منوی Developer ، روی ویژوال بیسیک کلیک کنین تا پنجره برنامه نویسی باز بشه. بعد از منوی Insert بگین که می خواین یک Module اضافه کنین و بعد کد زیر رو توش بنویسین:

ادامه خواندن “اضافه کردن تابع هش sha1 در مایکروسافت اکسل”

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

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

poster_karaj

زمان کارگاه لینوکس: ۲۵ اردیبهشت ۱۳۹۳ ساعت ۱۰
زمان کارگاه پایتون: ۲۶ اردیبهشت ۱۳۹۳ ساعت ۱۰
مکان: کرج خیابان شهید بهشتی میدان حصارک دانشگاه خوارزمی

آپدیت: بر اساس قوانین دانشگاه ، برای حضور حتما باید ثبت نام کرده باشین… لطفا از این دو لینک پیش ثبت نام رو انجام بدین: http://events.karajlug.org/events/7 و http://events.karajlug.org/events/8

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

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

/********************
 * 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 در توسعه نرم‌افزار مقیاسی است برای بررسی تجمع اطلاعات در دست اعضای تیم. ضریب اتوبوس در یک پروژه، تعداد نفراتی است که در صورت از بین رفتنشان (مثلاً در صورت تصادف با یک اتوبوس) باعث توقف یا اختلال جدی در کار پروژه می‌شوند. ضریب اتوبوس بالا نشان دهنده پروژه‌ای است که در آن افراد زیادی در مورد اجزای پروژه اطلاعات کافی دارند.

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

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

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

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

ساده‌ترین توضیح اینکه باگ خونریزی قلبی دقیقا چیه

منبع و توضیح کد

برای پیشگیری از باگ خونریزی قلبی، خودتون رو آپدیت کنین

همونطور که ایریکس هم در توییتش گفته، باگ جدیدی توی اوپن رمزنگاری اس اس ال کشف شده که اجازه می ده اطلاعات حفاظت شده در شرایط طبیعی هم دزدیده بشن. این باگ که به Heartbleed یا **خون‌ریزی قلبی** مشهور شده به هر کسی اجازه می ده اطلاعات حافظه حفاظت شده سیستم‌هایی که از این ورژن مشکل‌دار OpenSSL استفاده می‌کنن رو بخونن. آزمایشی که سایت کشف کننده این جریان انجام داده ادعا می‌کنه که تونسته بدون هیچ ردپایی سرتیفیکیت‌های X.509، کلمات عبور، پیام‌های مسنجر، ایمیل‌ها و داکیومنت‌های تجاری رو بخونن.

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

sudo apt-get update && sudo apt-get upgrade #debian based
sudo yum update #fedora based
sudo pacman -Syu #arch based

پیاده سازی بازی ۲۰۴۸ در ۴۷۸ بایت کد سی

بعضی ها اعجوبه هستن.

jadi@funlife:/tmp$ cat 2048.c 

M[16],X=16,W,k;main(){T(system("stty cbreak")
);puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i
,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M
[w(d,i,j++)],W|=P>>11,l*P&&(f?M[w(d,i,k)]=l<<
(l==P):0,k++),l=l?P?l-P?P:0:l:P:(f?M[w(d,i,k)
]=l:0,++k,W|=2*!l,l=0);}w(d,i,j){return d?w(d
-1,j,3-i):4*i+j;}T(i){for(i=X+rand()%X;M[i%X]
*i;i--);i?M[i%X]=2<>X)%4]));}//[2048]


jadi@funlife:/tmp$ gcc 2048.c 

jadi@funlife:/tmp$ ./a.out 

   4|   2|  64|   2|
  32|  64|  32|  16|
   4|   2|  16|   4|
   2|  16|   4|   2|
LOSE
jadi@funlife:/tmp$

همونطور که می بینین برای من بدون هیچ مشکلی کمپایل شد. با مراحل بالا و در اولین تلاش (: وارنینگ می ده ولی کمپایل می کنه. جی سی سی ۴.۸.۱