Docker: работа с контейнерами

Ранее мы рассматривали процесс установки Docker в операционной системе Ubuntu 16.04 и для проверки работоспособности запускали тестовый контейнер hello-world — это был очень простой пример контейнера, который запускался, выводил сообщение на экран и завершал работу. Как правило, контейнеры выполняют более полезные действия, ведь они очень похожи на виртуальные машины (но […]

Breaking down monoliths: blue-green microservice deployments with Traefik

When downtime is not acceptable, experts start speaking about zero downtime deployment strategies, for example blue-green deployment, sometimes referred to as A/B deployment. The main idea behind blue-green deployment is that you have some kind of load balancer, and behind that a live system that we refer to as “green” […]

Почему ООП — это плохо

Это перевод статьи Джо Армстронга Why OO Sucks, повествование ведётся от имени автора оригинальной публикации. Когда я впервые познакомился с объектно-ориентированным программированием (ООП), мне не понравилась эта идея. Не знаю, почему именно — просто почувствовал, что здесь что-то не так. После появления ООП эта парадигма стала очень популярной, а её […]

Why can’t I delete a layer in my private docker registry(v2)?

You have to add the parameter delete: enabled: true in /etc/docker/registry/config.yml make it look like that : version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry delete: enabled: true http: addr: :5000 take a look here for more details Or by adding an environment var to […]

Очистка места в private docker-registry

Не так давно обнаружились проблемы с очисткой места, которое занимают собранные docker-образы в настроенном нами docker-registry — давайте разберемся! Выяснилось, что в веб-интерфейсе Gitlab на вкладке Registry при нажатии на кнопку «удалить» на самом деле происходит удаление только тэга образа, а сами данные никуда не деваются и продолжают занимать место […]

Dancing with Go’s Mutexes

Reader-level: Intermediate — this article assumes you have some basic familiarity with Go and its concurrency model and are at least a little familiar with data synchronization in the form of locking and channel communication. Reader Note: A dear friend of mine has inspired this post. As I’ve helped him troubleshoot some […]

[Golang] Anonymous Function in Defer Statement

TL;DR: Syntax for using anonymous function in Go defer statement defer func() { // do something here after surrounding function returns }() Explanation I want to execute c <- 1 right after surrounding function returns. In the beginning I thought it was easy to do this with defer, so I […]

Разбираемся с новым sync.Map в Go 1.9

Одним из нововведений в Go 1.9 было добавление в стандартную библиотеку нового типа sync.Map, и если вы ещё не разобрались что это и для чего он нужен, то эта статья для вас. Для тех, кому интересен только вывод, TL;DR: если у вас высоконагруженная (и 100нс решают) система с большим количеством […]

Что такое customer development и зачем он нужен тебе, стартапер

А теперь вот прям совсем по сабжу. Customer development – методология ведения бизнеса, выросшая из методологии Agile. Основной принцип: бизнес может и должен строиться вокруг решения проблемы потенциального клиента, либо создания ценностного предложения, которое так или иначе улучшит жизнь потенциального клиента. Если сказать проще, то предприниматель сначала должен выявить проблему […]

How get multiselect values from form using Golang?

You can’t/shouldn’t use the Request.FormValue() function because that only returns 1 value. Use Request.Form[«new_data»] which is a slice of strings containing all the values.But note that if you don’t call r.FormValue(), you have to trigger parsing the form (and populating the Request.Form map) by calling Request.ParseForm() explicitly. You also have […]