LE Blog

Инженер с поэтической душой

01.12.2009 firtree_right Делаем quake-like консоль в любом DE на базе XServer (KDE, GNOME, XFCE, ...)

Недавно написал гайд по производству самопальной quake-like консоли под Openbox. А перед этим вышла новая версия Kubuntu 9.10, в которой моя любимая quake-like консоль yakuake стала притормаживать при открытии. Несильно, но заметно, чтобы надоесть к концу дня. А вновь испробованная quake-like консоль tilda очень некрасиво скроллит текст. Возможно, обе эти проблемы связаны со слабенькой видеокартой на работе, но не менять же её из-за консоли?

Почесав репу, я написал свой способ организовать вывод консоли по F12, который подходит для любого Desktop Environment, работающего на «иксах», а значит почти любого.

  1. Устанавливаем три пакета: xdotool, xbindkeys, xbindkeys-config. На убунте это так:
sudo apt-get install xdotool xbindkeys xbindkeys-config
  1. Выбираем свою консоль, которой мы хотим управлять по горячей клавише. И настраиваем для неё уникальное слово, которое будет выводиться в заголовке окна. Я выбрал konsole. И настроил так, чтобы в заголовке окна всегда было «qk : ». Этот пункт будет разным для всех :)

  2. Сердце гайда — скрипт, использующий xdotool для управления нашим окном. Я как фанат руби, все скрипты на нём и пишу. Вот это лежит у меня в $HOME/.quake-console/quake-console:

#!/usr/bin/ruby

PROG_NAME = "konsole"
WIN_NAME = "qk : "

win_id = `xdotool search "#{WIN_NAME}" 2> /dev/null`.split("\n").select{ |l| l =~ /^\d+$/ }.first

if win_id.nil?
system "#{PROG_NAME} &"
else
if `xdotool search --onlyvisible "#{WIN_NAME}"`.include? win_id
if `xdotool getactivewindow`.chomp.strip == win_id
system "xdotool windowunmap #{win_id}"
else
system "xdotool windowraise #{win_id} && xdotool windowfocus #{win_id} && xdotool windowmove #{win_id} 0 0"
end
else
system "xdotool windowmap #{win_id} && xdotool windowfocus #{win_id} && xdotool windowmove #{win_id} 0 0"
end
end

Как видно, если окна с «qk : » в заголовке нет, то запускается моя выбранная консоль. Если оно есть, но не сверху и не в фокусе, то выводим его на верх и в фокус, если оно в фокусе, то прячем, а если спрятано, то показываем и выводим в фокус.

  1. Теперь запускаем xbindkeys, который как раз нужен для привязки горячих клавиш, и конфигурируем его:
xbindkeys --defaults > $HOME/.xbindkeysrc
xbindkeys
xbindkeys-conifg

Используя интуитивно-понятный графический интерфейс, настраиваем нужную нам клавишу F12 на запуск нашего скрипта, который мы предварительно сделали запускаемым.

  1. Наслаждение

19.11.2009 firtree_right Пломбир

Забыл сказать. На прошлой неделе написал про неравенства и сравнения в руби. Этот пост годится для прочтения даже начинающим изучать руби.

А сегодня написал про тему, на которую съел мозг как минимум трём человекам (Петров, Руди, Лёха), прежде чем четвёртый прислал мне решение, не зная, что я его ищу. Это очень специфичный пост для тех кто в теме про то, как сделать ссылку на правильную библиотеку.

А ещё я сделал жене пломбир!

Birdie sealer

Раз вы заглянули под кат, то скажу вот ещё что. Не так давно пересматривал передачу «гордонкихот», в которой Задорнов и Джигурда троллили Гордона и учёных дядек. Я неоднократно видел, как вспыхивали эмоциональные споры при упоминании этой передачи, подобные тем, что там показаны. Даже как-то наблюдал своих папу и маму за спором на повышенных тонах на эту тему.

Так вот, мне кажется, что основное эмоциональное зерно передачи заключено не в роли славянского языка в мировой лингвистике, а в том, достаточно ли того, что я просто есть, чтобы себя любить, или это надо как-то заслужить?

Это важный вопрос для любого уважающего себя программиста. Так то!

06.11.2009 firtree_right Политика

Вот, кстати, заметьте! В то время как Майкрософт и его преспешники пишут тролльскую статью про то, что юнит-тесты никому не нужны. Гугл выпускает фреймворк для тестирования JavaScript. Вот более короткое и простое описание от фанатов.

И сразу всё понятно. Будете смеяться над TDD, запомнитесь, как и Майкрософт, за свои глюки.

01.11.2009 firtree_right Дабл

Ну что ж, похоже, моё альтер-эго успокоилось. Писать одновременно в два жжурнала невозможно. Думаю, когда это будет возможно, нужно будет пойти ко врачу. :) Кстати, у меня и бумажный дневник есть.

Так же в моей жизни произошло знаменательное событие. Ко мне в почту упал человек, который пользуется (пытается) нашей (нек4) библиотекой gphoto4ruby. И кроме того, что он мне помог с документацией и ему всё нравится, у него не всё получается, потому что у него Canon. Я что-то, конечно, попробовал сделать удалённо, но. Мне очень нужно для тестирования на недельку какой-нить Canon EOS (40D, 400D, 1000D, 300D, 450D, 5D Mark II). У них, видите ли, есть одна особенность. Нет ли у кого погонять? Могу даже расплатиться деньгами, едой или вязанием крючком.

Ире вчера пришлось два раза ходить в Альфа-Банк, чтобы закрыть там счета. С одного раза не получилось. Моё терпение в их отношении кончилось гораздо раньше, поэтому я уже давно закрыл свои.

Последнее время в блог получается писать раз в две недели. Тема последнего поста — удалённые объекты в руби — так или иначе витала надо мной ещё со времён, когда я был молодым java-программистом-студентом. Но заглянуть в неё плотно и разобраться мне удалось уже только после того, как я сам написал нечто подобное с нуля в программе для съёмок проекта Градоглядъ. Оказалось, что пока я там сам пишу что-то с нуля (но, к моей чести, стандартное решение всё равно неприменимо без значительного допиливания), Лёха во всю строит распределённую систему обработки данных, которая как раз и обращается к объектам на разных машинах, вызывая их методы. И тут он уезжает на две недели и оставляет меня с ней. :) Отличный способ разобраться.

25.10.2009 firtree_right Винегрет

Заметил удивительную особенность. За выходные мне нужно хотя бы один день максимально потупить. По возможности никуда не ходить, не программировать, можно заниматься уборкой разного рода, фильмов лучше смотреть немного (один-два). Если такого дня не получается, то к понедельнику ощущение, что не доотдохнул. Поэтому по выходным я люблю читать жж. Жалко, что в выходные мало кто пишет.

Когда писал статью про потоки в руби, заметил ещё одну удивительную особенность. Даже когда я пишу о том, с чем встречаюсь в работе и о том, что интересно прежде всего мне, хочется написать в форме образовательного материала. В расчёте на то, как бы мне хотелось это прочитать, если бы я этого не знал. И, конечно же, когда запрос на тему приходит через форму обратной связи, то писать сразу становится ещё интереснее. Захотелось даже сделать скринкаст: по ощущениям — это наиболее удобная образовательная форма в программировании. Потому что это прежде всего процесс и только потом код.

Кстати, Витла себе тоже поставил такую форму обратной связи на ito-sama (такая синяя кнопка слева). Ему теперь тоже можно что-то предлагать.

Кстати, сам проект http://reformal.ru/ с формами обратной связи — это калька с буржуйского проекта http://uservoice.com/. И ничего — все счастливы.

09.10.2009 firtree_right Спецыално дла джэма

В то время как мой любимый github перестал компилировать джемы в своих репозиториях, всё прогрессивное человечество разделяет задачи хранения исходников и создания джемов, перенося последнюю на gemcutter.

Удивительно, что проект существовал уже какое-то время, но вновь засиял после редизайна, и стремительно набирает популярность. Леденцовый дизайн — моя слабость: хочется лизнуть монитор.

08.10.2009 firtree_right Будни разработчика

Пригласили сегодня свежего специалиста по паянию. По его реакции было непонятно, то ли он офигел от свалившегося на него счастья, то ли вся работа ему уже обрыдла, не успев начаться. Ещё года два-три назад я бы до него докопался по этому поводу, а сегодня не стал. Зафрендил в жж: вдруг чего напишет. :)

Мы собрали новую установочку. Может быть, мне удастся понянчиться с ней пару дней и наделать разных ништяков в программе управления перед тем, как суровые люди заберут у меня её, чтобы мучать вдали от дома. О том, как мне приходится скрещивать скрипты на ruby с оболочкой bash, пока не программирую, я даже написал в блог.

А в остальном всё хорошо. И в Питере хорошо, и в Москве. А как у вас дела?

03.10.2009 firtree_right Питер

Сегодня в субботу (!) мне позвонили из одной компании, которая должна моей жене неприличную сумму денег и опять забыла об этом, и предложили работу или кого-то порекомендовать. Я, конечно, офигел, но вслух сказал, что занят на несколько месяцев вперёд, и никого порекомендовать не могу.

С одной стороны, когда задача стоит трудная, даже не обязательно сверх-задача-жизни, то это способно меня вырубить на неделю. Я читаю жж, дёрти-ру, в перерывах что-то гуглю про задачу, открывая кучу вкладок. У стороннего наблюдателя может сложиться впечатление, что я пинаю балду. Пока в один прекрасный момент задача вдруг не распадается на несколько вполне подъёмных частей. Это магический момент, но ему предшествует тупка.

А с другой стороны, когда забываешь про более крупную задачу, включая сверх-задачу-жизни, то вруг начинают мешать и досаждать всякие мелочи. Появляются придирки и беспокойство. Можно тратить часы на преждевременную оптимизациюTM или разговоры. Вроде бы чем-то плотно занят, но ничего не меняется.

Где баланс?

А мы тем временем поехали в Питер.