Search
Write a publication
Pull to refresh
24
0
ilnarb @ilnarb

User

Send message

Секреты Stack Overflow

Reading time5 min
Views68K
Приветствую, коллеги. За последние несколько лет Stack Overflow стал полезнейшим инструментом для разработчиков. Множество вопросов, заданных Гуглу и Яндексу, в первых же ссылках ведут на понятные и исчерпывающие ответы на этом ресурсе. Большинство разработчиков используют сайт Stack Overflow именно как базу знаний программистов, возможность быстро получить нужный ответ. Под катом я расскажу про несколько интересных кейсов подводной части айсберга: спрятанные ответы, награды, прокачивание кармы и многое другое, скрытое от поверхностного взгляда.

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

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time10 min
Views97K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

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

Centrifuge + Go = Centrifugo – harder, better, faster, stronger

Reading time10 min
Views28K


В сентябре прошлого года была опубликована последняя статья о Центрифуге — сервере с открытым исходным кодом для обмена сообщениями в режиме реального времени. Теперь в списке хабов, в которые публикуется этот пост, присутствует Go. И неспроста, как можно понять уже из заголовка, Центрифуга была портирована с Python на Go — так появилась Centrifugo. О причинах миграции, о плюсах и минусах Go, а также о том, как эволюционировал проект с момента предыдущей публикации – читайте под катом.
Читать дальше →

IPTV от МГТС: поиск каналов

Reading time4 min
Views137K
Write a paper, and give a talk, about any idea, no matter how insignificant it may seem to you.
S. P. Jones, How to write a great research paper

В Москве МГТС проводит мероприятия по замене медной проводки на оптику по технологии GPON. В результате абоненты МГТС получают возможность пользоваться не только телефонной связью, но и доступом в Интернет, а также смотреть IP-телевидение. Для просмотра программ ТВ МГТС предлагает арендовать приставку, которая и обеспечит просмотр.

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

Язык Go для начинающих

Reading time9 min
Views504K
Gopher

Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.
Читать дальше →

Миллиарды запросов в день встречают Go 1.5

Reading time3 min
Views26K
Перевод статьи о том, как компания перевела свою инфраструктуру на Go 1.5 и уменьшила паузы сборщика мусора с ~279мс до ~10мс.

Маркетинг системы, ориентированные на клиентов, зависят от сбора и анализа как можно большего количества связанных событий. Клиенты буквально везде, и количество данных растет экспоненциально. Язык Go играет важную роль в нашей системе сбора данных. Сегодня FLXone обрабатывает 3+ миллиарда запросов в день написанным с нуля нашим приложением.
Читать дальше →

Чему я научился, перестав работать с девяти до пяти

Reading time4 min
Views45K


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

Они хотели простой и предсказуемой жизни: приходить в офис к 9 утра, изображать бурную деятельность, не высовываться, и уходить домой в 5 вечера.

Через два поколения и несколько десятков лет многое изменилось. Я ненавижу всё простое и предсказуемое, не люблю офисы, не хочу «не высовываться» и обожаю выходить за рамки зоны комфорта.

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

В результате, появился новый класс работников: те, чьё положение и рабочее время ни от чего не зависят. Цифровые странники проводят время, путешествуя и работая – фрилансят на Бали, управляют бизнесом в Барселоне или работают на фирму из Сан-Франциско, находясь в Сингапуре. По всему миру нас таких тысячи, и я не представляю себе другой жизни.

Всё яснее становится тот факт, что время, проведённое в офисе и продуктивность не обязательно связаны друг с другом. Чего один работник может достичь за четыре часа, другой сможет только за восемь. Некоторые более эффективно работают утром, другие – вечером. Некоторым нравится работать в офисе, а другим – нет.
Читать дальше →

Кластеризация графов и поиск сообществ. Часть 1: введение, обзор инструментов и Волосяные Шары

Reading time10 min
Views49K
Привет, Хабр! В нашей работе часто возникает потребность в выделении сообществ (кластеров) разных объектов: пользователей, сайтов, продуктовых страниц интернет-магазинов. Польза от такой информации весьма многогранна – вот лишь несколько областей практического применения качественных кластеров:

  1. Выделение сегментов пользователей для проведения таргетированных рекламных кампаний.
  2. Использование кластеров в качестве предикторов («фичей») в персональных рекомендациях (в content-based методах или как дополнительная информация в коллаборативной фильтрации).
  3. Снижение размерности в любой задаче машинного обучения, где в качестве фичей выступают страницы или домены, посещенные пользователем.
  4. Сличение товарных URL между различными интернет-магазинами с целью выявления среди них групп, соответствующих одному и тому же товару.
  5. Компактная визуализация — человеку будет проще воспринимать структуру данных.

С точки зрения машинного обучения получение подобных связанных групп выглядит как типичная задача кластеризации. Однако не всегда нам бывают легко доступны фичи наблюдений, в пространстве которых можно было бы искать кластеры. Контентые или семантические фичи достаточно трудоемки в получении, как и интеграция разных источников данных, откуда эти фичи можно было бы достать. Зато у нас есть DMP под названием Facetz.DCA, где на поверхности лежат факты посещений пользователями страниц. Из них легко получить количество посещений сайтов, как каждого в отдельности, так и совместных посещений для каждой пары сайтов. Этой информации уже достаточно для построения графов веб-доменов или продуктовых страниц. Теперь задачу кластеризации можно сформулировать как задачу выделения сообществ в полученных графах.
Читать дальше →

Покупка оптимальной квартиры с R

Reading time12 min
Views62K
Многие люди сталкиваются с вопросом покупки или продажи недвижимости, и важный критерий здесь, как бы не купить дороже или не продать дешевле относительно других, сопоставимых вариантов. Простейший способ — сравнительный, ориентироваться на среднюю цену метра в конкретном месте и экспертно добавляя или снижая проценты от стоимости за достоинства и недостатки конкретной квартиры. image Но данный подход трудоемок, неточен и не позволит учесть все многообразие отличий квартир друг от друга. Поэтому я решил автоматизировать процесс выбора недвижимости, используя анализ данных путем предсказания «справедливой» цены. В данной публикации описаны основные этапы такого анализа, выбрана лучшая предиктивная модель из восемнадцати протестированных моделей на основании трех критериев качества, в итоге лучшие (недооцененные) квартиры сразу помечаются на карте, и все это используя одно web-приложение, созданное с помощью R.

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

Новый функционал Google Analytics: когортный анализ

Reading time5 min
Views13K
Эксперт по web-аналитике с мировым именем Авинаш Кошик сокрушается в своём блоге о том, что правило 80/20 срабатывает, увы, и для аналитики. 80% пользователей используют лишь 20% доступных инструментов. А задумывались ли вы о том, что, пожалуй, самая мощная система web-аналитики доступна абсолютно бесплатно? Более того, вместе с ней доступна масса экспертизы на русском и английском языках, которая поможет освоиться с инструментом и создать аналитическую систему, «заточенную» именно под ваш бизнес.  Работа с аналитикой — одно из ключевых направлений деятельности в компании. Важно правильно поставить вопрос, своевременно увидеть признаки проблемы, собрать максимум информации и только потом принимать решение на основе анализа. Даже, если проблем нет и вы рады динамике абсолютно всех показателей, не стоит останавливаться — нужно узнать о причинах успеха, чтобы закрепить его.

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

Trust Hacking: 6 способов сразу вызвать доверие и продать больше

Reading time12 min
Views33K
Хотите, чтобы у вас покупали больше и чаще? Мы в Alconost перевели чудесный материал о том, как быстро завоевать доверие клиента. Все, что вам для этого понадобится — качественный продукт. Читайте, применяйте, продавайте!



Мы приобретаем товары только у людей и компаний, которым доверяем. В современном перенасыщенном маркетингом мире люди испытывают тревогу и почти животный страх перед продажами. Добейтесь доверия, и вы сможете продавать пресловутый снег эскимосам. Потеряйте доверие — и даже жаждущий в пустыне не купит у вас воду.

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

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

Это — игра на доверии.

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

Приступим.
Читать дальше →

Эффективная работа с SQLite на примере ICQ

Reading time9 min
Views29K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

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

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

Ретроспектива: как и зачем ее проводить?

Reading time6 min
Views254K


Проведение ретроспектив – это активность, которую каждая agile-команда проводит для того, чтобы решать свои проблемы. Что такое ретроспектива? Это регулярная встреча, на которой команда обсуждает свой рабочий процесс и что-то в нем меняет.

Зачем нужна ретроспектива?


Это не праздный вопрос, его часто задают начальники, когда им предлагают провести ретроспективу. Они спрашивают: «Зачем? Мы можем сами все решить». Почему же нельзя сделать так, чтобы какой-то начальник или эксперт пришел, посмотрел и сказал, что команде надо делать, а что в рабочем процессе стоит изменить?
Читать дальше →

Рейтинг Mail.Ru запустил проверку сайтов на вирусы

Reading time3 min
Views17K


Содержательная часть поста очень короткая и почти совпадает с заголовком: да, действительно, с недавнего времени Рейтинг Mail.Ru проверяет установившие счетчик сайты на вирусы и при возникновении подозрений предупреждает письмом веб-мастера. Свой антивирус мы не писали, а использовали технологию наших партнеров. Но кроме этого краткого анонса, есть ещё два интересных вопроса, которые хотелось бы осветить чуть подробнее. Это вопросы «зачем?» и «как?».
Читать дальше →

Собираем базу людей из открытых данных WhatsApp и VK

Reading time15 min
Views220K
Etan Hunt
кадр из фильма Миссия Невыполнима II

Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.

Первый успех


Было решено попробовать следующий вариант:
  • Добавить неизвестный номер в адресную книгу телефона;
  • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
  • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.

Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
Далее перебор аккаунтов WhatsApp и VK по Москве и Ненецкому АО и распознание лиц

История роутинга в проекте MAPS.ME

Reading time5 min
Views18K


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

Вайфай мне в розетку: прокидываем интернет нестандартным путём

Reading time4 min
Views98K
Привет, Geektimes! Сегодня я хочу рассказать об одной штуковине, которая меня здорово выручила и помогла «починить» беспроводную сеть дома у родителей.

image

Картинка из комментариев к посту apcsb на Хабре про неочевидные нюансы WiFi

Началось всё с того, что один из провайдеров подключил очень-очень много квартир в доме и каждому повесил WiFi роутер в прихожей, вне зависимости от того, нужен он там или нет. Просто всем по сплиттеру оптики в витую пару, роутеру и выкидышу на телефонную розетку, пользуйтесь. В результате 2.4 ГГц диапазон оказался загажен настолько, что о 40 МГц полосе и думать не приходилось…
Читать дальше →

Тестирование светодиодных ламп IKEA

Reading time5 min
Views75K
Хорошие светодиодные лампы пока достаточно дороги, а из-за изменения курсов валют они стали ещё дороже.
Одни из самых низких цен на светодиодные лампы сейчас в магазинах IKEA.
Я протестировал 11 актуальных светодиодных ламп LEDARE, стоящих от 169 до 599 рублей.



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

Механизмы профилирования Linux

Reading time9 min
Views40K


Последние пару лет я пишу под ядро Linux и часто вижу, как люди страдают от незнания давнишних, общепринятых и (почти) удобных инструментов. Например, как-то раз мы отлаживали сеть на очередной реинкарнации нашего прибора и пытались понять, что за чудеса происходят с обработкой пакетов. Первым нашим позывом было открыть исходники ядра и вставить в нужные места printk, собрать логи, обработать их каким-нибудь питоном и потом долго думать. Но не зря я читал lwn.net. Я вспомнил, что в ядре есть готовые и прекрасно работающие механизмы трассировки и профилирования ядра: те базовые механизмы, с помощью которых вы сможете собирать какие-то показания из ядра, а затем анализировать их.
Читать дальше →

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time8 min
Views88K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity