Имя докер машины в терминале

Некоторое время назад я начал использовать несколько удалённых машин для докера (с помощью docker-machine). И я подумал, что было бы неплохо видеть, к какой из машин я сейчас подключен. Так как я использую Powerline, проще всего было бы подключить сегмент с именем машины. Однако, ничего готового я не нашёл, поэтому пришлось сделать свой собственный.

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

Я всё ещё тут

Давненько я ничего не писал сюда. Точно не уверен почему, но, скорее всего, просто не было особо интересно. За это время накопилось несколько идей, которыми хочется поделиться. Однако, когда я посмотрел на старую тему оформления сайта, я решил сначала привести её в порядок.

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

Имитация GROUP BY с помощью awk

Недавно понадобилось вычислить средние значения для каждой из групп данных из буфера обмена. Чтобы не копировать данные в текстовый файл и не открывать Excel для этого, воспользовался утилитой awk.

Пример данных:

1
2
3
4
5
6
23100 1600
20500 1600
19400 1600
36900 512
43100 512
48000 512
1
2
3
4
5
6
7
8
9
$ # SUM
$ awk '{arr[$2]+=$1} END {for (i in arr) {print i, arr[i]}}'
512 128000
1600 63000
$ # AVG
$ awk '{arr_sum[$2]+=$1; arr_cnt[$2]+=1} END \
       {for (i in arr_sum) {print i, arr_sum[i]/arr_cnt[i]}}'
512 42666.7
1600 21000

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

О чём молчит MySQL

Тест:

1
2
3
4
5
6
7
8
CREATE TABLE test_int (
    u32 INT(10) UNSIGNED,
    i32 INT(10)
);

INSERT INTO test_int (u32, i32) VALUES(4294967295, 4294967295);

SELECT * FROM test_int;

Результат:

1
2
3
4
5
+------------+------------+
| u32        | i32        |
+------------+------------+
| 4294967295 | 2147483647 |
+------------+------------+

Как можно заметить, MySQL молча обрезает значение, если оно не помещается в назначенный столбцу тип.

PostgreSQL, например, выбрасывает следующую ошибку в подобном случае:

1
ERROR:  smallint out of range

Тест для PostgreSQL:

1
2
3
4
5
6
CREATE TABLE test_int (
    small smallint,
    medium integer
);

INSERT INTO test_int (small, medium) VALUES(4294967295, 4294967295);

😒

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