О логах

2020-08-08 • logs, logging, slf4j, sentry, golang, java, python

Логгирование. Журналирование. Логи. Журналы. Файлы логов. Вроде всё знакомо.

Почему вообще "log"? Это же «бревно». А "logging" — это "cutting down trees for logs".

Если верить вики-словарю, наш программистский "log" происходит от "logbook", то есть от судового журнала. Туда, в том числе, регулярно записывались показания лага, то есть "chip log". Типичный …


    Read...    

О каналах

2019-09-07 • Go, golang, chan, язык программирования

Как-то программировал я на Go. И понадобилось мне одну длинную операцию, которая включает в себя обращение к внешнему API и периодическую проверку готовности результатов, провести дважды. И подумал я, что эти две длинные операции нужно проводить параллельно, а потом собрать результаты. Параллельно в Go, это значит, нужно расчехлять горутины. Собирать …


    Read...    

О Go modules

2019-08-03 • Go, golang, язык программирования

Я тут как-то возмущался тем, как в Go принято жёстко помещать все необходимые исходники, включая и зависимости, в один $GOPATH/src. Так вот, в Go 1.11 (август 2018) появилась новая экспериментальная фича. А в Go 1.12 (февраль 2019) эта фича стала включенной постоянно. Называется эта фича «модули» ("modules …


    Read...    

Об ошибках

2019-06-30 • языки программирования, обработка ошибок, Go, golang, Java, C, Rust

В C всё просто, но непоследовательно. Обычно функции делают что-то сами по себе и возвращают указатель на структуру, которая является результатом работы.

FILE *fp;
if ((fp = fopen("test", "w")) == NULL) {
  printf("Cannot open file.\n");
  exit(1);
}
int *arr = malloc(sizeof(*arr));
if(arr == NULL)
{
  printf("Memory allocation failed");
  return …

    Read...    

О сертификатах

2019-03-08 • SSL, TLS, RSA, сертификат, CA, Nginx, OpenResty, Lua, Go, golang

Понадобилось нам по работе поиграть в Роскомнадзор. Сделать так, чтобы страница блокировки работала через HTTPS.

Тут нужна магия с сертификатами.

TLS/SSL сертификаты — это пара ключей. Асимметричной криптографии. И связанная с публичным ключом метаинформация: кто таков, для чего нужен, и тому подобное.

Приватный ключ присутствует на сервере, но никогда не …


    Read...    

О Go

2019-02-03 • Go, golang, язык программирования

Поковырялся я в Go. Который Golang от Google.

Подвернулся хипстерский стартаперский «legacy» проект, где «backend» был написан на Go. Так себе написан. Echo, конечно, неплохой веб фреймворк. Но он примерно как Flask. То есть маршруты, биндинги, JSONы, middleware и прочие веб прелести присутствуют. Для микросервисов вроде достаточно. Но это лишь …


    Read...