Mgitstatus

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

Можно написать небольшой однострочник на баше, который перебирает директории проектов и показывает статус каждого из них:

1
2
3
4
for project in development/projects/*;
do
    sh -c "cd $project; git status"
done

Это не совсем однострочник, но только для читаемости. Этот код можно оформить в виде функции или скрипта. Вот пример его исполнения:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        public/

nothing added to commit but untracked files present (use "git add" to track)
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: not a git repository (or any of the parent directories): .git

Лично мне сложно это воспринимать — слишком много лишней информации, не хватает цветов, и самое главное — не видно, о каком проекте идёт речь.

Этот код можно значительно улучшить. Или воспользоваться готовым решением, коих несколько, например: mgitstatus, этот скрипт или gr (который, в действительности, имеет гораздо больше возможностей, чем простое отображение статуса). Сейчас я пользуюсь первым. Вот пример его работы:

Выглядит гораздо лучше, не так ли?

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

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

Некоторое время назад я начал использовать несколько удалённых машин для докера (с помощью 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

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