Несколько лет назад я разрабатывал для одного большого телекома новую информационную систему. Нам приходилось взаимодействовать со всё нарастающим количеством веб-сервисов, открываемых более старыми системами или бизнес-партнёрами. Как вы понимаете, мы получили добрую порцию SOAP-ада. Заумные WSDL, несовместимые библиотеки, странные баги… Где только возможно мы старались продвинуть — и использовать — простые RPC-протоколы: XMLRPC или JSONRPC.
User
Глубокое обучение для идентификации картин
Привет, Хабр! Сегодня я хочу рассказать о том, как глубокое обучение помогает нам лучше разобраться в искусстве. Статья разбита на части в соответствии с задачами, которые мы решали:
- поиск картины в базе данных по фотографии, сделанной мобильным телефоном;
- определение стиля и жанра картины, которой нет в базе данных.
Все это должно было стать частью сервиса БД Артхив и его мобильных приложений.
Задача идентификации картин состояла в том, чтобы по изображению, приходящему от мобильного приложения, найти в базе данных соответствующую картину, затратив на это менее одной секунды. Обработка целиком в мобильном устройстве была исключена на этапе предпроектного исследования. Кроме того, оказалось, что невозможно трудно гарантированно выполнить на мобильном устройстве отделение картины от фона в реальных условиях съемки. Поэтому мы решили, что наш сервис будет принимать на вход фотографию с мобильного телефона целиком, со всеми искажениями, шумами и возможным частичным перекрытием.
Поможем Даше найти эти картины в базе из более чем 200 000 изображений?
Кэши для «чайников»
Кэш – это комплексная система. Соответственно, под разными углами результат может лежать как в действительной, так и в мнимой области. Очень важно понимать разницу между тем, что мы ждем и тем, что есть на самом деле.
Давайте прокрутим полный оборот ситуаций.
Tl;dr: добавляя в архитектуру кэш важно явно осознавать, что кэш может быть средством дестабилизации системы под нагрузкой. Смотрите конец статьи.
Обзор true Android TV на примере Sony 55w807c
Ожидание, когда же google или sony
Купил месяц назад сей девайс при переезде, так что внемли люд гиковый, чего несет нам Google без мишуры маркетинговой.
Начнем с девайса и перейдем к сладкому.
Удачная модель ветвления для Git
В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.
В качестве инструмента управления версиями всего исходного кода она использует Git.
Серверная кластеризация маркеров на карте. От теории к практике
И когда решили залить в базу 1 миллион маркеров то поняли, что даже если запрашивать маркеры только в определенном радиусе то все работает очень медленно и кластеризация на клиенте тоже не вариант :)
А где-то под этим лесом находится манхетен
Макросы Zend обхода циклов (HashTable Iteration)
Многопоточные вычисления в PHP: pthreads
Недавно я попробовал pthreads и был приятно удивлен — это расширение, которое добавляет в PHP возможность работать с несколькими самыми настоящими потоками. Никакой эмуляции, никакой магии, никаких фейков — все по-настоящему.
Я рассматриваю такую задачу. Есть пул заданий, которые надо побыстрее выполнить. В PHP есть и другие инструменты для решения этой задачи, тут они не упоминаются, статья именно про pthreads.
Стоит отметить, что автор расширения, Joe Watkins, в своих статьях предупреждает, что многопоточность — это всегда не просто и надо быть к этому готовым.
Кто не испугался, идем далее.
Ubuntu. Русификация консоли в 2016 году
Выглядит проблема так:
И присутствует в текущем релизе Ubuntu 15.10 и в бета-версии Ubuntu 16.04. Тем, кому интересно узнать причины проблемы и как можно её решить — прошу под хабракат.
Радость и грусть разработки на Qt под Android (и не только)
9 секретов онлайн-платежей. Часть 2: регулярные платежи
В сегодняшнем выпуске, втором из цикла «9 секретов онлайн-платежей», мы расскажем, почему регулярные платежи, которые называют еще «автоплатежами» и «рекуррентными платежами», так важны для любого онлайн-бизнеса, как их воспринимают пользователи, чем заинтересовать и как с помощью них удержать клиента на вашем сайте. Данная серия, посвященная поэтапной настройке платежей на сайте и в мобильных приложениях, содержит восьмилетний опыт работы команды PayOnline, подключившей оплату для более 3 000 интернет-магазинов и сервисов.
Badoo перешли на PHP7 и сэкономили $1M
Мы сделали это! Несколько сотен наших application-серверов переведены на PHP7 и прекрасно себя чувствуют. Насколько нам известно, это второй переход на PHP7 проекта такого масштаба (после Etsy). В процессе мы нашли несколько очень неприятных багов в системе кеширования байт-кода PHP7, но они исправлены. А теперь — ура! — благая весть для всего PHP-сообщества: PHP7 действительно готов к продакшену, стабилен, потребляет значительно меньше памяти и дает очень хороший прирост производительности. Ниже мы подробно расскажем, как мы перешли на PHP7, с какими трудностями столкнулись, как с ними боролись и какие результаты получили.
Мой опыт знакомства с BrainTree
Итак, началось все с того, что на работе к проекту понадобилось прикрутить систему оплаты BrainTree. Поискав на русскоязычных сайтах инструкцию как это сделать, я понял, что придется во всем разбираться самому.
Асинхронное выполнение PHP скрипта на подпроцессах
Добрый день, уважаемые хабровчане.
Сегодня я хотел бы поговорить о таких нетривиальных вещах, как асинхронные (параллельные) расчеты в языке PHP.
Сам по себе PHP — это скриптовый язык, который никогда и не претендовал на многопоточность. Но чем дальше в лес, тем более серьезные задачи стоят перед разработчиками, и тем больше приходится «извращаться» с пыхом, потому что мигрировать на более приспособленный под эти задачи язык программирования многие компании попросту боятся и не хотят. Следовательно, приходится работать с тем, что дают.
Подробности под катом…
Memcached: статистика, отладка и RPC
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached, а также о проблеме одновременного перестроения кэшей и тэгировании кэшей.
Сегодняшний пост завершает эту серию, в нём обзорно мы поговорим о технических “мелочах”:
- анализ статистики memcached;
- отладка memcached;
- “RPC” с помощью memcached.
Полный текст всех разделов в виде одной большой PDF-ки можно скачать и посмотреть здесь (в разделе “Материалы”).
Сброс группы кэшей и тэгирование в memcached
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached, а также о проблеме одновременного перестроения кэшей.
Сегодня мы поговорим о тэгировании кэшей и о возможности сброса сразу группы кэшей в memcached.
Последний, шестой пост, будет посвящен различным техническим вопросам работы с memcached: анализу статистике, отладке и т.п.
Проблема одновременного перестроения кэшей
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached.
Сегодня мы рассмотрим проблему одновременного перестроения кэша, которая возникает при большом количестве одновременных обращений к кэшу, который был только что сброшен или потерян, что может привести к перегрузке БД.
Следующий пост будет посвящен тэгированию кэшей.
Если вы решили перейти с PHP на Python, то к чему следует подготовиться
Сегодня я попробую ответить на вопрос: «А что если вместо PHP писать на Python?».
Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, как всё в PHP плохо, я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся.
Верстка email рассылок от А до Я для чайников
Реализация обмена сообщениями между вкладками браузера
К примеру, мне потребовалось решить эту задачу при реализации JavaScript API к Comet сервису. Эта задача встречается достаточно часто и её уже рассматривали на хабре раньше здесь и здесь, но я решил написать своё решение задачи исходя из следующих требований к коду:
- Кросбраузерность
- Отсутствие зависимостей
- Минимальный размер кода
- Простота и удобство
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity