• Нейронная сеть против DDoS'а

      Предисловие


      Некоторые из вас наверняка недавно проходили Stanford'ские курсы, в частности ai-class и ml-class. Однако, одно дело просмотреть несколько видео-лекций, поотвечать на вопросики quiz'ов и написать десяток программ в Matlab/Octave, другое дело начать применять полученные знания на практике. Дабы знания полученые от Andrew Ng не угодили в тот же тёмный угол моего мозга, где заблудились dft, Специальная теория относительности и Уравнение Эйлера Лагранжа, я решил не повторять институтских ошибок и, пока знания ещё свежи в памяти, практиковаться как можно больше.

      И тут как раз на наш сайтик приехал DDoS. Отбиваться от которого можно было админско-программерскими (grep / awk / etc) способами или же прибегнуть к использованию технологий машинного обучения.

      Далее пойдёт рассказ о создании нейронной сети на Python 2.7 / PyBrain и её применении для защиты от DDoS'а.

      Читать дальше →
    • Управление запасами для небольших интернет-магазинов

      image
      Вопрос управления запасами торгового предприятия является одним из базовых для повышения эффективности его работы. Обычно этот термин ассоциируется со сложными аналитическими моделями, которые составной частью входят в крупные компьютерные системы управления предприятием (ERP). Легко представить себе заумных аналитиков, работающих с гигабайтами накопленной статистики с какой-то отдаленной целью «повысить эффективность».

      На самом деле, это так и есть. Но это не вся правда.
      Читать дальше →
    • Обзор методов эволюции нейронных сетей



        Выбор топологии и настройка весов связей искусственной нейронной сети (ИНС) являются одними из важнейших этапов при использовании нейросетевых технологий для решения практических задач. От этих этапов напрямую зависит качество (адекватность) полученной нейросетевой модели, системы управления и т.д.

        Построение искусственной нейронной сети по традиционной методике выполняется, фактически, методом проб и ошибок. Исследователь задает количество слоев, нейронов, а также структуру связей между ними (наличие/отсутствие рекуррентных связей), а затем смотрит, что же у него получилось — сеть обучается с помощью какого-либо метода, а затем тестируется на тестовой выборке. Если полученные результаты работы удовлетворяют заданным критериям, то задача построения ИНС считается выполненной успешно; в противном случае — процесс повторяется с другими значениями исходных параметров.

        Естественно, бурное развитие теории и практики использования генетических алгоритмов, заставило исследователей (лень — двигатель прогресса) искать способы применить их к задаче поиска оптимальной структуры ИНС (эволюция нейронных сетей или нейроэволюция), тем более, что, так сказать, proof-of-concept был налицо, или, точнее, в голове — природа наглядно демонстрировала решаемость подобной задачи на примере эволюции нервной системы с последующим образованием и развитием головного мозга.

        Обзор и сравнение методов нейроэволюции под катом
      • Рекомендации по созданию презентаций

          Часто встречал ситуации, когда люди не понимают целей презентаций. Например, на научной конференции (!) девушка в научный доклад вставляла анимацию для того чтобы «доклад не скучно было смотреть». Для меня это было дико.

          Создавая презентации, или рецензируя чужие, я руководствовался собственными впечатлениями. Когда же наткнулся на документацию к LaTeX Beamer, был в восторге: там было не только подробное руководство по собственно латех-бимеру, но и общие рекомендации по созданию слайдов. Читая документацию я буквально радовался каждому абзацу, ловя себя на мысли «Да, да. Точно, правильно.»

          И когда возникла необходимость составить рекомендации по созданию презентаций для конференции RuPyRu, я вспомнил про документацию к бимеру. Она и послужила основой для общих рекомендаций. А уже на основе общих рекомендаций я составил упрощенную редакцию, которую и привожу здесь:
          Читать дальше →
        • Переезд проекта с SVN на Git

            image
            Много лет подряд в качестве системы контроля версий для большого количества проектов использовали только SVN. Но наступил момент, когда количество разработчиков на одном из проектов заметно увеличилось, проект уже запущен в работу, и нужно как активно разрабатывать параллельно несколько фич, так и фиксить уже имеющиеся баги в оперативном режиме. Единый trunk в SVN не позволяет этого делать, а организация бранчей в нем же превращает жизнь разработчиков в ад. Поэтому было принято решение о переезде этого проекта с SVN на Git.
            Читать дальше о том, как это делается от А до Я
          • Прозрачное кэширование в nginx для всех и каждого

              Представим, что у нас есть сайт, на который регулярно дают ссылки с хабра.
              Нам нужно подготовить его к резким всплескам посещаемости. Как это сделать?

              С версии 0.8.46 в nginx появились опции, позволяющие легко и просто настроить прозрачное кэширование для анонимных пользователей.

              Для работы этой схемы от сайта требуется очень мало: достаточно лишь не начинать сессию, то есть не отправлять сессионную куку, без явной на то необходимости. Редкий сайт нельзя довести до такого состояния, а значит большинство сайтов можно защитить от резких всплесков посещаемости с помощью nginx с минимальными затратами сил и времени.

              Читать дальше →
            • Работа с виртуальными машинами KVM. Лимитирование ресурсов виртуальной машины



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

                Читать дальше →
              • Выпущена утилита ioping для тестирования отзывчивости дисковой подсистемы

                  Случайно наткнулся на свеженаписанную утилиту ioping, написал её русский программист koct9i, пользователь k001 оформил в rpm для fedora 14 . ioping на google code.
                  А пользователь Grohman собрал ебилд, а LupineDreamer сделал деб-пакет i386 и x64 от magzimko.

                  Выглядит это дело примерно вот как:
                  $ ioping -i 0.2 -c 6 -s 1M -S 10M /tmp
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=1 time=0.7 ms
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=2 time=191.3 ms
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=3 time=18.4 ms
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=4 time=12.4 ms
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=5 time=8.4 ms
                  1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=6 time=8.2 ms
                  Читать дальше →
                • Основы Linux от основателя Gentoo. Часть 1 (1/4): BASH, основы навигации

                  • Translation

                  Предисловие


                  Об этом руководстве


                  Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.



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


                  Читать дальше →
                • Применение алгоритмов нечеткого поиска в PHP

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

                  Для исправления опечаток в словах понадобится:
                  Расстояние Левенштейна (или расстояние Дамерау-Левенштейна — разница будет незначительной) — levenshtein()
                  Metaphonemetaphone()
                  Алгоритм Оливера — similar_text()
                  База русских слов (с падежами, учетом времен и т.д.).
                  Читать дальше →
                • Нечёткий поиск в тексте и словаре

                    Введение


                    Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

                    В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
                    • Расстояние Левенштейна
                    • Расстояние Дамерау-Левенштейна
                    • Алгоритм Bitap с модификациями от Wu и Manber
                    • Алгоритм расширения выборки
                    • Метод N-грамм
                    • Хеширование по сигнатуре
                    • BK-деревья
                    А также проведу сравнительное тестирование качества и производительности алгоритмов.
                    Читать дальше →
                  • Linux: запуск графических приложений в фоне

                      Приветсвую, коллеги!

                      — Вы хотите запустить linuxdcpp из консоли на домашнем компьютере находясь на работе?
                      — Вы хотите, чтобы он запускался сразу после загрузки системы, но не желаете использовать автологон?
                      — На вашем сервере есть программа, которая работает только в графическом режиме, но вы не хотите держать графическую сессию пользователя всё время включенной?

                      Если ответ хотя бы на один из вопросов «да», то эта статья для вас.

                      Читать дальше →
                    • Бэкапы через bacula на Amazon S3

                        Как известно, все люди делятся на два вида: те, кто ещё не делает бэкапы, и те, кто их уже делает. У тех, кто только начинает делать бэкапы, первым обычно встаёт вопрос о том, каким способом архивировать данные. Простые варианты (вручную нарезать болванки, целиком архивировать каталоги на другие серверы) рассматривать не будем — у них весьма скромные возможности по индексированию и поиску архивных файлов. Вместо этого обратимся к автоматическим системам бэкапов, в частности bacula. Данная статья не рассматривает вопрос, почему bacula. Главные причины — она распространяется под свободной лицензией, доступна для кучи платформ и обладает огромной гибкостью.

                        Второй вопрос после выбора системы архивации — выбор места, где хранить бэкапы. Bacula позволяет использовать стриммеры, компакт-диски, писать архивы в FIFO-устройства и в обычные файлы. Стриммер удобен на корпоративных серверах, где есть постоянный физический к железу. Хранение архивов в файлах подойдёт, когда объём архивов не превышает объёма жёстких дисков, плюс для надёжности хранения желательно делать RAID-массив с избыточностью, а то и несколько физических серверов для бэкапов, желательно в разных помещениях. Иначе всё это до первого пожара. Нарезать на болванки — это домашний вариант, главный недостаток которого — необходимость регулярного втыкания свежих дисков. Мы же настроили bacula для архивации данных на Amazon S3.
                        Читать дальше →
                      • Готовим рыбу Фугу дома или OpenBSD на домашнем сервере


                          Конечно же речь пойдет не о приготовлении всем известного японского деликатеса. А пойдет она о настройке нескольких сервисов, которые я определил для
                          себя как необходимые, на домашнем сервере. В качестве операционной системы которого будет выступать OpenBSD.
                          Многие воскликнут, а зачем тебе эта малоизвестная ОС, ведь есть же Linux, FreeBSD. Да, действительно, я мог бы настроить все необходимое и на других
                          unix like, но это бы не принесло мне столько удовольствия, сколько я испытал изучая и настраивая OpenBSD. Да и потом, меня всегда привлекают сложные
                          и нестандартные решения.
                          Закончим с вступлением и вернемся к теме заголовка.
                          Спешу представить тебе меню, уважаемый читатель.
                          Меню под катом
                        • Проверяем отказоустойчивость сайта

                            Результаты тестирования. Время ответа сервераЭто очередной пост их уже традиционной предновогодней серии про проверку отказоустойчивости сайта и готовности его принять всех ваших посетителей, озадаченных выбором подарков или предновогодними скидками. В этом выпуске я рассмотрю создание тестов в расширенном режиме с использованием записи действий (Proxy recorder), что позволяет почти полностью эмулировать поведение реальных пользователей из реального браузера у вас на сайте. Также немного будет затронута тема анализа самих графиков по отказоустойчивости.
                            Итак, поехали.
                            Читать дальше →
                          • Настройка Active/Passive PostgreSQL Cluster с использованием Pacemaker, Corosync, и DRBD (CentOS 5,5)

                            • Translation
                            В этой статье объясняется, как настроить Active/Passive кластера PostgreSQL, с использованием Pacemaker, Corosync и DRBD.
                            Подготовлено Рафаэль Марангони, из команды BRLink Servidor Linux
                            Читать дальше →
                          • Настройка и масштабирование PostgreSQL

                              Написал небольшой мануал по настройке и масштабированию PostgreSQL. Сподвигло меня на это то, что материала по этой теме мало, он устарел или его просто нет.

                              Скачать можно здесь:
                              http://github.com/le0pard/postgresql_book/raw/master/postgresql.pdf
                              Исходники:
                              http://github.com/le0pard/postgresql_book/

                              Страница:
                              http://postgresql.leopard.in.ua/
                            • Плагины для лиса в прямом эфире

                                Вчера ночью мне не спалось, и я решил сделать что-то полезное (в кои-то веки). Поскольку приносить пользу окружающим можно лишь принося пользу себе, я попытался облегчить себе жизнь: создать плагин, мониторящий изменение некоторых чисел на одной странице (нечто вроде «количества непрочитанных комментариев в топиках, за которыми следишь» и «количества писем», если больше нуля — повод пойти и прочитать эти новые комментарии. Эти числа выводятся на двух известных коллективных блогах вверху страницы, но узнать об их изменении их состояния можно лишь обновив эту страницу — никакого механизма почты-rss-и т.п. не предусмотрено. Ну, надеюсь, понятно объяснил). Через полтора часа была готова более-менее стабильная версия плагина, и я буду рад рассказать вам о том, как повторить мой подвиг в любое время года.

                                Итак, на повестке дня: Создаем плагины для FireFox быстро и чисто.
                                Читать дальше →
                              • Переменные сессии на яваскрипте без кук

                                • Translation
                                Мне никогда не нравилась реализация кук в Яваскрипте. Объем ограничен (4х20 Кб на домен), хранить возможно только в строковом типе, синтаксис для установки и получения кук избыточно сложен.

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

                                Поэтому я написал маленький скрипт, который позволит вам использовать переменные сессии в Яваскрипте без установки кук. Он позволяет хранить до 2 Мб данных, что намного меньше ограничивает в возможностях, чем решение на основе кук.

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