• Как запускается сервер


      Запуск сервера — длинная и сложная последовательность действий, зависящая от аппаратной составляющей, настроек и используемого программного обеспечения. Многие, даже опытные и квалифицированные системные администраторы, плохо себе представляют, что именно происходит в процессе запуска сервера, поэтому мы решили разобрать этот процесс детально.
      Читать дальше →
    • Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT

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


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

        Ответ на этот вопрос неоднозначен
      • С++ exception handling под капотом или как же работают исключения в C++

        • Translation

        От переводчика


        В мире победили языки высокого уровня и в мирах руби-питон-js разработчиков остается только разглагольствовать, что в плюсах не стоит использовать то или иное. Например, исключения, потому что они медленные и генерируют много лишнего кода. Стоило спросить "и какой же код он генерирует", как в ответ получил мямленье и мычание. А и правда — как же они работают? Ну что ж, компилируем в g++ с флагом -S, смотрим что получилось. Поверхностно разобраться не сложно, однако то, что остались недопонимания — не давали мне спать. К счастью, готовая статья нашлась.

        На хабре есть несколько статей, подробных и не очень (при этом все равно хороших), посвященных тому, как работают exceptions в C++. Однако нет ни одной по-настоящему глубокой, поэтому я решил восполнить этот пробел, благо есть подходящий материал. Кому интересно как работают исключения в C++ на примере gcc — запаситесь pocket-ом или evernote, свободным временем и добро пожаловать под кат.
        Читать дальше →
      • Видеостудия на базе i486

          Как многие старьевщики, я люблю время от времени помучить ebay поисками разных старых железок, вдруг, найдется что-нибудь интересненькое занедорого? И оно нередко находится. Да, искать что-то мейнстримово-винтажное, типа материнских плат для 386, 486, памяти SIMM 30 pin, видеокарт и мультикарт ISA, Sound Blaster, и подобных широкоизвестных вещей на ибее не стоит, они там очень переоценены. Однако, порой встречаются малопонятные обывателю платы, которые тру-старьевщикам кажутся жемчугом. Одну из таких плат я недавно приобрел менее, чем за 10 евро, включая доставку. Вот она:



          С посмощью этой платы, выпускавшейся в 1994-1995 годах, можно превратить типичный для того времени компьютер, ну, ок, далеко не в видеостудию, конечно, но в нечто, имеющее способности к нелинейному видеомонтажу. Самое сладкое для меня тут — это 1994 год. Как минимум за год до выхода Windows 95. То есть совместимый софт, с большой долей вероятности, будет 16-битным.
          предупреждение: много картинок и видео под катом
          Читать дальше →
        • Пользователи и авторизация RBAC в Kubernetes

          • Translation
          Прим. перев.: Продолжая недавно затронутую нами тему безопасности Kubernetes в целом и RBAC — в частности, публикуем перевод этого материала от французского консультанта из международной компании Big Data-компании Adaltas. Автор в деталях показывает, как создавать пользователей, наделять их правами и в дальнейшем обслуживать.

          Настройка и запуск кластера Kubernetes – это только начало: ведь его необходимо еще и эксплуатировать. Чтобы обезопасить доступ к кластеру, нужно задать идентификационные данные пользователей и грамотно управлять настройками аутентификации и авторизации.

          (Иллюстрация взята из блога CNCF — прим. перев.)

          Эта статья посвящена тому, как создавать пользователей, используя клиентские сертификаты X.509, и как управлять авторизацией с помощью базовых API-объектов RBAC в Kubernetes. Мы также поговорим о некоторых открытых проектах, упрощающих администрирование кластера: rakkess, kubectl-who-can, rbac-lookup и RBAC Manager.
          Читать дальше →
        • Внутренности Go: оборачиваем переменные цикла в замыкании

          • Translation


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


          А еще я хотел бы пригласить вас на Golang Conf 2019, которая пройдет 7 октября в Москве. Я член программного комитета конференции, и мы с коллегами выбрали много не менее хардкорных и очень, очень интересных докладов. То, что я люблю!


          Под катом передаю слово автору.

          Читать дальше →
          • +71
          • 8.1k
          • 8
        • Kubernetes tips & tricks: ускоряем bootstrap больших баз данных

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

            Я начну с «трюка» по подготовке больших дампов баз данных вроде MySQL и PostgreSQL для их быстрого развёртывания для различных нужд — в первую очередь, на площадках для разработчиков. Контекст описанных ниже операций — наше типовое окружение, включающее в себя работающий кластер Kubernetes и применение GitLab (и dapp) для CI/CD. Поехали!

            Читать дальше →
            • +21
            • 7.2k
            • 5
          • Проектирование дашбордов для веб-аналитики e-commerce сайта. Часть 1: Удобный интерфейс

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


            Дашборд для автомобилиста

            Цикл публикаций будет состоять из статей с описанием содержания дашбордов для веб-аналитики e-commerce сайтов. Поговорим о создании удобного интерфейса дашборда.
            Читать дальше →
          • Умные алгоритмы обработки строк в ClickHouse

              В ClickHouse постоянно возникают задачи, связанные с обработкой строк. Например, поиск, вычисление свойств UTF-8 строк или что-то более экзотическое, будь то поиск типа учёта регистра или поиск по сжатым данным.


              Всё началось с того, что руководитель разработки ClickHouse Лёша Миловидов o6CuFl2Q пришёл к нам на факультет компьютерных наук в НИУ ВШЭ и предложил огромное количество тем для курсовых и дипломов. Когда я увидел «Умные алгоритмы обработки строк в ClickHouse» (я, человек, который увлекается разными алгоритмами, в том числе экспериментальными), сразу же настроил планов, как сделаю самый крутой диплом. Мою радость и выражение лица можно описать следующей картинкой:



              Читать дальше →
              • +57
              • 9.5k
              • 7
            • Инструменты для разработчиков приложений, запускаемых в Kubernetes



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

                В этом обзоре представлена краткая информация о некоторых инструментах, которые упрощают жизнь программисту, чей код крутится в pod’ax Kubernetes-кластера.
                Читать дальше →
                • +49
                • 8.3k
                • 2
              • Онлайн сервис «Анализ скорости при ДТП по видеозаписи»


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

                    Мощность квантового компьютера измеряется в кубитах, базовой единице измерения в квантовом компьютере. Источник.

                    Я делаю фейспалм после каждого прочтения подобной фразы. До добра это не довело, начало садиться зрение; скоро придется обращаться к Meklon.

                    Думаю, пора несколько систематизировать основные параметры квантового компьютера. Их несколько:

                    1. Количество кубитов
                    2. Время удержания когерентности (время декогеренции)
                    3. Уровень ошибок
                    4. Архитектура процессора
                    5. Цена, доступность, условия содержания, время амортизации, инструменты программирования, и т.д.
                    Читать дальше →
                  • Оптимизация node.js приложения

                      Дано: старое http node.js приложение и возросшая нагрузка на него.

                      Стандартные решения проблемы: докинуть серверов, все переписать с 0, оптимизировать уже написанное.

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

                      Всех заинтересованных добро пожаловать под кат!
                      Читать дальше →
                    • Мониторинг мёртв? — Да здравствует мониторинг



                        Наша компания с 2008 года занимается преимущественно управлением инфраструктурами и круглосуточной технической поддержкой веб-проектов: у нас более 400 клиентов, это порядка 15% электронной коммерции России. Соответственно, на поддержке очень разнообразная архитектура. Если что-то падает, мы обязаны в течение 15 минут это починить. Но чтобы понять, что авария произошла, нужно мониторить проект и реагировать на инциденты. А как это делать?

                        Я считаю, что в организации правильной системы мониторинга происходит беда. Если бы беды не было, то мой спич состоял из одного тезиса: «Установите, пожалуйста, Prometheus + Grafana и плагины 1, 2, 3». К сожалению, теперь так не работает. И главная проблема заключается в том, что все продолжают верить во что-то такое, что существовало в 2008 году, с точки зрения программных компонентов.

                        В отношении организации системы мониторинга я рискну сказать, что… проектов с грамотным мониторингом не существует. И ситуация настолько плохая, если что-то упадёт, есть риск, что это останется незамеченным — все ведь уверены, что «всё мониторится».
                        Возможно, всё мониторится. Но как?

                        Все мы сталкивались с историей наподобие следующей: работает некий девопс, некий админ, к ним приходит команда разработчиков и говорит — «мы зарелизились, теперь замониторь». Что замониторь? Как это работает?

                        Ок. Мониторим по старинке. А оно уже изменяется, и выясняется, что ты мониторил сервис А, который стал сервисом B, который взаимодействует с сервисом C. Но команда разработчиков тебе говорит: «Поставь софт, он же должен все замониторить!»

                        Так что изменилось? — Всё изменилось!
                        Читать дальше →
                      • 95% от заявленного объёма торгов Биткоина оказались фейком

                        • Translation
                        image

                        В рамках 226 слайдов, представленных комиссии по ценным бумагам и биржам, мы( @BitwiseInvest ) провели первый в своем роде анализ данных со всех из 81 бирж, сообщающих об объеме BTC >$1M на CoinMarketCap

                        TLDR: 95% обозначенного объема является фейком, но есть и хорошие новости!

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



                          Однажды мой коллега Пётр предложил поучаствовать в одном интересном проекте — в создании «пещерного телефона для спелеологов», так как сам увлекается спелеологией. У спелеологов есть такая проблема: беспроводная связь под землей на практике не работает. Приемлемый радиоприем возможен только в зоне прямой видимости, но стоит зайти за пару поворотов — и связи нет. А общаться надо на протяжении всей пещеры, длина которой может быть несколько километров. Мобильная связь там, конечно же, не ловит, а значит связи с внешним миром у групп, автономно работающих в пещере несколько недель, никакой нет.

                          В августе 2018-го Петру предстояло участвовать в экспедиции в довольно сложную и опасную пещеру. Для этой экспедиции мы решили разработать новое устройство, которое бы решило проблему связи автономно работающих групп с внешним миром.
                          Читать дальше →
                        • История одного лендинга: привлек много клиентов и был скопирован под сотню раз

                            Привет, Хабр! Я Руслан Кокин, UX-дизайнер в компании UXhot, и у меня есть необычная история про лендинг, а также состояние копирайта в России.



                            Среди созданных нами продуктов есть по-настоящему легендарный лендинг пейдж, ставший донором для зарождающегося в интернете сегмента механизированной штукатурки. За три года работы он не только привлёк много клиентов, но и был скопирован почти 100 раз. Хотите узнать, что такого особенного в нем было?
                            Читать дальше →
                          • Плагин kubectl-debug для отладки в pod'ах Kubernetes



                              В конце прошлого года на Reddit представили плагин к kubectl, помогающий производить отладку в pod'ах кластера Kubernetes — kubectl-debug. Эта идея сразу же показалась интересной и полезной нашим инженерам, так что мы решили посмотреть на её воплощение и рады поделиться своими результатами с читателями хабры.
                              Читать дальше →
                              • +34
                              • 4.7k
                              • 5
                            • Новое поколение светодиодных ламп IKEA

                                Весной 2018 года в магазинах IKEA появились светодиодные лампы нового поколения. У этих ламп очень высокие индексы цветопередачи (более 92), они поддерживают регулировку яркости, причём свет при снижении яркости желтеет, как у ламп накаливания, у пяти из восьми новых ламп полностью отсутствуют пульсации, они совершенно бесшумны при включении на полную яркость (при диммировании у некоторых ламп шум есть, но очень слабый), в них используется новая технология расположения светодиодов, сочетающая преимущества филаментных и обычных светодиодных ламп.

                                Я купил и протестировал новые лампы.

                                Читать дальше →
                              • Мы сделали самый маленький в мире гидроакустический модем

                                  Приветствую тебя, наш дорогой хаброчитатель!


                                  «Так уменьшились Духи, и чертог
                                  Вмещает неисчетные рои
                                  Просторно.»
                                  (С) Джон Мильтон, Потерянный Рай

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



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

                                  Кого взволновала тема — вперед, к гидроакустическому изобилию, под кат!
                                  Читать дальше →