В этой статье я бы хотел рассмотреть создание SIP<->Skype шлюза для проброса входящих skype-вызовов на корпоративную IP АТС (в данном случае это будет Asterisk). Так как Skype на данный момент является, пожалуй, самым популярным клиентом VoIP среди пользователей, возможность позвонить в Вашу компанию через Skype будет дополнительным плюсом для клиентов.
Hamlet Muradyan @m_hamlet
Senior Software Developer
Платформа для видеосервиса сроком в квартал
14 min
19KСегодня мы расскажем, как нам удалось построить свою платформу для сервиса видео на Одноклассниках на Java за 3 месяца.
Начнем с того, что представляет собой видеосервис на Одноклассниках. Он доступен как на вебе, так и в версиях для мобильных устройств. Одним из отличий Одноклассников от других соцсетей является наличие видеовитрины, где в разделах «ТОП недели», «Новинки» и каналах собраны видео. Для этих разделов видео отбирается автоматически по хитрому алгоритму на основании числа просмотров, классов и скорости роста популярности видео. И конечно, на витрине представлены каналы с контентом от партнеров:— сериалы, ТВ шоу, мультфильмы и кино.
В основном, это стандартный видеосервис. Пользователь загружает видео, дальше оно проходит модерацию, после чего другие пользователи могут его посмотреть.
Видеосервисом на Одноклассниках пользуется свыше 10 миллионов уникальных пользователей в день, которые смотрят свыше 70 миллионов видеороликов и загружает 50 тысяч видео в день.
Видеобаза Одноклассников насчитывает свыше 28 миллионов роликов. Исходящий трафик по вечерам достигает 80 гигабит в секунду. Ежедневно загружаемые 5 терабайт нового видео в день преобразуются в наш внутренний формат и на выходе получается 2 терабайта. Получившиеся файлы хранятся в трех копиях, что, в итоге, суммарно составляет 6 терабайт нового видео в день. Входящий трафик по загрузке достигает 2 гигабит в пиковые часы.
![](https://habrastorage.org/getpro/habr/post_images/317/bc7/398/317bc739899f6407b5d19312c96d2fc5.png)
Начнем с того, что представляет собой видеосервис на Одноклассниках. Он доступен как на вебе, так и в версиях для мобильных устройств. Одним из отличий Одноклассников от других соцсетей является наличие видеовитрины, где в разделах «ТОП недели», «Новинки» и каналах собраны видео. Для этих разделов видео отбирается автоматически по хитрому алгоритму на основании числа просмотров, классов и скорости роста популярности видео. И конечно, на витрине представлены каналы с контентом от партнеров:— сериалы, ТВ шоу, мультфильмы и кино.
В основном, это стандартный видеосервис. Пользователь загружает видео, дальше оно проходит модерацию, после чего другие пользователи могут его посмотреть.
Видеосервисом на Одноклассниках пользуется свыше 10 миллионов уникальных пользователей в день, которые смотрят свыше 70 миллионов видеороликов и загружает 50 тысяч видео в день.
Видеобаза Одноклассников насчитывает свыше 28 миллионов роликов. Исходящий трафик по вечерам достигает 80 гигабит в секунду. Ежедневно загружаемые 5 терабайт нового видео в день преобразуются в наш внутренний формат и на выходе получается 2 терабайта. Получившиеся файлы хранятся в трех копиях, что, в итоге, суммарно составляет 6 терабайт нового видео в день. Входящий трафик по загрузке достигает 2 гигабит в пиковые часы.
![](https://habrastorage.org/getpro/habr/post_images/317/bc7/398/317bc739899f6407b5d19312c96d2fc5.png)
+28
Бесплатный CSS3-генератор EnjoyCSS
2 min
24KEnjoyCSS — это бесплатный онлайн CSS-генератор, который предназначен для быстрого создания богатых графических стилей и мгновенного получения их кода. Этот инструмент позволяет добавлять к элементам тени, 3D и 2D трансформации, многочисленные сложные переходы, линейные и радиальные градиенты, тени текста, шрифты из Google Fonts, CSS3 код которых вы можете скопировать и вставить в ваш проект.
![image](https://habrastorage.org/getpro/habr/post_images/45a/d03/78b/45ad0378b2b39197248dd3a44e54da81.png)
Кроме того, пользователь может получить как CSS для всех стилей элемента, так и для отдельных его аспектов (например, код только конкретного градиента или тени).
![image](https://habrastorage.org/getpro/habr/post_images/45a/d03/78b/45ad0378b2b39197248dd3a44e54da81.png)
Кроме того, пользователь может получить как CSS для всех стилей элемента, так и для отдельных его аспектов (например, код только конкретного градиента или тени).
+19
Map-Reduce на примере MongoDB
5 min
62KВ последнее время набирает популярность семейство подходов и методологий обработки данных, объединенных общими названиями Big Data и NoSQL. Одной из моделей вычислений, применяемых к большим объемам данных, является технология Map-Reduce, разработанная в недрах компании Google. В этом посте я постараюсь рассказать о том, как эта модель реализована в нереляционной СУБД MongoDB.
Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.
Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.
Итак, что же такого особенного в Map-Reduce?
Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.
Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.
Итак, что же такого особенного в Map-Reduce?
+54
Управляем светодиодной лентой при помощи Raspberry Pi и Android
8 min
65KЗдравствуй, завсегдатай и гость Хабра.
Давно читаю Хабр, но всё никак не было поводов написать статью, покаменя не накрыло мне очередной раз не напомнили о существовании Raspberry Pi и о такой вещи как WS2801 LED Strip. Тут уже однажды писали о подобной, но для связи с Ардуиной, чтобы получить Эмбилайт, поэтому я решил рискнуть и написать свою статью, с Лего и Котиками.
![](https://habrastorage.org/getpro/habr/post_images/0c6/4c5/bdb/0c64c5bdbe203d2866047e0cf2f4152d.jpg)
В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
Давно читаю Хабр, но всё никак не было поводов написать статью, пока
![](https://habrastorage.org/getpro/habr/post_images/0c6/4c5/bdb/0c64c5bdbe203d2866047e0cf2f4152d.jpg)
В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
+51
Про автоматизацию подбора аккордов
17 min
59KМеня давно занимал вопрос: «а что, если попробовать прогнать цифровую запись песни через преобразование Фурье, посмотреть зависимость спектра от времени и попытаться вытащить из полученной информации аккорды песни?». Вот, наконец, нашел время попробовать…
+133
Классификация русского текста с помощью библиотеки Natural на NodeJS
3 min
17KПреамбула
Я никого не удивлю, если скажу, что современный человек, а, в особенности, программист, каждый день получает огромное информации. К примеру, мой RSS-клиент выдает мне в неделю около 500 статей. И, конечно же, это далеко не единственный источник информации.
Я задумался над тем, чтобы сделать для себя RSS-клиент с обучаемым фильтром статей на NodeJS. В принципе, под ноду есть готовые RSS ридеры, есть готовые нейронные сети с классификаторами, так что написать какой-то прототип мне показалось не особенно сложной задачей.
Я решил начать с тестирования подвернувшихся под руку нейронных сетей. Я взял небольшое количество входных данных. Позитивные данные я скопировал из статей по nodejs с хабра. Негативные данные я нашел на «ленте.ру». Задача классификатора заключалась в том, чтобы отсортировать статьи о программировании и nodejs от обычных, безынтересных для моего развития, новостей.
Результаты работы с Brain и Fann я показывать не хочу — я не считаю, что я обладаю достаточной экспертизой для того, чтобы судить о них. Скажу только что из коробки они меня не устроили совершенно — на моих входных данных они не давали адекватного количества правильных ответов. А вот библиотека Natural меня очень впечатлила.
Далее я покажу как я обучал классификатор, проверял его работу и заставлял понимать русский язык.
+17
Создаем Shazam на Java
6 min
42KTranslation
![](https://habrastorage.org/storage2/05b/78d/da3/05b78dda3b41b7d0e9ad6febbc2b663e.jpg)
Пару недель назад, я наткнулся на эту статью How Shazam Works
Мне стало интересно, как же работают такие программы как Shazam… Что еще более важно, насколько тяжело написать что-либо похожее в Java?
О Shazam
Если кто-то не знает, Shazam это приложение с помощью которого вы можете анализировать/подбирать музыку. Установив ее на свой телефон, и поднеся микрофон к какому-либо источнику музыки на 20-30 секунд, приложение определит, что это за песня.
При первом использовании у меня возникло волшебное чувство. «Как оно это сделало!?» И даже сегодня, когда я уже пользовался им много раз, это чувство меня не покидает.
Разве не будет классно, если бы мы смогли написать что-то сами, что вызывало бы такие же чувства? Это и было моей целью в прошлый уикенд.
+68
Морфология и компьютерная лингвистика для самых маленьких
5 min
25K![](https://habrastorage.org/storage2/8d3/8a6/32a/8d38a632af62e540332f39fa176ff26f.jpg)
В цикле будет 4 поста
• Морфология и компьютерная лингвистика для самых маленьких
• Роль морфологии в компьютерной лингвистике
• Морфология. Задачи и подходы к их решению
• Псевдолемматизация, композиты и прочие странные словечки
• Роль морфологии в компьютерной лингвистике
• Морфология. Задачи и подходы к их решению
• Псевдолемматизация, композиты и прочие странные словечки
Для начала не лишним будет вспомнить, что такое морфология, а также какое отношение она имеет к лингвистике. За этим предлагаю пройти под кат к содержимому первого поста серии.
+60
Оптимизация сайта для планшетов
3 min
61KTutorial
Интернет меняется, появляется все больше устройств с отличными от десктопа размерами экранов. Продажи планшетов постоянно растут, а это значит, что сегодня нельзя пренебрегать пользователями, использующих эти девайсы, необходимо оптимизировать сайты для удобного просмотра на планшетах.
Можно менять дополнительные символы виртуальной клавиатуры на необходимые в каждом конкретном случае. Например при наборе обычного текста видим знаки препинания:
![](https://habrastorage.org/storage2/800/125/ba2/800125ba240c7acd69286ee7930c23fc.png)
Ускорение набора текста с помощью добавления спецсимволов
Можно менять дополнительные символы виртуальной клавиатуры на необходимые в каждом конкретном случае. Например при наборе обычного текста видим знаки препинания:
![](https://habrastorage.org/storage2/800/125/ba2/800125ba240c7acd69286ee7930c23fc.png)
+89
pymorphy2
16 min
83KВ далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)
В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.
Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.
В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.
Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.
+97
Почему HTML считает, что «chucknorris» — это цвет?
1 min
124K![image](https://habrastorage.org/getpro/habr/post_images/215/a89/76b/215a8976b5232ea5b05741ae7b5b836b.jpg)
Вы никогда не пробовали задавать цвет фона в HTML при помощи разных строк? Например, строка
<body bgcolor="chucknorris"> test </body>
сделает фон документа кроваво-красным во всех браузерах и на всех платформах (jsfiddle).
Кстати, если слово
chucknorri
тоже приводит к красному цвету, то chucknorr
дает желтый!Стало интересно, почему так происходит? Добро пожаловать под кат.
+199
Превращаем Sublime Text 2 в Notepad++
19 min
197K![](https://habrastorage.org/storage2/7a7/a85/e3c/7a7a85e3cb43d58f5f54ac4d65c12e7d.png)
Сейчас огромную популярность набирает текстовой редактор Sublime Text 2. Я же в давние времена перешел на Notepad++ и много лет им активно пользовался, радуясь и восхищаясь. И когда стали появляться слухи, что Sublime теснит Notepad++, то решил проверить и попробовать на него перейти. Но, к сожалению, обнаружил, что много фишек, которым мне так нравился Notepad++ (не все идут в исходных настройках) я не вижу, несмотря на обилие новых других интересных возможностей. И было решено попробовать настроить Sublime так, чтобы им можно было пользоваться также, как и Notepad++ (с плагинами), имея попутно возможности Sublime Text 2, коих нет в первом редакторе. И да, Sublime Text 2 настраивался в Windows 7.
+139
Снижаем затраты на использование AWS EC2
3 min
12KНа странице стоимости компонентов EC2 на Амазоне есть одна строчка, на которую сначала можно не сильно обратить внимание, но которая может привести к серьезным финансовым затратам — Data Transfer, трафик. Если аренду инстансов и EBS-томов можно запланировать и контролировать, то трафик предсказать довольно сложно, а игнорировать его не даст ежемесячный счет)
Для примера: средний новостной сайт, 30 тысяч посещений в сутки, его вполне потянет небольшой small или даже micro instance. Возьмем полный размер страницы 2 мегабайта, месячный трафик тогда будет (без учета закэшированного контента) — 30000 * 0.002 * 30 = 1800 GB или $216. Получается стоимость Data Transfer даже больше аренды самого инстанса! На S3 ситуация с ценами на трафик точно такая же.
Для примера: средний новостной сайт, 30 тысяч посещений в сутки, его вполне потянет небольшой small или даже micro instance. Возьмем полный размер страницы 2 мегабайта, месячный трафик тогда будет (без учета закэшированного контента) — 30000 * 0.002 * 30 = 1800 GB или $216. Получается стоимость Data Transfer даже больше аренды самого инстанса! На S3 ситуация с ценами на трафик точно такая же.
+16
Подборка инструментов для фронт-энд разработки
2 min
134KTranslation
Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.
Картинки кликабельны.
Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
![image](https://habrastorage.org/getpro/habr/post_images/a22/08b/7ed/a2208b7edf2fa05757d38c6c58c48b60.png)
Картинки кликабельны.
Form builder
Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
![image](https://habrastorage.org/getpro/habr/post_images/a22/08b/7ed/a2208b7edf2fa05757d38c6c58c48b60.png)
+166
Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе
5 min
222KВ этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.
![](https://habrastorage.org/storage2/38e/181/9d1/38e1819d1d276311046e1a1aed09eef0.png)
![](https://habrastorage.org/storage2/38e/181/9d1/38e1819d1d276311046e1a1aed09eef0.png)
+376
Доброфон — бесплатные телефонные консультации по любым вопросам
7 min
31K![](http://cdn.zhovner.com/habr/dobrofon_main.png)
Иногда у нас возникает внезапная необходимость поговорить с живым человеком. Спросить совета, получить консультацию, поделиться идеей, рассказать смешную историю или просто поговорить ни о чем. Не всегда бывает удобно беспокоить этим друзей.
Мы попробовали решить эту задачу и сделали Доброфон – горячую линию куда можно позвонить в любое время и поговорить с реальным человеком тет–а–тет. Операторы разделены на категории в зависимости от квалификации и пола.
Все, разумеется, бесплатно и создано исключительно для эстетического удовольствия.
В Доброфон можно позвонить через:
- Skype
- Стационарный телефон — доступны прямые номера во многих странах и шлюзы в крупных городах
- Приложение вконтакте
- WebRTC-виджет (работает только в браузере Chrome)
- Flash-виджет
- Веб-интерфейс Gmail и Google Talk
- iNUM
- SIP
В статье будет описана техническая сторона организации call-центра и тонкости подключения всех внешних линий.
+111
PHP Namespace
6 min
112KНедавно инкапсулировал свой проект в namespace и столкнулся с проблемой отсутствия нормальной документации. Все, что удалось найти датируется примерно 2009 годом, а на дворе почти 2012… В найденном материале куча нерабочих мест, использующих то, что в нынешней версии php нет. В связи с этим хочу немного осветить этот вопрос.
+32
Фонетический поиск
4 min
16KПару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…
+121
Мне кажется, я начал понимать, что ты имела в виду!
7 min
33KОпечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.
Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
+66
Information
- Rating
- Does not participate
- Location
- Yerevan, Yerevan, Армения
- Date of birth
- Registered
- Activity