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

User

Send message

Как за вами следят, пока вы ходите по торговому центру

Reading time3 min
Views26K
Ранее я уже публиковал статью о системах подсчета посетителей. Теперь же хочу рассказать о системе, которая позволяет посчитать:
  • Сколько людей прошло мимо, так и не зайдя в магазин;
  • Сколько зашло повторно;
  • Сколько в среднем покупатель проводит времени в магазине и не только…


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

NGINX — История перерождения под Windows

Reading time6 min
Views44K
Раз уж тут у нас «неделя» nginx, например тут или тут, то попробую и я внести свою, так сказать, лепту. Речь пойдет про nginx 4 windows, а именно про более-менее официальную сборку для этой пропритарной, некоторыми не очень любимой платформы.

Почему Windows. Все просто, в корпоративном секторе Windows на сервере, да и на рабочих станциях — нередко обязательная программа. И от этих требований к платформе, например в ультимативной форме озвученных клиентом, никуда не денешься.
И раз уж имеем Windows, но не хочется мучиться с IIS, apache и иже с ними, если хочется использовать любимые инструменты, а nginx однозначно к ним относится, то приходится иногда мириться даже с некоторыми ограничениями на этой платформе. Вернее приходилось…

Хотя нужно заметить, что даже с этими ограничениями, nginx даст фору практически любому веб-серверу под windows по многим факторам, в том числе по стабильности, потреблению памяти, а главное производительности.

Спешу сразу поделится хорошей новостью — больше ограничений, критичных к высокой производительности, при использовании nginx под windows практически не существует, и последнее из критичных, с высокой долей вероятности, тоже скоро отпадет. Но по порядку…

Здесь описаны известные проблемы nginx 4 windows, а именно:

  • Рабочий процесс может обслуживать не более 1024 одновременных соединений.
  • Кэш и другие модули, требующие поддержки разделяемой памяти, не работают под Windows Vista и более поздними версиями в связи с тем, что на этих версиях Windows включена рандомизация адресного пространства.
  • Хоть и возможен запуск нескольких рабочих процессов, только один из них реально работает.

Я немного изменил порядок, т.к. именно в такой последовательности я разбирался с этими ограничениями, так сказать отсортировано «исторически».
Читать дальше →

Забудьте САР теорему как более не актуальную

Reading time12 min
Views70K
или «Прекратите характеризовать хранилища данных как CP или AP»

capДжеф Ходжес в своем прекрасном посте «Заметки о распределенных системах для новичков» рекомендует использовать САР теорему для критики найденных решений. Многие, похоже, восприняли этот совет слишком близко к сердцу, описывая свои системы как «СР» (согласованность данных, но без постоянной доступности при сетевой распределенности), «АР» (доступность без согласованного состояния при сетевой распределенности), или иногда «СА» (означает «Я всё ещё не читал статью Коды (Coda Hale) почти 5-летней давности»).

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

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

САР использует слишком узкое определение


Если вы хотите ссылаться на САР как на теорему (а не на расплывчатый концепт в маркетинговых материалах к вашей базе данных), вы должны быть точны. Математика требует точности. Доказательство сохраняется только если вы вкладывается в слова, то же самое значение, что было использовано при доказательстве. И оно опирается на очень точные определения:
Еще 3000 слов увлекательного чтива

Релиз NGINX 1.8 и 1.9

Reading time2 min
Views24K
С радостью объявляем о выходе новых релизов NGINX 1.8 стабильной (stable) ветки и NGINX 1.9 основной (mainline) ветки, в рамках которой будет продолжаться разработка новой функциональности. Новые ветки релизов заменяют 1.6 и 1.7 соответственно.

За последний год в 1.7 было выпущено 12 версий, и все новые возможности, которые в них появились, теперь доступны в 1.8, включая:

  • Проверку SSL сертификатов бэкендов — Призвана защитить соединения с upstream-серверами от MITM-атак;
  • Логирование в syslog — Позволяет передавать логи по сети посредством UDP-сообщений;
  • Пулы потоков для выполнения блокирующих операций ввода-вывода — Увеличивают производительность NGINX в ситуациях, когда блокировка на чтении с диска неизбежна;
  • Новый метод балансировки нагрузки “hash” — Позволяет выбирать сервер из группы базируясь на хэше от произвольной переменной;
  • Небуферизированный прием тела запроса — Позволяет передавать запрос на бэкенд сразу, не дожидаясь окончания приема тела запроса целиком.

Полный список нововведений за последний год можно посмотреть в логе изменений для 1.8.
Читать дальше →

Tarantool 1.6 — давай начнем

Reading time5 min
Views38K
Не так давно на Хабре была опубликована статья о NoSQL базе — «Tarantool 1.6 от первого лица». Уверен, в своих кругах эта база данных отлично известна и уже завоёвывает популярность. Уверен так же и в том, что есть те начинающие, руки не дошли, кто хотел бы попробовать Tarantool в действии. Именно для таких желающих я приведу несколько простых примеров, помогающих начать знакомиться с этим интересным продуктом. Как понятно из названия статьи — речь идет о версии Tarantool 1.6.
Читать дальше →

Самые надежные SSD: результаты эксперимента продолжительностью в полтора года

Reading time3 min
Views134K


Современные SSD-накопители достаточно надежные, а с учетом того, что цена за 1 ГБ (в долларах) постепенно падает, то использовать SSD во многих случаях даже более рационально, чем работа с HDD. Но какой SSD выбрать?

Полтора года назад журналист Tech Report решил провести эксперимент по выявлению наиболее надежных SSD. Он взял шесть моделей накопителей: Corsair Neutron GTX, Intel 335 Series, Kingston HyperX 3K, Samsung 840, Samsung 840 Pro, и поставил все шесть на цикличный процесс чтения/записи. Объем памяти каждого накопителя составлял 240-256 ГБ, в зависимости от модели.
Читать дальше →

Lock-free структуры данных. Concurrent maps: деревья

Reading time8 min
Views24K
Это последняя, на сегодняшний день, статья из цикла про внутреннее устройство конкурентных ассоциативных контейнеров. В предыдущих статьях рассматривались hash map, был построен алгоритм lock-free ordered list и контейнеры на его основе. За бортом остался один важный тип структур данных — деревья. Пришло время немного рассказать и о них.

Исследования, посвященные алгоритмам конкурентных деревьев, не требующих внешней синхронизации доступа к ним, начались довольно давно — в 70-х годах прошлого века, — и были инициированы развитием СУБД, поэтому касались в основном оптимизации страничных деревьев (B-tree и его модификации).

Развитие lock-free подхода в начале 2000-х не прошло мимо алгоритмов деревьев, но лишь недавно, в 2010-х годах, появилось множество действительно интересных работ по конкурентным деревьям. Алгоритмы деревьев довольно сложны, поэтому исследователям потребовалось время — порядка 10 лет — на их lock-free/non-blocking адаптацию. В данной статье мы рассмотрим самый простой случай — обычное бинарное дерево, даже не самобалансирующееся.
Читать дальше →

Как правильно лгать с помощью статистики

Reading time7 min
Views242K

Существуют три вида лжи: ложь, наглая ложь и статистика (источник)

Есть такой замечательный жанр — "вредные советы", в котором детям дают советы, а дети, как известно, всё делают наоборот и получается всё как раз правильно. Может быть и со всем остальным так получится?

Статистика, инфографика, big data, анализ данных и data science — этим сейчас кто только не занят. Все знают как правильно всем этим заниматься, осталось только кому-то написать как НЕ нужно этого делать. В данной статье мы именно этим и займемся.


Hazen Robert "Curve fitting". 1978, Science.

Структура статьи:
  1. Введение
  2. Предвзятая выборка (Sampling bias)
  3. Правильно выбираем среднее (Well-chosen average)
  4. И еще 10 неудачных экспериментов, про которые мы не написали
  5. Играем со шкалой
  6. Выбираем 100%
  7. Скрываем нужные числа
  8. Визуальная метафора
  9. Пример качественной визуализации
  10. Заключение и дальнейшее чтение

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

Tarantool 1.6 от первого лица

Reading time3 min
Views53K
Привет. Это пост о новой версии Тарантула «от автора». Интернет занятно устроен: если поискать про Тарантул, то найдётся статья от 2011 года, о версии 1.3. И ещё какой-то перфоратор, кажется. На форумах-бордах вообще стоит густой туман. Тарантул «ну это как Редис, только»…

Или ещё, недавно сделал для себя открытие, на Тостере кто-то написал «София — это такое append-only хранилище по типу Тарантула». С такими постами я скоро стану фанатом сайта «сделано у нас», автомата Калашникова и Саяно-Шушенской ГЭС. Правда, мне сложно понять, почему мы восхищаемся западными инструментами, при этом представления не имеем о своих. Итак, Tarantool 1.6. В чём фишка?
Читать дальше →

Как и зачем мы делаем TLS в Яндексе

Reading time16 min
Views90K
Я занимаюсь в Яндексе продуктовой безопасностью и, кажется, сейчас самое время подробнее, чем уже было на YaC, рассказать на Хабре о том, как мы внедряем TLS.

Использование HTTPS-соединений является важной частью безопасного веб-сервиса, так как именно HTTPS обеспечивает конфиденциальность и целостность данных на этапе передачи их между клиентом и сервисом. Мы постепенно переводим все наши сервисы только на HTTPS-соединение. Многие из них уже работают исключительно по нему: Паспорт, Почта, Директ, Метрика, Такси, Яндекс.Деньги, а также все формы обратной связи, имеющие дело с персональными данными пользователей. Яндекс.Почта уже больше года даже обменивается данными с другими почтовыми сервисами по SSL/TLS, поддерживающими это.



Все мы знаем, что HTTPS — это HTTP, завернутый в TLS. Почему TLS, а не SSL? Потому что принципиально TLS — это более новый SSL, при этом название нового протокола наиболее точно характеризует его назначение. А в свете уязвимости POODLE можно официально считать, что SSL больше использовать нельзя.
Читать дальше →

Городские легенды о медленных вызовах виртуальных функций

Reading time7 min
Views31K
Традиционно компиляторы реализуют вызовы виртуальных функций через двойную косвенную адресацию — если класс содержит хотя бы одну виртуальную функцию, то в начале каждого объекта этого класса хранится адрес таблицы виртуальных функций. Если компилятор не знает конкретный тип объекта, на который указывает указатель, то для вызова виртуальной функции нужно сначала взять указатель на объект, прочитать адрес начала таблицы, затем по номеру метода прочитать адрес, где хранится реализация функции, затем вызвать функцию.

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

В тексте выше ключевое слово «если». Что, если компилятор знает, какую функцию на самом деле надо вызывать?
Читать дальше →

Как организовать отправку push-уведомлений на айфон

Reading time5 min
Views21K
В Surfingbird мы используем пуш-уведомления, чтобы сообщать нашим пользователям срочные новости и просто информировать их об интересных материалах за день. Уже в первые недели тестов пуши показали свою огромную эффективность в плане увлечения ретеншена. Этому есть логичное объяснение – телефон у пользователя всегда с собой, в метро, в туалете, на совещаниях и т. д. Когда юзеру приходит пуш, все его внимание концентрируется на этом уведомлении.

Мы реализовали отправку пуш-уведомлений с бекенда на языке программирования Perl. Однако, когда мы только начали внедрять пуши, то столкнулись с некоторыми трудностями. О трудностях и их преодолении мы и хотим рассказать в этом посте.

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

Как узнать больше о ваших пользователях? Применение Data Mining в Рейтинге Mail.Ru

Reading time8 min
Views20K


Любой интернет-проект можно сделать лучше. Реализовать новые фичи, добавить серверов, переделать интерфейс или выпустить новую версию API. Вашим пользователям это понравится. Или нет? И вообще, что это за люди? Молодые или в возрасте? Обеспеченные или скорее наоборот? Из Москвы? Питера? Сан-Франциско, штат Калифорния? И почему, в конце концов, те сто теплых пледов, что вы закупили еще в мае, пылятся на складе, а футболки с октокотами расходятся, как горячие пирожки? Получить ответы поможет проект Рейтинг Mail.Ru. Эта статья о том, как мы применяем data mining, чтобы ответить на самые сложные вопросы.
Читать дальше →

Как основатели Google «обманули» интернет-провайдера

Reading time2 min
Views252K
В 2000 году у компании Google были дата-центры только на западном побережье США, а компания хотела расшириться и открыть дата-центр на восточном побережье. Возникла проблема, как перенести огромную базу данных с одного дата-центра в другой. Поисковый индекс как раз превысил 1 млрд страниц и содержал десятки терабайт данных.

В то время бизнес ещё не давал сумасшедших денег, и основатели компании Ларри Пейдж и Сергей Брин старались экономить, как могли. Они посчитали, что передача данных на скорости 1 Гбит/с займёт несколько суток, а за трафик придётся заплатить $250 тыс.
Читать дальше →

Офис компании Badoo

Reading time5 min
Views219K
Продолжаем путешествовать по офисам крупных компаний, зарегистрированных на «Хабрахабре». Недавно мы заехали в гости в московский офис Badoo — если кто не в курсе, это одна из самых крупных социальных сетей для знакомств, а вместе с этим — одна из самых успешных IT-компаний в Европе.



Заходите под кат, познакомимся.
Читать дальше →

Веб-аналитика от Авинаш Кошик

Reading time1 min
Views4K
Авинаш Кошик

Это Авинаш Кошик — автор популярного блога Occam's Razor, независимый консультант и анатилический апостол Google. Авинаш — частый гость и докладчик на таких конференциях, как Emetrics Summits (международная конференция по веб-аналитике) которая проходит с 2002 года и Ad:Tech, кроме того, его постоянно цитируют в СМИ как эксперта по веб-аналитике. Видео с ним публикуется на официальном блоге Google Analytics.

Многие думают, что они занимаются веб-аналитикой, но смотреть отчеты в Google Analytics — это не аналитика. Это отчет или доклад, называйте как хотите, но это не аналитика! Количество просмотров на человека — не показатель. Например большое количество просмотров на сайте может означать, вовсе не заинтересованность посетителя в контенте на сайте, а говорит о плохом юзабилити и посетитель попросту не может найти нужную информацию.

Авинаш на своем блоге рассказывает как отделить зерна от плёвел в огромном количестве данных получаемых системами вроде Google Analytics. А вот здесь публикуется перевод его уроков.

Если вы хотите создавать успешные веб-проекты, то правильная веб-аналитика вам просто необходима.

Исследование факторов ранжирования в Яндексе

Reading time1 min
Views3.7K
Несколько десятков специалистов по поисковой оптимизации поучаствовали (своими ответами) в исследовании факторов ранжирования в Яндексе. Результаты вы можете лицезреть ниже на скриншотах или же на сайте топэксперт.рф вместе с комментариями и пояснениями. Думаю, что шпаргалка пригодится не только оптимизаторам, но и всем вебмастерам.

Начнем с внешних факторов. Критерии выбора внешних ссылок:



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

Ваш первый бюджетный Android планшет

Reading time4 min
Views20K


 Всем привет. Расскажу я вам об одном китайском планшете, владельцем которого являюсь уже порядка трех месяцев. Имя производителя, а так же название модели разнятся в китайских интернет-магазинах, где данный девайс продается. Мы можем увидеть его под такими именами, как Dropad A8, Herotab C8, или же для российских пользователей как RoverPad Air S70.

Давайте познакомимся

Как решать проблемы пользователей не за сутки, а за минуты: ускоряем поиск по логам

Reading time6 min
Views29K
Мы в Почте Mail.Ru постоянно сталкиваемся с необходимостью работать с историей пользователей. Учитывая, что ежемесячная аудитория проекта составляет более 40 миллионов человек, история всех их действий – это порядка петабайта данных. Потребность в поиске по логам у нас возникает сотни раз в день, а на получение нужной информации в среднем уходило несколько часов. При этом, по нашим предположениям, извлечение информации из логов можно было ускорить до нескольких секунд.

Чтобы оценить целесообразность разработки системы для оптимизации поиска по логам, мы воспользовались вот этой таблицей с XKCD:



(на самом деле нет, но нам она все равно нравится).

Итак, мы всерьез взялись за оптимизацию. Итогом нашей работы стала разработка системы, благодаря которой мы можем поднять историю действий примерно в 100 000 (сто тысяч, это не опечатка) раз быстрее. Мы разработали big-data сервис, который позволяет хранить петабайты информации в структурированном виде: каждому ключу у нас соответствует лог каких-то событий. Хранилище устроено так, что оно способно работать и на самых дешевых SATA-дисках, и на больших многодисковых хранилищах с минимальным количеством процессорного времени, при этом оно полностью fault-толерантно — если вдруг какая-то машина выйдет из строя, это ни на что не влияет. Если в системе заканчивается место, в нее просто добавляется сервер или несколько: система автоматически увидит их и начнет записывать данные. Чтение данных происходит почти моментально.
Читать дальше →

Практическое руководство по Unicode'изации

Reading time16 min
Views28K


Мы, наконец, это сделали! Долгое время позорное наследие CP1251 раздражало разработчиков, наводило на мысли о том, что, как же так? Эпоха Unicode уже давно наступила, а мы все еще используем однобайтовую кодировку и расставляем в разных местах костыли для совместимости с внешними системами. Но причина тому была достаточно рациональная: перевести на Unicode большой проект, в который развился Мой Мир, очень трудоемко. Мы оценивали это в полгода и не были готовы тратить столько ресурсов на фичу, которая не принесет русскоязычной аудитории существенной пользы.

Но история вносит свои коррективы, зачастую весьма неожиданные. Не секрет, что в Казахстане весьма популярен проект Мой Мир, который является самой популярной социальной сетью в этой стране. И нам всегда хотелось, чтобы у наших казахских пользователей появилась возможность использовать символы казахского алфавита из расширенного кириллического набора, которым, к сожалению, не нашлось места в CP1251. И дополнительным стимулом для нас, позволившим, наконец, оправдать длительную разработку, стал дальнейший рост популярности проекта за пределами нашей страны. Мы поняли, что пора делать шаг навстречу зарубежным пользователям.

Разумеется, первое, что было необходимо для интернационализации проекта, это начать принимать, передавать, обрабатывать и хранить данные в UTF-8. Процедура эта для большого проекта непростая и длительная, по пути нам пришлось решить несколько достаточно интересных задач, про которые мы постараемся рассказать.
Читать дальше →

Information

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