Context в golang приложениях

Контекст в golang появился c версии 1.7 и был перенесен с пакета net/context. В дальнейшем другие пакеты начали его использовать например database/sql. Эта библиотека позволяет разрабатывать гибкие приложения, полезна в микросервисах для передачи контекста запроса и тп. В данной статье мы рассмотрим основные примеры использования и как не стоит использовать context. Как обычно статья несет только мнение автора, свой примеры и опыт использования вы можете оставить в комментариях.

Кэширование в golang приложении

Существует несколько уровней кэша в приложении. Например кэширование на уровне http с помощью заголовков или кэширование в proxy например varnish или на уровне приложения - memcache, redis, lru или низкоуровневое кэширование на уровне операционной системы. В данной статье мы рассмотрим кэширование на уровне приложения в памяти, или отдельных key-value хранилищах.

Локализация golang приложения

Для большинства web приложений требуется локализация, но не стоит забывать о правилах языка. Например не правильно будет просто использовать ключ и подставлять выражение в зависимости от языка, тогда получится что-то вида у вас осталось 5 минут(а/ы). Для того чтобы описать такие правила можно использовать свой формат как это было раньше в symfony/translate или использовать icu формат. Для других языков есть готовые решение например icu4c.

Разворачивание golang приложения с помощью gitlab-ci и docker swarm

У меня есть несколько своих проектов, которые соответственно приходится самому поддерживать разворачивать и тп, к примеру данный блог и другие простые проекты. Когда я использовал symfony и php, развернуть можно просто с помощью capifony, даже не зная Ruby. В связи с тем что я решил перейти на golang то данные инструменты не совсем подходят. Почему не использовать к примеру в проектах тот же php, чаще быстрее разрабатывать на том что используешь в работе. Для начала решил попробовать обычный способ с помощью docker swarm и gitlab ci, есть конечно решения с heroku, но я пока решил использовать vps например vscale. K8s для маленьких проектов возможно будет излишним.

Введение в go mod

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

Объединение строк в golang

Одной из частых операций может оказаться объединения(concatenation) строк, есть много библиотек для решения задач, мы рассмотрим несколько самых распространенных примеров.

Подача документов на рабочую визу в Гонконге

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

Docker установка и настройка

При разработке используется множество технологий. К примеру данный блог использует php(Symfony 2), mongodb, elastic, nginx это основные но также используется nodejs к примеру для минификации css, js. При разработке приходится настраивать все технологии как показано в статье. Но что делать если проектов несколько или они используют разные технологии, например другой проект использует MySQL, или еще могут использовать разные версии php или других библиотек. Для разработки и поддержки проектов на разных технологиях можно использовать Виртуальную машину и поставить на нее к примеру centos, но это не совсем удобно, надо все равно настраивать подобное окружение как на сервере и на других машинах разработчиков. Мы будет использовать контейнеры, такие как Docker. Настроем блог разработчиков чтобы использовать Docker для разработки.