" F2 = Save file map <silent> <f2> :write<cr> imap <silent> <f2> <esc>:write<cr> " F10 = Exit without save map <silent> <f10> :quit<cr> imap <silent> <f10> <esc>:q<cr>
Сентябрь 2008
vim: old-skool h0tkeyz
23.09.2008Firefox + linux: идеальные шрифты
21.09.2008Идеальные шрифты для Firefox под *nix на данный момент это семейство Bitstream Vera *
:
- Bitstream Vera Sans (без засечек, типа Arial/Verdana)
- Bitstream Vera Serif (с засечками, типа Times)
- Bitstream Vera Sans Mono (моноширинный)
В Firefox это живет в меню Правка -> Настройки -> Содержимое -> Шрифты и цвета:
Некоторые сайты, однако, жестко предписывают отображение текстов шрифтом Times:
BODY{font-family: Times, serif;}
Результат может выглядеть примерно так:
Это произошло из-за того, что настройки fontconfig
по-умолчанию заменяют кривой системный Times
на некий более удобный для восприятия шрифт.
Используя утилиту fc-match
из набора fontconfig
убеждаемся, что Times
у нас в системе заменяется на "Nimbus Roman No9 L"
:
~$ fc-match times n021003l.pfb: "Nimbus Roman No9 L" "Regular"
Выкорчевываем корень зла:
~$ sudo rm /etc/fonts/conf.d/30-urw-aliases.conf ~$ sudo rm /etc/fonts/conf.d/30-metric-aliases.conf
(Если захочется восстановить статус кво, можно взять 30-urw-aliases.conf
и 30-metric-aliases.conf
из /etc/fonts/conf.avail
)
Теперь настроим fontconfig
так, чтобы при попытке отобразить шрифт Times
автоматически выбирался Times New Roman
(очевидно, именно он имелся в виду создателями). Для в своей домашней директории создаем файл ~/.fonts.conf
с примерно таким содержимым:
<fontconfig> <match target="pattern"> <test qual="any" name="family"> <string>Times</string> </test> <edit name="family" mode="assign"> <string>Times New Roman</string> </edit> </match> </fontconfig>
Сам шрифт Times New Roman следует установить в составе пакета шрифтов от MS.
Смотрим на результат:
~$ fc-match times Times_New_Roman.ttf: "Times New Roman" "Normal"
Готово.
Инструкция по установке Ruby + Gems + Rails на Ubuntu
19.09.2008Ставим Ruby через менеджер пакетов apt-get:
~$ sudo apt-get install ruby rdoc irb libyaml-ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential
Пакеты rdoc и irb не входят в зависимости, хотя и необходимы для Gem и Rails.
Ставим RubyGems из исходников. Это позволит в дальнейшем RubyGems спокойно само-обновляться:
~$ wget "http://rubyforge.org/frs/download.php/38646/rubygems-x.x.x.tgz" ~$ tar -xvzf rubygems-x.x.x.tgz ~$ rm rubygems-x.x.x.tgz ~$ cd rubygems-x.x.x ~$ sudo ruby setup.rb ~$ cd .. ~$ rm -r rubygems-x.x.x
(НЕЛЬЗЯ запускать установку снаружи, типа use sudo ruby rubygemsx.x.x/setup.rb
)
Теперь можно обновить RubyGems
~$ sudo gem update --system
Если эта команда не сработала, то, возможно, нужно создать симлинк /usr/bin/gem1.8 -> /usr/bin/gem
~$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
Ставим Rails и mongrel через RubyGems:
~$ sudo gem install rails mongrel
Добавляем /var/lib/gems/1.8/bin/
в пути, и все готово!
~$ PATH=${PATH}:/var/lib/gems/1.8/bin/ ~$ export PATH
[источник]
Харитон Мизгирь пишет: NB! если при установке какого-нибудь gem'а выдается ошибка
"no such file to load — mkmf"
это значит, что не установлен ruby1.8-dev, libsqlite3-dev
или еще какой-нибудь *-dev
~$ sudo apt-get install ruby1.8-dev libsqlite3-dev
и т.д.
grep+awk: запросто вынимаем значение параметра из конфига
18.09.2008Задача: передать в sh-скрипт значение параметра PidFile из конфига apache.
Решение:
CONF="/usr/local/apache/conf/httpd.conf" PIDFILE=`grep -i ^[[:space:]]*pidfile $CONF | tail -n 1 | awk '{ print $2 }'`
Где:
grep -i ^[[:space:]]*pidfile $CONF
- выбираем из конфига все строки, начинающиеся сPidFile
tail -n 1
- берем последнюю из них
awk '{ print $2 }'
- выбираем из нее второе поле (значение)
tar.gz: извлечение конкретного файла
17.09.2008Если из архива .tar(.gz) нужно извлечь конкретные файлы, то просто надо просто перечислить их в параметрах. Например, из архива archive.tar.gz
надо извлечь файл public_html/index.html
. Используем заклинание:
VIM + Perl : .vimrc, perl-support
16.09.2008Мой .vimrc + плагины (perl, tt2).
Для комфортной разработки на Perl рекомендуется также плагин perl-support .
Перенастройка Perl CPAN
15.09.2008Чтобы перенастроить конфиги модуля CPAN, нужно использовать команду 'o conf init':
~$ perl -MCPAN -e shell Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')
cpan> o conf init
/home/alex/.cpan/CPAN/MyConfig.pm initialized.
CPAN is the world-wide archive of perl resources. It consists of about
100 sites that all replicate the same contents all around the globe.
Many countries have at least one CPAN site already. The resources
found on CPAN are easily accessible with the CPAN.pm module. If you
want to use CPAN.pm, you have to configure it properly.
If you do not want to enter a dialog now, you can answer 'no' to this
question and I'll try to autoconfigure. (Note: you can revisit this
dialog anytime later by typing 'o conf init' at the cpan prompt.)
Are you ready for manual configuration? [yes]
The Feynman Problem Solving Algorithm
08.09.2008Виндовые шрифты в Ubuntu
07.09.2008Установка TTF windows проста до неприличия:
~$ sudo apt-get install msttcorefonts
Переименовать все файлы в нижний регистр
07.09.2008Переименовать все файлы в текущей и во всех вложенных директориях в нижний регистр:
~$ find ./ -type f | awk '{ print $1 " " tolower($1) }' | xargs -L 1 mv
Харитон Мизгирь пишет: Чтобы обрабатывались пути с пробелами и проч. непечатностями надо использовать конструкцию типа:
~$ find -print0 | xargs -0
Объяснение по поводу параметра -print0 (find'а) и -0 (xargs'а)
В имени файла может попасться символ, который требует экранирования при обработке (single or double quotes, spaces or newlines). print0
заставляет выводить список найденных файлов разделяя их через нуль-символ ('\0', в духе языка C, где он используется для декларации конца строки). xargs
тоже должен быть готов к такому разделителю, для этого служит -0
.
find
и xargs
по разному себя ведет когда ищут из текущей директории или когда ищут из родительской (в родительской прекрасно обрабатывал директории с пробелами и любыми кавычками, которые находились в дочерней директории). newlines не обрабатывается нигде.
Провел такой эксперимент. Создал скрипт (в файле):
mkdir "Bad \
bad \
bad \
dir"
– получил директорию с newlines.
Создал там файл README.txt и попытался его найти:
touch README.txt
cd ..
find . -name README.txt | xargs -I % ls %
Получил ошибку:
xargs: unmatched одинарная quote; by default quotes are special to xargs unless you use the -0 option
(загадочное сообщение: "по умолчанию кавычки обрабатываются xargs, если только вы не используете параметр -0")
Та же команда в связке print0-0 работает нормально:
find . -name README.txt -print0 | xargs -0 -I % ls %
Ошибки, которые возникали в текущей директории (в родительской все было нормально):
ls: ./Временнаяnдиректория/README.txt: No such file or directory
То есть использование связки print0 ... -0
желательно всегда. Можно прописать через alias
'ы.