среда, 18 февраля 2009 г.

Python, subprocess и MPlayer

Какое-то время назад возникла проблема играть из программы звук в нечеловеческих форматах. Кроссплатформено. Сначала я хотел использовать существующие библиотеки (Audiere например), но в конце-концов решил использовать MPlayer в slave mode. Всё работает БОДРЯЧКОМ под Linux естественно. А под Windows?

А ситуация с Windows описывается словом "жопа". Научить MPlayer понимать команды я не смог (что-то с пайпами, лень возиться). К счастью бегать по одному треку или ставить на паузу не надо, процесс можно просто убивать. Просто хак с проверкой что мы под Windows и всё.

Новая проблема возникла далее - MPlayer просто не запускался. Если программа запускается из консоли или собирается с помощью py2exe как console - всё ОК, но как GUI не работает. Проблема оказалась снова в пайпах. Решение - при создании процесса с помощью subprocess.Popen задать все потоки (stdin, stdout, stderr), а не только нужные нам.

Но тут вылезла проблема номер 3. MPlayer выкидывал некрасивое пустое консольное окошечко поверх нашей Qt-морды. Решение было найдено в гугле минуты за 2 тут

В итоге всё даже работает. Осталось только поизучать исходники SMPlayer'а чтобы узнать как обойтись без хаков. А всё почему? Потому что Windows - говно.

пятница, 5 декабря 2008 г.

Автор Audiere - говноед и пидарас.

Это я заявляю официально. Который день разгребаю этот кусок говна (надо было на свою голову выбрать именно эту библиотеку), а оно не кончается. И это я еще код серьезно не трогал. А там ахуй в стиле "мы знаем вот такую клёвую фичу C++!". Слать туда патчи, как я планировал изначально, нельзя ни в коем случае. Форк, только форк и тотальный рефакторинг!

воскресенье, 23 ноября 2008 г.

*nix tools

Отношения с никсовыми инструментами у меня имеют длинную и сложную историю. Главное, что было в них отталкивающего - они абсолютно не похожи на Windows-инструменты. Первые попытки набрать что-либо в vim заканчивались ничем.

К счастью, реально эти программы оказались достаточно простыми, самое главное и сложное понять их принципы. Инструменты эти не рассчитаны на ложный простой путь "сел и начал работать". Это действительно инструменты, которые надо изучать. Проблема только в руководствах. Например, vimtutor это просто страх что такое, разобраться по нему конечно можно. Но он не даёт ответа на вопрос "зачем мне в этом разбираться, в чем профит?".

Но к счастью были найдены вполне человеческие руководства и учебники, не только плавно объясняющие "как делать" но и дающие ответ на вопрос "в чем профит для меня". Это различный *book - vimbook, autobook (гуглятся вмиг). Руководство по лучшему редакторы и по системе сборки программ соответственно. При наличии такой базы можно дальше лезть в стандартные мануалы, мгновенно становящиеся простыми и понятными.

Основной же принцип всех нормальных никосвых инструментов - делать что то одно. На самом деле тут не нужны многие привычные инструменты, замену которым активно ищут. Например, огромный Word может быть заменён не монстром OpenOffice а лёгким AbiWord для мелких текстов (запускается моментально) и LaTeX'ом для текстов сложных. Вполне недурный SMPlayer заменён на чистый MPlayer с сложным конфигом. Приятнее всего то, что отказ от уродливых windows-style программ-универсалов радикально повышает скорость работы. Ощущение что система "летает под пальцами", выполняя любое действие практически в тот-же миг, крайне приятно.

среда, 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

На самом деле это балаган, который всех задрал. Балаган хороший, не спорю, крайне смотрибельный и весёлый. Только смысла уже давно нет, основной вопрос каждой новой серии "кто умрёт сегодня" и "каков новый хитрый план РюРю". Сегодняшняя, 24-ая серия, это впечатление только укрепила.
Хотя слишком пахнет 3-им сезоном. В крайнем случае чем-то вроде End Of Code Geass. Хотя это ещё терпимо (если сделать натуральный цирк-геноцид с сошедшим с ума РюРю, то будет конфетка). Полноценный третий сезон просто "не пойдёт" - нельзя балаган разбалаганить, его можно и нужно прекратить. Остается надеяться, что в последней серии все линии будут сведены в точку. Наннали кажется натурально финальный босс. В любом случае через неделю все кончится, мы посмотрим финальные титры и добрые люди в белых халатах нас всех увезут в дом с мягкими стенами, где мы будем ходить кругами, зыркать друг на друга и кричать "ОЛЛ ХАЙЛЬ ЛЕЛУШ!".
Далее будет второй сезона Gundam 00, в котором таких сюжетных извращений быть не может по сути. Если конечно они не будут пытаться превратить Гандам в Гиасса, который сам по себе тоже Гандам, только с магией.

суббота, 9 августа 2008 г.

OpenOffice от ИнфраРесурс и Debian Lenny

В данный момент у тестового Дебиана есть проблемы с инфраресурсным OpenOffice. Он конфликтует с какой-то java-related библиотекой, связанной с ImageMagick (именно после установки его я начал наблюдать это). Выражается это в том, что при обновлении системы почти весь Офис сносится системой автообновления. При установке заного из DEB-пакетов мы получаем ругательство на несовместимость версий. Причина вполне очевидна - в Офисе поставлена зависимость "не более такой-то версии".
Пока делать с этим не буду ничего. Тестовый дистр на то и тестовый. Думаю, что проблема будет достаточно скоро решена. Во всяком случае в стабильной версии таких проблем быть не должно. Может и ИнфраРесурс подтянется.
Пока поставил Офис, который есть в репозиториях.

четверг, 7 августа 2008 г.

Теперь я дебианщик.

Давненько сюда не писал. Думаю, что лучше заброшу ЖЖшку, если что и буду писать, то сюда.
Итак, теперь я полностью самостоятельный и независимый человек. Живу отдельно от родителей (и давно уже), с недавних пор - полностью на свои деньги. Сестра, закончив университет, уехала на ближайшее время в Губаху, откуда укатит на год в Китай, учить китайский язык. Сейчас за месяц пытается довести его до минимально приемлемого уровня, чтобы в совсем новичковую группу не попасть.
Я-же снес Windows и поставил Debian Lenny. Вообще, с тех пор, как нашел новую работу, стал проводить в никсах крайне много времени, очень во многом разобрался. Настолько, что сейчас линукс для меня удобнее окон. Во многом. Ну и то, что у системы нет "хозяина", который очередным патчем (или уже давно установленной закладкой) может сделать с компьютером и данными что угодно тоже радует. Хотя это скорее по разряду паранойи.
Порадовал gnash - он теперь научился играть видео на ютубе. На моей машине крайне тормозно пока, но сам факт что свободный флеш уже работает не может не радовать. Еще год над ним поработают и, я думаю, он станет более чем юзабельным. Может даже лучше флеша исходного.
Так-же я решил податься в косплей. Для начала решил выбрать персонажа и смотримого Macross Frontier, который мне симпатичен. Это Мишэль, один из пилотов SMS. Делуть буду "гражданский" костюм, поскольку совсем он не сложен. Я даже шить чуть-чуть умею. Думаю, что на следующей неделе он будет практически готов.

воскресенье, 22 июня 2008 г.

AnimeDay'2008

Итак, у нас в Перми сегодня был AnimeDay'2008, что-то типа маленького феста. Я там был, было весело. К сожалению, из-за моей цифровой мыльницы и из за того, что на месте было темно, получилось очень мало фотографий. Все, что получилось после обработки фотошопом и понравилось лежит тут.
Более всего Мне понравился косплей Айрис.

Айрес_01_small.jpg - image uploaded to Picamatic Айрес_02_small.jpg - image uploaded to Picamatic Айрес_03_small.jpg - upload images with Picamatic Айрес_04_small.jpg - image uploaded to Picamatic Айрис_с_Лелушем_small.jpg - upload images with Picamatic

Было много КотаГиасса (с Лелушем "ПАФОС!" Зеро)

КотоГиасс_01_small.jpg - image uploaded to Picamatic КотоГиасс_02_small.jpg - upload images with Picamatic КотоГиасс_03_small.jpg - upload images with Picamatic КотоГиасс_04_small.jpg - Picamatic - upload your images КотоГиасс_05_small.jpg - Picamatic - upload your images Сестра_Лелуша_со_служанкой_small.jpg - Picamatic - upload your images

Была Сузумия ("а еще у неё ни стыда ни совести!")
Судзумия_01_small.jpg - Picamatic - upload your images Судзумия_02_small.jpg - upload images with Picamatic

Были групповые снимки.
Толпа_01_small.jpg - upload images with Picamatic Группа_01_small.jpg - Picamatic - upload your images

Остальное, что удалось вытянуть на нормальный уровень.
Кавай_01_small.jpg - upload images with Picamatic Кавай_02_small.jpg - upload images with Picamatic Кавай_03_small.jpg - Picamatic - upload your images Кавай_04_small.jpg - upload images with Picamatic Кавай_05_small.jpg - image uploaded to Picamatic Кавай_06_small.jpg - image uploaded to Picamatic Кавай_07_small.jpg - image uploaded to Picamatic Кавай_08_small.jpg - upload images with Picamatic Кавай_09_small.jpg - Picamatic - upload your images

А еще я поробовал сложить из бумаги журавлика. Он даже вышел. В некотором роде. Надо будет потренироваться.
Журавлик_small.jpg - image uploaded to Picamatic

Ну и еще несколько фотографий.
Я_с_Айрис_small.jpg - upload images with Picamatic Я_с_Каррен_small.jpg - upload images with Picamatic Я_с_Сузумией_small.jpg - upload images with Picamatic

Вобщем, все было здорово.

пятница, 6 июня 2008 г.

Про "свободный" софт.

Нет в свободном софте никакой свободы. Это свобода для софта и компьютеров, не для людей. Проблема возникает, когда оказывается, что подавляющая часть людей не сисадмины и программисты. И получать вторую профессию не хотят, и, кроме того, не способны испытывать чувств к программному коду. Последним крайне интересно пользоваться и смотреть на реакцию.
Так-же сами апологеты свободного софта отличаются редкостной тоталитарностью и двуличностью. По принципу "или-или". Или ты с нами или ты против. Пока ты с ними - будут втираться сказочки про альтернативу, стоит только ткнуть пальцем в явные недостатки (которх полно) или не осилить вещей, требующих специальных знаний - немедленно заводится шарманка про "Linux - это не Windows" и требования вернуться назад. Разговоры про альтернативность исчезают, будто бы и не было. Или начинают извращаться, переиначивая слова в стиле, что под альтернативой подразумевается "альтернатива для профессионалов" и подобное.
Только на русскоязычном форуме Убунты (самый человечный дистрибутив) царит натуральная зона. Названия тем вроде "О модерстве. Читать всем. Глобал Модерам пинать меня!", повсеместное использование повелительного наклонения и сообщения в стиле "Копать от забра и до обеда" говорит о многом. Самое интересное, что есть люди, такие-же линуксоиды, которые сидят в этих гадюшниках по своей воле.
Негласно подразумевается единственно правильный выбор способов работы. Это вечная консоль и богомерзкий Vim. Эти способы по неведомым причинам зовутся истинно эффективными. Вот только откуда такая уверенность взялась?
Консоль - удобный инструмет для решения тех задач, для которых она создавалась. Не более и не менее. Администратирование, управление, некоторые операции действительно эффективно делаются тут. А другие задачи? Конечно нет. Те, кто навязывают консоль просто живут не в том мире, где пользователи и в принципе не способны знать как делать другие задачи.
Эта "жизнь в другом мире" корень проблем софта для Линукс. Как правило те, кто развивают открытый софт - программисты. Они в принципе не могут оценть удобство использования созданного ими софта с точки зрения пользователя. С их точки зрения всё может быть отлично, а на самом деле ужасно.
Это неспособность понять, что-же надо делать выливается в копирование разработок старших товарищей. И вторичность. Сообщения "у нас в точности как в Windows, посторонний человек на глаз даже отличить не сможет" являются признанием убогости собственных разработок. С точки зрения программистов - это наверно достижение. Но зачем что-то выглядещее "точно как", когда есть оригинал?
Сильные стороны открытый софт использует зачастую слабо. Вполне можно было-бы создать более удобные интерфейсы не занимаясь прямым копированием и без желания любой ценой походить на старших товарищей. Разумеется без заимствований обходиться нельзя, но кто не занимается ими? Стремление во чтобы то ни было походить на продукцию Микрософт и других компаний навсегда оставит Линукс на вторых и третьих ролях.
Так-же Линукс слабо упирает на то, какую выгоду могут получить пользователи. Упор ведется на трехмерный десктоп (реально игрушка, свистоперделка в худшем смысле), похожесть на Windows и бесплатность. Хотя они могут быть другими.
Нетребовательность к железу, позволяющая сэкономить. Отсутствие необходимости покупать новую версию софта только потому, что создана новая версия, поддержка старой прекращена, а совместимость со старыми форматами разрушена. Реализация новых функций по запросу и оперативная починка багов. Гарантии, что софт не забросят с возможность в крайнем случае передать разработку другим людям. А бесплатность на самом деле не является таким уж преимуществом, с определенной точки зрения это даже недостаток.
Но этого не очень видно.