Search
Write a publication
Pull to refresh
28
0
Олег @Voenniy

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

Send message

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

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


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

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

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

Простой парсинг сайтов с помощью SlimerJS

Reading time2 min
Views68K
В виду отсутствия хорошего материала по парсингу с помощью скриптового браузера SlimerJS и наличия свободного времени решил написать небольшую статью.


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

Задача коммуникации между вкладками и выявления активной вкладки

Reading time4 min
Views20K
Наглядный пример задачи — сайт vk.com. Каждый раз, когда вы воспроизводите музыку или видео в одной вкладке, в других вкладках воспроизведение останавливается. И если вы обратитесь в интернет за помощью в решении данной задачи, то наверняка найдете описание Storage Events или Page Visibility API или даже готовые решения, к примеру Visibility.js.

На хабре уже был обзор этих вещей, к примеру вот и ещё.



Я прошел по этому пути, но не одно из решений меня не устроило. Мне хотелось чего-нибудь простого, легковесного и не требующего глубокого изучения деталей.
Под катом обзор решения, которое я в итоге сам и написал. Спасибо phpdude за наводку

Пространства имен в PHP

Reading time9 min
Views52K
На хабре можно найти немало статей о пространствах имен в PHP, но мне помогла именно эта, и именно ей я хочу поделится. Наверняка найдутся те, кому этот перевод поможет.

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

Что такое пространства имен?


«Не забывайте обратный слеш, когда Вы храните имя пространства имен в виде строки!»

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

Видео докладов Badoo с конференции Highload 2014

Reading time2 min
Views20K
Осенью мы выступали с докладами на одной из лучших технических конференций Highload 2014 и сейчас с удовольствием делимся с вами видео докладов. Вы можете задавать вопросы в комменариях и наши спикеры и остальные эксперты обязательно на них ответят.

1. «Sharding — patterns & antipatterns».
Доклад Алексея Рыбака (Badoo) и Константина kostja Осипова (Mail.ru).



Еще 5 отличных докладов

Полностью своя кнопка «Выбрать файл»

Reading time4 min
Views34K
Изучая веб-программирование, я не нашел внятного решения проблемы оформления загрузки файла на сервер при помощи одной кастомной кнопки.

Предлагаю на суд сообщества свой велосипед. На написание данного текста вдохновил Способ №5 из материала Делаем красивый input[type=file] для адаптивного сайта… И да — все работает в IE, начиная с 9 версии.

Демо на dropbox:

Цель: создать свою кнопку/элемент управления по нажатию которой происходит загрузка файла на сервер (либо иные, предусмотренные разработчиком, файловые операции).
Инструменты: CSS, PHP, JavaScript.
Используемые технологии: Ajax, через скрытый iframe.
Читать дальше →

Установка, настройка и тестирование Fedora 21 Workstation на личном или игровом компьютере

Reading time37 min
Views205K
9-го декабря вышла новая Fedora 21 Workstation, которую по совокупности параметров можно назвать «самым свежим и стабильным» Линукс-десктопом.

За время использования и тестирования Fedora я проникся к этой платформе глубокой симпатией и хочу поделиться этим теплом и знаниями о ней с вами.

В течение года я наблюдал за её работой в качестве рабочего и игрового места в разных ситуациях — от станций с «умирающим» железом до нового игрового ноутбука Asus G750JM с Nvidia Optimus.

Собранные заметки получились несколько шершавыми, старающимися охватить одновременно и новичков в Линуксе, и опытных пользователей с разработчиками. Прошу простить. Хочу донести большой объем информации в одной статье: и по общей настройке и установке Федоры, и по технологии Nvidia Optimus на ноутбуках, wi-fi с проприетарными драйверами, о настройке симпатичных шрифтов в Java и IDE от JetBrains, запуску игр в Steam на дискретной видеокарте, о результатах сравнительного тестирования игр, графики и браузеров между Федорой и Windows 8.1, и даже об установлении одного «абсолютного» рекорда.

Хочу отметить, что свежие десктопные Линуксы также отличаются качественной поддержкой дисплеев высокого разрешения с хорошей отрисовкой шрифтов и оконных элементов, предоставляют высочайшую степень различных персональных настроек, «хаков» и возможностей оперирования с приложениями. Всё это позволяет не только значительно повысить эффективность своей работы, но и сделать это с комфортом для глаз.

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

