Pull to refresh
147
0
Андрей Емельянов @AndreiYemelianov

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

Send message

Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT

Reading time60 min
Views69K

В последнее время на Хабре стали чаще появляться посты о том, как хорош Telegram, как гениальны и опытны братья Дуровы в построении сетевых систем, и т.п. В то же время, очень мало кто действительно погружался в техническое устройство — как максимум, используют достаточно простой (и весьма отличающийся от MTProto) Bot API на базе JSON, а обычно просто принимают на веру все те дифирамбы и пиар, что крутятся вокруг мессенджера. Почти полтора года назад мой коллега по НПО "Эшелон" Василий (к сожалению, его учетку на Хабре стёрли вместе с черновиком) начал писать свой собственный клиент Telegram с нуля на Perl, позже присоединился и автор этих строк. Почему на Perl, немедленно спросят некоторые? Потому что на других языках такие проекты уже есть На самом деле, суть не в этом, мог быть любой другой язык, где еще нет готовой библиотеки, и соответственно автор должен пройти весь путь с нуля. Тем более, криптография дело такое — доверяй, но проверяй. С продуктом, нацеленным на безопасность, вы не можете просто взять и положиться на готовую библиотеку от производителя, слепо ему поверив (впрочем, это тема более для второй части). На данный момент библиотека вполне работает на "среднем" уровне (позволяет делать любые API-запросы).


Тем не менее, в данной серии постов будет не так много криптографии и математики. Зато будет много других технических подробностей и архитектурных костылей (пригодится и тем, кто не будет писать с нуля, а будет пользоваться библиотекой на любом языке). Итак, главной целью было — попытаться реализовать клиент с нуля по официальной документации. То есть, предположим, что исходный код официальных клиентов закрыт (опять же во второй части подробнее раскроем тему того, что это и правда бывает так), но, как в старые времена, например, есть стандарт по типу RFC — возможно ли написать клиент по одной лишь спецификации, "не подглядывая" в исходники, хоть официальных (Telegram Desktop, мобильных), хоть неофициальных Telethon?

Ответ на этот вопрос неоднозначен
Total votes 187: ↑182 and ↓5+177
Comments240

Охлаждение ЦОД: песнь льда и пламени

Reading time5 min
Views7K
image

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

Современное серверное оборудование сильно зависит от температурного режима, в котором оно работает. Перегрев процессоров ведет, в лучшем случае, к замедлению работы (вступает в действие механизм защиты, так называемый «троттлинг»). В худшем случае, перегрев способен полностью вывести процессоры из строя.

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

Для того чтобы наглядно увидеть распределение тепла и холода, а также измерить скорость воздушных потоков, мы используем два специфических инструмента, о которых сейчас детально расскажем.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments8

Разработка драйвера PCI устройства под Linux

Reading time19 min
Views53K

В данной статье я рассматриваю процесс написания простого драйвера PCI устройства под OC Linux. Будет кратко изучено устройство программной модели PCI, написание собственно драйвера, тестовой пользовательской программы и запуск всей этой системы.

В качестве подопытного выступит интерфейс датчиков перемещения ЛИР940/941. Это устройство, отечественного производства, обеспечивает подключение до 4 энкодеров с помощью последовательного протокола SSI поверх физического интерфейса RS-422.
Total votes 101: ↑101 and ↓0+101
Comments33

Блокчейн — будущее финансовых технологий?

Reading time9 min
Views21K


Слова криптовалюта и блокчейн, несколько лет назад известные лишь единицам, теперь встречаются повсеместно. В этой обзорной статье мы детально разберем принцип работы технологии, рассмотрим варианты её применения и наметим возможные пути развития блокчейна.
Кроме того, мы поделимся опытом компаний, заинтересованных в более глубоком изучении технологии, а также расскажем о возможностях для разработчиков поучаствовать в первом конкурсе NEO.
Читать дальше →
Total votes 30: ↑21 and ↓9+12
Comments20

blk-mq и планировщики ввода-вывода

Reading time11 min
Views11K


В сфере устройств хранения данных за последние годы произошли серьёзные изменения: внедряются новые технологии, растут объём и скорость работы дисков. При этом складывается следующая ситуация, в которой узким местом становится не устройство, а программное обеспечение. Механизмы ядра Linux для работы с дисковой подсистемой совершенно не приспособлены к новым, быстрым блочным устройствам.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments3

Электричество в дата-центре

Reading time4 min
Views11K


Работа любого дата-центра держится на «трех китах» — электроснабжении, охлаждении и системах безопасности. А ключевой инфраструктурой среди них, вне сомнения, является система электроснабжения.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments16

Сервис статистики VPC

Reading time15 min
Views4.8K


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

За получение метрик и их первичную обработку, отвечает компонент OpenStack Ceilometer.

На протяжении долгого времени он был единственным компонентом OpenStack предоставляющим все базовые возможности телеметрии.

В дальнейшем разработчики разделили функции Ceilometer между несколькими продуктами:

  • Aodh — сервис оповещений;
  • Gnocchi — сервис хранения агрегированных измерений;
  • Panko — сервис хранения информации о событиях;
  • Ceilometer — сервис сбора измерений.

Aodh и Panko останутся за рамками этой статьи.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Выделенные серверы на базе процессоров Intel Xeon Skylake-SP

Reading time7 min
Views15K


12 июля компания Intel представила новую линейку серверных процессоров под кодовым названием Skylake-SP. Буквы SP в названии линейки — это сокращение от Scalable Processors («масштабируемые процессоры» в переводе на русский). Такое название не случайно: Intel реализовали много интересных нововведений и, как было отмечено в одном обзоре, «попытались угодить чуть ли не всем».
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments6

The uWSGI Spooler

Reading time3 min
Views7.3K


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


Самой популярной системой очередей в Python является Celery, она обладает широким набором возможностей по управлению задачами. К сожалению, системы на базе Celery сложно поддерживать в работоспособном состоянии, и когда что-то идёт не так, то найти проблему бывает весьма не просто. Можете спросить любого девопса об опыте работы с Celery, но будьте готовы услышать не очень приятные слова.


К счастью, есть альтернативное решение — uWSGI Spooler, и в этой статье я расскажу о нём подробнее.


Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments5

Что должно быть в с-файле, а что должно быть в h-файле?

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

Отчасти это дело вкуса, поэтому, кому интересно как это делаю я, добро пожаловать под кат.
Читать дальше →
Total votes 33: ↑26 and ↓7+19
Comments25

Контейнеры и безопасность: seccomp

Reading time7 min
Views15K


Для работы с потенциально опасными, непроверенными или просто «сырыми» программами часто используются так называемые песочницы (sandboxes) — специально выделенные среды с жёсткими ограничениями. Для запускаемых в песочницах программ обычно сильно лимитированы доступ к сети, возможность взаимодействия с операционной системой на хост-машине и считывать информацию с устройств ввода-вывода.

В последнее время для запуска непроверенных и небезопасных программ всё чаще используются контейнеры.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments3

Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service

Reading time7 min
Views17K
pr-3322

Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 2014 году. В ней речь шла о KernelCare — инструменте, разработанном нашими партнёрами из компании Cloud Linux. На момент написания статьи KernelCare был чуть ли не единственным пригодным для полноценного использования инструментом для наложения патчей.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments4

Виртуальное приватное облако: работа с CoreOS и RancherOS

Reading time15 min
Views14K
CoreOS

Недавно мы добавили в сервис «Виртуальное приватное облако» новый образ с операционной системой RancherOS и обновили образ CoreOS.


Эти операционные системы будут интересны пользователям, которым необходим инструмент для простого управления большим количеством приложений в контейнерах и использования различных систем кластеризации контейнеров — Kubernetes, Docker Swarm, Apache Mesos и других.


Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments2

Введение в DPDK: архитектура и принцип работы

Reading time11 min
Views56K
DPDK

За последние несколько лет тема производительности сетевого стека Linux обрела особую актуальность. Это вполне понятно: объёмы передаваемых по сети данных и соответствующие нагрузки растут не по дням, а по часам.

И даже широкое распространение сетевых карт 10GE не решает проблемы: в самом ядре Linux имеется множество «узких мест», которые препятствуют быстрой обработке пакетов.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments14

Запрягаем R на службу бизнесу на «1-2-3»

Reading time6 min
Views9.6K

Настоящий пост является является, фактически, резюме, подводящим итоги предыдущих «технологических» публикаций [1, 2, 3, 4, 5] и возникших дискуссий и обсуждений. Последние показали, что задач в которых применение R могло бы оказать хорошую помощь бизнесу очень и очень много. Однако, даже в тех случаях, когда R используется, далеко не всегда для этого применяются современные возможности R.

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments6

Виртуальное приватное облако: подготовка образов

Reading time13 min
Views19K
VPC Image Building

В сервисе «Виртуальное приватное облако» имеется большой набор готовых образов операционных систем для создания виртуальных машин.


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


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


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

Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments4

Мониторинг безопасности с Sysdig Falco

Reading time6 min
Views7.3K
Sysdig Falco

Sysdig —инструменте для трассировки ядра — мы рассказывали два года назад. Совсем недавно, в мае этого года, разработчики Sysdig представили ещё один интересный продукт: систему обнаружения аномалий Falco.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments3

Управление контейнерами с LXD

Reading time7 min
Views34K
LXD Containers

Продолжаем наш цикл статей о контейнеризации. Если первые две статьи (1 и 2) были посвящены теории, то сегодня мы поговорим о вполне конкретном инструменте и об особенностях его практического использования. Предметом нашего рассмотрения будет LXD (сокращение от Linux Container Daemon), созданный канадцем Стефаном Грабе из компании Canonical.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments21

PipelineDB: работа с потоками данных

Reading time6 min
Views12K
PR-2004-7

В предыдущих публикациях мы уже затрагивали проблему обработки событий в реальном масштабе времени. Сегодня мы хотели бы вновь вернутся к этой теме и рассказать о новом и весьма интересном инструменте — потоковой СУБД PipelineDB.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments10

SO_TIMESTAMPING в картинках. Прием пакета

Reading time11 min
Views10K

Бывает, что приложению требуется узнать точное время приема или отправки сетевого пакета. Например, для синхронизации часов (см. PTP, NTP) или тестирования задержек в сети (см. RFC2544).


Наивным решением будет запоминать в приложении время сразу после получения пакета от ядра (или перед отправкой ядру):


  recv(sock, buffer, length, flags);
  clock_gettime(CLOCK_REALTIME, timespec);

Ясно, что полученное таким образом время может заметно отличаться от момента, когда пакет был получен сетевым устройством. Для получения более точного времени нужна поддержка от операционной системы, драйвера и/или сетевого устройства.


Начиная с версии 2.6.30 Линукс поддерживает опцию сокета SO_TIMESTAMPING. Она позволяет пользовательскому сокету получать временные метки для отправляемых и принимаемых пакетов. Временные метки могут быть сняты самим ядром, драйвером или сетевым устройством (см. список поддерживающих устройств и драйверов). О том, что это вообще такое и как этим пользоваться, стоит почитать в Documentation/networking/timestamping.txt


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

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments9
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity