Pull to refresh
0
0

Программист

Send message

Asterisk. На этот раз в качестве системы трансляции фоновой музыки с возможностью экстренного оповещения

Reading time4 min
Views12K
image

Добрый день, уважаемые жители хаба Asterisk.

Не знаю, как вам, а мне в последнее время безумно интересно применение Asterisk не в качестве стандартной АТС.

В предыдущем посте Asterisk исполнял обязанности охранника на парковке. На этот раз Asterisk в моей конфигурации проигрывал фоновую музыку в торговом павильоне и в случае возникновения экстренной ситуации (или при необходимости сделать какое-то объявление) выступал в роли системы оповещения.

Подробности под катом.
Total votes 18: ↑18 and ↓0+18
Comments7

htop и многое другое на пальцах

Reading time26 min
Views279K


На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
Читать дальше →
Total votes 138: ↑130 and ↓8+122
Comments43

IR транскодер на Arduino

Reading time7 min
Views56K
Устройства с управлением от инфракрасного пульта тесно вошли в нашу жизнь. Иногда пульт от телевизора или древней аудиосистемы теряется, а купить новый за давностью лет уже невозможно. Заказать новый пульт не всегда возможно, изготовить клон тоже, но обладая донором или информацией о нём можно изготовить конвертер. Такой транскодер будет принимать команды одного пульта и транслировать их в формат другого.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments4

Ещё один способ определения качества воздуха на Arduino — с передачей данных в сеть

Reading time6 min
Views70K
Меня зовут Евгений, и я — веб разработчик. Уже есть десятки постов о различных метеостанциях на ардуино, но мне хотелось написать о том, что в 2016 году можно быстро, легко и без знания электротехники собрать полезный датчик, претендующий на IoT, который легко может работать с вашей инфраструктурой, написанной на чём угодно.
Да, я хочу в 2016 год
Total votes 21: ↑21 and ↓0+21
Comments99

Готовимся к собеседованию по PHP: псевдотип «callable»

Reading time5 min
Views96K
Не секрет, что на собеседованиях любят задавать каверзные вопросы. Не всегда адекватные, не всегда имеющие отношение к реальности, но факт остается фактом — задают. Конечно, вопрос вопросу рознь, и иногда вопрос, на первый взгляд кажущийся вам дурацким, на самом деле направлен на проверку того, насколько хорошо вы знаете язык, на котором пишете.
image
Вторая часть серии статей посвящена одному из самых сложных и объемных вопросов о современном PHP — что такое «callable»? Я постарался свести в один текст некий минимум знаний об этом вопросе.
Подробный разбор неочевидных мест мануала - под катом
Total votes 37: ↑36 and ↓1+35
Comments65

Полезные сниппеты для Nginx конфигов

Reading time5 min
Views121K


Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

Читать дальше →
Total votes 94: ↑91 and ↓3+88
Comments44

Еще одна статья про индексацию ajax-сайтов поисковиками

Reading time4 min
Views43K
image

Стильно, модно, молодежно сегодня делать сайт на AJAX, с точки зрения пользователя — это быстро и удобно, а у поисковых роботов с такими сайтами могут быть проблемы.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments60

Проектирование Web API в 7 шагов

Reading time14 min
Views74K
7steps Разработка веб API это нечто большее чем просто URL, HTTP статус-коды, заголовки и содержимое запроса. Процесс проектирования – то, как будет выглядеть и восприниматься ваш API – очень важен и является хорошей инвестицией в успех вашего дела. Эта статья кратко описывает методологию для проектирования API с опорой на преимущества веба и протокола HTTP, в частности. Но не стоит думать, что это применимо только для HTTP. Если по какой-то причине вам необходимо реализовать работу ваших сервисов используя WebSockets, XMPP, MQTT и так далее – применяя большую часть всех рекомендаций вы получите практически тот же API, который будет хорошо работать. К тому же полученный API позволит легче разработать и поддерживать работу поверх нескольких протоколов.

Хороший дизайн затрагивает URL, статус-коды, заголовки и содержимое запроса


Обычно руководства по проектированию Web API фокусируются на общих концепциях: как проектировать URL, как правильно использовать HTTP статус-коды, методы, что передавать в заголовках и как спроектировать дизайн содержимого, которое представлено сериализованными данными или графом объектов. Это всё очень важные детали реализации, но не настолько в смысле общего проектирования API. Проектирование API – это то, как сама суть сервиса будет описана и представлена, то что вносит значительный вклад в успех и удобность использования Web API.

Хороший процесс проектирования или методология предоставляют набор согласованных и воспроизводимых шагов для создания компонентов сервисов, которые будут доступны в виде Web API. Это значит, что такая прозрачная методология может быть использована разработчиками, дизайнерами и архитекторами для координации своих действий по реализации ПО. Использованная методология так же может уточнятся со временем по мере того, как улучшается и автоматизируется процесс без ущерба для деталей методологии. На самом деле, детали реализации могут меняться (например, платформа, ОС, фреймворки и стиль UI) независимо от процесса проектировки, когда эти две активности полностью разделены и задокументированы.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments8

Vim по полной: Уровень проекта и файловая система

Reading time4 min
Views24K

Оглавление


  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины


Проекты, это то, чего очень не хватает редактору Vim. Реализация проекта позволяет не только выделить его как отдельную сущность среди других папок и файлов в ФС, но и реализовать такие свистелки, как:

  • Автоматическое сохранение и восстановление последней сессии проекта так, что после повторного открытия, мы получим редактируемый в прошлый раз файл(ы), с теми же настройками и положением
  • Хранение информации о проекте, такой как автор проекта, лицензия, версия и так далее. Все эти данные можно будет добавлять в шаблоны и сниппеты
  • Корневой каталог проекта строго определен. Это упростит использования других инструментов, на пример xUnit, дебагеры, генераторы документации и т.д.
  • Отдельный, принадлежащий только проекту каталог .vim и файл .vimrc, аналогичный пользовательским версиям. Теперь настройки и плагины проекта будут хранится в нем

shut up and take my money
Total votes 26: ↑25 and ↓1+24
Comments53

Голосовое управление компьютером и Python

Reading time4 min
Views41K
Начитавшись разных постов о Google Voice и его использовании, решил написать что-то свое. А именно — голосовое управление компьютером. Сразу оговорюсь, что ОС — Windows.

Нам понадобится:

— Python 2.7
— библиотеки:
pyaudio
pycurl
pywin32
+ набор стандартных библиотек
— какой-либо аудиоконвертер поддерживающий flac и wav, а также работу из командной строки, я использовал этот.
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments9

PHP и realpath_cache

Reading time7 min
Views22K
От переводчика: разбираясь на днях с ошибкой, возникшей после деплоя сервиса, натолкнулся на эту замечательную статью про механизм кэширования файловых статусов в PHP. Предлагаю сообществу перевод.

Слышали ли вы про PHP-функции realpath_cache_get() и realpath_cache_size()? А может быть про параметры realpath_cache_size и realpath_cache_ttl в php.ini?

Кэш realpath — довольно важный механизм PHP, который нужно иметь в виду. Особенно, когда приходится работать с символическими ссылками, например, при деплое проекта. Настройка кэширования realpath может значительно влиять на быстродействие сервера и нагрузку на дисковую подсистемы сервера. Этот параметр был введен в версии 5.1, когда начали появляться первые PHP-фреймворки.

Далее мы разберемся, как все это работает под капотом, и как с этим жить. Под катом много ссылок на исходники.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments20

19 советов по повседневной работе с Git

Reading time14 min
Views285K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →
Total votes 152: ↑149 and ↓3+146
Comments62

Шумопонижение в CMU Sphinx

Reading time11 min
Views17K
Можно смело заявить, что на сегодня CMU Sphinx стал лидером среди свободного софта для распознавания речи. Pocketsphinx поставляется вместе с Ubuntu, многообещающий проект Simon построен с широким его использованием, а структура корпуса Voxforge как бы намекает, что создан он для sphinxtrain.

Несмотря на бурное развитие самого Sphinx'а и методов распознавания речи вообще, каждый, кто пытался использовать его на практике, знает, насколько сложно получить вменяемый результат даже для простых задач. А все потому, что нельзя просто подключить дефолтные модели и ожидать, что система вас поймет. Требуется адаптировать акустику, построить релевантную языковую модель, найти оптимальные параметры и конфигурацию движка — вобщем, потратить недели времени, кропотливо снижая ошибку процент за процентом. Как человек, потративший эти самые недели, могу заверить, что и в этом случае вам ничего не гарантировано. Особенно, если вы хотите распознавать речь, записанную не гарнитурой, а встроенным микрофоном ноутбука, как это часто бывает.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments2

