Как стать автором
Обновить
26
0
Dzen Marketing @Dzen_Marketing

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

Отправить сообщение

Используем MongoDB вместо memcached: быть или не быть?

Время на прочтение5 мин
Количество просмотров15K
На тему «использование MongoDB вместо memcached» гуглится немало историй успеха. Такое ощущение, что есть широкий класс задач, для которых идея работает неплохо: прежде всего это проекты, где интенсивно используется тэгирование кэша. Но если вы попробуете, то заметите, что в MongoDB не хватает функции удаления из кэша записей, которые читаются реже всего (LRU — Least Recently Used). Как поддерживать размер кэша в разумных рамках? LRU — это, кстати, «конек» memcached; вы можете писать в memcached, не задумываясь о том, что ваш кэш переполнится; но как же быть с MongoDB?

Раздумывая над этим, я написал на Python небольшую утилиту CacheLRUd (выложена на GitHub). Это демон для поддержки LRU-удаления записей в различных СУБД (в первую очередь, конечно, в MongoDB). Ферма таких демонов (по одному на каждой MongoDB-реплике) следит за размером коллекции, периодически удаляя записи, к которым доступ на чтение производится реже всего. Отслеживание фактов чтения той или иной записи кэша происходит децентрализовано (без единой точки отказа) по протоколу, основанному на UDP (почему так? потому что «наивный» вариант — писать из приложения в мастер-базу MongoDB при каждой операции чтения — плохая идея, особенно если мастер-база окажется в другом датацентре). Читайте подробности чуть ниже.

Но зачем?
Читать дальше →

Начинаем работать с графовой базой данных Neo4j

Время на прочтение12 мин
Количество просмотров86K
В нашем проекте возникла следующая задача — есть база с большим количеством товаров, на уровне сотен тысяч. У каждого товара есть сотни динамически создаваемых характеристик. Необходимо обеспечить быструю фильтрацию по товарам по набору различных характеристик. Время формирования ответа должно быть не более 0.3 секунды, нужно поддерживать сложную логику в стиле.

(характеристика1 = true AND (характеристика2 < 100)) OR (характеристика1 = false AND (характеристика3 > 17)) ... далее обычно мешанина из AND\OR


Типичный пример подобного функционала — hotline.ua/computer/myshi-klaviatury

Пример функционала

У нас все реализовано в рамках MySQL + Symfony2/Doctrine, скорость неудовлетворительная — ответы формируются в течении 1-10 секунд. Мои попытки оптимизировать все это хозяйство — под катом.
Читать дальше →

Что такое Томита-парсер, как Яндекс с его помощью понимает естественный язык, и как вы с его помощью сможете извлекать факты из текстов

Время на прочтение6 мин
Количество просмотров89K
Мечта о том, чтобы машина понимала человеческий язык, завладела умами еще когда компьютеры были большими, а их производительность – маленькой. Главная проблема на пути к этому заключается в том, что грамматика и семантика естественных языков слабо поддаются формализации. Кроме того, от языков программирования их отличает присутствие многозначности.

Конечно, мечта о полноценной коммуникации с компьютером на естественном языке пока еще далека от полноценной реализации примерно настолько же, как и мечта об искусственном интеллекте. Однако некоторые результаты есть уже сейчас: машину можно научить находить нужные объекты в тексте на естественном языке, находить между ними связи и представлять необходимые данные в формализованном виде для дальнейшей обработки. В Яндексе уже достаточно давно применяется такая технология. Например, если вам придет письмо с предложением о встрече в определенном месте и в определенное время, специальный алгоритм самостоятельно извлечет нужные данные и предложит внести ее в календарь.

image

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

Называется технология Томита-парсер, и по большому счету, любой желающий может воспользоваться ей уже сейчас: бинарные файлы доступны для скачивания. Однако прежде чем пользоваться технологией, нужно научиться ее правильно готовить.
Читать дальше →

Создание сетей терминов на основе анализа текстов

Время на прочтение5 мин
Количество просмотров17K
По поручению известного автора Дмитрия Ландэ (например, «Поиск знаний в Internet», Интернетика. Навигация в сложных сетях: модели и алгоритмы) публикую одну из последних его работ.

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


Немного теории и алгоритм

Умные закладки на основе Elasticsearch

Время на прочтение2 мин
Количество просмотров12K
Периодически стал замечать, что не могу найти нужную статью, которую видел раньше.
Вроде бы все просто — по запомнившимся сведениям статью можно легко найти. Но нет. Поиск в Google часто ничего не дает, т.к. я помню только обрывки содержимого, и поисковая выдача содержит много шума.

Актуально это и на работе. Для хранения и обмена полезными ссылками на разные Github проекты, статьи, сервисы раньше мы использовали Skype, но сейчас стали использовать для этих целей Yammer. Оба этих способа имеют свои недостатки. Основной недостаток Skype для обмена ссылками — это сложность поиска по истории. Проблема Yammer — он не индексирует текст статьи, а только сниппет. Ни один из них не имеет возможности автоматической категоризации.

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

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

Huginn: агенты в стиле Yahoo Pipes и IFTTT на своём сервере

Время на прочтение1 мин
Количество просмотров6.8K


Huginn — система программирования агентов и выполнения разнообразных задач в онлайне, сделанная по образцу Yahoo Pipes и IFTTT, но только для установки на собственный сервер. В Huginn мы сами контролируем собственные данные и не зависим от ограничений третьей стороны.
Читать дальше →

4 способа развития бизнеса с помощью клиентов

Время на прочтение6 мин
Количество просмотров14K
Сейчас мы наблюдаем настоящую «консьюмеризацию» философии бизнеса. Когда-то Питер Друкер (Peter Drucker) создал свою знаменитую клиентоориентированную теорию бизнеса, а сейчас в моде «социальный CRM». В прошлом году Altimeter опубликовал 18 примеров подобного подхода, и в их числе было несколько, тесно связанных с инновациями. Клиенты – это богатый источник инсайтов для инноваций, и именно они позволяют понять, какие нововведения являются действительно стоящими. Поэтому было бы неплохо понять, какую информацию, полезную для разнообразных улучшений, могут дать вам клиенты. Окей, не неплохо – это жизненно необходимо. Несмотря на то, что процесс вовлечения клиентов в создание инноваций, в общем-то, еще только зарождается, в будущем именно покупатели будут главным источником информации к размышлению для любого бизнеса. Просто должно пройти немного времени.

Итак, у данных, которые можно получить от клиентов, обычно, есть определенная структура. Такая информация может принимать разные формы:

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

Эффективность команды. Расчет бонусов

Время на прочтение8 мин
Количество просмотров34K
Если вы — менеджер проекта и работаете с профессиональной, слаженной командой — считайте, что вам крупно повезло.
Другое дело, если вам досталась разношерстная команда, средней или низкой квалификации. Конечно, ее можно разогнать и заменить на профессионалов, но надо понимать, что их зарплата обычно крайне немаленькая.

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

[видео] Как избежать незапланированного отката: разбор 7 реальных переговорных ситуаций

Время на прочтение4 мин
Количество просмотров41K
Раз уже тема переговоров с заказчиками и коллегами оказалась интересна хабровчанам (48,000 просмотров видео за неделю), мы решили продолжить эту тему.

Предыдущие материалы:


На этот раз мы попросили Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП разобрать ситуации более подробно. Правда, и ситуации не такие простые. Более конкретные, про проектную работу в ИТ, с непростыми заказчиками и коллегами.

Надеемся, что это окажется вам полезным. Видео-разборы 7 реальных ситуация — под катом:
  • “На свободу — с готовой отчетностью!”
  • “4 часа, чтобы сделать клиенту чушь”
  • “Миссия невыполнима (с данным оборудованием)”
  • “Начинайте работы, через 14 часов открытие магазина”
  • “Наш бюджет в 3 раза меньше”
  • “Незапланированный откат”
  • “Если у вас в руках молоток, то все вокруг кажется гвоздем”


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

Как стать переговорщиком — интервью с Дмитрием Коткиным

Время на прочтение11 мин
Количество просмотров31K
Два наших недавних видео-ролика про переговоры набрали 40,000 просмотров за два дня.


Тема оказалось интересной. И это не удивительно, мы ведем переговоры каждый день. Увидев такой интерес к теме, мы уговорили Дмитрия Коткина, автора этих видео-роликов и по совместительству руководителя питерской школы переговорщиков ШиП, сделать интервью про то, как стать переговорщиком.

О чем поговорили:
  • Как Дмитрий Коткин попал в тематику переговоров?
  • Какие были переговорные неудачи?
  • О работе в политике
  • В чем специфика IT-специалистов и IT-компаний в плане переговоров
  • 4 главных принципа любых торгов
  • С чего начать, когда стартуешь проект с новым заказчиком
  • Что делать, когда заказчик пропихивает новые требования
  • Главная вещь в обучении переговорам
  • 6 лучших книг по переговорам


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

[видео] Как поставить человека на место: 10 реальных вопросов про давление в переговорах

Время на прочтение2 мин
Количество просмотров229K
Видео про 8 способов противостояния формуле нужды оказалось неожиданно популярным, набрав 8,000 просмотров за два дня. Мы решили продолжить тему.

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

Мы отобрали 10 самых любопытных, на наш взгляд, вопросов в этой теме и снова заперли в студии Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП и нашего хорошего друга, чтобы он рассказал, что конкретно делать:



10 реальных ситуаций, которые удалось осветить — под катом:

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

Оптимизируем LIMIT offset

Время на прочтение2 мин
Количество просмотров84K
Везде, где используется LIMIT offset для больших таблиц, рано или поздно начинаются тормоза. Запросы вида

SELECT * FROM test_table ORDER BY id LIMIT 100000, 30

могут выполнятся очень долго. Например, в моем случае, на одном из сайтов кол-во комментариев перевалило за 200к и постраничная навигация по комментариям начала ощутимо тормозить, а в mysql-slow.log все чаще стали попадать запросы с временем выполнения 3-5сек.
Читать дальше →

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

Время на прочтение8 мин
Количество просмотров65K
Здравствуйте.
В первой части статьи я расскажу о некоторых стилистических «косяках», которые придают текстам характерный канцелярский унылый стиль. Вторая часть посвящена более серьёзной ошибке, которая, к сожалению, грозит в ближайшее время стать правилом.
Читать дальше →

iON Adventure: гибрид профессиональной экстрим-камеры и авторегистратора с G-сенсором и GPS

Время на прочтение6 мин
Количество просмотров12K
«Рецепт» изготовления гибрида авторегистратора и экстрим-камеры, широко применяемый отечественными брендами, выглядит так: берется регистратор, заключается в водонепроницаемый корпус и комплектуется набором креплений (на плоские поверхности, рули, шлемы и пр.). При этом разработчики забывают о том, что к экшн-камерам предъявляются особые требования – например, при съемке экстремального видео происходят крайне резкие и постоянные смены ракурса (плюс тряска и перевороты), к которым «железо» обычных регистраторов готово не всегда. Тем более что при создании описанных выше «гибридов» обычно используются недорогие автореги: если взять за основу продвинутую модель, да еще и добавить в ее комплектацию хороший набор креплений, то стоить она будет более 10 тысяч рублей. В итоге «гибриды авторегов и экстрим-камер» обычно нормально выступают в первой роли, но пасуют во второй. Экстремальное видео, снятое на них, зачастую получается смазанным, нечетким и с кучей артефактов.

Сегодня я расскажу о реализации несколько иного подхода к созданию «экшн-регистратора». Модель, о которой пойдет речь в этом посте, называется iON Adventure. Об американских экстрим-камерах iON я и мои коллеги писали не раз: сперва сравнивали iON Air Pro Wi-Fi с GoPro Hero3 White Edition, а затем обозревали iON Air Pro 2 Wi-Fi . Теперь данный бренд, съевший четвероногое животное в области спорт-камер, взялся за создание «гибрида». На выходе получилась вполне себе любопытная модель, которая может успешно выступать устройством и первого, и второго типа (то есть и профессиональной спортивной камерой, и автомобильным регистратором).


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

Делаем адресные формы более привлекательными

Время на прочтение6 мин
Количество просмотров51K


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

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

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

Итак, приступим!

Автоматизация складских процессов интернет-магазина: опыт Аудиомании — Часть 1

Время на прочтение7 мин
Количество просмотров41K


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

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

Использование EXPLAIN. Улучшение запросов

Время на прочтение10 мин
Количество просмотров187K
Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым словом EXPLAIN. EXPLAIN – это один из самых мощных инструментов, предоставленных в ваше распоряжение для понимания MySQL-запросов и их оптимизации, но печальным фактом является то, что многие разработчики редко его используют. В данной статье вы узнаете о том, какие данные предлагает EXPLAIN на выходе и ознакомитесь с примером того, как использовать его для оптимизации запросов.
Читать дальше →

Распараллеливаем процессы для ускорения вычислений и выполнения заданий в Linux

Время на прочтение11 мин
Количество просмотров81K


Почти все персональные компьютеры, выпущенные за последние несколько лет, обладают как минимум двухъядерным процессором. Если у тебя, читатель, не очень старый комп или не какой-нибудь бюджетный ноутбук, то, вероятнее всего, ты обладатель многопроцессорной системы. А если еще любишь играть в игры, то тебе доступно около сотни GPU-ядер. Однако львиную долю времени вся эта мощь пылится без дела. Попробуем это исправить.
Подробности

Наш чеклист для фильтров на сайтах

Время на прочтение7 мин
Количество просмотров54K
Довольно часто на сайтах е-коммерса нас просят реализовать фильтры. Хороший фильтр — довольно дорогая игрушка. Вообще, они не всегда уместны — пользователю проще посмотреть глазами на список, чем разбираться в логике разработчика фильтра. Конечно, если в этом списке не так много элементов. Скажем, не больше 200 в каждом разделе. Ниже в виде проверочного списка для наших QA, я зафиксировал некоторые требования, которые мы настойчиво внедряем на своих проектах с этого года. Стандартизация, ептэ.

Эти требования разумны. Часть из них трудно реализуема. Часть — очевидна. Часть — зависит от контекста. Но в целом они довольно универсальны. Если будут какие-то вопросы по конкретным пунктам — велкам в комментарии.


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

Подсказки: API для ввода почтовых адресов и ФИО одной строкой

Время на прочтение2 мин
Количество просмотров28K
Если вам когда-нибудь приходилось разрабатывать форму регистрации или оформления заказа, то вы знаете, что для получения из формы качественных данных нужно прикрутить множество проверок для ФИО, почтовых адресов, e-mail, телефонов. При этом так уж исторически сложилось, что разработчики пишут код валидации информации каждый раз заново. Ну а потом эти проверки приходится еще и поддерживать, а на поддержку, как известно, приходится 80% усилий.

Кроме того, чем сложнее форма для ввода, и чем больше в ней валидируется информации, тем больше вероятность, что она будет глючить, и как результат — будет неудобна для пользователя.

Так не должно быть.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность