среда, 8 июля 2009 г.
SVG-иконки в QT-программах.
Теоретически это отличная идея - использовать векторные иконки. Внешний вид более не зависит от разрешения, при изменении масштаба глаза не начинают вытекать от пикселей. Ок, добавляем их в QT-ресурсы, компилируем и видим что ничего не работает. Иконок нет, как и сообщений об ошибках. В чём секрет?
Оказывается Qt с легкостью хватает любые форматы изображений без специального объявления кроме SVG. Для того чтобы QIcon понял что это, надо чтобы расширение svg было в имени. Лечение выглядит натуральным хаком - в alias ресурса надо добавить ".svg" и его-же в код грузящий иконки, Qt.QIcon(':/icon.svg').
Интересно только чем думают авторы?
понедельник, 15 июня 2009 г.
MySQL говно или как сделать DATETIME из DATE и TIME
Казалось бы делается это очевидно: DATETIME(date, time). Но нет, пидарасы, что создали MySQL, так не думают. Час в гугле вывел на работающий способ аналогичный удалению гланд через жопу. Нам надо собрать строку из date и time и эту строку преобразовать в datetime.
Узрейте свет ИСТИНЫ:
CAST(CONCAT(date, " ", time) AS DATETIME)среда, 18 февраля 2009 г.
Python, subprocess и MPlayer
Какое-то время назад возникла проблема играть из программы звук в нечеловеческих форматах. Кроссплатформено. Сначала я хотел использовать существующие библиотеки (Audiere например), но в конце-концов решил использовать MPlayer в slave mode. Всё работает БОДРЯЧКОМ под Linux естественно. А под Windows?
Новая проблема возникла далее - MPlayer просто не запускался. Если программа запускается из консоли или собирается с помощью py2exe как console - всё ОК, но как GUI не работает. Проблема оказалась снова в пайпах. Решение - при создании процесса с помощью subprocess.Popen задать все потоки (stdin, stdout, stderr), а не только нужные нам.
В итоге всё даже работает. Осталось только поизучать исходники SMPlayer'а чтобы узнать как обойтись без хаков. А всё почему? Потому что Windows - говно.
пятница, 5 декабря 2008 г.
Автор Audiere - говноед и пидарас.
воскресенье, 23 ноября 2008 г.
*nix tools
Отношения с никсовыми инструментами у меня имеют длинную и сложную историю. Главное, что было в них отталкивающего - они абсолютно не похожи на Windows-инструменты. Первые попытки набрать что-либо в vim заканчивались ничем.
Но к счастью были найдены вполне человеческие руководства и учебники, не только плавно объясняющие "как делать" но и дающие ответ на вопрос "в чем профит для меня". Это различный *book - vimbook, autobook (гуглятся вмиг). Руководство по лучшему редакторы и по системе сборки программ соответственно. При наличии такой базы можно дальше лезть в стандартные мануалы, мгновенно становящиеся простыми и понятными.
среда, 12 ноября 2008 г.
PyGTK и threading
Столкнулся сегодня с проблемой. У нас есть программа на PyGTK работающая под Windows. Она просто морда к БД и файловому архиву. Задача стоит достаточно тривиально - грузить файлы в фоне (они могут быть по много-много мегабайт). Делается так-же "тривиально" - поток на основе threading.Thread. Но обнаружилась засада - в фоне ничего не качало. Только при выполнении join() делалась нуждная работа.
В результате я пытался делать сложную магию и копал гугл. В итоге обнаружилось, что проблема в gtk. Оно как-то хитрым образом работает с потоками, потому все вызовы gtk надо оборачивать в gtk.threads_enter() и в gtk.threads_leave(). А в начале вызывать gtk.gdk.threads_init().
Теперь код должен выглядеть примерно так:
gtk.gdk.threads_init()
create_window()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
Вот такая вот ерунда.
четверг, 16 октября 2008 г.
понедельник, 22 сентября 2008 г.
Code Geass
Хотя слишком пахнет 3-им сезоном. В крайнем случае чем-то вроде End Of Code Geass. Хотя это ещё терпимо (если сделать натуральный цирк-геноцид с сошедшим с ума РюРю, то будет конфетка). Полноценный третий сезон просто "не пойдёт" - нельзя балаган разбалаганить, его можно и нужно прекратить. Остается надеяться, что в последней серии все линии будут сведены в точку. Наннали кажется натурально финальный босс. В любом случае через неделю все кончится, мы посмотрим финальные титры и добрые люди в белых халатах нас всех увезут в дом с мягкими стенами, где мы будем ходить кругами, зыркать друг на друга и кричать "ОЛЛ ХАЙЛЬ ЛЕЛУШ!".
Далее будет второй сезона Gundam 00, в котором таких сюжетных извращений быть не может по сути. Если конечно они не будут пытаться превратить Гандам в Гиасса, который сам по себе тоже Гандам, только с магией.