Sunday, February 7, 2010

Urxvt links parsing

Когда меня наконец-то задолбало постоянно кликать третьей кнопкой мыши в тонкой адресной строке моего браузера, перед этим тщательно выделяя ссылки в mcabber, снабжённые вялыми описаниями моих друзей "ZOMG! INVISIBLE SANDWICH!", я решил посмотреть, что же можно с этим сделать. Оказалось практически как с метрономами и тюнерами фирмы KORG: батарейки входят в комплект, но с неожиданной стороны коробки.
Добавляем следующие строчки в наш .Xresources:
1 URxvt*perl-ext-common: default,matcher
2 URxvt*keysym.C-g: perl:matcher
3 URxvt*urlLauncher: firefox
4 URxvt*colorUL: #86a2be

И по нажатию ctrl-g у нас будет открываться в firefox последний url-match.
Можно ещё мышкой кликать (по умолчанию - средняя кнопка, но можно настроить через URxvt*matcher.button). И вообще, в man 3 urxvtperl много чего любопытного написано, оказывается.

Thursday, February 4, 2010

Проблема российской музыки

Студийное качество ещё хоть более-менее умеют "подтягивать", не смотря на то, что в, условно, даже 10-милионном городе находится только 1 композитор.
Виагра - бриллианты
Нет, я не спорю, отличная партия ритм-секции и вокал даже пытается как-то соответствовать.
А теперь слушаем live-версию этого трешака

И сравнить примерно того же время выхода клип katty perry - i kissed a girl и unplugged-версию этой же песни (у нас в эстраде свинговать-то даже на записи боятся.) тут

Копнём полуандеграунд и без вокала? Пожалуйста. Battles, например. Пример
У нас есть что-то подобное? Everything is made in china? Один из их крайних треков
Я слышал их на разогреве 65daysofstatic. Пятьдесят минут, пятнадцать примочек и ни одной запоминающейся мелодии.
В прочем, разогревы это вообще ужас.
На разогрев Riverside вышла какая-то сумашедшая команда dark heaven. Барабанщик постоянно сбивался, когда переходил на кардан, а вокалистка мазала мимо нот. Все в масках, кроме вокалистки. Тут я даже пожалел, что я отлично вижу с такого расстояния - лучше бы и она была в маске.

В тоже время в музыкальном колледже я постоянно слышу и вижу отличных вокалисток, владение голосом которых заставляет меня чуть ли не яростно онанировать прямо там, гитаристов, которые понимают, что лучшее соло Джона Петруччи - это то, что он сыграл в Hollow Years на бутлеге Budokan, причём шред там совершенно был лишним и басистов, которые умеют слушать барабанщика и не пытаются в каждую паузу напихать побольше кривого слэпа.
Куда они все деваются, блин?

Tuesday, February 2, 2010

latex2html

I do think it's good. No matter, how hardly I study it, no matter how I take it apart..

Я настолько свыкся с техом, что мне уже непривычно набирать объёмные структурированные документы в чём-то другом. Однако, до сих пор встречаются люди, недолюбливающие pdf, но на вопрос "Хорошо, а если это будет html?" уверенно отвечающие "да не вопрос!"

Специально для таких есть вариант простой конвертации одного в другое, и этому perl-скрипту даже посвещена довольно куцая страница на википедии.

Пример вызова:
$ latex2html -show_section_numbers -t "Для Служебного Пользования" -noinfo -nonavigation -split 0 filename.tex


Параметры:
-noinfo уберёт раздел "Об этом документе..."
-split 0 не будет разбивать документ на кусочки
-t "BLABLABLA" заголовок страницы
-show_section_numbers показывать номера в разделах, номера берутся из filename.aux

Пример документа для данной штуки (крайне куц, тоже):
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[russian]{babel}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}

\begin{document}
\tableofcontents
\input{main-koi}

\end{document}


где main-koi содержит обычную теховскую стрктуру --- section, subsection, etc

И да, эта дура не очень любит не-английские тексты (и юникод, похоже, тоже), поэтому потом придётся вскрыть выходной файлик и прописать ручками в соответствующем meta-тэге content-type = text/css; charset = koi8-r, а то несчастные хомячки опять будут вопить о том, что "у тебя там кракозяблики"

А на дворе стояло начало второй декады двадцать первого века..

Thursday, October 22, 2009

Microsoft Visual Studio 2005 + qt 2009.4 integration

По горячим следам пишу пляски с бубном по установке йобаного qt-integration в microsoft visual studio 2005

В моём случае использовалось:
  • ArchLinux + VirtualBox 3.0.8 + WinXP в нём
  • Microsoft Visual Studio 2005
  • Qt 4.5.0 (2009.04)
  • Qt visual studio integration add-in 1.1.0
  • 4 часа времени (умножить на число неудачных попыток собрать с другими параметрами)
  • 2 кружки чая

    Вкратце: чтобы всё заработало с минимумом плясок в будущем, надо пересобрать qt компилятором от msvs. Здесь описывается success story этих свистоплясок


    Процедура манипуляций:
    0x0) поставить Arch, VirtualBox, WinXP
    0x1) туда влепить MSVS 2005 (я вырезал всё, кроме Visual C++) - примерно 1.1 Gb
    0x2) ставить qt-sdk-win-opensource-2009.04.exe
    0x3) она поставится ну, пусть в C:\Qt\2009.04. Делаем там же копию, допустим, в C:\Qt\2009.04vc
    0x4) достать бубен, стряхнуть пыль. Распечатать соответствующие man-тры
    0x5) открыть MS Visual Studio Command Prompt (из MSVS -> Tools), можно в принципе, просто запустить нужный батник vcvarsall.bat, который пропишет все переменные, перейти в созданную нами папку
    0x6) конфигуем сборку. Единственный вариант ключей к configure, который потом у меня удачно собрался, был этот:
    configure.exe -platform win32-msvc2005-no-sql-sqlite-no-qt3support-no-dbus -no-phonon -no-phonon-backend -no-webkit

    Даже несмотря на поставленный psql, варианты типа -plugin-sql-psql не срабатывали, так как не могли найтись нужные библиотечные файлы (естественно, в системе присутствовавшие). Поэтому я решил, что стоит сначала собрать всё, как есть, а потом, если что, доставить (ибо процедурка сборки довольно длительная)
    0x7) запускаем nmake и можно откинуться на спинку кресла идти курить бамбук - оно ещё долго не будет от нас ожидать каких-то действий.
    Сборка заняла на моей виртуальной машине (WinXP, ~1.5Gb ram) около 3 часов. Это самое противное, потому что, примерно столько же по времени занимали опыты с, как выяснилось, неудачными параметрами сборки.
    0x8) ставим qt-vs-addin-1.1.0, запускаем msvs 2005. Если всё хорошо - переход к пункту 13.
    0x9) студия сказала - иди ты, не буду никаких плагинов брать или что-то в этом духе. Никаких дополнительных меню не появилось. Расстроенное перелогиниваемся перезагружаемся.
    0xA) открываем студию снова, видим, что появилось новое меню Qt. Если в qt options показывается поставленная (собранная нами) версия qt - переход к пункту 13.
    0xB) громко матерясь, попробовать добавить версию qt самостоятельно. Если добавилась (надо указать правильный путь. В нашем случае это c:\Qt\2009.04vc) - переход к пункту 13.
    0xC) прописать в переменные среды (My Computer -> Advanced -> Environment Variables. лучше в глобальные) QTDIR=c:\Qt\2009.04vc. Перелогиниться перегрузиться.
    0xD) если теперь правильная версия не подцепилась - подключить вручную.
    0xE) открыть какой-нибудь Qt project (из соответствующего пункта меню Qt -> open .pro), убедиться в работоспособности...
    0xF) ...
    0x10) PROFIT!

    В итоге из Microsoft Visual Studio - About Microsoft Visual Studio примерно следующая информация:

    Microsoft Visual Studio 2005
    Version 8.0.50727.42 (RTM.050727-4200)
    Microsoft .NET Framework
    Version 2.0.50727 SP1

    Installed Edition: Professional

    Microsoft Visual C++ 2005 77626-009-0000007-41572
    Microsoft Visual C++ 2005

    Qt4 Add-in 1.1.0
    For more information about the Qt 4 Add-in, see
    http://qt.nokia.com
    Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies)


    Инджой.
  • Friday, September 25, 2009

    Отличный пример для объяснения импликации

    Существует логическая операция, называемая импликацией [1] (обозначается стрелочкой)
    Обычно она объясняется как "посылка -> следствие"
    Стандартно у преподавателя возникает небольшая заминка с тем, какой пример выбрать для иллюстрации таблицы итинности данной операции. Наиболее удачное из того, что я слышал: x={"Студент сдаст хорошо сессию"} y={"Папа купит ему машину"}. Однако, это не совсем удачная иллюстрация, потому что как-то не очень близка к действительности. Напомню, что x->y == 0 только в том случае, если студент действительно хорошо сдал сессию, а папа машину ему не купил (наоборот, если студент сдал плохо, а папа купил ему машину, то папу лжецом уж точно не назовёшь).

    Внезапно однажды на занятии у меня родилась шикарная идея, какие два события лучше подходят для описания: x={"Девушка забеременела"}, y={"Её мальчик на ней женился"}. Тогда x->y = {"Если девушка забеременела, мальчик на ней женился"}. Действительно, если девушка не забеременела, а мальчик не женился, никакого обмана не произошло, и x->y истинно, если девушка не забеременела, а мальчик, тем не менее, женился, то он, бесспорно, благородный дон и высказывание x->y всё равно истинно (никто никого не обманул). Если же девушка забеременела и парень женился, то всё опять же истинно (мужик сказал - мужик сделал!). Однако, если же девушка забеременела, а парень на ней не женился, он, конечно же, козёл. И в этом месте даже самые отстающие школьники понимают, что информатика гораздо ближе к жизни и радостно поддакивают своими милыми мордашками "козёл, конечно!".

    ---

    [1] http://ru.wikipedia.org/wiki/Импликация

    Saturday, September 12, 2009

    Zenwalk 6.2: epic fail.



    Всё, пришло время менять дистрибутив.
    Я два с половиной года сижу на Zenwalk, недавно они выпустили следующую версию - 6.2. На моём ноутбуке сидит 6.0, я практически не пользуюсь иксовым софтом, поставляемым от дистрибутива (zenpanel, xfce, totem, geany). До недавнего времени всё работало, но я прозевал смену версии и не успел поставить какие-то пакеты из репозитория (эта политика закрытия старых репозиторий в основанных на версиях дистрибутивах меня безумно раздражает). Я понимаю, что если я опять скачаю инсталяционный диск, запишу его на болванку и поставлю систему "с нуля", то всё будет работать, а у меня в uname будет написано 6.2 вместо 6.0, но что-то внутри против такого решения.
    Соответственно, после выполнения ритуальных netpkg update, слетели иксы, запустить которые быстро не удалось (как уже потом стало ясно, вопрос пакетного менеджера "upgrade whole system?" не подразумевает установку дополнительных пакетов, необходимых для нормального функционирования системы). В общем, третий раз подряд апдейт провалился. Кажется, нормально проапгрейдить систему у меня получилось только один раз - с Zenwal 4.0 до Zenwalk 4.2. Сурово поматерясь и потратя полчаса на поиски болванки в общаге, в итоге был закачан archlinux и после двух-трёх часов конфигурации, я снова влюбился :) Да, почти голая система после установки, зато нет ничего лишнего и всё предельно просто, без излишних упрощений. В общем, философия Arch (The Arch Way) мне кажется более сохранённой, чем философия Zenwalk ("unix way - one task, one program." - Сильно ломается в последнее время, в связи с уходом одно с небольшим скандалом из постоянных контрибьюторов товарища gapan и в след за ним уходом ещё некоторого количества достаточно влиятельных людей).
    Короче, я доволен Archlinux, пока не всё настроил, но высокая степень прозрачности системы очевидна. Любимый оконный менеджер ion3 встал легко и непринуждённо, хотя с настройкой клавы и пришлось немножко повозиться.
    А самое главное! Тут нет погони за версиями. Просто rolling releases, которые регулярно отображаются в виде "а вот исошник тут - дамп основных пакетов из репозитория. Бери, коль инета нет".
    Так что, два с половиной года с Zenwalk было весело, но пора уже и честь знать. Судя по всему, с Archlinux повеселее будет :)

    Wednesday, September 9, 2009

    MIDI keyboard under linux (как подружить usb midi keyboard, fluidsynth и jack)

    Вчера наконец-то заставил работать под линуксом миди-клавиатуру (честно говоря, не совсем наконец-то, всего второй раз пробовал)

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

    Общая схема подключения оказалась такой:
    0. втыкаем клаву
    1. запускаем демон jackd с нужными параметрами (см. ниже)
    2. стартуем fluidsynth указывая, что надо использовать jack и определённый soundfont (без него ничего не получится)
    3. связываем средствами ALSA ввод с миди с выходом fluidsynth
    4. связываем jack-ом выход fluidsynth с системным выходом.
    5. ?????????
    6. PROFIT

    скриптец с раскраской, требует допиливания, чтобы заработало

    Если говорить в терминах команд, то получаем следующее:
    Запускаем джек:
    jackd -dalsa -dhw:0,0 -r44100 -p512 -n4 &

    Теперь запустим синтезатор, скормив ему звуковой шрифт:
    fluidsynth -ajack /home/cra/Unison.SF2

    Кстати, откроется шелл, в котором можно регулировать gain командой gain X, где X - число от 1 до 5. Остальные команды, в общем-то, не столь важны.

    Далее, смотрим, какие порты у нас открыты по выводу команды
    aconnect -o

    И подключаем вывод клавиатуры к входу синтезатора: что-то в духе
    aconnect 128:0 20:0

    Ну а теперь надо подцепить выход синтезатора джэком к системному выводу звука:
    jack_connect fluidsynth:left system:playback_1
    jack_connect fluidsynth:right system:playback_2

    Всё, из колонок должны доноситься звуки.