GNU Screen позволяет работать в одном терминале, в одном его окошке, в одной сессии одному пользователю так, как если бы вы запустили Konsole или Gnome-terminal с уймой вкладок. Причем имели бы возможность ими манипулировать как душе угодно – изменять размер, сворачивать и разворачивать или отключать.
В общем это больше похоже на консольный tiling wm с одним огромным приемуществом – возможность "закрываться" не останавливая при этом работу, которая происходит во "вкладках" самого Screen
Для первоначального ознакомление с GNU Screen rtfm - русский man. В мане есть всё что может пригодиться – начиная от клавишь управления и заканчивая полным описанием .screenrc. Я не буду говорить о том почему screen такая замечательная вещь без которой я уже не мыслю своего существование в Linux (особенно при использовании ssh) - я всего лишь раскажу о маленьком патчике Vertical Split for GNU Screen. Судя по тому что на странице патча написано что скачан он всего 2604 раза (на момент написание этой заметки) он не пользуется особой популярностью, а зря. Как видно из названия он добавляет так не достающее многим вертикальное разделение регионов в GNU Screen.
Всё до наивности просто – ^+a V разбивает активный регион на два. Команда resize для вертикальных регионов работает аналогично горизонтальным. Конечно есть некоторые баги, но они не смертельны – если бы не зашел сейчас на страничку загрузки посмотреть количество скачиваний, так и не знал бы что они есть. В CVS GNU Screen нечто подобное уже имеется (немного отличается, в том числе и по сочетанию клавиш) – но когда будет релиз 4.1 неизвестно.
PS. Если кому нужем мой screenrc, то выложу и если будет нужно то прокомментирую.
UP 02-09-2009: О использовании вертикального разбиения в GNU Screen из git
muhas.ru — это просто блог…
О linux, о используемых или просто понравившихся инструментах, вобщем обо всем что окружает мою аскетичную компьютерную жизнь и показалось достойным упоминания или заметки «на память»
Шпаргалка: немного методов DOM
Постоянно забываю методы, посему решил записать всё "на бумажку". Записываю именно для себя и не пытаюсь рассматривать все методы, только "часто" используемые мной в работе (а их, как видно ниже, не много)
document.getElementById('id') - Возвращает элемент с указанным id в качестве объекта
document.getElementsByTagName('tagname') - Находит в документе все элементы с тегом, указанным в tagname и возвращает их в виде массива
tag.getElementsByTagName('tagname') - Аналогично предыдущему, только относительно tag а не всего документа
document.getElementsByName('name') - Находит все элементы с аттрибутом name, значение которого указано в name и возвращает их в виде массива (HTML 4.01). В XHTML 1.0 возвращает элементы управления форм с искомым значением атрибута name.
node.getAttribute('attribute') - Возвращает значение атрибута с именем, указанным в attribute.
node.setAttribute('attribute', 'value') - Устанавливает атрибуту attribute значение value.
Последнии два не во всех во всех браузерах работают корректно(но блин удобные вещи), поэтому присвоить свойство (не забываем что атрибут!=свойство, ага) можно с помощью obj.property = value
Можно конечно использовать всякие DOM инспекторы и прочую ересь, но там куча всего и искать из этого то что нужно относительно часто лень (а в память хоть убей эти методы не лезут), а для менее частые методы можно и поискать.
document.getElementById('id') - Возвращает элемент с указанным id в качестве объекта
document.getElementsByTagName('tagname') - Находит в документе все элементы с тегом, указанным в tagname и возвращает их в виде массива
tag.getElementsByTagName('tagname') - Аналогично предыдущему, только относительно tag а не всего документа
document.getElementsByName('name') - Находит все элементы с аттрибутом name, значение которого указано в name и возвращает их в виде массива (HTML 4.01). В XHTML 1.0 возвращает элементы управления форм с искомым значением атрибута name.
node.getAttribute('attribute') - Возвращает значение атрибута с именем, указанным в attribute.
node.setAttribute('attribute', 'value') - Устанавливает атрибуту attribute значение value.
Последнии два не во всех во всех браузерах работают корректно(но блин удобные вещи), поэтому присвоить свойство (не забываем что атрибут!=свойство, ага) можно с помощью obj.property = value
Можно конечно использовать всякие DOM инспекторы и прочую ересь, но там куча всего и искать из этого то что нужно относительно часто лень (а в память хоть убей эти методы не лезут), а для менее частые методы можно и поискать.
ArchLinux на флешке - всё очень просто
Долго изголялся для создания LiveUSB с ArchLinux - в методах аля Arch-live не устраивали по причине невозможности изменения дистрибутива на лету простым и быстрым методом. Посему пришлось воспользоваться дедовскими методами (ага, тот самый Keep It Simple Stupid) установки ArchLinux на флешку.
Подготовка
1) Cоздаем на флешке один единственный основной раздел, проще всего это сделать через cfdisk или gparted
2) Создаем на этом разделе файловую систему
mke2fs -m 0 -b 1024 -i 4096 -L STICK /dev/sd*1Где STICK - это будущее имя раздела, а /dev/sd*1 это файл устройства.
3) Монтируем этот раздел mount /dev/sd*1 MNTDIR, где MNTDIR это точка монтирования
Установка и базовая настройка для загрузки с usb
4) Установка базовых пакетов
mkdir -p MNTDIR/var/lib/pacman
pacman -Sy -r MNTDIR filesystem bash sysvinit initscripts \
syslog-ng dcron kbd findutils openssh iputils kernel26 \
pacman dhcpcd (добавте свои пакеты)5) Не забываем о том что при загрузке с usb нам всё же надо будет примонтировать корневой раздел и каким sd* будет ваша флешка на том компе откуда вам взбредит с неё загрузиться неизвесно, поэтому в MNTDIR/etc/fstab добавляем строку
LABEL=STICK / ext2 defaults 0 0
или прописываем вместо LABEL=STICK UUID вашего раздела (узнать можно с помощью ls -l /dev/disk/by-uuid)
Так же не забываем про initcpio
sed -i 's/^HOOKS=.*$/HOOKS="base udev usb filesystems"/' MNTDIR/etc/mkinitcpio.confи генерируем новый образ инита chroot MNTDIR mkinitcpio -c /etc/mkinitcpio.conf -g /boot/kernel26.img Ну и последнее что нам осталось это настроить загрузчик.
Я привык к использованию GRUB хотя некоторые говорят что на usb-flash и cd лучше использовать syslinux. Поэтому придется показать оба способа, впрочем оба наипростейшие
GRUB
pacman -Sy -r MNTDIR grub
cd MNTDIR/usr/lib/grub/i386-pc/
cp ./* MNTDIR/boot/grub/Редактируем MNTDIR/boot/grub/menu.lst где в качестве root указываем либо LABLE либо UUID нашего разделаЗапускаем grub в котором вводим root (hd*,0) и setup (hd*)
Где * это номер нашей флешки, не забваем что в grub нумерация начинается с нуля, т.е. если у вас всего один жеский диск и вставлена всего одна флешка то надо писать root (hd1,0) и setup (hd1)
syslinux
Здесь всё немного проще
dd if=/usr/lib/syslinux/mbr.bin of=/dev/sd*
extlinux --install mntdir/boot
cat << EOF > MNTDIR/boot/extlinux.conf
default usbboot
label usbboot
kernel vmlinuz26
append initrd=kernel26.img root=STICK quiet
EOF
Честно говоря с syslinux у меня не сложилось, qemu ни как не хотел запускаться с флешки, хотя вообще с ArchLinux у qemu не сложилось - ни LiveCD ни LiveUSB в нём не загружались, хотя на реальном железе всё работало. С grub всё пошло как по малсу, да и возможности у него пошире будут (я, к примеру, использую запчасти с super grub disk)
Ну а теперь самое главное, перезагрузка в наш LiveUSB (не забываем выставить в BIOS необходимые настройки) и доводка его до того состояния которое вам необходимо, хотя доводить его можно и не перезагружаясь.
Честно говоря у данного способа есть недостатки, такие как большой объем занимаемого дискового пространства (1GB лично для моих нужд хватает), постоянное использование /tmp и прочего что никак не способствует долгой жизни флешки, но многое из этого (монтирование того же tmp в память) можно обойти.
Так что в итоге все плюсы с лихвой перекрывают немногочисленные минусы.
Подсветка синтаксиса для москита.
Сделал подсветку синтаксиса с помощью highlight.js от Ивана Сагалаев в качестве плагина к Mosquito - используемому мною движке для этого блога.
Сделал для тестовой ветки Bloody Mary, т.е. если вы хотите использовать стабильную версию москита то придется в файлике plugins/highlight/info.inc заменить "MQ_HEADER_BEFORE" на "MBE_HEADER_BEFORE" и естественно переименовать файлики в соответсвии со старой версией.
Установка как обычна проста, просто распаковать содержимое архива в папку с москитом.
Для использования тупо вставляем код в посты.
Делал плагин для себя посему никаких настроек в админку не вынес, да они по сути и не нужны. Кому не лень зайдут на на страницу проекта прочтут мануал (он вообще не поврeдит тем кто будет использовать highlight.js) и поменяют в файле плагина выводящим код (plugins/highlight/func.inc) всё что захотят.
Скачать плагин
ЗЫ. Вот и написал первый пост в личном standalone блоге который с сего дня находится в режиме тестового запуска :)
Сделал для тестовой ветки Bloody Mary, т.е. если вы хотите использовать стабильную версию москита то придется в файлике plugins/highlight/info.inc заменить "MQ_HEADER_BEFORE" на "MBE_HEADER_BEFORE" и естественно переименовать файлики в соответсвии со старой версией.
Установка как обычна проста, просто распаковать содержимое архива в папку с москитом.
Для использования тупо вставляем код в посты.
<pre><code >ваш код который вы хотите разукрасить</code ></pre>
Делал плагин для себя посему никаких настроек в админку не вынес, да они по сути и не нужны. Кому не лень зайдут на на страницу проекта прочтут мануал (он вообще не поврeдит тем кто будет использовать highlight.js) и поменяют в файле плагина выводящим код (plugins/highlight/func.inc) всё что захотят.
Скачать плагин
ЗЫ. Вот и написал первый пост в личном standalone блоге который с сего дня находится в режиме тестового запуска :)
