• Embedded Linux в двух словах. Первое

    • Tutorial

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

    Платформой послужит плата BeagleBone Black с процессором производства Техасских Инструментов AM3358 и ядром Arm Cortex-A8, и, чтобы не плодить мигающие светодиодами мануалы, основной задачей устройства будет отправка смайлов в топовый чат, широко известного в узких кругах, сайта,  в соответствии с командами от смайл-пульта. Впрочем, без мигания светодиодами тоже не обошлось.

    Читать далее
  • Перехват и обработка событий в файловой системе Linux

      В предыдущей статье мы рассмотрели сборку и установку пакета на Linux системах, в которой упомянули про Linux Kernel Module (LKM) и обещали раскрыть позднее подробности о пути к нему и его создании. Ну что ж, настало его время. LKM – мы выбираем тебя.

      Читать далее
      • +12
      • 4.2k
      • 8
    • Rust crashcourse. Правило трёх — параметры, итераторы и замыкания

      • Translation
      Ниже представлен перевод одной из частей серии статей Rust Crash Course от Майкла Сноймана, которая посвящена механизмам передачи параметров, итераторам и замыканиям относительно того, как передаётся владение, и соотносится с мутабельностью и временами жизни.

      Так же постарался переводить максимально близко к авторскому стилю, но сократил немного междомедий и восклицаний, не сильно значимых для смысла.
      Читать дальше →
      • +28
      • 4.8k
      • 4
    • Systemd для продолжающих. Part 2 — Триггеры на различные события

      • Tutorial

      Продолжаем цикл популярного балета, под названием «Systemd для продолжающих». В этой части, являющейся логическим продолжением предыдущей, поговорим о различных триггерах не связанных со временем. Эта часть будет не такой объёмной, но, не менее интересной. Вперёд!

      Попробовать стащить сыр!
    • Лучшие практики при написании безопасного Dockerfile

        В данной статье мы рассмотрим небезопасные варианты написания собственного Dockerfile, а также лучшие практики, включая работу с секретами и встраивание инструментов статического анализа. Тем не менее для написания безопасного Dockerfile наличия документа с лучшими практиками мало. В первую очередь требуется организовать культуру написания кода. К ней, например, относятся формализация и контроль процесса использования сторонних компонентов, организация собственных Software Bill-of-Materials (SBOM), выстраивание принципов при написании собственных базовых образов, согласованное использование безопасных функций, и так далее. В данном случае отправной точкой для организации процессов может служить модель оценки зрелости BSIMM. Однако в этой статьей пойдет речь именно о технических аспектах.

        Читать далее
      • Давайте напишем командную оболочку Linux

        • Tutorial

        Всем привет!

        Хочу поделиться своим опытом написания собственной командной оболочки Linux используя Posix API. Усаживайтесь поудобнее.

        Что должен уметь наша командная оболочка?

        1. Запуск процессов в foreground и background режиме

        2. Завершение background процессов

        3. Поддержка перемещения по директориям

        Читать далее
      • Возможности SQLite, которые вы могли пропустить

          Если вы используете SQLite, но не следите за его развитием, то возможно некоторые вещи, позволяющие сделать код проще, а запросы быстрее, прошли незамеченными. Под катом я постарался перечислить наиболее важные из них.
          Читать дальше →
        • Монорепо: жизнь до и после

            Это история о том, почему в одном из направлений «Юлы» отказались от практики отдельных репозиториев на микросервисы и внутренние библиотеки, перейдя на монорепозиторий, и что из этого вышло. О проблемах, с которыми столкнулись в компании, и тех, которые получилось решить при помощи этого переезда, рассказал на конференции Golang Live 2020 руководитель b2b-разработки «Юлы» Валентин Дубровский.


            Читать дальше →
          • Создание изображений в runtime (favicon, watermark, нарезка картинок) #golang

              В Go есть возможность создавать файлы изображений.

              С помощью этого мы можем создавать картинки на лету (в runtime).

              Где же это может пригодится?

              Читать далее
            • «Привет, мир»: разбираем каждый шаг хэш-алгоритма SHA-256

              • Translation

              SHA-2 (Secure Hash Algorithm), в семейство которого входит SHA-256, — это один самых известных и часто используемых алгоритмов хэширования. В тексте подробно покажем каждый шаг работы этого алгоритма на реальном примере. SHA-2 отличается безопасностью (его тяжелее взломать, чем SHA-1) и скоростью.
              Читать дальше →
              • +26
              • 17.8k
              • 6
            • Конвертируем doc в docx и xml на C#

              • Tutorial

              Продолжаю свой цикл статей, посвященный конвертации различных текстовых файлов с помощью решений, реализованных на языке C#.


              С момента моей последней публикации «Конвертация xls в xlsx и xml на C#» прошло более полугода, за которые я успел сменить как работодателя, так и пересмотреть свои взгляды на некоторые аспекты коммерческой разработки. Сейчас, работая в международной компании с совершенно иным подходом к разработке ПО (ревью кода, юнит-тестирование, команда автотестеров, строгое соблюдение СМК, заботливый менеджер, очаровательная HR и прочие корпоративные плюшки), я начинаю понимать, почему некоторые из комментаторов интересовались целесообразностью предлагаемых мной велокостылей, когда на рынке есть очень достойные готовые решения, например, от e-iceblue. Но давайте не забывать, что ситуации бывают разные, компании – тем более, и если потребность в решении какой-то задачи с использованием определенного инструментария возникла у одного человека, то со значительной долей вероятности она возникнет и у другого.


              Читать дальше →
              • +15
              • 5.7k
              • 2
            • Всем привет, на связи Microsoft! Мы давно обратили внимание, что читатели видят в Хабре образовательный ресурс и приходят сюда затем, чтобы повысить свой профессиональный уровень. Для тех хабравчан, кто пользуется инструментами и продуктами от Microsoft, мы решили систематизировать наши обучающие, справочные и триал-материалы. Итак, под катом наш виртуальный лекторий, где собраны ссылки по работе с Azure, последние курсы на платформе Learn и материалы для получения сертификатов от компании.
              Посмотреть, что мы для вас собрали
            • Ультимативный гайд по собеседованию DevOps-инженеров — что спрашивать и к чему готовиться



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

                Это когда никакого четкого алгоритма нет. Ты просто разговариваешь с человеком и что-то для себя понимаешь. Спрашиваешь, что кандидат делал на прошлой работе, цепляешься за тему — и вот вы уже просто обсуждаете инженерные темы, примерно на том же уровне, что и с коллегами. Если беседа клеится и человек нравится, то все хорошо.

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

                Но иногда, чтобы не терять хватку, надо все же напоминать себе, какими знаниями должен обладать инженер и какими вопросами можно максимально объективно оценить человека, которого видишь впервые в жизни.
                Читать дальше →
              • Знакомство с pg_probackup. Третья часть

                • Tutorial


                Завершающая часть из цикла "Знакомство с pg_probackup" (первая | вторая части).

                В предыдущей статье мы решили сразу две задачи: в первой создали архив wal-файлов, перешли к PAGE-архивам, настроили политику удержания wal-файлов; во второй — реплику из бэкапа и настроили pg_probackup на снятие бэкапов с неё.

                Сегодня мы с вами продолжим тему восстановления из бэкапов.

                Читать дальше →
                • +17
                • 2.8k
                • 2
              • «Docker уже умер» или все, что вы хотели узнать про Devops, но боялись спросить


                  Недавно в наших соцсетях выступал Александр Чистяков, DevOps с 7-летним опытом и сооснователь Санкт-Петербургского сообщества DevOps-инженеров.

                  Саша один из топовых докладчиков в этой сфере, он выступал на главных сценах на Highload++, РИТ++, PiterPy, Стачка, всего сделав не менее 100 докладов. В прошлый понедельник он ответил на вопросы зрителей и рассказал про свой опыт.

                  Делимся записью эфира и расшифровкой.



                  Меня зовут Александр Чистяков, я много лет работаю DevOps-инженером. Я давно консультирую различные компании на тему внедрения DevOps-практик, использования современного DevOps-инструментария и организации инфраструктур таким образом, чтобы все мы могли спокойно спать по ночам, и люди продолжали получить деньги за свои товары и услуги.

                  В основном я консультировал иностранные компании.
                  Читать дальше →
                • [Личный опыт] Как устроиться в компанию мечты в США: советы продакт-менеджера

                    На недавнем вебинаре g-mate я рассказала про сложности при устройстве на работу в США, если ты не инженер, отличия менталитетов и собеседований в двух странах. Эта статья — дополнение предыдущей, привожу ответы на вопросы в тексте.


                    Читать дальше →
                  • PostgreSQL Query Profiler: как сопоставить план и запрос

                      Многие, кто уже пользуется explain.tensor.ru — нашим сервисом визуализации планов PostgreSQL, возможно, не в курсе одной из его суперсособностей — превращать сложно читаемый кусок лога сервера…


                      … в красиво оформленный запрос с контекстными подсказками по соответствующим узлам плана:


                      В этой расшифровке второй части своего доклада на PGConf.Russia 2020 я расскажу, как нам удалось это сделать.
                      С транскриптом первой части, посвященной типовым проблемам производительности запросов и их решениям, можно ознакомиться в статье «Рецепты для хворающих SQL-запросов».
                      Читать дальше →
                      • +13
                      • 3.8k
                      • 5
                    • Моделирование отказоустойчивых кластеров на базе PostgreSQL и Pacemaker

                        Введение


                        Некоторое время назад передо мной поставили задачу разработать отказоустойчивый кластер для PostgreSQL, работающий в нескольких дата-центрах, объединенных оптоволокном в рамках одного города, и способный выдержать отказ (например, обесточивание) одного дата-центра. В качестве софта, который отвечает за отказоустойчивость, выбрал Pacemaker, потому что это официальное решение от RedHat для создания отказоустойчивых кластеров. Оно хорошо тем, что RedHat обеспечивает его поддержку, и тем, что это решение универсальное (модульное). С его помощью можно будет обеспечить отказоустойчивость не только PostgreSQL, но и других сервисов, либо используя стандартные модули, либо создавая их под конкретные нужды.


                        К этому решению возник резонный вопрос: насколько отказоустойчивым будет отказоустойчивый кластер? Чтобы это исследовать, я разработал тестовый стенд, который имитирует различные отказы на узлах кластера, ожидает восстановления работоспособности, восстанавливает отказавший узел и продолжает тестирование в цикле. Изначально этот проект назывался hapgsql, но со временем мне наскучило название, в котором только одна гласная. Поэтому отказоустойчивые базы данных (и float IP, на них указывающие) я стал именовать krogan (персонаж из компьютерной игры, у которого все важные органы дублированы), а узлы, кластеры и сам проект — tuchanka (планета, где живут кроганы).


                        Сейчас руководство разрешило открыть проект для open source-сообщества под лицензией MIT. README в скором времени будет переведен на английский язык (потому что ожидается, что основными потребителями будут разработчики Pacemaker и PostgreSQL), а старый русский вариант README я решил оформить (частично) в виде этой статьи.


                        Krogan on Tuchanka

                        Читать дальше →
                      • Как запускается сервер: UEFI


                          Ранее мы уже разбирали последовательность запуска сервера на примере устаревшего Legacy. Настало время познакомиться с UEFI поближе.

                          Первая версия того, что сейчас известно как Unified Extensive Firmware Interface (UEFI), разрабатывалась в 90-е годы прошлого тысячелетия специально под системы на Intel® Itanium® и называлась Intel Boot Initiative, а позже — EFI.

                          Желание «обновить» процесс загрузки было ожидаемо. PC-BIOS, именуемый ныне Legacy, предлагает работать в 16-битном real mode, адресует всего 1 МБ оперативной памяти, а загрузчик вместе с таблицей разделов должен размещаться в первых 512 байтах накопителя. Более того, PC-BIOS передает управление первому найденному загрузчику без возможности возврата назад. При этом обработку случаев с несколькими операционными системами возлагают на плечи загрузчика.
                          Читать дальше →
                        • [Личный опыт] Amazon vs Microsoft: чем отличается процесс собеседований в крупных ИТ-компаниях



                            Привет, Хабр! Меня зовут Паша Доронин и бóльшую часть жизни я работаю в индустрии переводов и локализации. Я долгое время проработал в компании Smartcat, где прошел путь от аналитика до менеджера по продукту. Несколько месяцев назад я переехал в Дублин и решил заняться дальнейшим развитием своей карьеры.

                            На этот раз я решил сменить схему поиска вакансий – раньше я просто смотрел на то, «что есть», и выбирал интересные варианты. Теперь же хотелось исходить из того, что хочу получить на новом месте я, и уже соответственно фильтровать объявления. За период активного поиска я связался с 17 компаниями из Европы и США, и устроился в AI-стартап Intento (недавно поднял новый раунд инвестиций). Вот что я понял по итогам этого процесса.
                            Читать дальше →