• Анти-соглашение на ваше соглашение

      Все наверняка видели абзацы («соглашения»), механически добавляемые корпорациями в конец исходящих писем, пытающиеся создать у вас впечатление, что вы что-то должны отправителю (не раскрывать информации, удалить данное письмо, немедленнно связаться с автором, и тому подобное) в том или ином случае: «This Email and the information contained in it and in any attachments are confidential and may be privileged. If you have received this Email in error please notify...»

      узнать страшную правду
    • Введение в SELinux: модификация политики targeted для сторонних веб-приложений

        Привет, коллеги!
        Многие из нас занимаются настройкой рабочих серверов для веб-проектов. Я не буду рассказывать о том, как настроить Apache или Nginx: вы знаете об этом больше меня. Но один важный аспект создания frontend-серверов остается неосвещенным: это настройки подсистем безопасности. «Отключите SELinux», — вот стандартная рекомендация большинства любительских руководств. Мне кажется, что это поспешное решение, ибо процесс настройки подсистем безопасности в режиме «мягкой» политики чаще всего весьма тривиален.

        Сегодня я расскажу вам о некоторых методах настройки подсистемы безопасности SELinux, применяемой в семействе операционных систем Red Hat (CentOS). В качестве примера мы настроим связку для веб-сервера Apache + mod_wsgi + Django + ZEO на CentOS версии 5.8.

        Читать дальше →
      • Сбой на Яндексе

        • Из RSS

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

        Мы приносим извинения всем нашим пользователям.

        Для тех, кому интересно, более подробное описание:

        Проблема вызвана ошибкой программного обеспечения на маршрутизаторе, расположенном в нашем новом дата-центре в Амстердаме. В Яндексе используются протоколы маршрутизации – внутренний протокол OSPF и внешний протокол BGP. Из-за ошибки информация обо всех внешних маршрутах оказалась во внутренних таблицах маршрутизации. Это примерно на три порядка больше маршрутов, чем обычно. Протокол OSPF не рассчитан на такое количество. В результате у всех маршрутизаторов кончилась память, и они перестали работать. Нарушилась работа сети, и через несколько минут Яндекс стал полностью недоступен.

        Внутренняя сеть тоже не работала. Поэтому нашим специалистам потребовалось потратить много времени для того, чтобы по цепочке добраться до источника проблемы.

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

        Сеть начала постепенно подниматься. Через некоторое время сервисы Яндекса стали доступны большей части пользователей.

        Владимир Иванов,
        делаю sh ip bgp summary

        .
      • jQuery Tools v1.0.1

          jQuery Tools Logo
          jQuery Tools v1.0.1 — это инструмент/библиотека представляет собой файл весом в 5,8 кб включающий в себя наиболее важные компоненты для вебдванольных сайтов, а именно: табы, всплывающие подсказки, плавные переходы, прокрутки, всплывающие окна и т.д.

          Не буду тянуть резину, лучше, как говориться, один раз увидеть, чем сто раз услышать!
          Переходим по ссылке и смотрим более 50 (!) демок:

          Несколько понравившихся мне демонстраций. Очень рекомендую!
          Маскируем фоновое изображение;
          AJAX-табы с поддержкой истории переходов;
          Неколько всплывающих окошек на одной странице.
        • Google применил алгоритмы на своих сотрудниках

            Обеспокоенная утечкой мозгов, компания Google применила для решения проблемы испытанное средство: алгоритм.

            Недавно поисковый гигант создал специальную базу данных, в которой собрана вся информация о сотрудниках, включая их платёжную историю, отзывы и рекомендации, факты карьеры, ответы на собеседовании и т.д. На этой базе начали прогонять алгоритм, вычисляющий вероятность, с которой данный конкретный сотрудник захочет уйти из компании. То есть получается постоянно обновляющийся список «рискованных позиций». Соответственно, компания может заранее начать поиск сотрудников на эти вакансии или предложить имеющемуся сотруднику лучшие условия труда.
            Читать дальше →
          • 10 приемов, разрушающих хрупкую красоту кода

              Статья приводится в сокращении из-за ограничения на объем материала.

              Для меня программирование — это не только технология, но и, во многом — искусство. И, поэтому, большое значение имеет красота кода.

              Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
              1. Объявление всех переменных в начале программы;
              2. Возврат результата функции через ее параметр;
              3. Отсутствие локальных функций;
              4. Отсутствие else if;
              5. Использование параллельных массивов;
              6. Хранение размера массива в отдельной переменной;
              7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
              8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
              9. Отсутствие именованных параметров функции;
              10. Невозможность объявления объектов «на лету».
              Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


              Объявление всех переменных в начале программы


              В двух словах:

              Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.


              Читать дальше →
            • Анти-паттерны Test Driven Development

              • Перевод
              Я надеюсь, что как грамотный разрабочик, вы имеете представление о unit-тестировании и сделаете себе в голове пару мысленных отметок о том, чего надо избегать при написании тестов. Знакомьтесь:

              Лжец (The Liar)

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

              Читать дальше →
            • Стоит ли паниковать?

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

                Пару дней назад в сети появился ресурс с призывом подписать петицию разработчикам браузеров. У всех браузеров есть небольшая проблема с хранением конфиденциальной информации. Startpanic.com эту лазейку и использует.

                Нажав на кнопку Старт на сайте система определит, на каких сайтах вы были. Также вы сможете узнать, где бывают ваши друзья, отправив им специальную ссылку.
                image
                Отличная возможность кого-то напугать, а кого-то сделать параноиком ;)
              • Советы по фиксациям в SVN

                • Перевод
                Предлагаю перевод хорошей статьи с советами по выполнению фиксаций в хранилище. Оригинал написан для проекта T2, но практически все советы универсальны и легко применимы для любого другого проекта. А самое главное — они действительно полезны.

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

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