• На пути к созданию безопасного веб-ресурса. Часть 1 — серверное ПО

    • Tutorial
    Я уже довольно долгое время хочу формализовать все свои мысли, опыт, ежедневно применяемый на практике, и многое другое в одном месте и предоставить их общественности. Уверен, многим этот материал будет полезен. Он посвящен различным моментам в конфигурации серверного ПО Linux и безопасным подходам к созданию сайтов/приложений на php (все же это до сих пор одна из самых популярных связок, хоть её успешно и подвигают другие технологии. Но советы так же легко применимы и к веб-ресурсам на других технологиях).

    Т.е. речь идет о типичной ситуации. Проект (стартап), купили под него сервер и разворачиваем на нем сайт. Бизнесу не нужно тратить лишних денег на сервера (поэтому будут выбраны наиболее производительные связки ПО), а так же нужно, чтобы все было безопасно, при чем бесплатно :)
    Много текста. По-другому никак
    • +148
    • 96.1k
    • 47
  • Сверхбыстрое распознавание речи без серверов на реальном примере

    • Tutorial

    В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx (для iOS порт OpenEars) на реальном Hello World примере управления домашней техникой.
    Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность, которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.
    К статье я также прилагаю все исходники программы и саму сборку под Android.

    Прикручиваем Pocketsphinx к своему Андроиду
  • Статические сайты: настройка и оптимизация

      статические сайты

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

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

      Ниже мы дадим ряд рекомендаций, с помощью которых можно увеличить скорость работы статического сайта, размещенного в нашем хранилище.
      Читать дальше →
    • Fail2ban и nginx: блокируем нежелательный трафик к определенному URL

        Доброго времени суток!

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

        Читать дальше →
      • «Нет времени объяснять!» или Как реализовать трансляцию с IP камеры на сайт?

        image


        Пожалуй, мне везет на идиотские задачи в самый неподходящий момент. Это что, карма такая?! Ну да ладно…
        В данном «отпускном» посте речь пойдет о том, как при наличии 3g модема и ноутбука реализовать трансляцию с IP-камеры на сайт.
        Сам пост я бы не написал, если бы не задал вопрос на «Тостере», где мне подсказали, что гуглить.

        Что мы имеем?


        1. Недешевая IP камера AXIS Q1755, которую я даже в руках не держал. Сама камера находится в городе «А» и подключена через тормозной 3g модем.
        2. Сервер на Debian 7, который крутится на почти дохлом Core2Duo. Хотя не такой уж он и дохлый, но для данных задач подходит не очень. Ах, да, сам сервер живет в городе Б.
        3. Сайт, на который необходимо повесить плеер. Находится на другом, более производительном сервере, в том же городе Б.
        4. Я, который находится в городе В, с ноутбуком, 3g-модемом и ограниченным трафиком в 4gb.

        Читать дальше →
      • Ускоряем 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
          

          А теперь можно и похимичить!
          Бдыжь-бдыжь
        • Оптимальная защита от DDoS с помощью netstat и iptables

          • Tutorial
          Доброго времени суток!

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

          Перекопав полчища статей и опробовав множество вариантов, так и не нашел, что помогло бы с защитой. Взяв за основу статьи Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables и (D)DoS Deflate решил написать свой скрипт. Ну вернее не решил, а методом тыка и исправлений он получился сам.

          Должен заметить, что статья от Алексея Кузьмина не идеальна, т.к. в логах nginx`a не достаточно копаться, да и обработка логов может потребовать много ресурсов. А именно в моем случае создавались логи более 50 Гиг, плюс запросы шли не «GET / HTTP/1.1», а «GET / HTTP/1.0», плюс, как оказалось, мой сервер сам от себя получал редиректы (127.0.0.1), которые не отображались в логах, которые отображались в запросе
          netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
          

          Читать дальше →
        • 1000+ часов видео по Java на русском

          • Tutorial
          Добрый день.
          Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
          1. Java Core
          2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
          3. Multicore programming in Java.


          Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

          В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег.

          (GolovachCourses.com)


          Здесь собраны несколько вариантов записи моего курса Java Core.
          Модуль #1 (Procedural Java):
          Набор июль 2013: #1, #2, #3, #4
          Набор апрель 2013: #1, #2, #3, #4
          Набор февраль 2013: #1, #2, #3, #4
          Набор январь 2013: #1, #2, #3, #4
          Набор октябрь 2012: #1, #2, #3, #4.
          Читать дальше →
          • +102
          • 1130k
          • 38
        • Бекап баз данных – есть ли он?

            image

            Нет смысла говорить о том, насколько это актуальный вопрос. Сегодня мы расскажем, как у нас организовано резервное копирование баз данных mysql.
            И одно их самых важных – это проверка, а сделался ли бекап? А успешно ли прошел дамп? А были ли ошибки? А знаю ли я о них?

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

            Сразу оговорюсь, что, возможно, в принципе реализации использованы стандартные схемы, но, возможно, вы найдете для себя, что-то новое, что сможете внедрить у себя.
            Читать дальше →
          • Несколько интересностей и полезностей для веб-разработчика #19

              Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

              DC.js



              Библиотека позволяет создавать великолепные многоуровневые/масштабируемые кроссплатформенные графики и диаграммы с моментальным перерендерингом при пользовательском взаимодействии. За процесс визуализации отвечает знаменитая d3.js, а за анализ многомерных наборов данных crossfilter.js. Кстати кроссфильтр — проект небезызвестной компании Square.
              chart.renderlet(function(chart){
                  // smooth the rendering through event throttling
                  dc.events.trigger(function(){
                      // focus some other chart to the range selected by user on this chart
                      someOtherChart.focus(chart.filter());
                  });
              })
              


              Читать дальше →
            • Дэн Саффер — Микровзаимодействия (Microinteractions). Конспект книги

              • Translation
              • Tutorial
              Microinteractions book cover«Детали — это не детали. Они создают дизайн.» — Чарльз Имз.

              Успех цифровых продуктов определяется мелочами. Книга «Микровзаимодействия» Дэна Саффера научит вас проектировать эффективные функциональные элементы. А этот подробный конспект поможет лучше запомнить прочитанное или даже заменит англоязычный оригинал.

              Как пользователю изменить настройку? Как включить бесшумный режим или узнать о получении нового сообщения?

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

              Читать дальше →
              • +49
              • 36.3k
              • 2
            • Распознавание речи в Asterisk с использованием Yandex SpeechKit HTTP API



              Статья написана по мотивам Синтез и распознавание речи от Google для Asterisk, с не большими изменениями. Для распознавания речи используется платформа Yandex SpeechKit HTTP API.
              Читать дальше →
            • Как собрать WhatsApp за сутки. Часть 1



              Здравствуйте, дорогие читатели Хабрахабра!

              В этой серии статей я расскажу, как быстро и почти безболезненно поднять свой собственный WhatsApp под iOS. Статью делю на две части для вашего удобства:

              1. Создание проекта, простой UI, привязка к сервису мгновенных сообщений
              2. Делаем красивый UI, добавляем видео и аудио звонки, передачу фото и документов

              К сожалению, пособие о том, как набрать 400 000 000 пользователей и продать сервис за 19 Инстаграмов, затерялось где-то на книжной полке. Постараюсь его найти, если кому интересно.

              Заинтересовавшихся прошу под кат.
              Читать дальше →
            • Тестируем iOS приложения без Apple Developer Program Membership

                Мне было интересно попробовать написать приложение для iOS, чисто в познавательных целях, но 99USD платить Apple за «любознательность» не очень то и хотелось. Не отчаивайтесь, для таких как мы есть способы и запустить приложение и отладить его на целевом устройстве.

                Читать дальше →
              • Ускоряем Wordpress

                  image

                  Wordpress в стандартной установке довольно медленный. По умолчанию движок не использует некоторые возможности современного Веба для значительного своего ускорения. Существует целая куча плагинов для оптимизации Wordpress'a. Давайте наведем в них порядок и проведем капитальную оптимизацию.
                  Читать дальше →
                • Основные принципы настройки Garbage Collection с нуля

                  В данной статье я бы не хотел заострять внимание на принципе работы сборщика мусора — об этом прекрасно и наглядно описано здесь: habrahabr.ru/post/112676. Хочется больше перейти к практическим основам и количественным характеристикам по настройке Garbage Collection в JVM — и попытаться понять насколько это может быть эффективным.

                  Количественные характеристики оценки эффективности GC


                  Рассмотрим следующие показатели:

                  • Пропускная способность Мера, определяющая способность приложения работать в пиковой нагрузке не зависимо от пауз во время сборки и размера необходимой памяти
                  • Время отклика Мера GC, определяющая способность приложения справляться с числом остановок и флуктуаций работы GC
                  • Размер используемой памяти Размер памяти, который необходим для эффективной работы GC


                  Как правило, перечисленные характеристики являются компромиссными и улучшение одной из них ведёт к затратам по остальным. Для большинства приложений важны все три характеристики, но зачастую одна или две имеют большее значение для приложения — это и будет отправной точкой в настройке.
                  Читать дальше →
                • Актуальная статистика доходов от casual игр

                    image

                    Погода в магазине Apple меняется быстро. Никому не интересны прогнозы за прошлый год. Я рискну рассказать про свой опыт разработки casual игр под iPhone в текущем 2014 году от Рождества Христова.

                    Немного статистики на завтрашний день.
                    App Annie gathers data on 1,156,827 Apps and 289,377 Publishers in 155 Countries.

                    За прошедшие 2 года число приложений в магазине не увеличилось. Миллион приложений. Миллион чьих-то надежд на успех, деньги, славу. За тот же период времени число надеющихся удвоилось.
                    Не удивительно, ведь раз в квартал Землю облетает очередная весть! За 2 часа разработки! Flappy Bird приносит! Скромному вьетнамскому юноше $50 000 в день!

                    Если бы не было столь чудных историй, Apple обязан был бы придумывать их. Чтобы тысячи новых парней покупали $100 лицензии на разработку и кодили, кодили, кодили.

                    Вот. А что же в действительности? В действительности, Ваше приложение (хорошее и легкое) ждет обычная судьба.
                    Читать дальше →
                  • Лёгкий способ писать iOS приложения на вебе

                      Всем привет. Не так давно Габриель подарил нам игру 2048. Это тот самый удивительный случай, когда клон игры становится более популярный, чем оригинал. Не малая часть успеха Габриеля — открытый код и, вуаля, MIT лицензия. Набрав чуть больше 20к очков, захотелось поделиться результатом с друзьями, кроме как сделать скриншот не получилось. Глянул аппстор на наличие клона с геймцентром или чем-то подобным — пусто. И тут подумал, почему бы нет?
                      Забегая вперёд, на создание приложения и всех «ништяков» к нему ушло 4 дня. На выходе универсальный код, который от части работает и в вебе и легко портируется на иос/андроид. Однако, давайте по порядку.


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