• Приключенческая игра, в которую играют путем изменения её Javascript-кода

      Удивлен, что мимо Хабра прошла очаровательная приключенческая javascript-игрушка Untrusted.



      Надо помочь герою преодолеть более 20 уровней, в процессе прохождения которых мы встретим боевых дронов, реки и лабиринты, ключи и замки, звонки «оператору Матрицы» и многое другое… К счастью, благодаря взломанному компьютеру у главного героя есть доступ к коду игры! И если на первых уровнях мы просто изменяем на ходу реальность, то в конце нам придется запускать в нее свои js-объекты, помогающие атаковать мега-босса.

      Одно жаль — уровней мало. Бонус: милая музыка + хорошие комментарии в коде. Приятного вечера!
    • Как работают одноразовые пароли

      • Tutorial

      Вступление


      Как показывает практика, существует определенное непонимание принципов работы одноразовых паролей (это те самые, которые используются в GMail, в спец. токенах платежных систем и так далее).

      Прочитав эту небольшую статью, Вы разберетесь в принципе работы одноразовых паролей на основе хэшей, а заодно напишете на Python небольшую программу, которая умеет вычислять пароли для двухэтапной аутентификации Google.
      Читать дальше →
    • Расширение функций виджета iCal в Mac OS X

        На Хабре недавно была опубликована статья о том, как писать виджеты для Mac OS X Dashboard.

        Давайте воспользуемся полученными знаниями для того, чтобы научить стандартный dashboard'овский календарик показывать нерабочие и праздничные дни.


        Читать дальше →
      • Программный RAID1 (зеркалирование) на XenServer 5.5

          Возникла необходимость установить Citrix XenServer 5.5 на сервер с «ненастоящим» RAID'ом.

          Просто классическая ситуация: Intel Matrix Storage Manager в BIOS'е нормально создает RAID1-массив, но Linux (на котором построен XenServer) продолжает его видеть как два независимых SCSI-диска: /dev/sda + /dev/sdb… Привет, Fake RAID!
          Читать дальше →
        • Поддержка замыканий в C/C++/Objective-C в Snow Leopard

            Угадайте, что это такое:

            testblock = ^(char *s) { printf("String is %s\n", s); };
            testblock("TEST!");

            * This source code was highlighted with Source Code Highlighter.

            Скоро подобные конструкции будут все чаще встречаться в приложениях для Mac OS и, возможно, iPhone OS.

            Еще в конце лета 2008 года Apple объявила, что работает над расширениями к C/C++/Obj-C под условным названием «блоки» (Blocks), которые представляют из себя ни что иное, как замыкания (closure).

            Читать дальше →