• epoll и Windows IO Completion Ports: практическая разница

      Введение


      В этой статье мы попробуем разобраться чем на практике отличается механизм epoll от портов завершения (Windows I/O Completion Port или IOCP). Это может быть интересно системным архитекторам, проектирующим высокопроизводительные сетевые сервисы или программистам, портирующим сетевой код с Windows на Linux или наоборот.

      Обе эти технологии весьма эффективны для обработки большого количества сетевых соединений.

      Они отличаются от других методов по следующим пунктам:

      • Нет ограничений (кроме общих ресурсов системы) на общее количество наблюдаемых дескрипторов и типов событий
      • Масштабирование работает достаточно хорошо — если вы уже мониторите N дескрипторов, то переход к мониторингу N + 1 займёт очень мало времени и ресурсов
      • Достаточно легко задействовать пул потоков для параллельной обработки происходящих событий
      • Нет никакого смысла использовать при единичных сетевых соединениях. Все преимущества начинают проявляться при 1000+ соединений

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

      (Upd: данная статья — перевод)

      Читать дальше →
    • Мой любимый файл в кодовой базе Chromium

        Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

        О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
        Читать дальше →
      • В тени Большого Космоса

          Широко известно, что запуск первого спутника Советским Союзом стал большим сюрпризом для всего мира. И если на орбите сделанный человеком объект оказался впервые, то в космическом пространстве уже бывали различные аппараты. Геофизические ракеты не получили такой же славы, как космические, но именно они подготовили инженеров и ученых к орбитальным запускам. После 4 октября 1957 суборбитальные полеты не прекратились — геофизические ракеты запускали в тени орбитальных полетов. А сейчас вообще можно сказать, что мы наблюдаем ренессанс геофизических ракет — частные компании делают не только орбитальные, но и суборбитальные ракеты и вполне успешно находят коммерческих заказчиков на запуски.


          Советские геофизические ракеты Р-2А и Р-5А
          Читать дальше →
        • Параллелизм в PostgreSQL: не сферический, не конь, не в вакууме



            Масштабирование СУБД – это непрерывно наступающее будущее. СУБД совершенствуются и лучше масштабируются на аппаратных платформах, а сами аппаратные платформы наращивают производительность, число ядер, памяти — Ахиллес догоняет черепаху, но все еще не догнал. Проблема масштабирования СУБД стоит во весь рост.

            Компании Postgres Professional с проблемой масштабирования довелось столкнуться не только теоретически, но и практически: у своих заказчиков. И не раз. Об одном из таких случаев и пойдёт речь в этой статье.

            PostgreSQL неплохо масштабируется на NUMA-системах, если это одна материнская плата с несколькими процессорами и несколькими шинами данных. О некоторых оптимизациях можно почитать здесь и здесь. Однако есть и другой класс систем, у них несколько материнских плат, обмен данными между которыми осуществляется с помощью интерконнекта, при этом на них работает один экземпляр ОС и для пользователя такая конструкция выглядит как единая машина. И хотя формально такие системы можно также отнести к NUMA, но по своей сути они ближе к суперкомпьютерам, т.к. доступ к локальной памяти узла и доступ к памяти соседнего узла отличаются радикально. В сообществе PostgreSQL считают, что единственный экземпляр Postgres, работающий на таких архитектурах, это источник проблем, и системного подхода к их решению пока нет.
            Читать дальше →
          • Анализ графиков бинарных опционов или как я в очередной раз доказал себе, что халявы не существует



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


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

            Читать дальше →
          • Как мы стали делать офигенно длинные собрания, и почему это больше не вселенское зло


              Наш идеал почти 9 лет был такой: собрание стоя, 15 минут максимум, минимум людей. И лучше вообще в коридоре. Не можешь решить за 15 минут — значит, что-то пошло не так. Звучит круто, правда?

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

              Механика, которую нам предложили — это совещание по специальному протоколу. Оно занимает невероятно дохрена времени (4 часа на вопрос, где ушло бы наши 15 минут), навевает скуку и тоску, но если проходить по этапам, появляется ощущение, что решение всё же есть. И его можно реализовать. И оно, скорее всего, получится очень качественное: будет учитывать больше нюансов, будет поддержано теми, кому его исполнять. А это существенно сокращает срок внедрения.

              Лучше пару часов потерпеть, но потом внедрить на месяц быстрее.
              Читать дальше →
            • Удалёнка, беспощадная ты мука

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

              Я никогда так не думал. Я любил офис и эту спокойную сосредоточенность рабочего места. Думал, никогда со мной не случится. Но удалёнка случилась. Уже два года. И я пишу сюда, на любимый Хабр, свой очень субъективный пост — просто, чтобы была вторая сторона этой, как оказалось, тянущей шею медали.


              Adme.ru
              Читать дальше →
            • Почему процессоры Skylake иногда работают в 2 раза медленнее

              • Перевод
              Мне сообщили, что на новых компьютерах некоторые регрессиионные тесты стали медленнее. Обычное дело, такое бывает. Неправильная конфигурация где-то в Windows или не самые оптимальные значения в BIOS. Но в этот раз нам никак не удавалось найти ту самую «сбитую» настройку. Поскольку изменение значительное: 9 против 19 секунд (на графике синий — это старое железо, а оранжевый — новое), то пришлось копать глубже.


              Читать дальше →
            • «20 тысяч IOPS на узел — хорошие показатели с учётом задержек в 5 мс». Для OLTP — нет

                КДПВ


                Поводом написать эту статью стал весьма достойный обзор Как мы тестировали VMware vSAN... компании КРОК. Обзор-то достойный, но в нем есть фраза, с которой я борюсь уже больше десятка лет. Админы СХД, виртуализаторы и интеграторы раз за разом повторяют: "Задержки в 5 мс — это отличный показатель". Даже цифра в 5 мс десять лет не меняется. Я это слышал вживую от весьма уважаемых админов уже не меньше десятка раз. От менее уважаемых — десятки, а уж сколько раз читал в интернете… Нет, нет, нет. Для OLTP нагрузок 5 мс, особенно так, как их обычно измеряют — это epic fail. Мне приходилось объяснять причины этого уже много раз, на этот раз я решил собрать свои мысли в переиспользуемую форму.


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

                Читать дальше →
              • Какие метрики Google Analytics провоцируют неверные решения

                • Tutorial
                Google Analytics и Яндекс.Метрика — большие системы. Их интерфейсы изменяются медленно. И за время работы систем аналитики накопились инструменты, которыми сейчас пользоваться нельзя. Команда rick.ai коллекционирует ошибки аналитики и рассказывает, как легко настроить аналитику против себя.

                Почему круговую диаграмму «Новые и вернувшиеся» интерпретируют неправильно?


                Команды оценивают долю вернувшихся пользователей по диаграмме «Новые и вернувшиеся». Если вернувшихся пользователей много, не нужно усиливать или запускать ремаркетинг и ретаргетинг, оптимизировать email-рассылки.
                Читать дальше →
              • Никто и не заметил, как вышел MySQL 8.0

                  Неожиданно для себя обнаружил, что mysql вдруг релизнулся буквально на днях (19 апреля), а статьи на хабре нет — все обсуждают сами-знаете-что.


                  Постараюсь перевести выжимку из "What's new". Для тех, кто следит за разработкой, тут вероятно не будет ничего или почти ничего нового, для интересующихся время от времени — может показаться интересным. Сразу скажу, что в оригинальном посте более детальный
                  разбор всех пунктов — тут лишь краткая выжимка со ссылочками.


                  Оригинал

                  Читать дальше →
                • Знакомство с гео-библиотекой S2 от Google и примеры использования

                    Привет, Хабр!

                    Меня зовут Марко, я работаю в Badoo в команде «Платформа». Не так давно на GopherCon Russia 2018 я рассказывал, как работать с координатами. Для тех, кто не любит смотреть видео (и всех интересующихся, конечно), публикую текстовый вариант своего доклада.



                    Введение


                    Сейчас у большинства людей в мире есть смартфон с постоянным доступом в Интернет. Если говорить в цифрах, то в 2018 году смартфон будет у почти 5 млрд людей, и 60% из них пользуются мобильным Интернетом.

                    Это огромные числа. Компаниям получать координаты пользователей стало легко и просто. Эти лёгкость и доступность породили (и продолжают порождать) огромное количество сервисов, основанных на координатах.

                    Всем нам известны компании типа Uber, игры, покорившие мир, такие как Ingress и Pokemon Go. Да что уж там, в любом банковском приложении есть возможность увидеть банкоматы или скидки поблизости.

                    Мы в Badoo также очень активно используем координаты, чтобы предоставлять своим пользователям лучший, актуальный и интересный для них сервис. Но о каком именно использовании идёт речь? Давайте посмотрим на примеры сервисов, которые у нас есть.
                    Читать дальше →
                  • Проблемы при работе с кэшем и способы их решения

                      Привет, Хабр!

                      Меня зовут Виктор Пряжников, я работаю в SRV-команде Badoo. Наша команда занимается разработкой и поддержкой внутреннего API для наших клиентов со стороны сервера, и кэширование данных — это то, с чем мы сталкиваемся каждый день.

                      Существует мнение, что в программировании есть только две по-настоящему сложные задачи: придумывание названий и инвалидация кэша. Я не буду спорить с тем, что инвалидация — это сложно, но мне кажется, что кэширование — довольно хитрая вещь даже без учёта инвалидации. Есть много вещей, о которых следует подумать, прежде чем начинать использовать кэш. В этой статье я попробую сформулировать некоторые проблемы, с которыми можно столкнуться при работе с кэшем в большой системе.


                      Wild horses stampeding. Оригинал картинки.

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

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

                      • Перевод
                      Недавно я проходил собеседования в игровых студиях на младшего программиста графики. По итогу я узнал, каких навыков они ожидают от начинающего программиста и какие вопросы могут задать. В этой статье я собрал вопросы в удобный список. Смысл в том, чтобы другие начинающие программисты могли использовать его для подготовки, прежде чем идти на первое собеседование. Но хочу оговориться, что я не рекомендую просто запоминать ответы на эти вопросы. Темы в списке — это темы, которые следует понять и освоить, чтобы решать реальные проблемы программирования графики. Их нужно понять, а не запомнить ответы.

                      Вопросы делятся по темам: С++, математика, оптимизация и компьютерная графика. Очевидно, это главные темы в повседневной работе. C++ часто используется в реальных задачах, поэтому естественно, что на собеседовании задают много вопросов по нему. Кроме того, в программировании графики требуется лучшее знание математики, чем в большинстве других видов программирования, поэтому математические навыки имеют первостепенное значение. Наконец, для достижения 60 FPS и рендеринга с высокой графической точностью обязательными являются сильные навыки оптимизации. Давайте рассмотрим популярные вопросы в каждой категории.
                      Читать дальше →
                    • Готовим Juniper сеть с помощью Ansible



                        В один прекрасный день я решил перейти с обычного rsyslog собирающего логи со всех устройств на что-то другое, выбор и прочее к данной теме мало относится (выбрали Graylog2), но по итогу появилась задача заменить на всех устройства Juniper настройки syslog хоста.

                        В принципе пробежаться ручками (или накидать скрипт на perl) по сотне устройств и кликнуть команду не проблема, но в голове уже висела еще добрая пачка задач по автоматизации управления как сетевыми устройствами, так и еще парой сотней серверов. Если с Windows`ами проблем в моем окружении нет (используем SCCM), то с Linux окружением массовые операции обрастают либо ручными операциями, либо баш скриптами (можно и SCCM`ом управлять, но данный вариант мягко говоря неудобен).

                        А так как уже давно хотелось начать использовать Ansible, то он был выбран как старт для этой задачи (для Chef и Puppet все-таки задачи не такие крупные, а порог вхождения уже больше).
                        Читать дальше →
                      • Cuckoo 2.0. Собираем лучшую open source платформу анализа вредоносных файлов

                        • Tutorial

                        Cuckoo Sandbox logo
                        Приветствую Хабр!


                        4 года назад я публиковал инструкцию по сборке платформы динамического анализа вредоносных файлов Cuckoo Sandbox 1.2. За это время проект успел обрасти внушительным функционалом и огромным комьюнити, недавно обновившись до версии 2.0, которая больше полутора лет висела в стадии Release Candidate.


                        Я наконец-то подготовил для вас полнейший мануал по сборке Cuckoo Sandbox 2.0.5 со всеми плюшками, какие есть в проекте на данный момент, с упаковкой Cuckoo в venv и без использования root, добавив более 12-ти security утилит в песочницу! По совокупности собранного материала, не побоюсь сказать: "Это самый полный и выверенный шаг в шаг гайд из всех опубликованных в интернете на данный момент". Тем кто, осилит статью до конца — дам маленький совет, что делать, когда песочница собрана и как получить максимальный профит с автоматизации процессов ИБ своими сиилами с помощью опенсорса. Всем гикам, вирусным аналитикам, безопасникам, ребятам из SOC, CERT, CSIRT и просто любителям потыкать кнопки в терминале — добро пожаловать под кат!

                        Читать дальше →
                        • +15
                        • 12,5k
                        • 6
                      • Шпаргалка для технического собеседования


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

                          Читать дальше →
                        • Карманная клавиатура или бессмысленный, но симпатичный проект

                            Иногда мы делаем что-то полезное. Но иногда хочется сделать что-то бессмысленное, just for fun. Бывает. Например, вспомнить что-то, что очень нравилось в детстве/молодости, найти, купить и восстановить. Или модифицировать. Прекрасный пост был недавно про клавиатуры IBM Model M. У нас тоже такие были в школе в составе учебного класса IBM PS/2 Model 30. Пока читал, вспомнил про свой маленький фетиш…

                            Был у меня лет 15 назад телефон, Ericsson T28. Маленький, не очень удобный в кармане из-за торчащей толстой антенны и довольно хрупкий, но тем не менее прикольный. И была к нему клавиатура, Ericsson Chatboard, вот такая:


                            Фото, конечно, не той самой, а купленной недавно на ebay. Не знаю зачем купил, просто она мне нравится. Пролежала на полке полгода, пока не пришла в голову идея ее как то приспособить для чего нибудь полезного. Кому интересно — велкам под кат.
                            Читать дальше →
                          • Автоматизация работы с Logs API в AppMetrica. Лекция в Яндексе

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


                              Читать дальше →
                            • Деловая переписка на английском языке: фразы и советы

                                Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

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