Pebble: работа со статической графикой на примере создания 7-segment watchface

Reading time6 min
Views10K
Все приложения для часов Pebble делятся на две категории watchapp — просто приложения, и watchface — приложения «часы», которые исходя из названия являются лицом устройства. Отличие «фейсов» — отсутствие реакции на хардварные кнопки, так как «UP» и «DOWN» используются для циклического переключения между установленными watchface.
Но, наверное, в силу низкого разрешения экрана 144x168 px, найти органично вписывающийся в дизайн часов ватчфейс, который при этом выполняет основную свою функцию — отсчет времени, довольно непросто.
Как мне кажется лучше всего на таком экране смотрятся цифры в стиле семисегментных индикаторов.
Ниже, подробнее о том, как добавить в свой watchface элегантного минимализма, индивидуальности и уникальных фишек.
Итак, немного картинок, обрывков кода и в итоге ссылка на готовый проект.

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

CloudFlare + nginx = кешируем всё на бесплатном плане

Reading time2 min
Views58K

В бесплатной версии Cloudflare все замечательно (ей-богу сказка!), но список кешируемых форматов файлов весьма ограничен.
К счастью кеширование всего подряд (до 512 Мб на файл) можно настроить в одно два действия.

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

VPN в каждый дом

Reading time1 min
Views190K


Всем привет! Желание сделать VPN сервер максимально простым в установке и удобным в использовании назревало уже давно. За основу я взял L2TP/IPsec, эта технология нативно поддерживается всеми устройствами и в отличии от PPTP не вызывает проблем при подключении через сотовых операторов.

tl;dr
Для установки нам потребуется машинка с Ubuntu 14.04 на борту и «белым» IP-адресом, любой VPS подойдет. Достаточно ввести эту волшебную строчку:
 curl -sS https://raw.githubusercontent.com/sockeye44/instavpn/master/instavpn.sh | sudo bash 

и через несколько минут у вас будет рабочий VPN с управлением через браузер (httр://ip-address:8080/) или консоль (instavpn -h).
Читать дальше →

Inversion of Control: Методы реализации с примерами на PHP

Reading time8 min
Views52K
О боже, ещё один пост о Inversion of Control


Каждый более-менее опытный программист встречал в своей практике словосочетание Инверсия управления (Inversion of Control). Но зачастую не все до конца понимают, что оно значит, не говоря уже о том, как правильно это реализовать. Надеюсь, пост будет полезен тем, кто начинает знакомится с инверсией управления и несколько запутался.

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

Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket

Reading time3 min
Views28K

Сразу заинтригую: в результате мы получим связку бесплатного приватного git репозитория на Bitbucket и бесплатный* Continious Integration сервер (SAAS), который будет собирать проект и прогонять все тесты после каждого пуша.
* — бесплатная подписка дает возможность тестировать 5 приватных репозиториев и максимум 100 билдов в месяц.

Мне этого для личного проекта достаточно.

Приведу пример для PHP, проект на Symfony2, но данный сервис поддерживает ещё и Ruby, Node.js, Python.

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

Как использовать API сайта, у которого нет API?

Reading time4 min
Views81K
У меня достаточно часто появляется задача получить данные от стороннего сайта, при этом далеко не всегда этот сайт предоставляет возможность удобно получить эти данные через API. Единственное решение в таком случае — парсить html содержимое страниц. Когда-то я писал регэкспы, потом появились библиотеки, позволяющие получить нужное содержимое по css-селектору, а сейчас и это кажется сложной задачей, которую хотелось бы упростить.

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

Seagate Business Storage NAS 1-bay — хранение файлов и multimedia

Reading time9 min
Views23K
В сети можно найти множество обзоров NAS серверов, но большинство их них будет посвящено «настоящим» NAS’ам типа Synology, QNAP.
Только вот стоимость только устройства без жестких дисков — несколько сот баксов. Я прекрасно понимаю, что оно того стоит, но, поскольку мои требования исключительно скромны, я стал искать что-то небольшое. И вот тут оказалось, что устройства, представляющие из себя скорее внешний диск с функцией NAS обозреваются не так часто, как хотелось бы.

Поскольку я сам потратил много времени на поиски и понимание, подойдет ли мне то или иное устройство, я решил описать свой опыт с Seagate Business Storage NAS 1-bay.

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

Обзор нетбука MSI S12

Reading time19 min
Views107K
AMD A4-5000 / 11.6" / 1366x768 / глянец / 4Gb / 500Gb / Wi-Fi / Bluetooth / DOS / ~ 11-14 т.р.
MSI S12
Решил написать этот обзор, так как был заворожен этим нетбуком сразу, как только нашел его.

Набор моих обязательных требований к портативным компьютерам, как оказалось, был очень взыскателен:

  1. Матрица 11.6" – даже 13.3" мне уже многовато.
  2. Минимум 16Gb DDR3-3L 1600 (12800).
  3. Вес вместе с блоком питания до 1.5 кг. — это просто Must Have, так как это очень комфортно.
  4. 4 Core CPU, желательно AMD Kabini\Kaveri.
    Не то, чтобы я «не люблю» Intel Core i5-i7.
    Но для работы мне столько не нужно.
    Хотя, впрочем, да — я фанат AMD уже лет 15.
    Мне нравится Intel как инноватор.
    Но конкуренция должна быть свободной.
  5. Наличие Legacy режима работы BIOS.
    Не то, чтобы я «не люблю» Microsoft.
    Хотя, впрочем, да — у меня Linux, уже лет 10.
    Поэтому присутствие UEFI Secure Boot или других ограничений меня бы очень сильно расстроило.
    Мне всё таки работать нужно, а не разбираться почему оно тормозит\упало\ограничено и тому подобное.
  6. Нормальная графическая подсистема, так как на работе я подключаюсь к Full HD монитору. Соответственно и желание посмотреть что-нибудь в High Res тоже иногда возникает. Да и дома на телевизоре есть HDMI, которому иногда что-нибудь нужно показать.
  7. Полноценная клавиатура. Я давно не смотрю на клавиши. Но тот человек, который придумал в моём старом Acer избавить меня от полноценных стрелочек и клавиш Home, End, PgDn и PgUp — он явно желал сделать мне плохо. Больше НИКОГДА! Потому, что привыкнуть к этому убожеству за два года я так и не смог.


Мои ожидания от MSI S12 полностью оправдались, поэтому захотелось обязательно поделиться, вдруг кому-нибудь тоже пригодится. Под катом, конечно же, будут какие-то фотки, ролики YouTube, агитация, провокации и другие сведения о том, каким я вижу «правильный нетбук» и почему данный экземпляр — это именно «оно».

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

Разбираем антипиратский закон по косточкам

Reading time12 min
Views115K
1 августа вступил в действие закон, который лично я называю законом «Об интернете» (хотя, пожалуй, теперь его стоит называть законом «О борьбе с пиратством»). Хотел бы сразу признать свою ошибку, допущенную в прошлой моей статье. Тогда в самой статье я уверял читателей, что наиболее одиозные пункты закона скорее всего будут из него выкинуты, а в комментариях предпологал, что наладившийся контакт законодателей и IT сообщества позволит создать удовлетворяющий все стороны проект. Но я не учел влияния третьей силы, а именно государственной думы. Как многие уже слышали, вся суть «проблемы» заключается в том, что в итоге законопроект, разрабатываемый Министерством Культуры, так и остался законопроектом, а реальную силу обрела совсем иная инициатива: исходившая от депутатов Госдумы В.В. Бортко, Е.Г.Драпеко, М.П. Максаковой-Игенбергс, М.А. Кожевниковой, Л.Л. Левина и Р.А. Шлегеля. В итоге депутаты не только нашли способ представить свой вариант проекта в обход минкультуры (по идее такие отраслевые законы, как этот, должны подготавливаться министерствами, но оказалось, что возможно все, особенно когда это «возможно» основано на Конституции), но и представили внешне крайне жесткий вариант решения вопроса. По сути, перед нами совершенно иной закон, нежели тот, о котором я писал ранее. И по идее и по содержанию. Мало того, многие нормы, им регулируемые, оказались не совсем понятные для обычных граждан, а поэтому я вновь хочу попробовать закрыть этот пробел, а заодно и объяснить, что на самом деле все не так страшно, как кажется. Сразу предупреждаю, что на этот раз будет много текста, а поэтому тем, кто читать не любит, статью не рекомендую.
Читать дальше →

Поговорим про… фонарики?

Reading time5 min
Views371K
Приветствую, %username%!
Это небольшой ликбез на тему сегодняшнего состояния отрасли портативного освещения.
Disclaimer
К показанным фонарям и остальному железу я отношения не имею. Их рекламой данный пост не является.

Поехали, начнем с современных светодиодов
Читать дальше →

Как мы искали Марс-3

Reading time9 min
Views443K
Честное слово, это почти случайно получилось, что такая новость пришла к началу апреля и Дню космонавтики. Сегодня я расскажу о том, как история, которая началась и оборвалась более 40 лет назад, внезапно получила продолжение в наши дни. О том, как простой юзернейм вконтакта, в своем интересе к Марсу дошел до NASA. О том, что международная солидарность ученых — не пустой звук. И о том, что космос ближе, чем кажется.

Мы искали Марс-3.

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

О том, как мы это сделали, сегодняшний рассказ.


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

Об искусственном интеллекте в покере

Reading time8 min
Views53K


Покер давно привлекает исследователей самых различных мастей от любителей до серьезных ученых. И, не секрет, что столь пристальное внимание к покеру коррелирует с ростом популярности онлайн гэмблинга, который бурно развивался в 00-х годах. На сегодняшний день человек уже уступил лимитный хедс-ап Техасский Холдем машине, в то время как в безлимитных и многоместных покерных дисциплинах человек все еще берет верх. Наибольший вклад в проблему построения сильного компьютерного покерного интеллекта, вне всякого сомнения, внесла исследовательская группа из университета Альберты, а предложенное ими семейство алгоритмов поиска равновесных стратегий является на сегодняшний день самым модным и часто используемым средством при построении покерных агентов. Но обо всем по порядку.
Читать дальше →

Домашний минисервачок. Часть железная

Reading time4 min
Views26K
Один раз меня посетила идея собрать сервер для дома. Маленький тихий и быстрый. Но я как то быстро отошел от идеи — на самом первоночальном этапе — выборе корпуса с большим количеством отсеков для винтов. На этом мой пыл угас и я про все забыл. Но читая обзоры железа через какое то время — я наткнулся на обзоры корпусов фирмы Fractal — и после прочтения обзоров по ним я понял что осуществить первоначальную идею не так то и сложно. И так — я начал сборку своего домашнего минисервачка.

Начнем по порядку.

Выбор комплектующих.
После небольших раздумий и читаю сайт интела — я вспомнил что сталкивался с замечательной технологий Intel AMT. Суть технологии в том что с помощью vnc можно подрубится к удаленному компу на аппаратном уровне. В связи с этим накидал первоначальный конфиг:
Мать с поддержкой Intel vPro — ASUS P8Q67-M DO/TPM.
Проц — самый заряженный i5 Intel Core i5-3570 3,4 Ghz 6Mb кэш на LGA 1155. Куллер Scythe Kozuti либо Noctua NH-L9i. Как раз то что я искал — тихо и низко.
Опера DDR3 Kingston 1600 MHz (KVR16N11/8) 8Gb две штуки.
Блок питания с кабель менеджментом Chieftec APS-650C — последнее время очень нравиться продукция этой марки — отличное качество за приемлемые деньги.
Корпус Fractal Design Define R3, либо Fractal Design Define R4, либо Fractal Design Define Mini. Почему они? Они с шумоизоляцией, и вмещают 8 3,5 дисков(либо 6 если версия мини). Вообще склоняюсь к мини — в принципе даже 6*2 Тб более чем достаточно на будущее.
Винты — что нибудь зеленое (в рейд 5 в будущем) под файлы 3*2Тб для начала.
ОС на железо — XenServer.

И так это был первоначальный конфиг. К моменту покупки кое что поменялось — и в итоге я приобрел:
мать ASUS P8Q77-M2
проц i5 Intel Core i5-3570
опера Kingston 1600 MHz (KVR16N11/8) 8Gb две штуки
куллер Zalman CNPS8900 Quiet
блок питания Chieftec APS-650C
корпус Fractal Design Define Mini
винт был seagate на 200 гигов для начала.
Все железо обошлось мне примерно в 20000 рублей.
Сеть, RAID, телефония.

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

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

Information

Rating
8,443-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity