Search
Write a publication
Pull to refresh
0
Николай @nickus2010read⁠-⁠only

Пользователь

Send message

RabbitMQ tutorial 2 — Очередь задач

Reading time7 min
Views226K


В продолжение первого урока по изучению азов RabbitMQ публикую перевод второго урока с официального сайта. Все примеры, как и ранее, на python, но по-прежнему их можно реализовать на большинстве популярных ЯП.
Читать дальше →

Коды Грея и задачи перебора

Reading time5 min
Views82K
В данной статье будет показан математический подход к составлению алгоритмов на примере следующих вопросов и задач:
  • Двоичные коды Грея. Их существование. Перебор подмножеств данного множества в порядке минимального изменения.
  • Существование и реализация перебора подмножеств из k элементов в порядке минимального изменения.

Итак, приступим.
Читать дальше →

RabbitMQ tutorial 3 — Публикация/Подписка

Reading time5 min
Views116K
Хочу продолжить серию перевода уроков с официального сайта. Примеры будут на php, но их можно реализовать на большинстве популярных ЯП.

Публикация/Подписка


В предыдущей статье было рассмотрено создание рабочей очереди сообщений. Было сделано допущение, что каждое сообщение будет направлено одному обработчику(worker). В этой статье усложним задачу – отправим сообщение нескольким подписчикам. Этот паттерн известен как "publish/subscribe" (публикация/подписка).
Чтобы понять этот шаблон, создадим простую систему логирования. Она будет состоять из двух программ – первая будет создавать логи, вторая считывать и печатать их.

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

По существу, каждое сообщение будет транслироваться каждому подписчику.
Читать дальше →

Экстрактор контента из веб-документов

Reading time3 min
Views24K


Здравствуй, Хабр!

Это мой первый пост, в котором я хочу поделиться своей наработкой в решении такой задачки, как выделение контента на странице. Собственно, задачка давно висела в голове в фоновом режиме. Но так сложилось, что именно сейчас мне самому понадобился инструмент, кроме того наткнулся на статейку на хабре: habrahabr.ru/company/mailru/blog/200394 и решил — пора. Ладно, поехали.
Читать дальше →

Открытые данные Москвы и соревнование API Challenge на их основе

Reading time6 min
Views8.5K
По моему опыту общения с разработчиками которые когда-либо участвовали в соревнования по открытым данным — все они говорят о том что нужны данные как можно большего уровня детализации.

Например, не статистика по регионам, а статистика по муниципалитетам. Не сводка преступлений/ДТП, а информация с адресами и координатами.
Не просто адреса учреждений с координатами, а подробная информация о каждом.

Пока таких детальных данных, прямо скажем, в удобном виде немного. Если взять Москву как пример, то даже на московском портале data.mos.ru большая часть данных — это геоданные или данные с геопривязкой в виде адреса и какой-то еще минимальной информацией. Понятное дело что сделать с ними что-то действительно интересное сложно. Поэтому скажем спасибо Правительству Москвы за то что они хотя бы это раскрыли и попробуем понять где взять более интересные данные и что с ними делать.

Конкурсы и соревнования

На вопрос зачем это нужно отвечу сразу — невозможно провести ни один конкурс/хакатон/соревнование для разработчиков не имея достаточного количества интересных данных. С этим мы сталкивались на хакатоне Яндекса, прошедшем конкурсе Apps4Russia и многих других.

Поэтому сейчас, поскольку мы помогаем в подготовке конкурса API Challenge мы решили подготовить столько полезных данных сколько только возможно. А поскольку API Challenge — это конкурс идущий от власти Москвы и ориентированный на Москву — мы и данные собираем по Москве.


Чтобы этого добиться мы начали просматривать десятки госсайтов и ищем на них то что можно использовать законно и с пользой.

Как это происходило и продолжается

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

Графы для самых маленьких: BFS 0-1

Reading time2 min
Views26K
Добрый день, уважаемые хабровчане!
В предыдущих постах уже рассказывалось о двух алгоритмах, с помощью которых можно найти путь сквозь лабиринт: DFS и BFS. Всех, кто хочет еще немного поиздеваться над нашим лабиринтом, прошу под кат.
Читать дальше →

Runtime-генерирование .Net-кода для тех, кому некогда

Reading time8 min
Views35K
Инфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.

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

От чего зависят оценки в техническом вузе?

Reading time5 min
Views102K
Привет Хабр!

Когда-то давно мне стало интересно: насколько справедлива система оценок в большинстве наших технических вузов? И что вообще влияет на получаемую студентом оценку?
Ведь частенько студент, который ходил весь семестр, писал лекции и выполнял в срок лабораторные, получает «уд.» на экзамене, а везунчик-раздолбай отхватывает пятерку.
Насколько все это случайно? Как ни учись – оценку получишь «рэндомом»? Или все же нет? А если ты красивая девочка в короткой мини-юбке, каковы твои шансы по сравнению с парнями? (Исключительно фигура речи — никакого сексизма)
Под катом вы увидите результаты моего исследования, в котором я попытался ответить на эти и некоторые другие вопросы. Подопытными кроликами стали несколько тысяч студентов родного для меня вуза — МГТУ им. Н.Э. Баумана.

