Когда я начал работу с Kubernetes, и Infrastructure as Code (IaC), я быстро понял, что мне нужно решение для работы с секретами. Когда я поискал в интернете, то не увидел единого мнения по поводу практического подхода к проблеме, подходящего ко всем ситуациям. Поэтому, в этом году, я поставил себе задачу изучить, какие решения для управления секретами приложения и инфраструктуры существуют, решить, которое из них я считаю лучшим и освоить его. В конце исследования, я пришел к выводу, что HashiCorp Vault перехвален, а Mozilla SOPS с KMS и Git неоправданно недооценены.
User
Как я древо семьи строил
В ноябре 2018 года меня вновь посетила идея создания древа моей семьи. Особенно на это подтолкнула оцифровка архивов Великой Отечественной Войны, в которой я нашел своих предков. До этого я несколько раз пытался записать всё на бумаге (и каждый раз всё терял). Но в этот раз подумал, что нужно подойти к задаче основательно. Я провёл некоторые исследования и решил, что мне нужен свой велосипед. В конце концов я создал минимальный прототип удовлетворяющий моим требованиям, а также сделал несколько выводов. С проделанной работой предлагаю ознакомится и вам.
Прекращайте оправдываться
Привет, человек, %хабраюзер%, %юзернейм%, программист.
Этот пост является оплотом ненависти. Так уж вышло. Но тебе, как программисту пора перестать оправдываться.
Как из браузера открыть папку в проводнике Windows
К сожалению, сделать это «в лоб» не получится. Во-первых, браузеры умеют открывать только веб-страницы, а не программы на компьютере. Во-вторых, политика безопасности браузеров запрещает доступ ко всему, что явно не разрешено, тем более, доступ к файловой системе.
Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:
1) он не может отобразить список файлов в папке;
2) такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.
Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Windows и потребует некоторых (очень простых) действий на компьютере.
История нигерийского разработчика: от программирования на кнопочном телефоне к работе в стартапе МТИ
Все началось с того, что мне стало любопытно, как делаются сайты. Я с детства проводил много времени в Сети — мне очень нравилось качать игры и читать статьи на Society Of Robots. Я неделями откладывал деньги, чтобы купить интернет-пакет с 10 мегабайтами трафика за 100 найр (0.28 $); в 2012-м их можно было растянуть на месяц.
Первый шаг, который я предпринял, был простым: я забил запрос «как сделать сайт» в Google и получил миллионы результатов. Не зная, что выбрать, я кликнул на первую попавшуюся ссылку — это оказался ресурс W3CSchools. В статье объяснялось, что мне нужно будет сначала выучить кое-какие языки (HTML и CSS). Убедившись, что другие источники подтверждают эту информацию, я записался на курс HTML и CSS от W3CSchools.
Знакомимся с Javassist
Всем большой привет! Перед началом стоит сказать, что библиотека Javassist довольно мощный инструмент, так как стирает почти все границы у того безграничного языка JAVA, позволяя разработчику осуществлять манипуляции связанные с байткодом.
Конечно, получив доступ к байткоду, а ровно и к возможности воздействовать на этот самый байткод вам совсем не обязательно вклиниваться в него. Javassist можно использовать и в “мирных” целях!
При многообразии возможностей не стоит забывать о том, что использовать библиотеку нужно только тогда, когда это действительно необходимо. Использование данного инструмента делает основной код менее понятным, так как после применения Javassist у вас появится второе полноценное приложение, в котором будет жить Java со своей логикой.
Итак, если после всех предостережений вы все же решили использовать эту библиотеку, то давайте начинать!
В этой статье мы рассмотрим Javassist, как инструмент, с помощью которого мы будем вклиниваться в существующий байткод и трансформировать его.
Потребоваться это может в разных случаях. Например, у вас под рукой есть некая библиотека, в которой все классы уже скомпилированы и все зависимости вместе с запускающим методом упакованы в JAR архив. И вот, случилось так, что по какой-то причине вам нужно изменить реализацию того или иного метода. Предположим, вы нашли баг в библиотеке, или возможно требуется, чтобы были выполнены какие-нибудь дополнительные действия, в виде подсчета чего-нибудь, отправки оповещения о том или ином событии при старте вашего приложения и при определенных условиях.
Как и говорилось выше, после использования Javassist у вас появится второе полноценное приложение, в котором будет жить Java со своей логикой. Почему это происходит? Почему нельзя запаковать все в одно приложение?
Ответ очевиден – приложение не может само себя изменять. Т.е. приложение не может само изменять свой же байткод. Это должен делать кто-то другой. Этот кто-то другой – такое же Java приложение, но заточенное на работу с байткодом.
Easy Hack: Java application
- Сложный протокол общения между сервером и клиентом. Чтобы отправлять произвольные запросы – патчим;
- Захардкожены настройки. Чтобы поменять – патчим;
- Для демонстрации последствий проблем типа «race condition» – патчим.
Конечно, в каждом случае можно решить проблему, не прибегая к модификации приложения. Но зачастую это самый простой и быстрый способ добиться необходимого результата. В этой статье мы расскажем, как легко и быстро изменить функционал в приложении на Java.
Динамическое генерирование прокси-классов в Java
Наверно каждому java разработчику рано или поздно потребуется использовать прокси-классы.
Под катом представлены простые примеры, выполненные при помощи JDK proxy, cglib, javassist и byte buddy.
angular-ngrx-data — state management и CRUD за пять минут
На сегодняшний день ни одно большое SPA приложение не обходится без state management (управления состоянием). Для Angular по данному направлению есть несколько решений. Самым популярным из них является NgRx. Он реализует Redux паттерн с использованием библиотеки RxJs и обладает хорошим инструментарием.
В данной статье мы кратко пройдемся по основным модулям NgRx и более детально сосредоточимся на библиотеке angular-ngrx-data, которая позволяет сделать полноценный CRUD со state management за пять минут.
Telegram-бот в качестве подарка
Telegram-бот для управления инфраструктурой
По мотивам статьи Телеграмм-бот для системного администратора (статья не моя, я только прочитал) захотел поделиться опытом создания Telegram-бота на PowerShell для управления серверами приложений. Будет текст, код и немножко картинок. Конструктивная критика приветствуется ( главное чтобы не звучало «зачем на PowerShell? Надо было на perl» ).
Думаю что статья больше подойдет «новичкам» в PowerShell, но и опытные администраторы могут что-то полезное здесь увидеть.
Саму статью старался построить по частям – от простого к сложному. Возможно, встретится плагиат, будьте бдительны!
Итак, у нас есть необходимость осуществлять управление сервисами или приложениями на нескольких серверах (останавливать, запускать), перезагружать сервера, смотреть логи и еще какую-то информацию при необходимости. Всё это хочется делать (на самом деле нет), находясь в метро, в магазине или даже лёжа на диване, без VPN и ноутбуков. Из требований (которые были написаны, конечно, на коленке).
- Простота добавления/изменения задач в Telegram-бот
- Многозадачность или параллелизация
- «Понятный» интерфейс управления
- Хоть какая-то безопасность
Снимаем колёса и он в домике
Есть в Челябинске сетевая шиномонтажка, на каждом углу стоят их маленькие ларёчки. Они выдумали хитрый способ увеличения продаж. В сезон шиномонтажа, особенно осенью, они нанимают кучу бомжей и алкашей.
Получается примерно такая структура в каждом ларьке: управляющий, нормальный шиномонтажник, и куча бомжей. Управляющий занимается оплатой и организацией труда, с клиентами разговаривает, спорные ситуации разруливает. Шиномонтажник делает всю сложную работу – балансировку, перебортовку, контроль момента закручивания гаек и т.д.
А бомжи тупо снимают и ставят колёса. И, вроде, еще умеют их в мойку засовывать.
Схема простая. Приезжает человек переобуться, без предварительной записи. Видит – уже много машин стоит, и все вроде в работе. Расстраивается – придется развернуться и уехать, искать дальше… Но не тут-то было – подбегает управляющий, говорит – рады вас видеть, то сё, ща переобуем. Гена, Коля, тащите домкрат, обслуживайте клиента!
Подбегают бомжи и снимают одно или два колеса. Ну и всё, клиент в домике.
Как написать FizzBuzz на собеседовании
Здравствуй, Хабр.
Недавно я проходил собеседование в одну солидную айтишную контору. Когда мы разобрались с формальностями, начался технический этап, на котором мне поручили написать fizzbuzz. По не вполне понятным мне причинам обсуждение решения этой задачи растянулось на довольно большой срок, после которого время на интервью уже вышло. Мы расстались на хорошей ноте, и мне пообещали перезвонить. Пока я жду оффер, я решил поделиться своим опытом прохождения интервью с широкой публикой, равно как и своим решением, ибо они показались мне заслуживающим внимания.
Компьютеры, какими я их любил
Я много лет боролся с проблемой синхронизации файлов. В самом начале Dropbox был отличным сервисом, но в последние несколько лет они начали разрастаться. Я перешел на iCloud, но это было еще хуже. Наконец, несколько дней назад, после того, как iCloud снова загадочно сломался, я решил, что пора попробовать что-то другое.
Я попробовал Syncthing, бесплатную альтернативу с открытым исходным кодом. И знаете, что? Это стало освобождением. Разумность, простота, надежность, различные функции. Это приносит радость от использования и заставляет поверить в то, что распад цивилизации можно немного замедлить.
Синхронизация — это все, что я любил в компьютерах.
Удивительно, насколько замечательными могут быть продукты, созданные для компьютеров, когда их производителям не нужно заниматься корпоративной ерундой, не нужно продвигать бренд или продавать его пользователям. Честно говоря, я почти перестал верить, что это все еще возможно. Но это возможно.
Кратко об OData
Протокол OData (или Open Data Protocol) не часто встречается на практике. Чаще мы видим собственные решения по поводу проектирования RESTful API и тратим на это много времени. Но за долгое время существования REST, уже были собраны лучшие практики, которые слились в OData. На просторах интернета не много ресурсов для изучения. Давайте исправим это. В этой статье приведены основные варианты использования OData с примерами.
Баллада о долгоживущем софте
С железками это сделать трудно, зато можно с программами. Уже более четверти века я занимаюсь развлечением под условным названием «переустановка Windows». В последнее время чаще я устанавливаю ОС либо на новый ПК, либо на один из своих ретроэкспонатов. Как у многих из вас, у меня есть список софта, который при каждой такой операции устанавливается в первую очередь. Некоторые из этих программ я регулярно устанавливаю, и пользуюсь ими лет 15 или даже больше. Все это время создатели обновляют и развивают их, это не заброшенные проекты. В этой статье я хочу отдать должное этим разработчикам-долгожителям в субъективном хит-параде древнего, но актуального софта.
Учебник по Spring Boot Admin
Контролируйте и управляйте своими приложениями Spring Boot с помощью приятного пользовательского интерфейса поверх конечных точек Spring Boot Actuator.
Spring Boot Actuator
Actuator — это модуль Spring Boot, который добавляет конечные точки (endpoint) REST / JMX в ваше приложение, чтобы вы могли легко отслеживать и управлять им в производственной среде. Конечные точки предлагают проверку работоспособности, мониторинг метрик, доступ к журналам, дампам потоков, дампам кучи, информации об окружающей среде и многое другое. Автор подробно рассказал об Actuator в следующей статье:
Actuator: Spring Boot Production Monitoring and Management
Мониторинг и управление вашим работающим приложением с помощью Spring Boot Actuator 2.x. Соберите метрики или проверьте здоровье приложения.
Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов
В современном языке Java паттерн Посетитель (Visitor) уже не нужен. Он отлично компенсируется использованием запечатанных типов и переключателей, использующих сопоставление с шаблоном – в таком случае те же цели достигаются проще и меньшим объемом кода.
Всякий раз, оказываясь в ситуации, где мог бы применяться паттерн Посетитель, подумайте, не воспользоваться ли вместо него более современными возможностями языка Java. Разумеется, эти возможности могут использоваться и в других обстоятельствах, но в этой статье мы обсудим сравнительно узкую тему: чем заменить паттерн Посетитель. Для этого я начну с максимально краткого введения и приведу пример, а затем объясню, как достичь тех же целей более простым (и кратким) кодом.
Руководство по Java 8 Optional
В этом учебном пособии мы рассмотрим класс Optional
, который был представлен в Java 8.
Цель класса — предоставить решение на уровне типа для представления опциональных значений вместо null
(нулевых) ссылок.
Для более глубокого понимания того, почему мы должны обратить внимание на класс Optional
, ознакомьтесь с официальной статьей Oracle.
Баг с псионическими сигнатурами в Java
Оказывается, некоторые новые релизы Java тоже были подвержены подобному трюку в реализации широко используемых сигнатур ECDSA. Если запустить одну из уязвимых версий, то нападающий легко сможет подделать некоторые типы сертификатов SSL и handshake (что позволяет вмешиваться в обмен данными и модифицировать их), подписанные JWT, декларации SAML или id-токены OIDC и даже сообщения аутентификации WebAuthn. И для всего этого достаточно цифрового аналога чистого листа бумаги.
Information
- Rating
- Does not participate
- Location
- Польша
- Date of birth
- Registered
- Activity