• Руководство по FFmpeg libav

    • Translation

    Долго искал книгу, в которой было бы разжёвано, как использовать FFmpeg-подобную библиотеку, известную как libav (название расшифровывается как library audio video). Обнаружил учебник «Как написать видеоплеер и уложиться в менее чем тысячу строк». К сожалению, информация там устаревшая, так что пришлось создавать мануал своими силами.

    Большая часть кода будет на C, однако не волнуйтесь: Вы легко всё поймёте и сможете применить на любимом языке. У FFmpeg libav уйма привязок ко многим языкам (в том числе и к Python и к Go). Но даже если Ваш язык прямой совместимости не имеет, всё равно можно привязаться через ffi (вот пример с Lua).

    Начнём с краткого экскурса о том, что такое видео, аудио, кодеки и контейнеры. Затем перейдем к ускоренному курсу, посвященному использованию командной строки FFmpeg, и, наконец, напишем код. Не стесняйтесь переходить сразу в раздел «Тернистый путь изучения FFmpeg libav».

    Есть мнение (и не только моё), что потоковое интернет-видео уже приняло эстафету от традиционного телевидения. Как бы то ни было, FFmpeg libav точно достоин изучения.

    Оглавление


    Читать дальше →
    • +65
    • 18.3k
    • 9
  • Как нам построить маленькую радиостанцию в большой сети

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

    Итак. Маленькая предистория — есть радио-холдинг из нескольких эфирных музыкальных радиостанций с головным офисом в столице нашей родины Москве. Сами радиостанции вещают себе в FM диапазоне столицы, имеют свою аудиторию и вполне себе счастливы своим слушателем. Но вот незадача — на дворе 2012 год, а направление интернет вещания развивается не шатко не валко. Дальше будет много слов и маленьких историй в рамках одной основной, если заинтересовало, добро пожаловать под кат.
    Читать дальше →
  • Универсальный скрипт переключения 2-х каналов интернета Mikrotik

    • Tutorial
    Около 2,5 лет назад писал статью на тему автоматического переключения канала Интернет на резервный. Скрипт, конечно, и по сей день работает «на отлично», но его внешний вид и некоторые нюансы…

    Итак, встала задача улучшить скрипт, максимально устранив побочные эффекты. Что ж, приступим.

    image
    Читать дальше →
  • Яндекс.Диск как файловая система


      Недавно Яндекс анонсировал свой новый сервис, подобный DropBox'у. Многие его сразу же начали поливать из ведра, хотя, я думаю, зря.

      Один из плюсов лично для меня, линуксоида — не нужно устанавливать дополнительные приложения, как в случае с DropBox'ом. Сервис можно подключить через файловый менеджер Nautilus, используя WebDAV. Что я, собственно, сразу же и сделал.

      Однако, я не стал на этом ограничиваться, ведь гуёвый доступ — не совсем хорошо, консольки никто не отменял.

      Подключим Яндекс.Диск как файловую систему
    • С чего начать новичку в Go

      • Tutorial
      Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
      Читать дальше →
    • Распознавание речи с помощью CMU Sphinx

      CMU Sphinx сейчас является крупнейшим проектом по распознаванию человеческой речи. В инструментарий входят следующие программы и библиотеки:

      • Pocketsphinx — небольшая программа, которая принимает на вход произвольные акустические модели, грамматики и словари, а также звуковой поток(либо звуковой файл, либо сам берет поток с микрофона). На выходе получается распознанный текст. Написана на C, работает быстро.
      • Sphinxbase — библиотека необходимая для работы Pocketsphinx
      • Sphinx4 — гибкая библиотека для распознавания, написана на Java.
      • Sphinxtrain — программа для обучения акустических моделей.

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

      • Акустическая модель — отвечает за сопоставление звуку произнесенной фонемы. Акустическую модель для русского языка можно скачать на сайте проекта. Русская акустическая и языковая модели. А также словарь.
      • Словарь — это файл, в котором написаны сопоставлены лексемы и фонемы (слово и его транскрипция). Например, калькулятор (k ay ll k u ll ja t ay r). Он необходим для преобразования фонем, распознанных акустической моделью в лексемы.
      • Грамматика — это формальные правила, которые описывают простые правила построения предложений. Лексемы, полученные на предыдущем шаге пытаются сопоставиться с грамматикой и если удачно, то выводится результат.
      • Языковая модель — это статистическая модель языка. Она описывает вероятности слов и их комбинаций. Таким образом распознавание лексем — это максимизация правдоподобности распознанной фразы.

      Чем сложнее язык, чем обширней правила и размер словаря, тем хуже точность распознавания. Поэтому, для минимизации ошибки, имеет смысл создания упрощенных правил, которые будут описывать конкретную задачу.
      Читать дальше →
      • +18
      • 67.7k
      • 2
    • Как настроить в IP АТС синхронизацию каталогов – поиск по ODBC

      Расширение ODBC позволяет подключить 3CX Phone System к источнику данных, который поддерживают ODBC-драйвер. Таким образом, любая база данных, поддерживающая ERP или CRM, может импортировать контактные данные из общей базы данных при получении входящего вызова.



      Читать дальше →
    • 36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

      Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

      Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

      У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
      Читать дальше →
    • Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня (BOTS/SQL/XSS etc.)

        Добрый день.

        В завершение «недели NGINX», мы решили рассказать об очень интересной сборке «безопасной» версии NGINX китайской компании Neusoft, о которой не было замечено ни одной статьи на Хабре, а именно — SeNginx. В дополнение к этому, мы также расскажем вам о втором веб сервере, которому не уделяется так много внимания, как Nginx — Hiawatha Web Server, и постараемся сравнить Hiawatha с SeNginx в плане использования их для обеспечения безопасности вашего сайта или web приложения.

        image image

        Отметим, что за 5 лет существования нашей хостинговой компании нам довелось повидать целый спектр атак различных уровней и типов на сайты и web приложения наших клиентов, а также поработать с London Metropolitan Police в поиске и поимке одного управляющего ботнетом. Сегодня DDoS атаки стали настолько частыми, что только за вчерашний день Arbor в одном из наших датацентров зафиксировал 49 DDoS атак 3/4 уровней мощностью до 20-25 Gbit/s (график 1 и график 2). И, хотя Arbor девайсы и могут при определенной настройке неплохо справляться с атаками 3 и 4 уровня, они практически бесполезны при атаках 7 уровня, целью которых является перегрузка ресурсов сервера, а также поиск уязвимостей в вашем приложении.

        Самым бюджетным вариантом отражения атак 7 уровня являются различные варианты с использованием DNS RoundRobin + HaProxy, Nginx, Varnish Cache и т.д., которые либо позволяют рассредоточить атаку между несколькими серверами клиента, либо дают возможность обработать запросы ботов «в лоб» с помощью отдачи кешированной версии страницы. Данный подход, к сожалению, часто требует ручной настройки, постоянного мониторинга и редко эффективен при меняющихся типах атак.

        Наглядное представление DNS RoundRobin + Nginx (источник):

        image

        После длительных поисков нами был найден отличный модуль к NGINX, написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — Roboo (статья на Хабре). Модуль показал себя с наилучшей стороны, позволяя фильтровать сотни тысяч запросов от ботов с помощью NGINX с минимальной нагрузкой на сервер.
        Читать дальше →
      • Выбор ciphersuites для TLS и уязвимость Logjam. Опыт Яндекса

          Сейчас на фоне уязвимости Logjam все в индустрии в очередной раз обсуждают проблемы и особенности TLS. Я хочу воспользоваться этой возможностью, чтобы поговорить об одной из них, а именно — о настройке ciphersiutes. Мы уже не раз писали на Хабре о том, как внедряем шифрование трафика на сервисах Яндекса: например, об этом весьма подробно рассказывал Эльдар kyprizel Заитов, но ciphersiutes были одной из вещей, которые в тот раз остались в основном за кадром. Кстати, хочу всех успокоить и сказать, что на серверах Яндекса никогда не использовался экспортный вариант алгоритма Диффи-Хеллмана.

          Итак, Ciphersuite — это совокупность алгоритмов, используемых в конкретной TLS–сессии. Сюда относятся:

          • алгоритм выработки сессионных ключей шифрования;
          • алгоритм, используемый для аутентификации сервера;
          • собственно симметричный алгоритм шифрования трафика;
          • и, наконец, алгоритм контроля целостности (MAC, message authentication code).

          Для того чтобы понять, какова роль каждого из алгоритмов, давайте вкратце рассмотрим процесс инициализации TLS–соединения в применении к HTTPS (разумеется, TLS возможен и для других TCP и UDP протоколов, но сейчас мы это рассматривать не будем). За подробностями можно обратиться в RFC5246.

          image


          В TLS есть собственный механизм деления на сообщения, называемый record protocol. Каждое TLS-сообщение не обязано быть равно TCP-сегменту, оно может быть больше или меньше.
          Читать дальше →
        • Nutanix Community Edition — открыто бета-тестирование. Бесплатная версия ПО для всех

            В свое время, мы уже начинали рассказывать про KVM Management Tool, и было задано множество вопросов — не планируем ли мы выпустить версию Nutanix «для всех».

            Коротко: планировали и уже выпускаем «джинна из бутылки».

            Теперь вы можете получить облачное решение высочайшего уровня функциональности, включая уникальное распределенное управление гипервизором KVM, резервирование данных, компрессию, дедупликацию и прочее (сотни «фич») на практически любом серверном оборудовании (для тестов я например попробовал на HP G7 DL380 — все работает прекрасно). Бесплатно.

            Скриншот — «кластер» из одного нода.

            image

            Читать дальше →
          • Атака на оракула. Подробный гайд по векторам атак на Oracle DB



              Сегодня я бы хотел поговорить о векторах атак на СУБД Oracle на разных стадиях: как прощупать слабые места базы снаружи, проникнуть и закрепиться внутри плюс как все это дело автоматизировать с помощью специализированного софта. Архитектура и возможности базы данных весьма интересны, занимательных моментов немало, а значит, немало и способов все испортить. Однако не забывай: ломать — не строить, поэтому вся дальнейшая информация предоставлена исключительно с целью выявить недочеты в защищенности тестируемых систем и повысить безопасность.
              Читать дальше →
              • +19
              • 30.5k
              • 5
            • Лекции Технопарка. 3 семестр. Проектирование высоконагруженных систем

              • Tutorial


              И снова в эфире наша постоянная рубрика «Лекции Технопарка». На этот раз предлагаем вам ознакомиться с материалами курса «Проектирование высоконагруженных систем». Цель курса — получение студентами навыков проектирования высокоэффективных программных систем.
              Читать дальше →
              • +50
              • 66.7k
              • 5
            • Интернет-магазин. Техника безопасности для владельцев

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

                Читать дальше →
              • Основные ловушки при использовании кэша в HTML5-приложениях

                • Translation
                Кэш приложений, также известный как AppCache, на сегодняшний день является одной из самых острых тем для веб-разработчиков. AppCache позволяет дать возможность посетителям вашего сайта загружать сайт, когда они офлайн. Вы даже можете сохранять части вашего сайта, такие как изображения, таблицы стилей или веб-шрифты в кэше на компьютере пользователя. Это может помочь быстрее загружать ваш сайт, тем самым снижая нагрузку на ваш сервер.

                Чтобы использовать AppCache, создается файл описания с расширением «appcache», например, manifest.appcache. В этом файле можно перечислить все файлы, которые должны кэшироваться. Чтобы включить эту функцию на вашем сайте, необходимо включить ссылку на этот файл описания на вашей веб-странице в html-элемент следующим образом:
                Читать дальше →
                • +17
                • 17.8k
                • 2
              • 10 советов по прототипированию в Sketch

                • Translation


                Так как Sketch был создан специально для работы над мобильными и веб-интерфейсами, неудивительно что он стал одним из самых быстрых и гибких инструментов для прототипирования. Эти 10 советов сделают его еще более мощным средством.
                Читать дальше →
              • Что такое хорошо: как мы разрабатывали критерии для оценки качества вёрстки веб-проектов



                  На Хабре уже было немало материалов о том, как проводить качество вёрстки веб-проектов (вот отличная статья на эту тему) — как правило, речь в таких топиках идёт о коммерческих сайтах. В ходе развития образовательного проекта HTML Academy мы также столкнулись с необходимостью выработки критериев для оценки работ учеников.

                  Очевидно, что учить нужно так, чтобы потом люди (не все из которых «технари») могли приходить в компании и работать «правильно» — то есть создавая вёрстку, которая красиво выглядит и не требует больших усилий по поддержке. Процесс создания списка универсальных критериев для оценки занял довольно длительное время и был сопряжён с рядом трудностей. Сегодня мы расскажем о том, что же у нас в итоге получилось.
                  Читать дальше →
                • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

                    Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
                    Вы заказчик. Как убедиться, что работа выполнена качественно?
                    Как оценить качество вёрстки?

                    Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

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

                    Итак что же это за список?

                    Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

                    История обновлений:
                    • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
                    • 2015/08/10: актуализирован список исключений для CSSLint
                    • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
                    • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
                    • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
                    • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
                    • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
                    • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
                    • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
                    • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


                    Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.