• 3D и ничего лишнего

      Переход к массовому использованию автостереоскопических дисплеев в телевизорах и ноутбуках происходит невероятно быстро. Летом прошлого года появились первые 3D-ноутбуки, например, можно вспомнить модель Toshiba A665, поставляемую с парой затворных очков, то уже в этом году на CES 2011 Toshiba представила прототип нового ноутбука с поддержкой 3D-изображения, для которого очки не требуются. Очевидно, что прогресс в этой области не остановить, и уже сейчас разработан ряд интересных решений, позволяющих нивелировать такие естественные недостатки 3D, как потеря разрешения, ограниченные углы обзора, появление «слепых зон» и пр.

      image
      Читать дальше →
    • Быстрое восстановление пароля по MD5-хешу методом брутфорса

        Наверное каждый из нас хоть раз забывал пароль от какого-нибудь важного сайта, а потом пытался расшифровать его по сохранившимся кукам в браузере. Возможно это были даже не Ваши куки, но это не важно — если Вам интересна тема скоростного брутфорса, то добро пожаловать под кат!

        Сразу скажу, что описанные в статье техники ускорения подходят для любого алгоритма хеширования, но из-за широкой распространённости я выбрал именно md5.
        Читать дальше →
      • node-sync — псевдо-синхронное программирование на nodejs с использованием fibers

          Надавно была опубликована библиотека node-fibers, вносящая в nodejs и v8 поддержку замечательного fiber/coroutine — тоесть, возможность использовать yield.
          Параллельно, на nodejs groups прошел целый ряд обсуждений на тему всевозможных вариантов упрощения асинхронного синтаксиса.

          Вдохновившись возможностями, которые дают «волокна», я написал библиотеку node-sync, которая делает разработку в асинхронном окружении nodejs значительно удобнее, а код — нагляднее.

          Синопсис

          // Обычная асинхронная функция, вызывает callback с результатом через 1 сек
          function someAsyncFunction(a, b, callback) {
              setTimeout(function(){
                  callback(null, a + b);
              }, 1000)
          }
          // Вызываем эту функцию синхронно, используя Function.prototype.sync(),
          // работающий по тому же принципу, что и call()
          // на этом моменте текуший поток "зависнет" на секунду, пока функция не вернет значение
          var result = someAsyncFunction.sync(null, 2, 3);
          console.log(result); // "5" через 1 секунду
          

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

            Erlang является уникальной по своим возможностям платформой, и не смотря на это, язык до сих пор является экзотикой. Причин существует несколько. Например, тугая арифметика, непривычность синтаксиса, функциональность. Это не недостатки. Это просто вещи, с которыми большинство программистов не могут или не хотят работать.

            Несколько дней назад Jose Valim опубликовал в своем репозитории проект языка, построенного поверх Erlang. Этот язык обладает простой объектной моделью и Ruby-подобным синтаксисом. Под катом выжимки из документации и видео, демонстрирующее простой пример.

            disclaimer: %username%, прежде чем делать выводы насчет того, что умеет, а что не умеет elixir, просьба глазами пройтись хотя бы по readme.

            Читать дальше →
          • Удаленная отладка Node.js приложений и кода на WebKit браузерах

              В статье пойдет речь о Must Have тулзе для удаленной отладки Node.js приложений либо кода на WebKit браузерах node-inspector.

              Для отладки кода в браузере, впринципе удаленная отладка и не нужна, не считая мобильных устройств, где она фактически не возможна потому что крайне не удобна. Совсем другое дело с серверным JavaScript. Node.js имеет несколько отладчиков, восновном продвигают ndb Node Debugger — консольная утилита для дебага Node.js приложений. Подходит только для фанатов консоли либо для мазохистов. Работать не удобно, отлаживать долго, по сравнению с отладкой кода в том же FireBug.

              Что же умеет node-inspector:
              1. Удаленная отладка
              2. Отладка в графическом интерфейсе WebKit-debugger (На клиент ничего не нужно ставить — у вас все уже есть)
              3. Редактирование runtime-кода!
              4. Использует WebSockets, и никакого polling'а!
              5. Удаленное профилирование блоков кода c использованием v8-profiler
              Читать дальше →
            • Слежение за процессами и обработка ошибок, часть 2

                Преамбула


                В первой части данной статьи мы рассмотрели механизм связей между процессами и процесс распространения ошибок. Сегодя давайте рассмотрим один случай, который не был освещен в предыдущей части – постреляем по процессам сигналом kill.
                Читать дальше →
              • Детектирование округлостей на изображении средствами MATLAB

                image
                В этом топике я приведу альтернативный подход к задаче, решенной товарищем VasG тут. Как заметили в комментариях, задачу обнаружения округлостей на изображении можно было решить при помощи MATLAB Image Processing Toolbox, что я и сделал. MATLAB радует меня очень сильной документацией с большим количеством наглядных примеров; а также удобством m-языка, за счет которого сильно сокращается время реализации вычислительных решений. Конечно, есть и минусы — в частности алгоритмы работают медленно, — но для данной задачи это не существенно. Отмечу только, что из m-языка довольно просто можно получить C-код, который будет работать гораздо быстрее.
                Читать дальше →
              • Android, недорого!

                  image

                  Android-фоны однозначно в тренде, но мало кто готов вступать в клуб «кому за 30», где 30 – цена гаджета в килорублях. Специально для них я отыскал все приличные гуглофоны в пределах 12000 рублей. И это было непросто!
                  Читать дальше →
                • Страны, регионы, города

                    Карта мира
                    Хочу поделиться базой стран, регионов и городов на русском языке. Возможно, кому-то пригодиться в своих проектах. В базе 106 стран, 922 региона и 10969 городов!

                    Если кто не понял о чем речь, то вспомните, например, как на ВКонтакте указывается город: выбирается страна -> подгружается список регионов -> выбирается регион -> подгружается список городов

                    Читать дальше →
                  • Erlang и его процессы

                    0 Преамбула


                    Модель – это ещё не мир. Являясь людьми, мы не можем в полной мере познать реальность. Мы можем лишь построить её модель и через неё изучать и использовать реальный мир. От того, какую модель мы выберем, зависит полнота, успешность, живучесть части реальности в информационном пространстве (или в нашей голове).

                    У каждого языка программирования своя парадигма построения реальности. В функциональных языках процесс вычисления трактуется как вычисление значений функций, в императивных языках, наоборот, вычислительный процесс описывается в виде инструкций, изменяющих состояние программы.

                    В данной статье автор осветит функциональный язык программирования Erlang, парадигма которого может звучать так: «все является процессами». В первой части данной стати будет дана вводная информация по созданию и коммуникации процессов между собой, во второй мы остановимся на планировании процессов внутри виртуальной машины Erlang и спецификации процессов. Статья адресована для новичков, кто хочет начать создавать сложные, многопоточные и отказоустойчивые приложения на языке Эрланг.
                    Читать дальше →