Мини заметки — выпуск 18
16 июня 2014
Мини заметок не было уже более трех месяцев. Настало время исправить эту вопиющую несправедливость. Сегодня мы выясним, как посмотреть текущую позицию в WAL PostgreSQL и узнать, сколько места подо что использует эта СУБД, потюним Terminal в Ubuntu Linux, напишем очередной, на этот раз почти удобный, аналог clip2net, и не только. Предыдущие выпуски: семнадцатый, шестнадцатый, пятнадцатый, четырнадцатый.
1. Небольшой тюнинг CSS у Terminal в Ubuntu
После покупки очередного ноутбука и установки на него Ubuntu 14.04, я решил остаться под Unity и посмотреть, что из этого выйдет. В общем и целом я остался вполне всем доволен, если не считать пары косяков в Terminal. Во-первых, оказалось, что при открытии в нем нескольких вкладок вокруг окна появляется такой мерзкий белый бордюр. Во-вторых, выяснилось, что цвет текущей вкладки почти ничем не отличается от цвета прочих, неактивных, вкладок.
Однако решить эти проблемы оказалось на удивление просто. Открываем файл ~/.config/gtk-3.0/gtk.css и пишем туда:
padding: 0;
border-width: 0;
}
TerminalWindow,
TerminalWindow.background {
background-image: none;
background-color: #6e6e6e;
color: #000000;
}
TerminalWindow .notebook tab {
padding: 0;
border-image: none;
border-width: 0;
background-color: #6e6e6e;
}
TerminalWindow .notebook tab:active {
padding: 0;
border-image: none;
border-width: 0;
background-color: #d1d1d1;
}
Закрываем все окна Terminal и открываем снова. Белый бордюр больше не появляется, а ошибиться с тем, какая из вкладок является текущей, становится очень непросто.
2. Как в Maven прописать репозитории компании
Создаем файл ~/.m2/settings.xml примерно следующего содержания:
<mirrors>
<mirror>
<mirrorOf>central</mirrorOf>
<url>http://nexus.example.com/content/groups/public</url>
<id>example-public</id>
</mirror>
<!-- ... other mirrors ... -->
</mirrors>
</settings>
К сожалению, если репозитории доступны только внутри VPN, вам придется быть онлайн и подключать этот самый VPN даже при сборке проектов, которым эти корпоративные репозитории и не нужны. Похоже, что эта проблема решается только путем временного переименования settings.xml в settings.xml.backup. Интересно, а есть ли какие-то плагины, позволяющие хранить все эти настройки в pom.xml проекта?
3. API «поделиться ссылкой» популярных соц сетей
Если вы хотите разметить на своем сайте красивые кнопочки социальных сетей, которые не будет резать Adblock Plus, то вам пригодится следующие URL-ы:
https://vk.com/share.php?url=http://eax.me/&title=aaa&description=bbb
https://www.facebook.com/sharer/sharer.php?u=http://eax.me/
https://plus.google.com/share?url=http://eax.me/
Если вас интересуют другие социальные сети, то URL-ы для них можно надергать из кода, который гененрирует share42.com.
4. Как получить текущее смещение в WAL PostgreSQL
Это можно сделать таким образом:
pg_current_xlog_location
--------------------------
1A/5828E6F8
(1 row)
Сей прием можно использовать для разных прикольных вещей. Например, у нас настроена асинхронная репликация. Пишем на мастер, получаем смещение WAL, ждем, когда смещение станет таким же или больше на реплике. Когда данные доехали до реплики, мы точно знаем, что они сохранены как минимум на двух серверах. В итоге получается что-то типа chain replication.
5. Сколько места на диске и под что использует PostgreSQL
Размер базы данных:
Полный размер таблицы:
Размер таблицы без индексов:
Найти самые большие таблицы/индексы:
Если производительность вашего приложения резко просела из-за того, что данные перестали умещаться в память, найдите самые большие таблицы. Посмотрите, нельзя ли, например, заархивировать часть данных из этих таблиц.
6. Использование HJKL вместо стрелочек в Zsh
Чтобы в Zsh при выборе варианта автокомплита и так далее вместо стрелочек использовать те же клавиши, что вы используете в Vim, пропишите в ваш .zshrc следующее:
bindkey "^J" down-line-or-history
bindkey "^K" up-line-or-history
bindkey "^L" forward-char
zmodload zsh/complist
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
… а затем скажите source ~/.zshrc
.
7. Скрипты для загрузки в интернеты скриншотов и текста
Моя очередная вариация на тему «как сделать clip2net из говна и палок».
Файл ~/bin/clipaste:
URL=`xclip -selection c -o | pastebinit`
echo $URL | xclip -selection c
notify-send "ClipPaste" "Uploaded to $URL" -i www-browser
Файл ~/bin/screepaste:
FNAME=`date +%s`
scrot /tmp/$FNAME.png
mtpaint /tmp/$FNAME.png
URL=`yfrog-upload /tmp/$FNAME.png | grep imageshack.us | cut -f 2`
echo $URL | xclip -selection c
notify-send "ScreePaste" "Uploaded to $URL" -i www-browser
Как несложно догадаться по названиям скриптов, первый скрипт заливает в эти ваши интернеты содержимое буфера обмена, а второй делает скриншот экрана, который перед заливкой открывается в графическом редакторе mtpaint. Скрипт yfrog-upload можно найти в седьмом выпуске мини заметок. Утилиты xclip, mtpaint, scrot и pastebinit ставятся из быбунтовских репозиториев. При желании скрипты можно повесить на какие-нибудь хоткеи.
Кстати, clipaste можно использовать в качестве удлинителя твитов.
8. Как в Ubuntu отключить тачпад
Тачпад может мешаться при наборе текста, так как случайные касания тачпада переносят курсор куда-то в середину текста. Если вдруг у вас автоматически не подрубилась кнопки для включения и отключения тачпада, можно настроить их следующим образом.
Говорим:
Находим id тачпада. У меня он оказался 13. Затем говорим:
Чтобы снова включить тачпад, заменяем 0 на 1. Затем фигачим скрипты touchon и touchoff.
9. Смена яркости экрана в Ubuntu 13.10
После обновления до Ubuntu 13.10 у меня сломались регулировка яркости экрана. Для этого использовалась утилита xbacklight, повешенная на определенные хоткеи в конфиге i3. Для решения этой проблемы был написан следующий скрипт:
use strict;
use warnings;
my $PRFX = "/sys/class/backlight/intel_backlight";
my $inc = shift || die "Usage: $0 <percent_increment>";
my $max_brightness = `cat $PRFX/max_brightness`;
chomp $max_brightness;
my $curr_brightness = `cat $PRFX/brightness`;
chomp $curr_brightness;
my $one_percent = int($max_brightness / 100);
my $min_brightness = int(10 * $one_percent);
my $new_brightness = int($curr_brightness + $inc*$one_percent);
if( $new_brightness < $min_brightness ) {
$new_brightness = $min_brightness;
} elsif( $new_brightness > $max_brightness ) {
$new_brightness = $max_brightness;
}
warn "curr = $curr_brightness, max = $max_brightness, min = $min_brightness, inc = $inc, 1% = $one_percent, new = $new_brightness\n";
`echo $new_brightness > $PRFX/brightness`;
Говорим:
… а также прописываем эту команду в /etc/rc.local перед exit 0
. Вешаем скрипт на хоткеи, жмем Ctr+Shift+R, чтобы i3 перечитал свой конфиг, и снова радуемся жизни.
10. Небольшая шпаргалка по LLVM
Установка:
sudo apt-get install llvm
Файл test.c:
int main() {
printf("Hello, world!\n");
return 0;
}
Трансляция в код LLVM, компиляция и линковка:
llc test.ll
as test.s -o test.o
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 \
/usr/lib/x86_64-linux-gnu/crt1.o \
/usr/lib/x86_64-linux-gnu/crti.o \
test.o -lc \
/usr/lib/x86_64-linux-gnu/crtn.o \
-o test
См также LLVM Language Reference Manual.
Как всегда, я буду рад любым вашим комментариям как касательно написанного, так и вообще.
Метки: Всячина.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.