Распознавание речи с помощью CMU Sphinx

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

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

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

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

Чем сложнее язык, чем обширней правила и размер словаря, тем хуже точность распознавания. Поэтому, для минимизации ошибки, имеет смысл создания упрощенных правил, которые будут описывать конкретную задачу.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments2

Собираем свой аналог Google Calendar не в 30 строк

Reading time4 min
Views22K

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

Итак, условия задачи:
  1. Интерфейс должен быть максимально приближен к интерфейсу от Google (т.к. до этого использовали его)
  2. Нормальная реализация RFC 2445, его части касательно RRULE (паттернов повторения)
  3. Быстрая скорость просчета дат событий (в данном случае рейсов) и их рендер в браузере
  4. Максимальное использование существующих библиотек для уменьшения потраченного времени .

Если тема интересна или вам есть что сказать, т.к. работа еще ведется и этот пост затрагивает лишь малую часть — прошу под кат, буду рад осмысленным советам.
Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments8

Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Reading time3 min
Views19K


Good news, everyone! Вышла новая версия прошивки DeviceHive для ESP8266. Мы реализовали поддержку самых популярных интерфейсов для подключения устройств: GPIO, ADC, PWM, UART, I2C, SPI, 1-wire. Теперь можно легко подключить устройства с этими интерфейсами к нашему облачному сервису. А самое главное — появилась возможность беспроводного конфигурирования прошивки (см. скриншот ниже). Об этом мы сегодня и поговорим.



Тройной RESET, или «Поехали!»


При создании IoT-устройств с беспроводным подключением часто можно столкнуться с неприятной проблемой: настроить устройство конечному пользователю не так легко, как кажется. Такие устройства обычно не оснащены экраном и клавиатурой, поэтому задать начальные настройки (данные Wi-Fi-сети, например) не выйдет без подходящего кабеля и специализированного ПО. Эту проблему мы и попытались решить в новой версии прошивки.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments6

mhddfs — Монтирование нескольких разделов в одну директорию

Reading time3 min
Views46K
Хочу рассказать о том, как смонтироват в одну директорию два раздела.
Честно говоря, никогда не задумывался о такой возможности, пока не попался клиент с подобным пожеланием. Поначалу мне показалось что это невозможно, но покопавшись в интернете нашел пару интересных статей. За основу в работе была взята статья с сайта hotbits.ru. Но в статье монтировали разделы одного и того же диска, мне же предстояло смонтировать разделы с разных дисков. Как оказалось, нет никакой разницы.
Читать дальше →
Total votes 31: ↑22 and ↓9+13
Comments42

Делаем свой «умный дом» чуть более безопасным

Reading time3 min
Views35K
В посленее время мир «умного дома» стал более близок для начинающих энтузиастов, благодаря наличию большого количества аппаратных решений с низким порогом вхождения (речь конечно про платформу Arduino и немалому набору модулей/сенсоров для неё) и уже готовых библиотек и фреймворков для работы с ними. Как правило они имеют настройки по-умолчанию (мак-адреса, каналы и т.п.), которые нетронутыми и остаются в руках этих самых начинающих… Например фреймворк MySensors, упоминавщийся не так давно на Хабре, имеет файл настроек «MyConfig.h», который многие (мой незадачливый сосед в частности) даже не правят.

С одной стороны мне все равно, что в многоэтажном доме кто-то сможет «подслушать» температуру на кухне (а то и позвонить с вопросом «Что готовишь?»), но с другой стороны не хотелось бы, чтобы кто-то смог (хоть бы и теоретически) управлять силовыми нагрузками (включить любимую кофе-машину, например). Хочется быть чуть более уверенным, что комманда исходит от моего управляющего устройства, а не подставного (в криптографии, это известно как «проверка подлинности»).

Реализовать такой подход сравнительно просто…
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments10

Расширение возможностей экрана блокировки в Android 4.2.x

Reading time2 min
Views151K
Многие владельцы планшетов линейки Nexus или других моделей под управлением Android 4.2.x, заметили что разработчики Google довольно мало внимания уделили экрану блокировки. В данном посте хочу рассказать про один очень полезный инструмент, который позволит использовать экран блокировки более эффективно. Речь пойдет о DashClock Widget (GooglePlay).


Кому интересно — прошу под кат.
Читать дальше →
Total votes 65: ↑54 and ↓11+43
Comments39
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity