Как стать автором
Обновить
42
0
Sergey Zabodalov @zabbius

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

Отправить сообщение

Асинхронность в С++20. Доклад в Яндексе

Время на прочтение14 мин
Количество просмотров22K
Привет, это Григорий Демченко из WhatsApp. Мой доклад посвящён использованию сопрограмм в C++20. Я не стал говорить про низкоуровневые примитивы и то, как компилятор поддерживает сопрограммы и преобразовывает соответствующий код. Вместо этого акцент сделан на практическом применении сопрограмм для решения конкретных задач высокопроизводительных масштабируемых систем. Это именно то, ради чего создавались сопрограммы в новом стандарте, и то, с чем разработчик будет иметь дело в процессе проектирования и программирования. Я постарался рассмотреть конкретные примеры и проблемы, с которыми можно столкнуться при использовании полностью асинхронного подхода.

— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии6

Теория счастья. Закон арбузной корки и нормальность ненормальности

Время на прочтение10 мин
Количество просмотров74K
Представляю на суд читателей Хабра неупорядоченные главы из своей книжки «Теория счастья» с подзаголовком «Математические основы законов подлости». Это ещё не изданная научно-популярная книжка, очень неформально рассказывающая о том, как математика позволяет с новой степенью осознанности взглянуть на мир и жизнь людей. Она для тех кому интересна наука и для тех, кому интересна жизнь. А поскольку жизнь наша сложна и, по большому счёту, непредсказуема, упор в книжке делается, в основном, на теорию вероятностей и математическую статистику. Здесь не доказываются теоремы и не даются основы науки, это ни в коем случае не учебник, а то, что называется recreational science. Но именно такой почти игровой подход позволяет развить интуицию, скрасить яркими примерами лекции для студентов и, наконец, объяснить нематематикам и нашим детям, что же такого интересного мы нашли в своей сухой науке.



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

Читать дальше →
Всего голосов 118: ↑117 и ↓1+116
Комментарии250

Как я узнал о тайных услугах Мегафона

Время на прочтение3 мин
Количество просмотров125K
Добрый день всем!

Началось всё с того, что поздно вечером мне позвонила девушка из Мегафона и пролепетала что-то про скидочные купоны-талоны, которые появятся в моём личном кабинете. Мол, это просто партнерская программа и она не хочет, чтобы я пропустил такую прекрасную возможность.
Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии293

Балансировка входящих соединений на iptables

Время на прочтение3 мин
Количество просмотров26K
Предположим, что у вас есть некий сервис, принимающий входящие соединения и возникла задача балансировки нагрузки и/или отказоустойчивости.

В общем виде схема выглядит так:
клиент ----> балансировщик ---> бэкенд (сервис)


Готовых балансировщиков под конкретные нужды множество. Например, nginx — отличный балансировщик для веб-приложений, haproxy для tcp-соединений.

Так почему iptables?
Всего голосов 37: ↑36 и ↓1+35
Комментарии16

Памятка по борьбе с алкоголем или Как пережить фуршеты

Время на прочтение20 мин
Количество просмотров174K
Тут вот праздники скоро. Спросил недавно друг «как мне это все пережить?». Я сначала объяснял, а потом решил написать статью на Хабр. Рассказанное — услышит один человек, а написанное — прочитают сотни!

Меня, если честно, достаточно сильно раздражают всевозможные застолья. Потому что гораздо приятнее посидеть с паяльником или читая книгу, а не "… хорохорясь, ерепенясь и валяясь, как колода..." провести выходные. Но традиции-с, будь они неладны, формировались столетиями и не умея пить — бывает достаточно сложно вписаться в коллектив, найти нужный подход и т.д. Особенно грешат этим делом всевозможные руководящие кадры из старого поколения. Что же делать тем, для кого алкоголь и необходимость его употреблять — это просто лишняя головная боль? Самый простой ответ — НЕ ПИТЬ, но на практике полностью это очень сложно реализовать. Эффективнее в наших реалиях принять тезис «алкоголь — просто инструмент» и учиться с ним правильно работать и использовать для решения своих задач с минимизацией ущерба для здоровья.

Статью кладем в закладки и рассылаем всем друзьям, подчиненным и т.д. и т.п. Есть время подготовиться и встретить новогодние корпоративы во всеоружии. Практически уверен, что многое из описанного активно используют те, кто «не напиваться» обязан по долгу службы. Простой же обыватель чаще про это не думает, полагаясь на удачу и легкую руку. И чаще всего оказывается в проигрыше. Предупрежден = вооружен, поэтому под катом читаем, как победить в битве с алкоголем.

Читать дальше →
Всего голосов 191: ↑155 и ↓36+119
Комментарии478

Домен-фронтинг на базе TLS 1.3

Время на прочтение7 мин
Количество просмотров18K

Введение



Современные корпоративные системы фильтрации контента, от таких именитых производителей как Cisco, BlueCoat, FireEye имеют довольно много общего с более мощными их собратьями — DPI системами, которые усиленно внедряются на национальном уровне. Суть работы и тех и других в том, чтобы производить досмотр входящего и исходящего интернет трафика и, на основании черных/белых списков, принимать решение о запрете интернет-соединения. А так как и те, и другие в основах своей работы полагаются на схожие принципы, то и способы их обхода также будут иметь много общего.

Одной из технологий, позволяющей достаточно эффективно обходить как DPI, так и корпоративные системы, является технология домен-фронтинга. Ее суть состоит в том, что мы идем на заблокированный ресурс, прикрываясь другим, публичным доменом, с хорошей репутацией, который заведомо не будет блокирован ни одной системой, например google.com.

О данной технологии было написано уже достаточно много статей и приведено много примеров. Однако популярные и обсуждаемые в последнее время технологии DNS-over-HTTPS и encrypted-SNI, а также новая версия протокола TLS 1.3 дают возможность рассмотреть еще один вариант домен-фронтинга.
Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии36

9 лучших опенсорс находок за сентябрь 2019

Время на прочтение2 мин
Количество просмотров52K

Доброго Хактоберфеста, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за сентябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Python, C, Rust, Ruby, JavaScript, Go.
Тематика: веб разработка, администрирование, инструменты разработчика.


Прошлый выпуск.

Читать дальше →
Всего голосов 115: ↑112 и ↓3+109
Комментарии19

Time series данные в реляционной СУБД. Расширения TimescaleDB и PipelineDB для PostgreSQL

Время на прочтение21 мин
Количество просмотров58K
Time series данные или временные ряды — это данные, которые изменяются во времени. Котировки валют, телеметрия перемещения транспорта, статистика обращения к серверу или нагрузки на CPU — это time series данные. Чтобы их хранить требуются специфичные инструменты — темпоральные базы данных. Инструментов — десятки, например, InfluxDB или ClickHouse. Но даже у самых лучших решений для хранения временных рядов есть недостатки. Все time series хранилища низкоуровневые, подходят только для time series данных, а обкатка и внедрение в текущий стек — дорого и больно.



Но, если у вас стек PostgreSQL, то можете забыть о InfluxDB и всех остальных темпоральных БД. Ставите себе два расширения TimescaleDB и PipelineDB и храните, обрабатываете и проводите аналитику time series данных прямо в экосистеме PostgreSQL. Без внедрения сторонних решений, без недостатков темпоральных хранилищ и без проблем их обкатки. Что это за расширения, в чем их преимущества и возможности, расскажет Иван Муратов (binakot) — руководитель отдела разработки в «Первой Мониторинговой Компании».
Всего голосов 50: ↑48 и ↓2+46
Комментарии16

Модифицируем Bluetooth-стек для улучшения звука на наушниках без кодеков AAC, aptX и LDAC

Время на прочтение7 мин
Количество просмотров130K
Перед прочтением этой статьи рекомендуется ознакомиться с предыдущей статьёй: Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах / in English

Некоторые пользователи беспроводных наушников отмечают низкое качество звука и недостаток высоких частот при использовании стандартного Bluetooth-кодека SBC, который поддерживают все аудиоустройства. Частой рекомендацией для улучшения звука является покупка устройств и наушников с поддержкой кодеков aptX и LDAC. Эти кодеки требуют лицензионных отчислений, поэтому устройства с их поддержкой стоят дороже.

Оказывается, низкое качество SBC обусловлено искусственными ограничениями Bluetooth-стеков и настроек наушников, и это ограничение можно обойти на любых существующих устройствах, путём программных изменений смартфона или компьютера.
Читать дальше →
Всего голосов 100: ↑98 и ↓2+96
Комментарии53

Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах

Время на прочтение26 мин
Количество просмотров614K
Комикс XKCD про 14 конкурирующих стандартов: Надпись: СИТУАЦИЯ: есть 14 конкурирующих стандартов. Гик: 14?! Абсурд! Нам необходимо разработать один универсальный стандарт, на все случаи жизни. Спутница гика: Да! Надпись: Скоро: СИТУАЦИЯ: Есть 15 конкурирующих стандартов.

This article is also available in English

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

TL;DR:
  • SBC — нормальный кодек
  • У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
  • aptX не настолько хорош, как о нём говорят рекламные анонсы
  • LDAC — маркетинговое фуфло
  • Качество звука в режиме разговора всё ещё низкое
  • В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.

Всего голосов 175: ↑171 и ↓4+167
Комментарии180

И снова о втором мониторе из планшета…

Время на прочтение3 мин
Количество просмотров36K
Оказавшись обладателем среднего такого планшета с нерабочим сенсором (старшенький сынуля постарался) долго думал, куда приспособить. Гуглил, гуглил и нагуглил (раз, два, Хакер №227), а так же много других рецептов с участием spacedesk, iDispla и некоторых других. Вот только незадача — у меня Linux. Погуглив ещё, я нашел несколько рецептов и путем несложного шаманства получил приемлемый результат.

Читать дальше →
Всего голосов 72: ↑65 и ↓7+58
Комментарии35

Google's Shell Style Guide (на русском)

Время на прочтение14 мин
Количество просмотров21K

Предисловие


Какой Shell использовать


Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


Когда использовать Shell


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


Хотя shell-скриптинг не является языком разработки, он используется для написания различных утилит во всем Google. Это руководство по стилю является скорее признанием его использования, а не предложением использовать его в широком применении.

Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии10

SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

Время на прочтение3 мин
Количество просмотров117K
image

SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?! Что?!
— Да!
  • Хотите скрыть наличее у вас некоторых сервисов?
  • В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
  • Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
  • SSH подключение к своему серверу из стран с цензурой?

На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.

В посте мы рассмотрим как в 1 команду спрятать кучу сервисов за 1 портом.
Читать дальше →
Всего голосов 83: ↑79 и ↓4+75
Комментарии100

Маленький ноутбук для системного администратора

Время на прочтение16 мин
Количество просмотров138K


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

К сожалению, мой рабочий Thinkpad x200 слишком тяжёл и громоздок для постоянного ношения, а ничего кардинально лучшего не нашлось. Вообще, маленькие ноутбуки в последнее время скатились к подражанию МакБук Эйру — нечто тонкое, блестящее, с минимумом портов, с функциональностью, принесенной в жертву стилю. Такой ноутбук годится только на то, чтобы ставить лайки в фейсбуке, но никак не для работы.

Не найдя ничего достойного, я задумался о том, каким-бы получился ноутбук, если-бы его разрабатывали, думая не о маркетинге, а о потребностях реальных пользователей. Например, системных администраторов. Раздумий набралось на целую статью.
Читать дальше →
Всего голосов 210: ↑204 и ↓6+198
Комментарии357

Как уже снова не получить телефон (почти) любой красотки в Москве, или интересная особенность MT_FREE

Время на прочтение6 мин
Количество просмотров189K

UPD0 14.03 8:21 — Телефон больше не получить. Остальные интересные данные пока остались.


UPD1 14.03 10:39 — Дабы не очернять ребят из саппорта MaximaTelecom: Сообщил о ней я окольными путями, но раз пять переспросил и уточнил, дошло ли моё письмо до адресата — короче говоря, убедился, что оно у эфемерного (имена просили молчать) ответственного за вафли лица в метро. Я признаю, что это тупо, но цепочка "проблема в мосметро" → "у меня уже были связи со всяким мос, надо позвонить им" мне показалась весьма и весьма логичной в момент обнаружения уязвимости.


UPD2 14.03 15:40 — Уязвимость была найдена в uid Antxak — суть в том, что в uid лежит md5 телефона без соли. Снова можно искать телефоны.


Пример намайненного телефона

image


UPD3 14.03 18:55 — Уязвимый хэш в uid был заменен на тот же, что и в телефоне. Пока не раскололи последний.


UPD4 15.03 20:51 — Значения и ключи почти всех полей были заменены на предположительно обфускованные.

Читать дальше →
Всего голосов 131: ↑130 и ↓1+129
Комментарии102

Нотной грамоте учат неправильно*

Время на прочтение11 мин
Количество просмотров235K

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


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


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


* Дисклеймер

Прошу прощения, если заголовок статьи показался вам чересчур дерзким и провокационным. Таковым он, в общем-то, и является.


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии212

Пособие по webpack

Время на прочтение8 мин
Количество просмотров347K


Давайте сначала разберемся, зачем нужен вебпак (webpack), и какие проблемы он пытается решить, а потом научимся работать с ним. Webpack позволяет избавиться от bower и gulp/grunt в приложении, и заменить их одним инструментом. Вместо bower'а для установки и управления клиентскими зависимостями, можно использовать стандартный Node Package Manager (npm) для установки и управления всеми фронтэнд-зависимостями. Вебпак также может выполнять большинство задач grunt/gulp'а.


Bower это пакетный менеджер для клиентской части. Его можно использовать для поиска, установки, удаления компонентов на JavaScript, HTML и CSS. GruntJS это JavaScript-утилита командной строки, помогающая разработчикам автоматизировать повторяющиеся задачи. Можно считать его JavaScript-альтернативой Make или Ant. Он занимается задачами вроде минификации, компиляции, юнит-тестирования, линтинга и пр.

Допустим, мы пишем простую страницу профиля пользователя в веб-приложении. Там используется jQuery и библиотеки underscore. Один из способов — включить оба файла в HTML:

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии13

WhatsApp, что внутри?

Время на прочтение7 мин
Количество просмотров80K
В продолжение направления публикаций исследований нашей компании о внутренних механизмах крупнейших в мире мессенджеров. Сегодня будем смотреть на WhatsApp в его актуальном состоянии. На самом деле внутренности не сильно изменились за последние три года, изменения там скорее косметические.

В этой статье мы подробно посмотрим как можно изучать протокол работы мессенджера, ответим на вопрос «может ли WhatsApp читать нашу переписку?» и приложу весь необходимый код на языке PHP.
Читать дальше →
Всего голосов 79: ↑78 и ↓1+77
Комментарии78

Root хуже Михалкова

Время на прочтение2 мин
Количество просмотров42K

Рут – это мифическое существо в экосистеме Linux. Он может всё: зайти в любой каталог, удалить любой файл, завершить любой процесс, открыть любой порт. В общем это суперчеловек, чрезвычайно могущественный и очень полезный. Но задумывались ли вы когда-нибудь, какую цену мы платим руту? Не думали же вы, что он работает за просто так.


Вы знаете команду df? Она показывает все подключенные сейчас диски и статистику по ним: сколько место занято, сколько свободно. Например:


$ df -m
Filesystem     1M-blocks   Used Available Use% Mounted on
udev                 224      1       224   1% /dev
tmpfs                 48      1        47   2% /run
/dev/dm-0           9204   7421      1294  86% /

Вы когда-нибудь замечали, что для локальных дисков сумма Used и Available чаще всего меньше общего размера диска? Ненамного, но меньше.

Читать дальше →
Всего голосов 103: ↑80 и ↓23+57
Комментарии140

Атакуем DHCP часть 3. DHCP + Apple = MiTM

Время на прочтение2 мин
Количество просмотров11K

LOGO


В данной статье я расскажу о том как осуществить MiTM любого устройства компании Apple в WiFi сети. Прежде чем читать эту статью настоятельно рекомендую ознакомиться с первой и второй частью.

Всего голосов 23: ↑22 и ↓1+21
Комментарии6

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность