Pull to refresh
26
0
Серега @yaneblog

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

Send message

Conditional indexing. Оптимизируем процесс полнотекстового поиска

Reading time3 min
Views7.7K


В этой статье я хочу поговорить про интеграцию Apache Lucene и Hibernate Search. Если быть более точным, то про один из механизмов Hibernate Search, который может здорово увеличить производительность на проекте с полнотекстовым поиском.
Читать дальше →

Производительность shared-папок в Vagrant

Reading time3 min
Views18K
image

Руководя крупной и регулярно пополняющейся командой программистов, столкнулся с необходимостью быстро разворачивать среду разработки без танцев с бубном в духе «странно, у меня этот же код работает, а у тебя какая версия такой-то библиотеки?»

Получив однажды ссылку от заказчика на Vagrant с вопросом «а почему мы это сих пор это не используем?» принялся осваивать это чудо.
Читать дальше →

Ещё раз (надеюсь, последний) про double-checked locking

Reading time4 min
Views53K
Статей про double-checked locking на Хабре было столько, что казалось бы ещё одна — и Хабр лопнет. Вот только по Java неплохие публикации: Реализация Singleton в JAVA, Правильный Singleton в Java, А как же всё-таки работает многопоточность? Часть II: memory ordering или вот замечательный пост от TheShade (слава web-archive!). В наши дни, наверно, каждый Java-разработчик слышал, что если используешь DCL, будь добр объявить переменную volatile. Найти сегодня в коде известных опенсорсных проектов DCL без volatile довольно трудно, но оказалось, что проблемы ещё не полностью решены. Поэтому я добавлю небольшую заметку по теме с примерами из реальных проектов.

Иногда складывается ощущение, что программисты не включают мозги и не пытаются понять, как что работает, а просто следуют простым и понятным правилам вроде «объяви переменную volatile, используй DCL, и всё будет хорошо». К сожалению, такой подход в программировании не всегда работает.
Читать дальше →

Неперсонализированные рекомендации: метод ассоциаций

Reading time5 min
Views20K
Персональные рекомендации позволяют познакомить пользователя с объектами, о которых он, возможно, никогда не знал (и не узнал бы), но которые могут ему понравиться с учетом его интересов, предпочтений и поведенческих свойств. Однако, часто пользователь ищет не новый объект, а, к примеру, объект A похожий на объект B («Форсаж 2» похож на «Форсаж»), или объект A, который приобретается/потребляется с объектом B (сыр с вином, пиво с детским питанием, гречка с тушенкой и т.д.). Построить такие рекомендации позволяют неперсонализированные рекомендательные системы (НРС).


Рекомендовать похожие/сопутствующие объекты можно, ориентируясь на знания об объектах (свойства, теги, параметры) или на знания о действиях, связанных с объектами (покупки, просмотры, клики). Преимуществом первого способа является то, что он позволяет достаточно точно определить похожие по свойствам объекты («Форсаж 2» и «Форсаж» — похожие актеры, похожий жанр, похожие теги, ...). Однако данный способ не сможет порекомендовать сопутствующие объекты: сыр и вино. Еще одним недостатком этого способа является тот факт, что для разметки всех объектов, доступных на сервисе, требуется не мало усилий.

В то же время почти каждый сервис логирует информацию о том, какой пользователь просмотрел/купил/кликнул какой объект. Данной информации достаточно для построения НРС, которая позволит рекомендовать как похожие, так и сопутствующие объекты.

Под катом описан метод ассоциаций, позволяющий построить неперсонализированные рекомендации, основываясь лишь на данных о действиях над объектами. Там же код на Python, позволяющий применить метод для большого объема данных.
Читать дальше →

MyBatis как более быстрая альтернатива Hibernate

Reading time11 min
Views107K
В Java сообществе Hibernate framework де-факто считается стандартом для удобной работы с базой данных. Разработчику трудно выбрать другой фреймфорк, потому что порой он не знает о существовании альтернатив. В этой статье я проведу курс молодого бойца по работе с MyBatis framework. Полностью охватить весь framework не получится, но информации будет достаточно, что бы увидеть преимущества и слабые стороны данного framework'а и начать работать с MyBatis.
Читать дальше →

Создание окружения для веб-разработки на основе Docker

Reading time5 min
Views61K
Под катом расскажу как я усовершенствовал автоматическое создание и разворачивание окружения для веб-разработки на основе Docker, Fig, DNSMasq и nsenter. По сути, это разворачивание LAMP сервера и запись о нем в DNSMasq, но приоритетами являются незасоренность хост-машины ненужным софтом типа web-, db-серверов на хост машине и минимальное количество команд для запуска
Читать дальше →

Почему OpenVPN тормозит?

Reading time3 min
Views187K
Описанная проблема присуща только ветке OpenVPN 2.3, в 2.4 размеры буферов не меняются без требования пользователя.

Время от времени, мне встречаются темы на форумах, в которых люди соединяют несколько офисов с использованием OpenVPN и получают низкую скорость, сильно ниже скорости канала. У кого-то это может быть 20 Мбит/с при канале в 100 Мбит/с с обеих сторон, а кто-то еле получает и 400 Кбит/с на 2 Мбит/с ADSL/3G и высоким пингом. Зачастую, таким людям советуют увеличить MTU на VPN-интерфейсе до чрезвычайно больших значений, вроде 48000, или же поиграться с параметром mssfix. Частично это помогает, но скорость внутри VPN все еще очень далека от канальной. Иногда все сваливают на то, что OpenVPN — userspace-решение, и это его нормальная скорость, учитывая всякие шифрования и HMAC'и. Абсурд!

Немного истории

На дворе июль 2004 года. Типичная скорость домашнего интернета в развитых странах составляет 256 Кбит/с-1 Мбит/с, в менее развитых — 56 Кбит/с. Ядро Linux 2.6.7 вышло не так давно, а 2.6.8, в котором TCP Window Scale включен по умолчанию, выйдет только через месяц. Проект OpenVPN развивается уже 3 года как, к релизу готовится версия 2.0.
Один из разработчиков добавляет код, который устанавливает буфер приема и отправки сокета по умолчанию в 64 КБ, вероятно, чтобы хоть как-то унифицировать размер буфера между платформами и не зависеть от системных настроек.
Читать дальше →

Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Бинарная классификация

Reading time4 min
Views18K
Содержание:
Глава 1: Схемы реальных значений
Часть 1:
   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:
         Стратегия №2: Числовой градиент

Часть 3:
         Стратегия №3: Аналитический градиент

Часть 4:
      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:
         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:
      Становимся мастером обратного распространения ошибки


Глава 2: Машинное обучение
Часть 7:
      Бинарная классификация

Часть 8:
      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:
      Обобщаем SVM до нейронной сети

Часть 10:
      Более традиционный подход: Функции потерь



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

Поговорим о VPN-ах? Типы VPN соединений. Масштабирование VPN

Reading time82 min
Views195K
Коллеги, здравствуйте. Меня зовут Семенов Вадим и я хочу представить статью, посвященную вопросу масштабируемости VPN-ов, причем тех VPN-ов, которые доступны для настройки в обычной корпоративной сети предприятия, а не со стороны провайдера. Надеюсь, данная статья станет справочным материалом, который может потребоваться при дизайне сети, либо при её апгрейде, либо для того, чтобы освежить в памяти принцип работы того или иного VPN-на. 
Читать дальше →

Обзор наиболее интересных материалов по анализу данных и машинному обучению №25 (1 — 7 декабря 2014)

Reading time4 min
Views13K

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

Play! Lift! Srsly?

Reading time13 min
Views17K
Play! и Lift, — эти два фреймворка являются олицетворением того, куда движется основной поток Scala веб-разработчиков. Воистину, попробуйте поискать на Stack Overflow фреймворки для Scala и вы поймете что я прав. Я верю, что процент здравомыслящих людей, которым надоели сложные комбайны, велик, поэтому расскажу про «другой» фреймворк Xitrum.
Читать дальше →

Анализ рыночной корзины и ассоциативные правила

Reading time3 min
Views29K
В продолжении темы о Data Mining поговорим о том, с чего все начиналось. А начиналось все с анализа рыночной корзины (market basket analysis).

Из глоссария BaseGroup:

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

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

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

Парные товары. Размещения товаров в торговом зале

Reading time2 min
Views23K


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

Итак, Пары — это товары, часто покупаемые вместе. В паре один товар является ключевым (якорным), а второй — сопутствующим. On-line сервис Datawiz.io выявляет парные взаимосвязи товаров при помощи алгоритма APRIORI.
Читать дальше →

Data Mining в онлайн играх

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

Мы захотели узнать, почему уходят игроки и можно ли предсказать их уход. Предмет исследования – ММОРПГ Аион, однако наши результаты оказались применимы к широкому кругу игр и онлайн сервисов.
Заглянуть в будущее

Если Xerox PARC изобрела PC, то Google изобрел интернет

Level of difficultyEasy
Reading time8 min
Views73K

Джефф Дин и Санджай Гемават

Правда о Джеффе Дине всплыла 1 апреля 2007 года. На внутреннем ресурсе Google появился список забавных фактов о Дине, одном из первых и самых ценных сотрудников Google.

«Однажды Джефф Дин провалил тест Тьюринга. Он вычислил 203-е число Фибоначчи меньше чем за секунду.

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

Раньше скорость света в вакууме была всего 35 миль в час. Джефф Дин оптимизировал физику света за выходные».

Все эти факты были, конечно же, выдумкой. Но не такой уж далекой от правды. Их придумал Кентон Варда (другой сотрудник Google) по аналогии с фактами про Чака Норриса. Варда постарался остаться инкогнито, но Дин его все-таки вычислил.
Читать дальше →

This Is Russia

Reading time1 min
Views522
Команда уволенных талисманов олимпиады подрабатывает, снимаясь в рекламе, и представляет Россию такой, какой иностранцы её ещё не видели. Показывают, так сказать, всё что скрыто.

Трейдинговые системы для чайников

Reading time10 min
Views18K
В данной статье я попытаюсь рассказать некоторых идеях, лежащих в основе трейдинговых систем. Изложение будет максимально простым, по возможности без технических и экономических заумностей.
Далее...

Анализ хаков — 2

Reading time6 min
Views934
Понимая отрывочность сведений в предыдущем посте, решил нарыть сколько смогу инфы на представленные мной хаки.
Дополнения приветствуются, т.к. некоторые вещи пришлось домысливать почти без опоры на хоть какое либо объяснение.
Заранее прошу извинить за обилие ссылок — честно приводил все пруфлинки, к этим сайтам сам никакого отношения ни имею.
Читать дальше →

Сумма прописью на Java

Reading time11 min
Views15K
Здравствуйте.

Буду краток.
Понадобилось «по работе» выводить в отчетах сумму прописью. Проект на Java. Посмотрев что есть готового, как всегда, пришел в выводу что «своя рубашка ближе к телу». К тому же хотелось именно самому написать, набраться опыта, так как на Java перешел не так давно…

Матерые явисты уже давно нашли или сами решили подобную задачу, а начинающим, возможно, пригодится:

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity