• Маленькие хитрости SSH

    • Translation
    В этой статье собраны наши лучшие приемы для более эффективного использования SSH. Из нее вы узнаете как:

    • Добавить второй фактор к логину SSH
    • Безопасно пользоваться agent forwarding
    • Выйти из вставшей SSH сессии
    • Сохранить постоянный терминал открытым
    • Поделиться удаленной сессией терминала с другом (без Zoom!)

    Добавление второго фактора к своему SSH


    Второй фактор аутентификации к своим SSH соединениям можно добавить пятью разными способами:

    1. Обновить свой OpenSSH и использовать ключ шифрования. В феврале 2020 года в OpenSSH была добавлена поддержка ключей шифрования FIDO U2F (Universal Second Factor). Это отличная новая функция, но есть нюанс: только те клиенты и серверы, которые обновились до версии OpenSSH 8.2 и выше смогут пользоваться ключами шифрования, так как февральское обновление вводит для них новые типы ключей. Командой ssh –V можно проверить клиентскую версию SSH, а серверную — командой nc [servername] 22
    Читать дальше →
  • ConfigMaps в Kubernetes: нюансы, о которых стоит знать

      Примечание: это не полноценная статья-руководство, а скорее напоминание/подсказка для тех, кто уже пользуется ConfigMap в Kubernetes или только готовит своё приложение для работы в нём.



      Предыстория: от rsync к… Kubernetes


      Что было раньше? В эпоху «классического администрирования» в простейшем варианте файл конфига размещали прямо рядом с приложениями (или в репозитории, если угодно). Всё просто: делаем элементарную доставку (CD) для нашего кода вместе с конфигом. Даже реализацию на условном rsync можно назвать зачатками CD.
      Читать дальше →
    • Собираем свой flow для git с нуля

        На днях вышла прекрасная, хотя и спорная статья — Please, stop using GitFlow! (и еще десяток на эту же тему после нее).


        Ее основными тезисами были:


        • GitFlow противоречит тезису "ветки должны быть короткоживущими".
          Это важно, потому что чем меньше живет ветка — тем меньше шанс конфликтов (не только git, но и логических)
        • GitFlow препятствует rebase-ам, чтобы сохранить merge-коммиты.
          Да, их можно сохранять и при ребейзах, но команды Git Flow не делают этого.
        • GitFlow отрицает подход Contunious Delivery, считая, что каждый акт Delivery должен совершаться релиз-инженером, да и в целом можно увидеть, что он ориентирован только на долгий релизный цикл.
        • GitFlow не дружит с микросервисами поверх мультирепозиториев (впрочем, тут вообще мало что подходит, это идея, которая всегда плохо заканчивается)
        • Но проблема GitFlow в том, что он и с монорепозиториями тоже не дружит.


          Я сам об это споткнулся в процессе дизайна пайплайнов CI: GitFlow чудовищно мешает, когда работает поверх монорепозитория с несколькими deliverables, например, когда в одном репозитории отдельно и бэкэнд, и фронтэнд — уже из-за того, что он позволяет докоммичивать в релизные ветки, могут возникнуть конфликты при обратном мердже, если в один момент времени существует больше, чем одна релизная ветка. Да даже если одна, все равно плохо — в таких условиях надо патчить в принципе релизные механизмы GitFlow, чтобы хоть как-то заработали отдельные релизы сущностей.



        Так что делать-то?

        Читать дальше →
      • Визуализация покрытия автотестами

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



          Под катом — видео и расшифровка доклада Артема Ерошенко из Qameta Software с конференции Heisenbug. Он представил несколько разработанных простых и элегантных решений, которые помогают команде Яндекс.Вертикалей оценивать покрытие тестов, написанных автоматизаторами тестирования. Артем расскажет, как можно быстро узнавать, что покрыто, как покрыто, какие тесты прошли, и мгновенно смотреть наглядные отчеты.

          Артем, рассказывай!
        • 9 четких инструментов для изучения и прокачки английской лексики



            В Оксфордском словаре английского языка почти 450 000 слов! Но если вы учите язык как иностранный, их совсем не нужно запоминать все и сразу.

            Чтобы полноценно общаться на английском языке, вполне достаточно всего лишь 2000–3000 слов. При должном усердии и небольшом количестве хитростей их вполне можно выучить за год.

            В этой статье мы собрали 9 шикарных инструментов, которые помогут вам учить английские слова и сделают учебную рутину интереснее. Не будем долго рассусоливать, погнали!
            Читать дальше →
            • +8
            • 12.1k
            • 9
          • Как избежать простоя в работе Kubernetes-кластера при помощи PodDisruptionBudgets

            • Translation


            Защита pod’а от выселения при помощи Pod Disruption Budgets в Kubernetes


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

            Читать дальше →
          • Топ лучших докладов Joker 2019

              В октябре в Санкт-Петербурге прошла хардкорная конференция Joker 2019, и уже много про нее написано («Joker 2019: триумф года», «Чем нам запомнилась последняя JokerConf», «Атакуем Joker 2019 полностью: как прошла самая крупная Java-конференция в России»), и фоточки уже доступны. Обратная связь собрана, итоги подведены, и самое время поудобней усесться в кресле и посмотреть десятку лучших докладов с конференции.


              Ссылка на плейлист с открытыми докладами — под катом.
              Читать дальше →
            • API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

                Продолжаем рассказ про API, которые появились в новых версиях Java.



                1. Files.mismatch()


                Появился в: Java 12


                На практике довольно часто возникает необходимость проверить, являются ли два файла в точности одинаковыми или нет. С помощью метода Files.mismatch(), появившегося в Java 12, это наконец-то можно сделать. Этот метод возвращает позицию первого несовпадающего байта в двух файлах или -1, если файлы идентичны.


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


                public static void syncDirs(Path srcDir, Path dstDir)
                        throws IOException {
                    // Для простоты демонстрации считаем, что поддиректорий нет
                    try (Stream<Path> stream = Files.list(srcDir)) {
                        for (Path src : stream.collect(toList())) {
                            Path dst = dstDir.resolve(src.getFileName());
                            if (!Files.exists(dst)) {
                                System.out.println("Copying file " + dst);
                                Files.copy(src, dst);
                            } else if (Files.mismatch(src, dst) >= 0) {
                                System.out.println("Overwriting file " + dst);
                                Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
                            }
                        }
                    }
                }
                Читать дальше →
              • Средства консоли Chrome, которыми вы, возможно, никогда не пользовались

                • Translation
                Консоль инструментов разработчика Chrome — это, вероятно, одно из самых широко используемых и самых полезных специализированных средств браузера. Консоль даёт программисту множество интересных возможностей. Она помогает в отладке, профилировании и мониторинге кода страниц.



                Материал, перевод которого мы сегодня публикуем, посвящён рассказу о некоторых возможностях консоли Chrome, которые известны не так широко, как они того заслуживают.
                Читать дальше →
              • Какие английские слова IT-лексикона мы неправильно произносим чаще всего

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

                  Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
                  Читать дальше →
                • Service mesh для микросервисов. Часть I

                  • Translation
                  Перевод статьи подготовлен специально для студентов курса «Инфраструктурная платформа на основе Kubernetes».




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

                  Их выбор вполне оправдан, но лишь немногие рассказывают, что стоит за таким переходом. При должной реализации микросервисы решают множество проблем монолитной архитектуры: их легко итерировать и распределять по группам, а код без труда разбивается на управляемые компоненты. Однако в большинстве публикаций нет ни слова о последующей работе с микросервисами и инструментах, необходимых для их эффективного использования.
                  Читать дальше →
                • Опыт перевода Maven-проекта на Multi-Release Jar: уже можно, но ещё сложно

                    У меня есть маленькая библиотека StreamEx, которая расширяет возможности Java 8 Stream API. Библиотеку я традиционно собираю через Maven, и по большей части меня всё устраивает. Однако вот захотелось экспериментов.


                    Некоторые вещи в библиотеке должны работать по-разному в разных версиях Java. Самый яркий пример — новые методы Stream API вроде takeWhile, которые появились только в Java 9. Моя библиотека предоставляет реализацию этих методов и в Java 8, но когда расширяешь Stream API сам, попадаешь под некоторые ограничения, о которых я здесь умолчу. Хотелось бы, чтобы пользователи Java 9+ имели доступ к стандартной реализации.

                    Читать дальше →
                  • OWASP API Security Top 10 RC

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

                      Проект безопасности OWASP API Security Top 10 предназначен подчеркнуть потенциальные риски в небезопасных API и предложить меры снижения таких рисков.
                      Читать дальше →
                      • +37
                      • 6.2k
                      • 1
                    • Трезвый взгляд на Helm 2: «Вот такой, какой есть...»

                        Как и любое другое решение, Helm — пакетный менеджер для Kubernetes — имеет плюсы, минусы и область применения, поэтому при его использовании стоит правильно оценивать свои ожидания…


                        Мы используем Helm в своём арсенале инструментов непрерывного выката. На момент написания статьи в наших кластерах более тысячи приложений и примерно 4000 инсталляций этих приложений в различных вариациях. Периодически мы сталкиваемся с проблемами, но в целом довольны решением, не имеем простоев и потерь данных.

                        Основной мотив написания статьи — предоставить пользователю объективную оценку основных проблем Helm 2 без категорических заключений, а также желание поделиться опытом и нашими решениями.
                        Читать дальше →
                        • +34
                        • 6.4k
                        • 8
                      • Мониторинг postgres внутри Openshift

                        • Tutorial
                        Доброго времени суток жители Хабра!

                        Сегодня хочу рассказать вам, как нам очень хотелось мониторить postgres и еще пару сущностей внутри кластера OpenShift и как мы это сделали.

                        На входе имели:

                        • Openshift
                        • Helm
                        • Prometheus

                        Читать дальше →
                      • Обратное собеседование: какие вопросы задавать компании?

                        • Translation

                        Этот текст — перевод репозитория viraptor. Вы можете предложить свои вопросы на английском, в оригинальном репозитории, или на русском — в моём форке, а я постараюсь перевести их и передать автору


                        Обратное собеседование


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


                        Если вы задавали вопросы, которых нет в этом списке, отправьте пожалуйста пулл-реквест!

                        Читать дальше →
                      • werf — наш инструмент для CI/CD в Kubernetes (обзор и видео доклада)

                          27 мая в главном зале конференции DevOpsConf 2019, проходящей в рамках фестиваля РИТ++ 2019, в рамках секции «Непрерывная поставка», прозвучал доклад «werf — наш инструмент для CI/CD в Kubernetes». В нём рассказывается о тех проблемах и вызовах, с которыми сталкивается каждый при деплое в Kubernetes, а также о нюансах, которые могут быть заметны не сразу. Разбирая возможные пути решения, мы показываем, как это реализовано в Open Source-инструменте werf.

                          С момента выступления наша утилита (ранее известная как dapp) преодолела исторический рубеж в 1000 звёзд на GitHub — мы надеемся, что растущее сообщество её пользователей упростит жизнь многим DevOps-инженерам.



                          Итак, представляем видео с докладом (~47 минут, гораздо информативнее статьи) и основную выжимку из него в текстовом виде. Поехали!
                          Читать дальше →
                        • Принцип цикады и почему он важен для веб-дизайнеров

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

                          Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

                          Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
                          Читать дальше →
                        • Настройка параметров PostgreSQL для оптимизации производительности

                          • Translation
                          По умолчанию конфигурация PostgreSQL не настроена для рабочей нагрузки. Значения по умолчанию установлены для обеспечения работоспособности PostgreSQL везде с наименьшим количеством ресурсов. Имеются настройки по умолчанию для всех параметров базы данных. Главной обязанностью администратора базы данных или разработчика является настройка PostgreSQL в соответствии с нагрузкой их системы. В этом блоге мы изложим основные рекомендации по настройке параметров базы данных PostgreSQL для повышения производительности базы данных в соответствии с рабочей нагрузкой.

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

                          Тем не менее, параметры базы данных тоже очень важны, поэтому давайте посмотрим на восемь, которые имеют наибольший потенциал для повышения производительности
                          Читать дальше →
                        • Шпаргалки по безопасности: JWT



                            Многие приложения используют JSON Web Tokens (JWT), чтобы позволить клиенту идентифицировать себя для дальнейшего обмена информацией после аутентификации.

                            JSON Web Token – это открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON.
                            Читать дальше →