Баш!

Mar. 22nd, 2011 05:53 pm
shoorick: (Default)
Запускающийся при входе в FreeBSD по умолчанию шелл /bin/sh — неудобен. Например, в нём нет дополнения по нажатию клавиши табуляции. Можно не тратить время на гуглёж и заменить шелл оболочку на более могучую, например, на bash. Однако прямое редактирование /etc/passwd не помогает. Выход — использовать chsh:
chsh -s /usr/local/bin/bash
shoorick: (Default)
По умолчанию trac, когда работает через mod_python, всё своё содержимое выдаёт через него, хотя с раздачей статичных файлов — картинок, стилей и яваскриптов — сам апач справляется не хуже и, что главное, существенно быстрее: на моей, нагруженной иксами, машине, где заодно живёт и апач с траком, разница в скорости (по результатам замеров файрбагом) достигает ста и более раз.

С одной стороны, можно сменить адреса некоторых общих картинок
find /var/db/trac -name trac.ini -exec perl -pi -e 's{= common}{= /trac}' '{}' ';'
и раздавать эти картинки статически:
<IfModule alias_module>
Alias /trac/ /path/to/trac/htdocs/
Но зачем нам полумеры? Надо всю статику быстро раздавать. Поэтому подкаталог chrome не должен обрабатываться мод_питоном:
<LocationMatch "/projects/[^/]+/chrome">
SetHandler None
</LocationMatch>
Чтоб апач не ругался «404 Not Found», надо создать алиасы для этих каталогов. По идее, для этого должна использоваться директива AliasMatch, но у меня она не заработала: апач, вместо того, чтоб отдавать файлы, начинает бесконечно перенаправлять браузер по всё более длинному адресу, что браузеру достаточно быстро надоедает. Поэтому приходится ставить кучу директив
Alias /projects/projectname/chrome/common /path/to/trac/htdocs/
которые можно получить командой
ls /var/db/trac | perl -nl -e 'print "\t\tAlias /projects/$_/chrome/common /usr/local/www/trac/htdocs"'
Метод, конечно, какой-то неправильный, но всё-таки вполне работоспособный.
shoorick: (Default)
Как показал опыт, перл не хочет транслитерировать кириллицу из UTF-8. Может быть, и хочет, да я не ту цапу крутил не нашёл метода заставить его делать это. Но с другой стороны, зачем зацикливаться на перле? Можно и без перла:
sed \
-e 's/ё/yo/g' \
-e 's/Ё/Yo/g' \
-e 's/ж/zh/g' \
-e 's/Ж/Zh/g' \
-e 's/ц/ts/g' \
-e 's/Ц/Ts/g' \
-e 's/ч/ch/g' \
-e 's/Ч/Ch/g' \
-e 's/ш/sh/g' \
-e 's/Ш/Sh/g' \
-e 's/щ/shch/g' \
-e 's/Щ/Shch/g' \
-e 's/ю/yu/g' \
-e 's/Ю/Yu/g' \
-e 's/я/ya/g' \
-e 's/Я/Ya/g' \
-e "y/абвгдезийклмнопрстуфхъыьэ/abvgdezijklmnoprstufh'y'e/" \
-e "y/АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭ/ABVGDEZIJKLMNOPRSTUFH'Y'E/"
upd/04.04: забыл сначала к командам замены добавить g — без него sed, как и perl делает всего одну замену.
shoorick: (Default)
~/bin/play
#!/bin/sh
mpc clear
mpc search any $* | mpc add -
mpc play 1
shoorick: (Default)
Читал man.
Ожидал просветления. Не помогло.
Почитал толстую бумажную книгу. Был послан ею снова читать man.
Снова читал man.
Получил искомого просветления. Доволен.

А результат — всего одна строка:
find . -type f -name "*html*" -exec perl -e "s^(href=\"?)http://(www\.)?susu\.ac\.ru/^\$1/^gi" -pi '{}' ';'

upd: P. S. Русский man есть на http://citforum.urc.ac.ru/operating_systems/manpages/

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 14th, 2025 03:49 pm
Powered by Dreamwidth Studios