Introduction In the modern digital landscape, a robust password management strategy is non-negotiable. While cloud-based solutions (like 1Password or LastPass) are popular, they require trusting a third party with your most sensitive data. KeePassXC offers a powerful, open-source, offline-first alternative where you hold the keys. It uses a files with the .kdbx extension - the gold standard for…
The Introduction Imagine a GPS that finds the shortest route by sequential checking every single intersection, road by road, in all directions. That’s essentially how Dijkstra’s algorithm works. It’s guaranteed to find the absolute shortest path, but it does so without any sense of direction. For small maps, this is no big deal. But for large, complex environments, this…
The Introduction Ever heard of an algorithm that finds the shortest path in near-linear time, blowing past the classics? That’s the magic of Ran Duan’s algorithm . But to understand its genius, we first need to master its ancestor: the humble, yet incredibly robust, Bellman-Ford algorithm. In our last discussion on Dijkstra’s algorithm, we saw a fast solution to the shortest path…
Unraveling the Hype Behind Shortest Path Algorithms Welcome to the first in a series of articles on a classic computer science problem: finding the shortest path. This challenge is the engine behind GPS navigation, network routing, and even finding connections in social networks. Recently, there’s been a buzz about a groundbreaking solution by Ran Duan, which promises near-linear time…
Suppose you have a Keycloak instance that was configured manually. But how to properly manage changes? Validate that all configuration was properly deployed through all environments? You could rely on manual, visual comparisons of the UI, but there’s a better way. It’s possible to switch from manual “ClickOps” to an automated “GitOps” workflow in a…
Reverse Proxy and Keycloak Configuration When deploying a Keycloak behind a reverse proxy, it’s crucial to understand a relationship between Keycloak’s configuration arguments and an underlying reverse proxy concepts. Based on your security requirements, you must choose between SSL termination and TLS passthrough, and configure a session affinity accordingly in your reverse proxy.…
Как можно отделить юнит тесты от механизма Dependency Injection? В этой статье описывается паттерн юнит тестов (unit test), называемый автомок (Auto-mocking Container). Его можно использовать для устранения проблемы хрупких тестов (Fragile Test), которые так часто происходят при создании тестируемой системы (system under tests - SUT) при помощи антипаттерна Мать объекта . На этот вопрос отвечает…
Правило молчания, также упоминается как молчание золото - правило являющееся важной частью философии Unix, которая гласит, если у программы нет имеет ничего удивительно-интересного или полезного что-бы она могла сказать, то лучше ей вообще ничего не говорить. Это означает, что хорошие программы должны относиться к концентрации и вниманию своих пользователей как ценным ресурсам и соответственно…
Как вы помните из поста о контексте синхронизации есть такие типы ресурсов, которые доступны исключительно в контексте одного потока. Для работы с такими ресурсами в асинхронном коде, нужно явным образом указывать, что продолжать выполнятся на нужно именно в том потоке который владеет этим ресурсом. Непонимая этого можно перейти на новый концепт программирования как ниже на картинке. Вспомним…
При работе в проектах связанными с ui-control или asp.net часто приходится работать с ресурсами доступными в локальном хранилище потока (thread-local storage TLS). К слову: такое поведение можно задать при помощи аттрибута [ThreadStatic] или класса ThreadLocal<T> . При обращении к ним из другого потока платформа dotnet выбросит исключение System.InvalidOperationException с текстом ‘The…
Предисловие переводчика: Уже не помню, что сподвигло меня заинтересоваться этим паттерном, скорее всего в какой-то момент мне пришлось столкнуться с javascript библиотекой redux-saga . Знакомство началось с описания паттерна от Bernd Rücker и прекрасной презентации Caitie McCaffrey. После ознакомления с этими материалами у меня всё ещё оставались вопросы. Очень хотелось увидеть этот код “в живую”…
Данный текст явлется переводом. Оригинал по ссылке Если вы не знакомы с ветвлением и слиянием веток, предлагаю вам отличную HOWTO Control Source Eric Sink’s . Я предпочитаю модель бранчевания “ релизная ветка ” ( примечание переводчика : подходы к ветвлению указанные по ссылкам немного устарели. По-моему, стоит уделить внимание более современных подходам git-flow , github-flow и gitlab-flow , но…
Заметка которая начиналась как короткий брейн-дамп обратилась в длинную серию статей и во многом благодаря обратной связи и вашим вопросам. В этой публикации я хочу раскрыть некоторые из моих мыслей о контроле изменений объектов, таких как базы данных, вьюшки, хранимые процедуры, функций и триггеры. Но сначала… На самом деле я уже не использую триггеры на протяжении нескольких лет. Это не…
В продолжение предыдущей публикации - три правила для работы с базой данных я хотел бы показать, по-моему, хорошо работающий способ версионирования базы данных. Предостережения В качестве предисловия я должен сказать, что есть много работающих стратегий версионирования баз данных. Я не предлагаю единый и истинно верный вариант. Моя цель состоит в том, чтобы выкатить изменения базы данных в…
После рассмотрения трёх правил и создания базиса , вся команда может работать с базой данных, базис которой безопасно расположен в репозитории контроля версий. Наступит день когда команде предстоит изменить схему. Каждое изменение приводит к новой версии базы данных. В моем подходе, скрипты базиса создали таблицу журнала изменений БД, чтобы отслеживать эти изменения. Под термином “изменение”, я…
Одни разработчики любят работать с реляционными базами данных, а другие же не могут себя заставить даже прикоснуться к ним. В любом случае, если ваше приложение использует базу данных, вы должны относиться к базе данных с некоторым уважением. База данных является такой же частью приложения, как код и модели внутри программного обеспечения. Вот три правила, которым я научился придерживаться на…
Git располагает широким ассортиментом вариантов делится изменениями без отправления этих изменений на origin . Одним из самых распространённых решений такой проблемы являются патчи. Их легко получить и применить на одном компьютере. Но что делать если на другом компьютере не применяется патч, не переносить же изменения руками? Что-бы понять в чём дело можно включить болтливый режим при помощи…
Представте, что случилась такая ситуация, когда пулл реквест из фиче-бранча оказался немного бажным, но ревьюверы уже приняли его и вмёржили в общий девелоп. Ситуация очень неприятная, особенно если фиче-бранч ВАШ а тесты данную ситауцию почему-то сразу не раскрыли. Фактически, вы заблокировали работу всей команде или того хуже всего проекта с несколькими командами. Как на зло на исправление…
Программирование бесконечно разнообразное. С одной стороны это наука структурного мышления. С другой - искусство красноречивого выражения. Она учит вас быть смиренным, когда вы смотрите на увлекательную работу других людей. Больше всего она учит вас многому о себе. И хоть синтаксис может меняться в зависимости от языка программирования, концепт всегда остаётся неизменным. Если вы еще не уверены,…
Привет всем посетителям моего блога. Меня зовут Владимир Ляшенко и я ДотНет разработчик - вот мой LinkedIn. К тому же я немного питоно-дел, немного фронтендщик и совсем чуть-чуть блоговод. Главной целью этого блога - разобраться и сохранить мыслепоток в структурированном виде, по интересующим меня вопросам в разных направлениях. Весь материал я постараюсь держать в удобоваримом формате ещё и на…
TOC Автор книги Пол Зейн Пилцер достоин внимания своими заслугами как на поприще бизнес деяний - основатель 7ми компаний, как минимум одну из которых вывел на IPO и продал за 435 миллионов USD, так и на литературном поприще. Об этом эссе (которое почему-то называют книгой, если найдёте что-то большее поделитесь ссылочкой) в одном абзеце: В книге описываются механизмы формирования экономики сквозь…