Записи

mkcert

При разработке в локальном окружении многие пренебрегают имитацией https и запускают свои сервисы по http.

Задача состоит в следующем:

  • Сервить траффик на локальной машине по https с валидным сертификатом;
  • Сделать так, чтобы это легко воспроизводилось не только у вас, но и у всех членов вашей команды.

Читать дальше →

dnsmasq

Когда-⁠то многие из нас занимались разработкой сайтов, и, чтобы локально разрабатывать и тестировать очередной проект, добавляли в /etc/hosts ещё одну запись примерно такого вида:

127.0.0.1       next-project.tld

Читать дальше →

http.DefaultClient

“1024 плети тому, кто использует http.DefaultClient в своём коде” — такая “шутка” звучит на наших стендапах. Проблема заключается в отсутствии таймаутов в настройках по умолчанию. На эту тему есть отличная статья в блоге Cloudflare1.

Читать дальше →

uber/fx + gRPC

В своих решениях я использую IoC-⁠контейнер fx1 от Uber. Существуют разные лагери сторонников и противников подобных решений, но мы сконцентрируемся именно на теме применения fx.

Если вы не знакомы с основами применения, я рекомендую выполнить официальный Quick Start2. Он поможет начать ориентироваться в решении.

Читать дальше →

Gitlab Subgroup + go get

Дано:

  • gitlab, скорее всего, развернутый во внутреннем контуре;
  • “перфекционизм”, требующий раскладывать всё “по папочкам”, или требование свыше;
  • внутренний пакет на Go, который необходимо устанавливать как зависимость.

Читать дальше →

Jetbrains Space + go get

Дано:

  • Вы используете Jetbrains Space1.
  • Вы пишите код на Go.
  • Вам необходимо создать общую библиотеку и подключать её как модуль в ваших внутренних проектах.

Читать дальше →

lima, colima, M1

По той или иной причине вы перешли с Docker Desktop на lima или colima и у вас макбук на M1.

По умолчанию lima и colima используют под капотом qemu. Чтобы получить ускорение в 1.5-2 раза 1, вам необходимо запускать машину с опциями виртуализации, заменяющими qemu на Virtualization.Framework2.

Читать дальше →

oasdiff

Дано:

  • Две версии одного приложения: A и B.
  • Обе версии предоставляют контракт, описанный с помощью OpenAPI.
  • У приложения есть пользователи, соблюдающие текущий контракт.

Задача:

  • Выяснить, имеются ли обратно несовместимые изменения в контракте новой версии.
  • Выяснить, какие дополнительные изменения произошли в контракте.

Читать дальше →

Golang Test Summary

Стандартные инструменты Go не позволяет вывести сводную информацию по тестам. Но, когда у вас большой проект, и надо понимать общую картину, такая информация бывает полезна. Допустим, вы обновляете ваш собственный форк до состояния апстрима, и вам необходимо оценить объем проблем, вызванных слиянием изменений.

Читать дальше →

APFS Case Sensitive

По умолчанию файловая система в macOS регистронезависимая. Это значит, что file.txt и FILE.txt для неё одно и то же. В некоторых, хоть и довольно редких ситуациях, при разработке и поддержке некоторых проектов может потребоваться регистрозависимость. Переформатировать диск и переустанавливать ОС — долгое и неблагодарное занятие. Вот как я решил эту проблему.

Читать дальше →