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

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


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

      Ответ на этот вопрос неоднозначен
    • Охлаждение ЦОД: песнь льда и пламени

        image

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

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

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

        Для того чтобы наглядно увидеть распределение тепла и холода, а также измерить скорость воздушных потоков, мы используем два специфических инструмента, о которых сейчас детально расскажем.
        Читать дальше →
        • +21
        • 6.1k
        • 8
      • Разработка драйвера PCI устройства под Linux


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

          В качестве подопытного выступит интерфейс датчиков перемещения ЛИР940/941. Это устройство, отечественного производства, обеспечивает подключение до 4 энкодеров с помощью последовательного протокола SSI поверх физического интерфейса RS-422.
          Читать дальше →
        • Блокчейн — будущее финансовых технологий?



            Слова криптовалюта и блокчейн, несколько лет назад известные лишь единицам, теперь встречаются повсеместно. В этой обзорной статье мы детально разберем принцип работы технологии, рассмотрим варианты её применения и наметим возможные пути развития блокчейна.
            Кроме того, мы поделимся опытом компаний, заинтересованных в более глубоком изучении технологии, а также расскажем о возможностях для разработчиков поучаствовать в первом конкурсе NEO.
            Читать дальше →
          • blk-mq и планировщики ввода-вывода



              В сфере устройств хранения данных за последние годы произошли серьёзные изменения: внедряются новые технологии, растут объём и скорость работы дисков. При этом складывается следующая ситуация, в которой узким местом становится не устройство, а программное обеспечение. Механизмы ядра Linux для работы с дисковой подсистемой совершенно не приспособлены к новым, быстрым блочным устройствам.
              Читать дальше →
              • +24
              • 6.2k
              • 3
            • Электричество в дата-центре



                Работа любого дата-центра держится на «трех китах» — электроснабжении, охлаждении и системах безопасности. А ключевой инфраструктурой среди них, вне сомнения, является система электроснабжения.
                Читать дальше →
              • Сервис статистики VPC



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

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

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

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

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

                  Aodh и Panko останутся за рамками этой статьи.
                  Читать дальше →
                • Выделенные серверы на базе процессоров Intel Xeon Skylake-SP



                    12 июля компания Intel представила новую линейку серверных процессоров под кодовым названием Skylake-SP. Буквы SP в названии линейки — это сокращение от Scalable Processors («масштабируемые процессоры» в переводе на русский). Такое название не случайно: Intel реализовали много интересных нововведений и, как было отмечено в одном обзоре, «попытались угодить чуть ли не всем».
                    Читать дальше →
                    • +11
                    • 11.5k
                    • 6
                  • The uWSGI Spooler



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


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


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


                      Читать дальше →
                      • +26
                      • 6.1k
                      • 5
                    • Ubuntu 17.04: что нового



                        Сегодня вышла в свет новая версия Ubuntu — 17.04 Zesty Zapus.

                        Тестовые сборки стали доступны еще в ноябре прошлого года. В Интернете опубликовано уже немало обзоров нововведений. Некоторые новации стали предметом дискуссий задолго до официального релиза: пользователи десктопной версии очень неоднозначно восприняли планы прекратить разработку графической оболочки Unity 8 и заменить её на GNOME 3.22. В Ubuntu 17.04 по умолчанию ещё используется Unity 7, но во всех следующих версиях её уже не будет.
                        Читать дальше →
                      • Что должно быть в с-файле, а что должно быть в h-файле?

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

                          Отчасти это дело вкуса, поэтому, кому интересно как это делаю я, добро пожаловать под кат.
                          Читать дальше →
                        • Почему в сорок лет я решил поменять профессию и стать программистом Python

                          На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование — руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."
                          Читать дальше →
                        • Контейнеры и безопасность: seccomp

                          • Tutorial


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

                          В последнее время для запуска непроверенных и небезопасных программ всё чаще используются контейнеры.
                          Читать дальше →
                          • +31
                          • 7.9k
                          • 3
                        • Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service

                          • Tutorial
                          pr-3322

                          Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 2014 году. В ней речь шла о KernelCare — инструменте, разработанном нашими партнёрами из компании Cloud Linux. На момент написания статьи KernelCare был чуть ли не единственным пригодным для полноценного использования инструментом для наложения патчей.
                          Читать дальше →
                          • +16
                          • 11.8k
                          • 4
                        • Виртуальное приватное облако: работа с CoreOS и RancherOS

                          • Tutorial
                          CoreOS

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


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


                          Читать дальше →
                          • +27
                          • 12.2k
                          • 2
                        • Введение в DPDK: архитектура и принцип работы

                          • Tutorial
                          DPDK

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

                          И даже широкое распространение сетевых карт 10GE не решает проблемы: в самом ядре Linux имеется множество «узких мест», которые препятствуют быстрой обработке пакетов.
                          Читать дальше →
                        • Запрягаем R на службу бизнесу на «1-2-3»

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

                            Читать дальше →
                            • +23
                            • 9.2k
                            • 6
                          • Виртуальное приватное облако: подготовка образов

                            • Tutorial
                            VPC Image Building

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


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


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


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

                            Читать дальше →
                            • +17
                            • 14.1k
                            • 4
                          • Мониторинг безопасности с Sysdig Falco

                            • Tutorial
                            Sysdig Falco

                            Sysdig —инструменте для трассировки ядра — мы рассказывали два года назад. Совсем недавно, в мае этого года, разработчики Sysdig представили ещё один интересный продукт: систему обнаружения аномалий Falco.
                            Читать дальше →
                            • +15
                            • 5.3k
                            • 3
                          • Управление контейнерами с LXD

                            • Tutorial
                            LXD Containers

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