Search
Write a publication
Pull to refresh
0
0
Вова @vvsh

User

Send message

Orthogonal — модель мира с альтернативной теорией относительности

Reading time6 min
Views27K
В 2011-2013 гг. австралийский писатель Грег Иган (Greg Egan) опубликовал трилогию Orthogonal (The Clockwork Rocket, The Ethernal Flame, The Arrows of Time). В книгах описан удивительный мир, в котором нет жидкостей и электрических зарядов, обитают четырёхглазые разумные существа, способные менять форму и размножающиеся делением, использующие воздух не для химических реакций, а для охлаждения своего тела, а свет — для передачи нервных импульсов. Скорость света в этом мире непостоянна: фиолетовые фотоны движутся заметно быстрее красных. Поэтому звёзды выглядят не как белые точки, а как радужные полоски
Читать дальше →

Сверхбыстрое распознавание речи без серверов на реальном примере

Reading time10 min
Views334K

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

Прикручиваем Pocketsphinx к своему Андроиду

Клеточный автомат Steppers

Reading time14 min
Views32K
В этой статье предлагаются правила для двумерного клеточного автомата, который, с одной стороны очень похож на игру Жизнь Джона Конвея (Conway’s Game of Life), а с другой — обладает существенными отличиями. Прежде всего, его отличает увеличенное до трех количество состояний клеток, повышенная способность к самоорганизации, неограниченное время активной эволюции и неограниченное количество движущихся конфигураций.

Для стабильных конфигураций новые правила совпадают с правилами игры Жизнь, поэтому все стабильные конфигурации в игре Жизнь существуют и в новых правилах. В описываемом клеточном автомате существует большой класс движущихся конфигураций, космических кораблей. Все эти конфигурации перемещаются по одному и тому же поступательному механизму, который напоминает движение и шагового экскаватора и человека на костылях. Подобные космические корабли я назвал степпер (stepper), а само правило Steppers. Так его и будем называть в дальнейшем.

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

_r00.png
[00] Пример движущейся конфигурации, генерирующей поток степперов
Читать дальше →

Немного о внутренностях WebKit

Reading time8 min
Views14K
Задался я с задачей, ознакомится с тем как работает в том или ином виде основа всех современных браузеров — WebKit, как происходит процесс загрузки ресурсов, и что с этим всем, собственно, можно сделать. Документации по вопросу, в принципе, достаточно:

* структурированная, но не покрывающая и 10 й части от Apple;
* разбросаные статьи в вики, разные по степени детализации и степени покрытия.

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

Опыт применения Go в продакшене Яндекса

Reading time7 min
Views75K
Хочу поделиться опытом использования языка Go в продакшн-системах Яндекса. Вообще мы здесь довольно консервативно относимся к тому, какие языки использовать для реальных систем. И это лишь добавляет полезности тому опыту, который мы получили в этот раз.

Мы начали разрабатывать на Go летом прошлого года. Тогда появился фреймворк Go для облачной платформы Cocaine. До этого приложения серверного API Браузера писались в основном на C++ и Python. Серверный API в это время как раз переходил на облачную платформу, и мы по большей части только определялись с тем, какие технологии использовать в будущем для него. API выполняет следующие функции: получить данные, обработать, отправить во внутренний сервис Яндекса, ещё раз обработать, отдать назад Браузеру. Набор простых приложений.



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

Генератор функциональных парсеров на JavaScript (с трансдьюсерами)

Reading time2 min
Views8.9K
Всем привет!

Увидел, что статья о трансдьюсерах на JavaScript стала вполне популярной и хотел отметить, что уже давно доступен генератор парсеров на транзисторах^W трансдьюсерах. По крайней мере, очень на это похоже. У меня есть статья с подробным описанием на английском «Generating Functional Parsers» и, собственно, исходники.

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

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

Reading time1 min
Views32K


Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Читать дальше →

Почему я плагин для Maven писал

Reading time2 min
Views7.1K
image

Все началась, когда я поменял работу и сходу попал на большой проект. Большой для меня это несколько вендоров, десяток систем, 5-ти ступенчатый релизный цикл, 1000+ инженеров в разных локациях. Исходники «жили» в нескольких svn репозиториях с большим количеством maven модулей, каждый из которых мог использоваться в одной или нескольких системах. Каждый модуль был подключен в основную систему через бинарную зависимость. В конце релизного цикла необходимо было выпустить новые версии модулей и собранных на их основе систем. Под катом я опишу проблему эффективности этого процесса, с которой я попытался побороться — и что из этого вышло.
Читать дальше →

Собеседование в gamedev индустрии

Reading time4 min
Views44K
Хотя на хабре уже проскакивала статья про собеседование в Зингу, мне хочется рассказать про то, как проходят собеседования в gamedev программистов и как к ним готовиться. Собеседования бывают очень разные, и то, что спрашивают на собеседованиях в Швеции, в Канаде или в России может заметно различаться. Итак, обо всем по порядку.
Читать дальше →

Arr.js: события для стандартного массива

Reading time3 min
Views12K
Arr.js — это «класс», унаследованный от стандартного Array. Отличительными особенностями являются: наличие события change для отслеживания любых изменений в массиве, и методы insert(), update(), remove(), set(), get() для упрощенной работы с массивом. Доступны все «родные» методы стандартного Array.

var fruits = new Arr('apple', 'orange', 'pineapple');

fruits.on('change', function(event) {
  alert('I changed fruits: ' + fruits.join(', '));
});

fruits.push('banana');

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

Как пользовательские факторы влияют на ранжирование: 2 важнейших фактора

Reading time7 min
Views4.3K


Мы продолжаем цикл переводов статей, посвященных различным аспектам поведенческих факторов и тому, как ПФ влияют на позиции сайта в поиске. Резюмируя предыдущие публикации, ПФ являются одним из наиболее сложных для накрутки, а значит и наиболее надёжных для поисковых систем способов определения «качественных» сайтов. Проще говоря, чем лучше ПФ вашего сайта, тем выше сайт находится в органической выдаче. В этом посте, увидевшем свет ещё в 2012 на SEOMoz.com, Питер Мейерс раскрывает детали алгоритма учета ПФ системами Гугл и Бинг, которые по нашему мнению активно развиваются и по сей день. SERPClick разработан в том числе на основе данных, подробно рассмотренных в этом посте. Он позволяет реализовать ПФ кампании, нацеленные на улучшение ранжирования вашего сайта через улучшение показателей поведенческих факторов. Благодарим аналитический отдел компании ALTWeb Group за предоставленный перевод.
Читать текст перевода

Венчурные инвестиции для биения сердца

Reading time3 min
Views13K


24 сентября 2014 года канадский стартап Bionym сообщил о получении $14 млн венчурного финансирования Series A, в том числе от Ignition Partners, Relay Ventures, MasterCard и Salesforce Ventures. Спрашивается, что конкретно вызвало такую бурную активность инвесторов? Это всего лишь маленький симпатичный гаджет — браслет Nymi, со встроенным сенсором для снятия электрокардиограммы.
Читать дальше →

Анализ существующих подходов к распознаванию лиц

Reading time14 min
Views153K
С завидной регулярностью на Хабре появляются статьи, рассказывающие о тех или иных методах распознавания лиц. Мы решили не просто поддержать эту замечательную тему, но выложить наш внутренний документ, который освещает пусть и не все, но многие подходы к распознаванию лиц, их сильные и слабые места. Он был составлен Андреем Гусаком, нашим инженером, для молодых сотрудников отдела машинного зрения, в образовательных, так сказать, целях. Сегодня предлагаем его все желающим. В конце статьи – впечатляющих размеров список литературы для самых любознательных.
Читать дальше →

Полицейские дроны ищут незадекларированные особняки в Аргентине

Reading time1 min
Views19K
Привет, Хабр!

Многие люди боятся вторжения дронов в частную жизнь. И не зря боятся. Но беспилотники могут помогать человеку во многом: делать захватывающие фото с воздуха, контролировать проведение мероприятий и даже искать незаконно построенные особняки. Ну и, конечно, искать маршруты наркоторговцев, чем успешно занимаются в Аргентине. Стоимость используемых спецслужбами дронов составляет около 10 000 долларов.

image

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

Steering behavior. Виды изменения направления движения персонажа на ходу

Reading time4 min
Views23K
При разработке игр часто возникает необходимость реализации следования некоторому маршруту. Например, персонажу нужно проложить путь из точки A в точку B. Допустим рассчитали его по какому-нибудь алгоритму поиска пути, идем. И тут оказывается, что из точки C в точку D идет другой юнит и пересекает нам дорогу и надо бы его обойти. Что делать? Постоянно перестраивать путь – накладно, много лишних вычислительных расходов, когда достаточно слегка изменить направление уже во время движения, чтобы избежать столкновения.
Виды изменения направления по ходу движения и есть steering behaviors.
Читать дальше →

Обзор децентрализованных технологий. Часть 1

Reading time11 min
Views86K
Bitcoin положил основу для создания систем нового типа, принципиально новых децентрализованных сервисов, которые призваны решать различные проблемы с помощью революционной технологии Blockchain. В Рунете встречаются отдельные статьи и заметки по этой теме, но весьма разрозненно, на Хабре так же уже были отдельные публикации и упоминания на эту тему, но мы решил, что будет полезно создать обзорную серию статей и коротко осветить самые интересные проекты из этой области.

Blockchain


Блокчейны – технология распределённых вычислениях и общем консенсусе пользователей, созданная таинственным Сатоши Накамото. В ней отсутствует центральное управление, а для верификации транзакций используются P2P-сети, кодификации и криптография. Более того, транзакциями можно управлять при помощи программируемых контрактов/договоров. В блокчейне Биткоина любые транзакции не считаются легитимными (подтверждёнными), пока информация о них не будет сгруппирована в специальные структуры — блоки. Структура и информация в блоках подчиняется заданным правилам и её можно быстро проверить. Каждый блок всегда содержит информацию об одном предыдущем блоке. Это позволяет все существующие блоки выстроить в одну цепочку, которая представляет собой распределённую базу данных и содержит информацию о всех совершённых когда-либо операциях с bitcoin.

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

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

Мобильный HTML5

Reading time2 min
Views11K
Сегодня у нас вышла новая книга — HTML5. Разработка приложений для мобильных устройств.



Книга доступна в печатном и электронном формате. При покупке виртуальной книги вы получите два формата — PDF и ePub. В течение недели действует скидка 10% на разделы HTML и XHTML. Языки разметки web-страниц и Бестселлеры O'Reilly. Код купона — e46e73d.

Немного информации о книге.
Читать дальше →

Так ли приватен HTTPS?

Reading time3 min
Views67K
Недавно в одном из прочитанных блогов увидел интересное утверждение (в моем вольном переводе):
Думаете, когда вы работаете с онлайн-банкингом из офиса, у вас сквозное безопасное соединение? Подумайте еще разок.

Достаточно, чтобы заинтересовать и немного покопать. «И шо ви таки думаете? (с)» В «насквозь безопасное» HTTPS соединение можно врезать как минимум двух посредников (Man In The Middle). Правда, оба должны быть Trusted (TMITM), так что не надо сильно паниковать. Пока что.
Подробности

Побеждаем NPE hell в Java 6 и 7, используя Intellij Idea

Reading time6 min
Views36K

Disclaimer


  • Статья не претендует на открытие Америки и носит популяризаторско-реферативный характер. Способы борьбы с NPE в коде далеко не новые, но намного менее известные, чем этого хотелось бы.
  • Разовый NPE — это, наверное, самая простая из все возможных ошибок. Речь идет именно о ситуации, когда из-за отсутствия политики их обработки наступает засилье NPE.
  • В статье не рассматриваются подходы, не применимые для Java 6 и 7 (монада MayBe, JSR-308 и Type Annotations).
  • Повсеместное защитное программирование не рассматривается в качестве метода борьбы, так как сильно замусоривает код, снижает производительность и в итоге все равно не дает нужного эффекта.
  • Возможны некоторые расхождения в используемой терминологии и общепринятой. Так же описание используемых проверок Intellij Idea не претендует на полноту и точность, так как взято из документации и наблюдаемого поведения, а не исходного кода.


JSR-305 спешит на помощь


Здесь я хочу поделиться используемой мной практикой, которая помогает мне успешно писать почти полностью NPE-free код. Основная ее идея состоит в использовании аннотаций о необязательности значений из библиотеки, реализующей JSR-305 (com.google.code.findbugs: jsr305: 1.3.9):

  • @Nullable — аннотированное значение является необязательным;
  • @Nonnull — соответственно наоборот.

Естественно обе аннотации применимы к полям объектов и классов, аргументам и возвращаемым значениям методов, локальным переменным. Таким образом эти аннотации дополняют информацию о типе в части обязательности наличия значения.
Читать дальше →

Современные спам фильтры и End-to-End шифрование

Reading time12 min
Views13K

Привет

Тревор (пер: — насколько я понял, речь идёт о Trevor Perrin) попросил написать свои мысли по поводу … спам фильтров и сквозного (end-to-end) шифрования, чтобы вся информация была собрана в одном сообщении, а не разбросана по всему форуму. В частности, он попросил сдампить мои знания по следующим темам:
  • Как сейчас работают спам-фильтры в крупных почтовых сервисах?
  • Как повлияет широкое распространение сквозного E2E шифрования?
  • Что можно перенести на клиента (а также вытекающие плюсы и минусы)?
  • Реально ли это проделать с электронной почтой?
  • Что изменится при переходе от электронной почты к другим асинхронным системам (например, чатам) или новым протоколам; то есть, проблемы спама — это проблемы email протокола или глобальный изъян системы?

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

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity