It's alive!
Блог запущен: https://systemout.blog/
Подписывайтесь на этот телеграм канал, где я буду публиковать анонсы новых статей в блоге, а также время от времени делиться ссылками на различные материалы, новости и технологии из мира IT, которые мне покажутся интересными.
Также доступна RSS-лента для отслеживания новых статей в блоге.
А про меня и про сам блог можно почитать в отдельном разделе: https://systemout.blog/about/
Всем добро пожаловать!
Блог запущен: https://systemout.blog/
Подписывайтесь на этот телеграм канал, где я буду публиковать анонсы новых статей в блоге, а также время от времени делиться ссылками на различные материалы, новости и технологии из мира IT, которые мне покажутся интересными.
Также доступна RSS-лента для отслеживания новых статей в блоге.
А про меня и про сам блог можно почитать в отдельном разделе: https://systemout.blog/about/
Всем добро пожаловать!
SystemOut.blog
IT блог
Блог про разработку, системную архитектуру, управление проектами и прочие темы из мира IT.
System Out – IT блог про всякое разное pinned «It's alive! Блог запущен: https://systemout.blog/ Подписывайтесь на этот телеграм канал, где я буду публиковать анонсы новых статей в блоге, а также время от времени делиться ссылками на различные материалы, новости и технологии из мира IT, которые мне покажутся…»
Vim – туда и обратно. Мой опыт использования Vim в качестве IDE.
Большая статья про то, как я попробовал сделать из консольного редактора Vim полноценную IDE, как разбирался в его настройках и плагинах и к чему в итоге пришёл.
#vim #VimAsIDE #commandline
Большая статья про то, как я попробовал сделать из консольного редактора Vim полноценную IDE, как разбирался в его настройках и плагинах и к чему в итоге пришёл.
#vim #VimAsIDE #commandline
SystemOut.blog
Vim – туда и обратно. Мой опыт использования Vim в качестве IDE.
Рассказ о том, как я использовал текстовый редактора Vim в качестве IDE для написания кода: почему решил попробовать, почему именно Vim, с чего начинал и к чему в итоге пришёл.
👍1
JAM stack или как перестать переусложнять разработку веб-сайтов
Если вы хотите разрабатывать производительные, легковесные и надёжные сайты с минимальной стоимостью поддержки и обслуживания, то обратите внимание на JAM stack – возможно это то, что вам нужно.
#WebDevelopment #JAMstack #SystemArchitecture
Если вы хотите разрабатывать производительные, легковесные и надёжные сайты с минимальной стоимостью поддержки и обслуживания, то обратите внимание на JAM stack – возможно это то, что вам нужно.
#WebDevelopment #JAMstack #SystemArchitecture
SystemOut.blog
JAM stack или как перестать переусложнять разработку веб-сайтов
Обзор технологии генерации сайтов под названием JAM Stack или SSG. Плюсы и минусы архитектуры веб-сайта, построенного на базе такого подхода.
👍1
💡Small Tip:
Если приложение работает с JWT (JSON Web Token), то обычно ему требуется JWT_SECRET для создания/проверки подписи по алгоритму:
Хорошая практика – выносить значение секрета в настройки приложения.
Но ещё лучше – добавить в приложение возможность ротации значений этого секрета, что уменьшит риск его утечки.
Для этого в настройки вместо одного значения выносим список пар ключ-значение:
где ключ – это дата, с которой начинает использоваться данный секрет для генерации новых подписей, а значение – само значение секрета.
При создании токена берём нужный секрет на текущую дату и кладём эту дату в заголовок в поле kid (Key ID).
При валидации берём из конфига нужное значение на основе значения kid.
Старые значения можно удалять из конфига, когда все выпущенные с ними токены проэкспарятся.
Таким образом ротация секретов будет бесшовной, не требуя инвалидации старых токенов после смены значений.
Если приложение работает с JWT (JSON Web Token), то обычно ему требуется JWT_SECRET для создания/проверки подписи по алгоритму:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
JWT_SECRET
)
Хорошая практика – выносить значение секрета в настройки приложения.
Но ещё лучше – добавить в приложение возможность ротации значений этого секрета, что уменьшит риск его утечки.
Для этого в настройки вместо одного значения выносим список пар ключ-значение:
"jwt_keys": {
"2024-01-15": "9PRJdoKCFBh/wezToNukI4BrvL2nqWLtllWBMILbj6Y=",
"2024-01-01": "3QxGq86nNBxlL74hv4iSktsj0+9vyGfDu1xeGg8q5BU=",
"2023-12-15": "RwZwIHhYG1AfoWcdb1LT6Pq5hMWvdaS9tuByWsX01XU=",
"2023-12-01": "LlceZPcwnnrJeDRGmPCEghtG3O777A23NmSsPrB1H94="
}
где ключ – это дата, с которой начинает использоваться данный секрет для генерации новых подписей, а значение – само значение секрета.
При создании токена берём нужный секрет на текущую дату и кладём эту дату в заголовок в поле kid (Key ID).
При валидации берём из конфига нужное значение на основе значения kid.
Старые значения можно удалять из конфига, когда все выпущенные с ними токены проэкспарятся.
Таким образом ротация секретов будет бесшовной, не требуя инвалидации старых токенов после смены значений.
Лежал на диване, играл в телефоне, как вдруг понял, что должен написать статью про то, как я борюсь с прокрастинацией:
https://systemout.blog/posts/how-i-deal-with-procrastination/
#SelfImprovement #Прокрастинация #Психология
https://systemout.blog/posts/how-i-deal-with-procrastination/
#SelfImprovement #Прокрастинация #Психология
SystemOut.blog
Как я борюсь с прокрастинацией
На протяжении уже многих лет я ищу и пробую различные способы, которые помогли бы мне заниматься любимыми делами, не погружаясь в болото прокрастинации. В статье я делюсь этими способами, возможно кому-то они тоже будут полезными.
🔥4👍2
🧜♀️ Открыл для себя потрясающий инструмент для рисования диаграмм и графиков – Mermaid:
https://mermaid.js.org/
Отличие от какого-нибудь draw io в том, что Mermaid предоставляет некоторый синтаксис для разных видов диаграмм, которым ты описываешь схему, а дальше рисунок генерируется за тебя.
Например, сиквенс диаграмму со схемой работы OAuth 2 можно описать так:
Выложил Gist с кодом двух диаграмм: со схемой работы OAuth из примера выше и со схемой работы с репозиторием по Gitflow.
Там же можно посмотреть рисунки, которые генерирует Mermaid.
Генерация происходит налету.
Поддерживается множество видов схем (см. документацию).
Бесплатный. Опенсорсный.
Есть онлайн редактор (правда, со странноватым дизайном).
Поддержка Mermaid есть в Github для markdown файлов.
Есть плагин для Obsidian.
Так как диаграммы представлены текстом, то они легко правятся/дополняются без необходимости сдвигать/выравнивать множество элементов на рисунке вручную.
Вдобавок эти изменения хорошо отслеживаются через diff, а не через метод пристального вглядывания в две версии рисунка.
Например, диаграмму по Gitflow я сделал в двух версиях: сначала без примера bugfix бранча, а затем с ним.
Для внесения этого изменения потребовалось заменить строку
на
и подправить ордеринг для feature веток.
Это заняло не больше двух минут. В случае с каким-нибудь Visio или draw io я бы потратил гораздо больше времени и нервов 🙂
https://mermaid.js.org/
Отличие от какого-нибудь draw io в том, что Mermaid предоставляет некоторый синтаксис для разных видов диаграмм, которым ты описываешь схему, а дальше рисунок генерируется за тебя.
Например, сиквенс диаграмму со схемой работы OAuth 2 можно описать так:
sequenceDiagram
participant Client as Client<br/>(Browser)
participant App as Application Server
participant Auth as OAuth Provider
Note over Client: Unauthenticated
Client->>App: Request Page
App->>Client: Redirect to Login Page
Client->>Auth: Request Login Page
Auth->>Client: Login Page
Client->>Auth: Submit Credentials
Auth->>Auth: Verify Credentials
Auth->>Client: Redirect to App with Auth Code
Client->>App: Request App with Auth Code
App->>Auth: Request Token for Client
Note over App, Auth: Request includes:<br/>App ID, App Secret, Auth Code
Auth->>Auth: Verify App ID + Secret, Auth code
Auth->>App: Token for Client
App->>Client: Token
Note over Client: Authenticated
Client->>App: Request Page with token
App->>App: Verify Token
App->>Client: Return Page
Выложил Gist с кодом двух диаграмм: со схемой работы OAuth из примера выше и со схемой работы с репозиторием по Gitflow.
Там же можно посмотреть рисунки, которые генерирует Mermaid.
Генерация происходит налету.
Поддерживается множество видов схем (см. документацию).
Бесплатный. Опенсорсный.
Есть онлайн редактор (правда, со странноватым дизайном).
Поддержка Mermaid есть в Github для markdown файлов.
Есть плагин для Obsidian.
Так как диаграммы представлены текстом, то они легко правятся/дополняются без необходимости сдвигать/выравнивать множество элементов на рисунке вручную.
Вдобавок эти изменения хорошо отслеживаются через diff, а не через метод пристального вглядывания в две версии рисунка.
Например, диаграмму по Gitflow я сделал в двух версиях: сначала без примера bugfix бранча, а затем с ним.
Для внесения этого изменения потребовалось заменить строку
commit id: "fix bug 2"
на
branch bugfix/bug-2 order: 4
commit id: "fix bug 2"
checkout release/0.2
merge bugfix/bug-2 id: "merge fix"
и подправить ордеринг для feature веток.
Это заняло не больше двух минут. В случае с каким-нибудь Visio или draw io я бы потратил гораздо больше времени и нервов 🙂
🔥4
Пятница – хороший день, чтобы поговорить о хобби.
https://systemout.blog/posts/about-my-homelab/
P.S. Кто помнит башорг и шутку про установку KDE на FreeBSD – ставьте 👍
#homelab #selfhosted
https://systemout.blog/posts/about-my-homelab/
P.S. Кто помнит башорг и шутку про установку KDE на FreeBSD – ставьте 👍
#homelab #selfhosted
SystemOut.blog
Зачем я завёл себе домашний сервер
В этой статье я рассказываю зачем решил завести себе сервер дома, какие приложения на нём можно развернуть и что нужно для минимального старта. Осторожно! После прочтения может тоже захотеться себе домашний сервер!
👍6
Раз уж даже Habr добавил тёмную тему спустя столько лет, то и мне надо не отставать.
SystemOut.blog – теперь и в тёмном цвете.
SystemOut.blog – теперь и в тёмном цвете.
🔥4