tag:blogger.com,1999:blog-50721026239539294482024-02-06T18:34:16.968-08:00База знанийВсякие полезности, которые лень запоминатьАС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-5072102623953929448.post-41399748772953314572013-11-27T06:49:00.001-08:002013-11-27T06:49:09.441-08:00Два монитора для fluxbox<div dir="ltr" style="text-align: left;" trbidi="on">
Долгое время я мучился сначала с Gnome 3, потом с Mate, всё не решался пересесть на fluxbox. А всё из-за того, что лень было почитать документацию о том, как настроить два монитора. В принципе, я знал, что это должно быть очень просто с помощью <tt>xrandr</tt>. Меня останавливало то, что я использую один лаптоп и дома, и на работе, дома у меня экран лаптопа и внешний монитор, а на работе док-станция и два врешних монитора, к тому же один из них стоит вертикально (удобно для консоли).<br />
Но в один прекрасный день меня достал даже Mate, и я сел читать документацию. Всё оказалось даже проще, чем я предполагал.<br />
Итак, первое, что нужно определить, это какие мониторы подключены:<br />
<pre>$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
eDP1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 293mm x 165mm
1366x768 60.0*+ 40.0
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)</pre>
Сейчас я пишу с лаптопа, нет никаких внешних мониторов, поэтому виден только один выход – eDP1. Чтобы изметить выход или конфигурацию текущего выхода (разрешение, ориентацию и т.п.), нужно выполнить команду <tt>xrandr</tt> с параметрами. Данные для параметров нужно взять из вывода выше. После того, как я выполнил <tt>xrandr</tt> дома и на работе, я написал два простых скрипта (для дома и для работы), которые пока вызываю вручную:<br />
<h6>
home.sh</h6>
<pre>#!/bin/bash
xrandr --output eDP1 --mode 1366x768
xrandr --output VGA1 --mode 1920x1080 --above eDP1</pre>
<h6>
work.sh</h6>
<pre>#!/bin/bash
xrandr --output HDMI1 --mode 1680x1050 --rotate left
xrandr --output HDMI2 --mode 1920x1080 --right-of HDMI1 --rotate normal</pre>
Немного о параметрах:<br />
<ul>
<li><tt>--output <OUT></tt> – видеовыход.</li>
<li><tt>--mode <mode></tt> – разрешение.</li>
<li><tt>--above, --below, --right-of, --left-of, --same-as <OUT></tt> – положение относительно видеовыхода <OUT>.</li>
<li><tt>--rotate [normal|left|right|inverted]</tt> – поворот экрана.</li>
</ul>
У <tt>xrandr</tt> очень много параметров, но для большинства случаев описанных должно хватить.</div>
АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-78922042255012806702013-11-27T05:55:00.003-08:002013-11-27T05:56:19.846-08:00Кнопки для fluxbox<div dir="ltr" style="text-align: left;" trbidi="on">
Недавно перешёл назад на fluxbox, наслаждаюсь простотой, скоростью и гибкостью. Чтобы быстрее добираться до нужных мне функций, я добавил в <tt>~/.fluxbox/keys</tt> следующие строки:<br />
<br />
<pre># ======= #
# My keys #
# ======= #
# Commands
# ========
Control Escape :RootMenu
<i># Привычка вызывать так главное меню у меня осталась ещё со времён Windows 95</i>
Mod1 Mod4 Tab :NextWindow {static groups} (iconhidden=no)
Mod1 Mod4 Shift Tab :NextWindow {static groups} (iconhidden=no)
<i># Иногда полезно пройтись по всем окнам на всех рабочих столах</i>
Mod4 Escape :WorkspaceMenu
<i># Вообще-то я хотел иметь возможность посмотреть, какие окна у меня открыты на текущем
# рабочем столе, но я не нашёл такой команды. Да и не искал :), так что пока так.</i>
Control Mod1 l :Exec /usr/bin/xscreensaver-command -lock
<i># Блокировка экрана</i>
Control Mod1 Shift w :Exec work.sh
Control Mod1 Shift h :Exec home.sh
<i># Вызываю скрипты</i>
# Applications
# ============
Control Mod1 e :Exec emacs
Control Mod1 t :Exec x-terminal-emulator
Control Mod1 c :Exec conkeror
Control Mod1 m :Exec icedove
<i># Наиболее часто используемые приложения</i>
# MPD
# ===
Mod1 Mod4 Right :Exec mpc next
Mod1 Mod4 Left :Exec mpc prev
Mod1 Mod4 Up :Exec mpc play
Mod1 Mod4 Down :Exec mpc pause
<i># Управление mpd</i>
# Volume
# ======
XF86AudioRaiseVolume :Exec pactl -- set-sink-volume 0 +5%
XF86AudioLowerVolume :Exec pactl -- set-sink-volume 0 -5%
XF86AudioMute :Exec pactl -- set-sink-mute 0 toggle
<i># Управление громкостью с помощью мультимедийных клавиш</i>
Mod1 Mod4 Mouse4 :Exec pactl -- set-sink-volume 0 +5%
Mod1 Mod4 Mouse5 :Exec pactl -- set-sink-volume 0 -5%
Mod1 Mod4 Mouse2 :Exec pactl -- set-sink-mute 0 toggle
<i># Тоже управление громкостью, только если мультимедийные клавиши недоступны,
# например, их просто нет или лаптор закрыт и стоит на док-станции.</i></pre>
</div>
АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-83029708333298744542011-01-30T08:44:00.000-08:002011-01-30T09:55:41.168-08:00Установка Perl 5.12 на Debian Squeeze.Я хочу поиграться с Perl 5.12, но на Debian Squeeze по умолчанию стоит 5.10. Собирать deb пакет и замещать текущий Perl я не хочу: если я где-то накосячу и пакет соберётся неправильно, я могу если не убить систему, то подарить ей (а заодно и себе) прекрасный геморрой. Поэтому устанавливать я буду в <tt>/opt/perl</tt>.<br /><br />Итак...<br /><br />Для начала нужно скачать исходники.<br /><br /><pre>$ git clone git://perl5.git.perl.org/perl.git perl-5.12</pre><br /><br />(Я предпочитаю git, но можно использовать rsync. Подробности <a href="http://dev.perl.org/perl5/source.html">здесь</a>.)<br /><br />И через некоторое время в <tt>~/perl-5.12</tt> у нас есть исходники самой свежей версии.<br /><br />Далее непосредственно сборка. Чтобы не "портить" директорию с исходниками всяким сборочным хламом, сборку я провожу в отдельной директории, которую, конечно же, нужно сначала создать:<br /><br /><pre>$ mkdir /tmp/perl/build<br />$ cd /tmp/perl/build/</pre><br /><br />Теперь конфигурируем (параметр <tt>-Dmksymlinks</tt> говорит конфигуратору, что в текущей директории нужно создать необходимо создать нужные ссылки):<br /><br /><pre>$ sh ~/perl-5.12/Configure -Dmksymlinks -Dprefix=/opt/perl -des</pre><br /><br />Собираем:<br /><br /><pre>$ make</pre><br /><br />Тестируем:<br /><br /><pre>$ make test</pre><br /><br />И устанавливаем (предпочитаю делать это из-под root'а):<br /><br /><pre>$ sudo make install</pre><br /><br />И проверяем работоспособность:<br /><br /><pre>$ /opt/perl/bin/perl -E 'say "Hello!";'<br />Hello!</pre><br /><br />Ура! :)АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-32349237598932854722010-07-01T15:06:00.000-07:002010-07-01T15:08:13.769-07:00How to fix a bug<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGB09sjiFyC6oK6srCInW21cBR6voKc-aHChrL323DPYqIRpXFdx31MvkaKEgVEjcNfmciJ6-FYG5uRTei0Jqnl5YlMs99O1ozEPR2LF7mZ2EEYeAfhyuHhC41KczhI8M0HBrSvHwfIy4/s1600/how2fixabug.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 264px; height: 262px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGB09sjiFyC6oK6srCInW21cBR6voKc-aHChrL323DPYqIRpXFdx31MvkaKEgVEjcNfmciJ6-FYG5uRTei0Jqnl5YlMs99O1ozEPR2LF7mZ2EEYeAfhyuHhC41KczhI8M0HBrSvHwfIy4/s320/how2fixabug.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5489062891618490162" /></a>АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.comtag:blogger.com,1999:blog-5072102623953929448.post-24406849372158886182010-06-15T15:05:00.000-07:002010-06-15T15:19:50.838-07:00NFS и /etc/exports (unfs3)После перезагрузки сервера внезапно отвалился NFS. Любая попытка примонтировать удалённую папку ругалась ошибкой:<br /><br /><tt>$ sudo mount -v server:/opt/share $HOME/remote_folder<br />mount: no type was given - I'll assume nfs because of the colon<br />mount.nfs: timeout set for Tue Jun 15 23:58:08 2010<br />mount.nfs: text-based options: 'addr=1.2.3.4'<br />mount.nfs: mount(2): Permission denied<br />mount.nfs: access denied by server while mounting server:/opt/share</tt><br /><br />Я использую <tt>unfs3</tt>. Все попытки заставить его работать, магия с опциями в <tt>/etc/exports</tt>, <tt>/etc/hosts.deny</tt> и <tt>/etc/hosts.allow</tt>, упорное гугление по всевозможным форумам и документациям, просмотр логов и т.п. ничего не дали. Т.е. вообще ничего.<br /><br />Оказалось, в <tt>/etc/exports</tt> у меня была строка:<br /><br /><tt>/opt/music <my-subnet>(rw,sync,no_subtree_check)</tt><br /><br />Но саму директорию <tt>/opt/music</tt> я давным давно переместил куда-то и забыл. NFS был запущен ещё до перемещения и работал так примерно месяц. После обновления ядра я перезапустил сервер, <tt>unfs3</tt> при попытке примонтировать другие директории спотыкался о <tt>/opt/music</tt> и отказывал в доступе вообще. Ни в логах, ни в консоли, ни в ответе клиенту ничего об ошибке конфигурации не было сказано.<br /><br />Вывод: все директории, указанные в <tt>/etc/exports</tt> должны существовать.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-59420861028070342522009-08-09T09:45:00.000-07:002009-08-09T10:18:14.974-07:00Skype, Debian, amd64 и libuuid1Только вчера <a href="http://dev.by/blog/8837#comment-8721">заявил, что проблемы перехода от 32-битной архитектуры на 64-битную меня не коснулись</a>, как у меня перестал работать скайп. Что бы я ни делал, он упорно писал:<br /><br /><pre>$ skype<br />/usr/bin/skype: error while loading shared libraries: libuuid.so.1: cannot open shared object file: No such file or directory</pre><br /><br />Произошло это вчера после обновления пакета <tt>ia32-libs</tt>. Полдня гуглил, искал выискивал, читал перечитывал – никакого результата. Все ссылки вели к объяснению того, что нужно сказать <tt>--force-architecture</tt> после <tt>apt-get install</tt>, или <tt>aptitude install</tt>, или <tt>dpkg -i</tt>. Всё это хорошо и понятно, но это не помогало.<br /><br />Но потом как-то нечаянно нашёл я одно позавчерашнее обсуждение (к сожалению, ссылку уже не вспомню), где люди столкнулись с точно такой же проблемой. Один небольшой ответ поставил всё на свои места.<br /><br />Сам файл <tt>libuuid.so.1</tt> в системе есть, находится в директории <tt>/lib</tt> и является символической ссылкой на <tt>/lib/libuuid.so.1.2</tt>. Кроме того, есть в корне файловой системы символическая ссылка <tt>/lib64</tt>, которая ссылается как раз на <tt>/lib</tt>. Но этот файл всё равно не находился.<br /><br />Дело в том, что skype – 32-битное приложение, поэтому запускается он в режиме эмуляции через <tt>chroot</tt>, где вместо <tt>/lib64</tt> используется <tt>/lib32</tt>. А вот файла <tt>/lib32/libuuid.so.1</tt> как раз и не было.<br /><br /><h3>Решение</h3><br /><br />1. Нужно скачать пакет <a href="http://packages.debian.org/squeeze/i386/libuuid1/download"><tt>libuuid1_1.41.3-1_i386.deb</tt></a> (или какая там последняя версия):<br /><br /><pre>$ mkdir uuid; cd uuid<br />$ wget -c http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libuuid1_1.41.3-1_i386.deb</pre><br /><br />2. Распаковать содержимое пакета:<br /><br /><pre>$ mkdir libuuid1_1.41.3-1_i386<br />$ dpkg-deb -x libuuid1_1.41.3-1_i386.deb ./libuuid1_1.41.3-1_i386<br />$ $ ls -la ./libuuid1_1.41.3-1_i386/lib/<br />итого 24<br />drwxr-xr-x 2 andrei andrei 4096 Окт 13 2008 .<br />drwxr-xr-x 4 andrei andrei 4096 Окт 13 2008 ..<br />lrwxrwxrwx 1 andrei andrei 14 Авг 9 19:08 libuuid.so.1 -> libuuid.so.1.2<br />-rw-r--r-- 1 andrei andrei 12912 Окт 13 2008 libuuid.so.1.2</pre><br /><br />3. В директории <tt>./libuuid1_1.41.3-1_i386/lib/</tt> мы видим два файла, которые нужно переписать в <tt>/lib32</tt>:<br /><br /><pre>$ sudo cp libuuid1_1.41.3-1_i386/lib/* /lib32/</pre><br /><br />Теперь должно работать.<br /><br />:)АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-61851412656272067002009-08-08T04:42:00.000-07:002009-08-15T11:56:45.352-07:00XChat и "Ошибка сегментирования" (Segmentation fault)У меня уже довольно давно не работал xchat, вместо него приходилось использовать xchat-gnome, который, если честно, мне не очень-то нравился. Сам xchat просто выдавал segmentation fault при попытке соединиться.<br /><br />И вот сегодня меня это окончательно достало и я решил разобраться, в чём дело. Форумы убунты и ссылки типа <a htef="http://t0x.in/xchat-gnome!=xchat.html">этой</a> советуют удалить xchat-gnome, удалить в домашней директории все настройки xchat (т.е. удалить директорию <tt>$HOME/.xchat2</tt>) и установить xchat заново.<br /><br />Этот способ у меня не сработал. Несколько раз не сработал. Тогда я добавил в поисковый запрос слово "Debian" и <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=491171">первый же результат</a> всё объяснил.<br /><br />Оказывается, xchat падал не при попытке соединения, а при попытке отобразить иконку в трее, что, очевидно, конфликтовало с пакетом xchat-systray. Итак, достаточно было всего лишь сделать<br /><br /><pre># aptitude remove xchat-systray</pre><br /><br />чтобы всё встало на свои места.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-79847436966367673242009-07-20T14:47:00.000-07:002009-07-20T23:49:42.894-07:00Восстановление GRUB2Вчера я совершил страшное – обновил grub2 на своём Debian'е и на все вопросы установщика отвечал нажатием Enter, т.е. дал ответы по умолчанию. А делать так не следовало, потому что grub2 сломался и компьютер не грузился.<br /><br />Здесь я расскажу, ка я его починил.<br /><br />Я нашёл Live CD с Ubuntu (ну, какой был :), в принципе, любой подошёл бы) и загрузился с него. Прямо с этого диска восстановиться не удалось, потому что мой Debian на архитектуре AMD64, а Ubuntu – i386. Мне нужно было найти что-то загрузочное с той же архитектурой, что и мой Debian.<br /><br />Немного погуглив, я обнаружил, что у Debian'а тоже есть Live CD, и даже Live USB. Найти можно здесь: http://live.debian.net/debian-cd/5.0.1/amd64/usb-hdd/ . Мне не нужны были красивости рабочего стола, поэтому я скачал просто <a href="http://live.debian.net/debian-cd/5.0.1/amd64/usb-hdd/debian-live-501-amd64-rescue.img">образ для восстановления</a>. Чтобы записать его на флешку, нужно выполнить команду (которая <u>УДАЛИТ ВСЮ ИНФОРМАЦИЮ С ФЛЕШКИ</u>):<br /><br /><pre># dd if=<strong>/path/to/the/</strong>debian-live-501-amd64-rescue.img of=/dev/sd<strong>X</strong></pre><br /><br />Здесь <tt>/path/to/the/</tt> директория, где хранится образ, <tt>/dev/sdX</tt> – устройство USB-накопителя, которое к моменту выполнения команды должно быть размонтировано.<br /><br />После того, как образ был записан, я просто перезагрузился с флешки.<br /><br />Все дальнейшие действия подразумевают, что выполняющий их знает, на каком разделе что у него находится. Если нет уверенности, можно поочерёдно примонтировать каждый раздел, скажем, в <tt>/mnt</tt>, посмотреть и даже записать, чтобы не убить систему окончательно.<br /><br />У меня разделы расположены так:<br /><br /><pre>/dev/sda5 -- /<br />/dev/sda2 -- /boot</pre><br /><br />Поэтому на восстановительной системе я делал следующее:<br /><br /><pre># mount /dev/sda5 /mnt<br /># mount --bind /dev /mnt/dev<br /># mount --bind /proc /mnt/proc<br /># mount /dev/sda2 /mnt/boot</pre><br /><br />Или по-русски:<br /><br />1. Примонтировали корневой раздел жёсткого диска в <tt>/mnt</tt>;<br />2. "Приязали" <tt>/dev</tt> к новому корню;<br />3. То же самое с <tt>/proc</tt>;<br />4. Примонтировали <tt>/boot</tt> к новому корню.<br /><br />Всё это делалось для того, чтобы сделать:<br /><br /><pre># chroot /mnt</pre><br /><br />т.е. чтобы поменять корень и работать практически в своей системе.<br /><br />И последний штрих:<br /><br /><pre># grub-install /dev/sda</pre><br /><br />И всё! :)АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com2tag:blogger.com,1999:blog-5072102623953929448.post-13076135302002196242009-06-14T13:21:00.000-07:002009-06-14T14:21:27.263-07:00ImageMagick: изменить размер всех изображений в директорииДовольно часто возникает задача все изображения, только что сброшенные с web-камеры, уменьшить, чтобы <strike>разместить в своём фотоальбоме какой-нибудь социальной сети</strike> отправить по электронной почте. Конечно, есть GIMP, но это хорошо, если изображений штук 10. А если их 100? 1000?<br /><br />На этот случай есть такой чудесный комплект консольных утилит, как <a href="http://www.imagemagick.org/">Imagemagick</a>, который умеет делать с изображениями практически всё.<br /><br />Для уменьшения изображения достаточно ввести команду:<br /><br /><pre>$ convert -resize 75% -quality 80 image.jpg resized_image.jpg</pre><br />В результате мы получим изображение размером 75% от исходного (<tt>image.jpg</tt>) с качеством 80% в файле <tt>resized_image.jpg</tt>.<br /><br />Теперь нам нужно выполнить эту команду для всех файлов директории:<br /><br /><pre>$ for i in `ls *.jpg`; do convert -resize 75% -quality 80 $i resized/$i; done</pre><br />Теперь все файлы с расширением *.jpg в текущей директории будут уменьшены до 75% с качеством 80% и записаны в директорию <tt>./resized</tt>, которая <strong>должна</strong> существовать.<br /><br />Теперь можно все изображения отправлять <strike>на одноклассники</strike> по электронной почте.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com2tag:blogger.com,1999:blog-5072102623953929448.post-58445732841367826912009-06-12T03:03:00.000-07:002009-06-14T22:33:45.103-07:00SSH-туннельИногда мне нужно поработать с удалённой БД PosgreSQL через pgAdminIII. Сервер, на котором крутится база, из интернета недоступен. Зато доступен другой сервер, с которого можно попасть на сервер БД. Чтобы мой pgAdminIII мог добраться до PostgeSQL, я пробрасываю туннель с моей машины на сервер с БД через доступный мне сервер. Примерно так:<br /><br /><pre>$ ssh -f -L 15432:postgresql.server:5432 i.can.get.here -N</pre><br />Что делает эта команда?<br /><br />Во-первых, она соединяется с сервером i.can.get.here.<br />Во-вторых, соединение происходит в фоновом режиме (ключ <tt>-f</tt>).<br />В-третьих, все запросы на мой локальный порт 15432 перенаправляются на порт 5432 сервера postgresql.server через сервер i.can.get.here (<tt>-L 15432:postgresql.server:5432</tt>).<br />В-четвёртых, не выполняет на удалённом сервере команду, которая выполняется при обычном входе.<br /><br />Теперь, чтобы добраться до БД, я могу в pgAdminIII настроить соединение с localhost:15432, или выполнить команду:<br /><br /><pre>$ psql -h localhost -p 15432 -U username -W password</pre><br /><br />Такое же туннелирование можно использовать, если, например, вам закрыли порты для почты или ICQ, но у вас есть доступ к прокси. :)АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com1tag:blogger.com,1999:blog-5072102623953929448.post-24274114283965566052009-06-10T12:04:00.000-07:002009-08-07T10:09:12.434-07:00Установка VirtualBox в DebianВ последних версия тестового Debian'а есть несоответствие версий пакета virtualbox-ose и virtualbox-ose-modules, из-за чего virtualbox не работает.<br /><br />Чтобы обойти этот недочёт мэйнтэйнеров пакетов, нужно пересобрать пакет virtualbox-ose-modules из исходников. Делается это так.<br /><br />1. Устанавливаем нужные пакеты:<br /><br /><pre># apt-get install virtualbox-ose virtualbox-ose-source virtualbox-ose-guest-source module-assistant</pre><br /><br /><em>(virtualbox-ose-guest-source, вообще говоря, необязателен)</em><br /><br />2. "Готовим" пакет для сборки:<br /><br /><pre># m-a prepare virtualbox-ose</pre><br /><br />3. Собираем и устанавливаем:<br /><br /><pre># m-a a-i virtualbox-ose</pre><br /><br />4. Повторяем шаги 2 и 3 для virtualbox-ose-guest-source.<br /><br />5. Добавляем себя в группу vboxusers:<br /><br /><pre># adduser `whoami` vboxusers</pre><br /><br />6. Если вендовые привычки ещё не искоренены, то можно перезагрузиться и работать. Но лучше сделать:<br /><br /><pre># modprobe vboxdrv</pre><br /><br />И работать.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com2tag:blogger.com,1999:blog-5072102623953929448.post-4242342633396270432009-06-10T00:53:00.000-07:002009-06-10T01:18:09.154-07:00GNOME: убрать иконки с рабочего столаОдна из причин, по которой я не люблю Windows – это иконки на рабочем столе. Если посмотреть на рабочий стол среднестатистического клерка, то там можно обнаружить кучу иконок со всякой ерундой, аккуратно расставленных вокруг переднего плана обоев. Как правило, среднестатистический клерк разворачивает окна всех приложений (кроме QIP и Skype, пожалуй) на весь экран, поэтому для доступа к нужной ему информации он в лучшем случае сворачивает окна, или, как правило, закрывает и ищет по множеству папок на рабочем столе нужный ему файл. Наблюдать за этим процессом забавно первые три раза, потом это просто раздражает.<br /><br />Вот и меня раздражает наличие этих самых иконок, которые всё равно мною практически никогда не используются.<br /><br />Раньше я пользовался <a href="http://fluxbox.org/">fluxbox'ом</a>, потом некоторое время сидел на <a href="http://windowmaker.info/">WindowMaker</a>. Оба оконных менеджера лёгкие, быстрые и просто конфигурируемые. Для слабых машин как раз то, что надо. И иконок на рабочем столе у них нет (хотя добавить можно).<br /><br />Но со временем я всё-таки решил пересесть на GNOME, поскольку он, всё-таки, DE, а не просто WM.<br /><br />И всё меня в GNOME устраивало, кроме этих самых иконок для рабочего стола. Но немного погуглив и поковырявшись в настройках, я нашёл способ убрать иконки.<br /><br />Делается это так:<br /><br />1. Открываем <tt>gconf-editor</tt> (Приложения->Системные->Редактор конфигурации).<br /><br />2. Снимаем галочку со свойства /apps/nautilus/preferences/show_desktop<br /><br />Всё! :)АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com4tag:blogger.com,1999:blog-5072102623953929448.post-25145394952591280432009-06-09T12:52:00.000-07:002009-06-09T13:02:32.547-07:00Вставка кириллицы из X-приложений в EmacsЧасто бывает нужно вставить в Emacs кириллический текст из X-приложения, скажем, из браузера. Но вместо привычного и горячо любимого моноширного шрифта, почему-то вставляются кириллические символы с засечками.<br /><br />Эта проблема решается примерно так:<br /><br />1. В файл <tt>~/.Xdefaults</tt> добавляем строки:<br /><br /><pre>Emacs.FontBackend: xft<br />Xft.hinting: none<br />Xft.dpi: 96</pre><br /><br />2. Выполняем команду:<br /><br /><pre>$ xrdb -merge ~/.Xdefaults</pre><br /><br />3. В <tt>~/.emacs</tt> добавляем:<br /><br /><pre>(set x-select-request-type (quote (UTF8_STRING COMPOUND_TEXT TEXT STRING)) t)</pre><br /><br />или где-то в секции custom-set-variables вставляем строку<br /><br /><pre>(custom-set-variables<br />;;; ...<br />'(x-select-request-type (quote (UTF8_STRING COMPOUND_TEXT TEXT STRING)) t)<br />;;; ...<br />)</pre><br /><br />Часть информации взята <a href="http://community.livejournal.com/ru_emacs/47968.html">отсюда</a>.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-65010550125588575252009-06-09T12:35:00.000-07:002009-06-09T13:03:13.601-07:00nXhtml-mode для шаблонов Template::Toolkit и HTML::TemplateЕсть такое замечательное дополнение к Emacs – <a href="http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html">nXhtml</a>, которое умеет работать с (X)HTML, CSS, JavaScript и много чем ещё одновременно. Более того, nXhtml может работать даже с шаблонами Template::Toolkit. HTML::Template не поддерживается, и есть проблемы с подсветкой синтаксиса (в силу самого синтаксиса HTML::Template), но всё же лучше плохая подсветка, чем никакой.<br /><br />Чтобы включать правильный nxhtml-mode при загрузке файлов TT и HTML::Template, нужно добавить в <tt>~/.emacs</tt>:<br /><br /><pre>;;; NXHTML<br />(load "~/emacs/nxhtml/autostart.el")<br />(require 'nxhtml-mumamo)<br />(add-to-list 'auto-mode-alist '("\\.tmpl$" . nxhtml-mumamo-mode))<br />(add-to-list 'auto-mode-alist '("\\.tt2*$" . tt-html-mumamo-mode))</pre><br /><br />При этом сам nXhtml должен находиться в папке <tt>~/emacs/nxhtml/autostart.el</tt>.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-34882708999395111212009-06-09T10:51:00.000-07:002009-06-09T12:33:36.006-07:00Генерация классов для DBIx::ClassПри создании приложения на <a href="http://www.catalystframework.org/">Catalyst'е</a> с бэкэндом <a href="http://search.cpan.org/dist/DBIx-Class/">DBIx::Class</a> можно воспользоваться хэлпером самого каталиста:<br /><br /><pre>$ script/myapp_create.pl model MyAppDB DBIC::Schema MyAppDB \<br />dbi:SQLite:myapp.db '' '' '{ AutoCommit => 1 }'</pre><br /><em><a href="http://search.cpan.org/~mramberg/Catalyst-Runtime-5.7000/lib/Catalyst/Manual/Tutorial/CatalystBasics.pod#Use_Catalyst::Model::DBIC::Schema_To_Load_The_Model_Class">См. тут.</a></em><br /><br />Этот способ хорош, если база данных создана давно и почти не меняется. Но если база большая, сложная и в неё часто добавляются новые схемы, то перестраивать заново все классы для всех таблиц, мягко говоря, неразумно. С другой стороны, далеко не все драйвера БД поддерживают работу со схемами (DBD::Pg, например, не поддерживает), и для таких баз генерируются классы только для главной схемы.<br /><br />Чтобы сгенерировать класс для какой-то отдельной схемы, нужно в консоли ввести команду:<br /><br /><pre>perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:<strong>./lib</strong> -e \<br />'make_schema_at("<strong>MyApp::MyAppSchema::DBSchema</strong>", { debug => 1, db_schema => "<strong>dbschema</strong>" }, \<br />[ "dbi:<strong>Pg</strong>:dbname=<strong>dbname</strong>","<strong>user</strong>","<strong>password</strong>", { AutoCommit => 1 } ])'</pre><br /><br />Эта команда создаст классы для таблиц из схемы базы данных <tt>dbschema</tt> в директории <tt>./lib/MyApp/MyAppSchema/DBSchema/</tt>, а так же класс схемы <tt>./lib/MyApp/MyAppSchema.pm</tt>, в котором пропишет доступ к базе PostgreSQL dbname для пользователя user с паролем password и отключит транзакции.<br /><br />Выделенные фрагменты нужно заменить на реальные данные.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-15569932377624247812009-06-09T09:11:00.000-07:002009-06-10T11:29:23.634-07:00Настройка карты broadcom bcm4312 wireless, laptop hp 6730s, Debian sqweezeУра-ура-ура!<br /><br />Карта заработала. При настройке пользовался how-to <a href="http://linuxforum.ru/index.php?showtopic=93829">отсюда</a>.<br /><br />Если лень ходить по ссылке, копирую всё оттуда с небольшой ретушью.<br /><br /><em>Пункт 6 я не делал, потому что в папке <tt>/etc/modprobe.d/</tt> создаётся файл <tt>broadcom-sta-common.conf</tt>, в котором эта ситуация разруливается.</em><br /><br /><blockquote>1. потребуется установить, при отсутствии оного, <tt>module-assistant</tt>:<br /><br /><pre>$ aptitude install module-assistant</pre><br /><br />2. устанавливаем пакет<br /><br /><pre>$ aptitude install broadcom-sta-common broadcom-sta-source</pre><br /><br />3. выполняем<br /><br /><pre>$ m-a prepare<br />$ m-a a-i broadcom-sta-source</pre><br /><br />на этом непосредственно установка драйвера завершена<br /><br />4. далее добавим необходимые модули драйверов на подгрузку при запуске системы, т.е. впишем их (редактором) в файл <tt>/etc/modules</tt>:<br /><br /><pre>lib80211_crypt_tkip<br />wl</pre><br /><br />5. в файл <tt>/etc/modprobe.d/blacklist.conf</tt> добавим следующую строку:<br /><br /><pre>blacklist ssb</pre><br /><br />для блокировки ненужного теперь модуля ssb, после выполняем<br /><br /><pre>$ update-initramfs -u</pre><br /><br />6. перезагружаемся<br /><br />7. командой<br /><br /><pre>$ iwconfig</pre><br /><br />проверяем, запустился ли искомый беспроводной интерфейс, если да - далее дело выбора ПО для работы с сетями (будут ли это network manager'ы из Вашего DE или еще что, выбор за Вами, детали - в гугле).<br /><br />p.s. все действия выше выполняются администратором</blockquote><br /><br />Вот и всё! Осталось найти какую-нибудь сеть и протестировать.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0tag:blogger.com,1999:blog-5072102623953929448.post-6622834426463161412007-12-03T13:51:00.000-08:002007-12-03T13:56:25.468-08:00Пробуем...В связи с покупкой ЖЖ «СУПом», пробую перенести блог сюда.АС_Пушкинhttp://www.blogger.com/profile/02560529500617631095noreply@blogger.com0