• Перевод: Инструкция по проведению code review

    • Перевод
    Не так давно мой коллега переводил интересную статью о code review, перевод хабражителям понравился. А сегодня утром запутанный граф кроссылок вывел eyeofhell на еще более крутую статью. Вашему вниманию предлагается перевод краткой, но емкой инструкции о том, как делать review чужого кода и пережить review собственного. В отличие от упомянутой выше статьи, эта больше фокусируется на практических аспектах code review и содержит множество полезных рекомендаций как и что делать, чтобы не было мучительно больно. Хинт: чтобы почитать оригинал, кликните на имени автора в плашке под переводом.

    осторожно, под катом - много англицизмов!
  • Байки о несовместимых приложениях

    • Перевод
    Это отрывки из бесплатной главы из бумажной книги «The Old New Thing». Они ничему не пытаются научить; это просто короткие забавные эпизоды из будней борцов за совместимость новых версий Windows со старыми приложениями.

    Изменяем номер версии Windows


    Изменить номер версии, который Windows сообщает программам, не просто, как кажется. Например, некоторые программы проверяют номер версии так:
    UINT Ver = GetVersion();
    UINT MajorVersion = LOBYTE(uVer);
    UINT MinorVersion = HIBYTE(uVer);
    if (MajorVersion < 3 || MinorVersion < 10) {
        Error("This program requires Windows 3.1");
    }
    

    Представьте себе, как этот код отработает на Windows 95, у которой номер версии 4.0. Вторая проверка срабатывает из-за того, что 0 меньше 10.
    И ладно бы программа просто выводила сообщение об ошибке и завершалась. Многие рушились: очевидно было, что их поведение на «неподдерживаемых» версиях Windows никогда не тестировалось.

    Таких программ оказалось настолько много, что мы перестали исправлять их по одной, и просто изменили возвращаемый номер версии с 4.0 на 3.95.

    Программы для MS-DOS тоже не все гладко реагировали на изменение версии ОС. Это удивительно потому, что к тому времени у MS-DOS уже были десятки выпущенных версий и под-версий, и разработчикам пора было бы уже научиться проверять номер версии. Но например, один пакет программ использовал номер версии DOS как индекс в таблице функций: по собственной функции для каждой вышедшей версии. В таблице было пять функций: от MS-DOS 1.x до 5.x. Когда программа запускалась под MS-DOS 6.0, она вызывала адрес за пределами таблицы, и рушилась.

    Изменить номер версии, который Windows сообщает программам, — необходимый, но очень тяжёлый шаг. Пара нажатых клавиш, и падают сотни приложений, отлично работавших до сих пор; теперь отделу совместимости придётся потратить на вылавливание чужих багов лишнюю тысячу человеко-часов.

    Читать дальше →
  • Orange San Francisco — Совсем не бюджетный андроидфон за £99

      image     Не так давно меня попросили подобрать новый телефон, так как я имею кое-какой опыт общения с платформой Android и телефоны на этой платформе доступны в широком ценовом диапазоне, взгляд был смещен именно на так называемые андроидфоны.

          Изучив российский розничный рынок не дорогих смартфонов на базе Android'а я начал уже присматриваться к LG Optimus One, но по счастливой случайности бродя по интернетам наткнулся на героя обзора — Orange San Francisco, ценой в Англии всего в £99 (около 4500 наших рублей) и по техническим характеристикам превосходящий чуть-ли не в два раза все предоставленные на нашем рынке смартфоны стоимостью до 10 000 рублей.

      Именно о нем и пойдет речь в сегодняшнем обзоре, добро пожаловать под хабракат.
      Читать дальше →
    • Крошечный Excel на чистом JavaScript (30 строк кода)

      • Перевод
      Особенности:
      • Около 30 строк обычного JavaScript
      • Использованные библиотеки: отсутствуют
      • Синтаксис как в Excel (формулы начинаются с "=")
      • Поддерживаются произвольные выражения(=A1+B2*C3)
      • Обнаруживаются циклические ссылки
      • Автоматическое сохранение в localStorage

      image
      Читать дальше →
    • Ускоряем Nginx за 5 минут

        image
        Попытайтесь повторить это сами

        Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

        Минутка банальности.

        yum -y install nginx
        

        На всякий пожарный, создадим бэкап исходного конфига.

        cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
        vim /etc/nginx/nginx.conf
        

        А теперь можно и похимичить!
        Бдыжь-бдыжь
      • PHP IPC — Межпроцессное взаимодействие в PHP


          Целью данной заметки является ознакомление PHP-разработчиков с возможностями межпроцессного взаимодействия в данном языке. Заметка не предполагает во всех деталях рассказать о каждой из возможностей, деталях реализации или показать рабочие примеры кода.

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

          Хотите узнать больше?
        • Подводные камни JavaScript

            Мне очень нравится JavaScript и я считаю его мощным и удобным. Но для большинства начинающих JS-программистов, много проблем создаёт недопонимание аспектов языка. Часто конструкции языка ведут себя «нелогично». В данной статье я хочу привести примеры «граблей», на которые я наступил; объяснить поведение языка и дать пару советов.

            Читать дальше →
          • Визуализация «В Контакте»: Скажи мне, кто твой друг?

              Привет, Хабралюди!

              У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



              Это мои друзья. Каждая точка — человек, целый мир, с которым так или иначе мне повезло встретиться. Линия между точками обозначает дружбу. По этой сети можно, правда, сказать многое о человеке.

              Как построить свою сеть?
            • Unbiased rendering (рендеринг без допущений)

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


                Изображение отрендерено с помощью Maxwell Render.

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