Заранее извиняюсь, если выбрал не тот хаб, а быть может и вовсе не должен был это писать на Хабре. Но поделиться хотелось.
Читать дальше

Интервью с легендой C# Эриком Липпертом

Reading time11 min
Views17K
Материал взят из журнала DotNetCurry посвященному технологиям основанным на платформе .NET.

Дорогие читатели, мы очень рады видеть Эрика Липперта в этом номере журнала DNC. Эрик не нуждается в представлении людям знакомым с C#, но для остальных Эрик известен своей работой в команде разработчиков компилятора языка С#. Он посвятил значительную часть своей карьеры компании Microsoft, работая на различных должностях. До того как придти в Microsoft, Эрик работал в компании Watcom. Наши «старички» помнят Watcom как компанию, которая создала очень хорошие компиляторы для языков C++ и Fortran. В настоящее время Эрик работает в компании Coverity, помогая создавать продукты статического анализа кода.


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

Аспектно-ориентированное программирование: изучи и сделай сам!

Reading time17 min
Views60K
Статья родилась из того, что мне потребовался удобный и простой механизм перехвата для некоторых задач, который легко реализуется техниками АОП. Существует довольно много перехватчиков (Casle.net, Spring.net, LinFu и т.д.), требующих внедрять динамические дочерние классы в IL-код во время исполнения и приводящих практически всегда к одним и тем же ограничениям, накладываемым на перехватываемые классы: не статические, не запечатанные, методы и свойства должны быть виртуальными и т.д…

Другие механизмы перехвата требовали изменения процесс сборки или покупки лицензии. Ни то ни другое я себе позволить не мог…
а дальше было...

Сами себе туннельный брокер IPv6 с помощью openvpn и 6to4

Reading time5 min
Views65K


Вы хотите чтобы Ваши устройства (Windows\Linux\Android\iOS) начали использовать IPv6, но Ваш провайдер его еще не предоставляет? У Вас есть собственный сервер\VDS\просто компьютер с линуксом и постоянным прямым IPv4 (НЕ IPv6) адресом или даже свой openvpn сервер? Тогда возможно эта статья Вам поможет.
Она не для маститых сетевых гуру, я просто собрал в одном месте набор указаний с целью распространения IPv6 среди масс. Хотя буду благодарен всем маститым гуру, которые меня раскритикуют в комментах и укажут на ошибки. Так как пишу я пост практически сразу после того, как система заработала. Все может быть бесконечно далеко от идеала.

Ближе к делу...

Как выбрать фичи для вашего приложения: используем модель Кано

Reading time5 min
Views25K
Итак, вы задумали делать продукт. Не проект, а именно продукт, который через Х месяцев должен появиться в сторах и начать свое движение к звездам. Вы уверены в своих силах и знаниях, а количество новых идей, которые могут превратиться в настоящие киллер-фичи, просто зашкаливает. Самое время сказать себе “стоп!” и разобраться в том, что должно войти в комплект вашей самой первой релизной версии.

После того как вы расписали все характеристики будущего продукта, необходимо определить приоритеты в разработке. Первое желание – ранжировать по сложности реализации. Логично, тем более если ресурс ограничен – нет смысла строить “Титаник”, когда для первого преодоления Рубикона нужна просто шустрая и устойчивая лодка. Следуя заветам customer development, вы в будущем будете только наращивать функционал: главное – в архитектуре не промахнуться.

Итак, делаем шуструю лодку. Но выбор все еще непрост – даже из относительно простых деталей нужно определить тот набор, который и станет вашим release candidate. И здесь вам на помощь придет модель, которую придумал в 70-е годы прошлого века японский ученый Нориаки Кано. На “Хабре” уже был текст об использовании его модели для решения задач UX. Этот подход вполне применим и к продуктовым функциям – ведь они тоже отвечают за эмоциональные реакции потребителей. Кано предположил, что таких реакций бывает пять типов: от полной неприязни до прямо-таки восхищения. Эти типы японец изложил на одном графике, где по вертикальной оси отобразил эмоциональную реакцию пользователя (неприязнь – восхищение), а по горизонтальной – “количественное” значение характеристики (нет – много).



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

Алгоритм Ахо-Корасик

Reading time8 min
Views106K

Вступление


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

Начальное описание


Алгоритм Ахо-Корасик реализует эффективный поиск всех вхождений всех строк-образцов в заданную строку. Был разработан в 1975 году Альфредом Ахо и Маргарет Корасик.
Опишем формально условие задачи. На вход поступают несколько строк pattern[i] и строка s. Наша задача — найти все возможные вхождения строк pattern[i] в s.

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

FAVORaim: начинаем строить нейросеть и анализировать интересы пользователей

Reading time5 min
Views8.2K
Приветствуем.
После целого месяца проектирования и шести месяцев кодинга мы попытаемся рассказать о нашем проекте FAVORaim.com.

Идея
Идея проекта появилась спонтанно – просто было желание знать, когда в городе проходят танго-вечера. Ведь одно заведение может проводить такие тематические вечера всего пару раз в год, и отследить их довольно проблематично – нужно или постоянно искать самому в интернете, или быть подписанным на кучу пабликов. Организаторы размещают информацию о таких событиях на своей странице в ВК, но это же не повод – ради нескольких раз в год – подписываться на все подобные группы в социальных сетях.
В процессе обдумывания идеи назрел вывод, что у человека есть разные интересы, в соответствии с которыми ему было бы удобно получать информацию, когда в городе проходит что-то интересное именно для него. А в дополнение к событиям хотелось бы получать и предложения от бизнеса, которые строго соответствуют личным интересам.

О чем проект
FAVORaim – это персональные события и предложения.
1. FAVORaim помогает быть в курсе событий на строго интересующие темы.
Например, для любителей сериала «Сверхъестественное» FAVORaim подбирает тематические вечеринки и встречи поклонников (то же самое и для любителей других сериалов и культовых фильмов). А для стартапера система найдет не только профессиональные конференции и встречи с венчурными финансистами, но и неформальные startup-вечеринки. Также, у пользователя есть возможность отслеживать более детальные и профессиональные темы: Android, SMM, веерный маркетинг и т.п. Мощным направлением у нас выросла тема аниме.
image
2. Анализ внешней информации на соответствие интересам пользователя.
Даже не заходя в магазин, с помощью мобильного приложения FAVORaim пользователь может посмотреть, что здесь подойдет ему по стилю, размеру и предпочтениям. А в торговом центре посмотреть, что есть интересного и подходящее для пользователя (пока без indoor-навигации).
Читать дальше →

Распознавание речи от Яндекса. Под капотом у Yandex.SpeechKit

Reading time10 min
Views147K
imageНа Yet another Conference 2013 мы представили разработчикам нашу новую библиотеку Yandex SpeechKit. Это публичный API для распознавания речи, который могут использовать разработчики под Android и iOS. Скачать SpeechKit, а также ознакомиться с документацией, можно здесь.

Yandex SpeechKit позволяет напрямую обращаться к тому бэкэнду, который успешно применяется в мобильных приложениях Яндекса. Мы достаточно долго развивали эту систему и сейчас правильно распознаем 94% слов в Навигаторе и Мобильных Картах, а также 84% слов в Мобильном Браузере. При этом на распознавание уходит чуть больше секунды. Это уже весьма достойное качество, и мы активно работаем над его улучшением.

image

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

Как устроено распознавание речи в Яндексе

Алгоритм поиска наименьшего общего предка в дереве

Reading time5 min
Views35K
На досуге мне пришла интересная идея, которую я развил в алгоритм нахождения наименьшего общего предка(LCA) двух вершин в дереве. До появления этой идеи других алгоритмов для поиска LCA я не знал. Проверив корректность работы я поспешил изучить другие алгоритмы для решения этой задачи, но аналогичных моему я не нашел. Теперь поспешу поделиться им с сообществом.

Введение

Деревом называется неориентированный связный граф из N вершин и N-1 ребер. Из любой вершины до любой другой существует ровно один простой путь.
Корнем дерева будет называться такая вершина, от которой задано направление движения по дереву при его обходе.
Наименьшим общим предком двух вершин u и v будет называться такая вершина p, которая лежит на пути из корня и до вершины v, и до вершины u, а также максимально удаленная от него.
Читать дальше →

Алгоритм поиска путей в лабиринте

Reading time5 min
Views129K
Доброго времени суток, уважаемое сообщество.

Предыстория



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

Вот собственно и он:




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

Кого заинтересовал, прошу под кат

Алгоритм обучения многослойной нейронной сети методом обратного распространения ошибки (Backpropagation)

Reading time19 min
Views299K
Тема нейронных сетей была уже ни раз освещена на хабре, однако сегодня я бы хотел познакомить читателей с алгоритмом обучения многослойной нейронной сети методом обратного распространения ошибки и привести реализацию данного метода.
Читать дальше →

Способы представления словарей для автоматической обработки текстов

Reading time10 min
Views21K
Автоматический анализ текстов практически всегда связан с работой со словарями. Они используются для морфологического анализа, выделения персон (нужны словари личных имен и фамилий) и организаций, а также других объектов.

В общем виде словарь — множество записей вида {строка, данные ассоциированные с этой строкой}.

Например, для морфологического анализа словарь состоит из троек {словоформа, нормальная форма, морфологические характеристики}. При анализе слова «мыла» из предложения «мама мыла раму» надо уметь получать следующие варианты анализа:
Нормальная форма Характеристики
МЫЛО S (существительное), РОД (родительный падеж), ЕД (единственное число), СРЕД (средний род), НЕОД
(неодушевленность)
МЫЛО S (существительное), ИМ (именительный падеж), МН (множественное число), СРЕД (средний род), НЕОД (неодушевленность)
МЫЛО S (существительное), ВИН (винительный падеж), МН (множественное число), СРЕД (средний род), НЕОД (неодушевленность)
МЫТЬ V (глагол), ПРОШ (прошедшее время), ЕД (единственное число), ИЗЪЯВ (изъявительное наклонение), ЖЕН (женский род), НЕСОВ (несовершенный вид)


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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity