Saturday, August 28, 2010

Ошибка ли? (продолжение) или разработка под ubuntu

Продолжение поста.

Пока благодаря использованию альфа версии я добился большого роста количества попугаев в своем профайле на Launchpad отвечая кучу вопросов: 'а не хотите ли написать жалобу сообщение об ошибке разработчикам?' -  всегда да и в полном объеме. (Для тех кто не пользуется Ubuntu или у него всегда все хорошо: там дается выбор слать много или отделаться только сокращенной версией?). 

Так быстро (2 недели или 4 выходных) рейтинг на сайтах связанных с разработкой у меня не рос, хотя я не знаю за что он там дается и по какому принципу. На gnome у меня только 5 пунктов. Хотя прогресс все же есть - теперь сообщение о менеджере питания уже не появляется (раньше каждые 5 минут), но ошибка с не запускающимся gdm вовремя остались, хотя по их классификации это проблема с сплешскртном, но я не разбирался, не в этом суть, 3d тоже что-то не очень работает сижу на фреймбуферных дровах. Главное я посмотрел на kerneloops подобная ошибка там есть - значит исправят.

Хотя, я посмотрел на текущие ошибки в следующем релизе федоры там тоже есть ошибка с radeon при установке черненький экранчик - и очень интересно решение, отключайте kms и как следствие и 2(3)d ускорение на видеокарте, ты не один - нас...

А теперь непосредственно продолжение поста.

Для того чтобы найти причину ошибки решил все таки отдебажить код библиотеки, сейчас ее вынесли из состава gtk+, но все таки замены ей не придумали(то есть она еще нужная), что в принципе противоречит популярной сейчас стратегии все засовывать внутрь своего проекта.

Единственные проблема непосредственно ее использовать сложно, так как она используется через gtk. И я решил, а не поставить ли нам полные версии отладочной информации?

Как оказалось это вполне реализуемо:
  • Для отладки вылетания программ рекомендуют ставить также пакеты *-dbg*, но это не совсем помогает может для создания отчета об ошибке этого хватает, но мне бы удобнее было бы ходить по коду и у меня то в общем-то ничего не падает. Для поднятия рейтинга на выше означенном ресурсе подходит, для разработки не очень.
  • Поставить отладочную инвормацию dbgsym, это тоже просто:


    echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" |
    sudo tee -a /etc/apt/sources.list.d/ddebs.list
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 5E0577F2
    sudo apt-get update
    
    , и ставим что понравилось:-) Но мне опять таки не помогло, или дебагер у меня несколько неправильный или что-то еще, в общем от этой идеи тоже отказался.
  • И наконец самый правильный вариант самому собрать пакеты, тут тоже все просто вглубь gtk заползти удалось.


    apt-get source foo
    apt-get build-dep foo
    dpkg-source -x foo_version-revision.dsc
    fakeroot debian/rules binary
    
    Но не дальше, дебагер отказался находить код для автоматически загружающихся динамических библиотек для распаковки файлов.
Но это уже гораздо ближе к цели.

Tuesday, August 17, 2010

Ubuntu 10.10

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

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

Опций для переключения видеокарт в gdm не видно, похоже нужно еще подождать. Но 3d точно сломали - теперь опять мигают текстуры в cube2 и на выходных что-то  сломалось в драйверах: в логах ядра сообщения что не возможно поставить команды в очередь видеокарты, на экране вместо изображения черный фон и вместо курсора белы квадратик, похоже решил переименовав failsave в xorg.conf и перезапустив gdm. На следующий день все загрузилось нормально, в общем опять жду когда подправят 3d :-) 

И вообще когда появятся нормальные драйвера на radeon, обещались прошлым летом, но пока что-то оно не очень рабочее, или это только мобильные версии не очень?

Friday, August 13, 2010

автоматический редирект на https<->http

Маленький пример кода для перенаправления:

     $redirect_needed = false; 
    /*
     * какое-то очень умное правило определения важности
     * шифрования данной страницы 
     */
    if (!isset($_SERVER['HTTPS']) && $redirect_needed) { 
      header('Location: https://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
      die(); 
    } 
    if (isset($_SERVER['HTTPS']) && !$redirect_needed) { 
      header('Location: http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
      die(); 
    }

Tuesday, July 20, 2010

Ошибка ли?

Обнаружил интересную особенность в обработке анимации(gif) в gtk+. Непосредственно ошибку обнаружил не я, но я все таки решил проверить, можно ее повторить без лишнего кода. Оказалось да - но распространяется она не только на случай, когда файл загружается частями gdk_pixbuf_loader_write и потом показывается анимация (gdk_pixbuf_loader_get_animation + gdk_pixbuf_animation_get_iter), но даже если загрузить анимацию сразу через gtk_image_new_from_file. В любом случае используется до 1GB памяти - что не очень хорошо для 6MB файла, да и вообще плохо. 

Если верить документации на gdk_pixbuf_animation_get_iter - то библотека сама контолирует выделение pixbuf и после сдвига его использовать нельзя. Я думал что после загрузки через gdk_pixbuf_loader - создается копия данных и как только количество этих данных становиться больше чем нужно, для минимального отображение, посылается сигнал на прорисовку - что в принципе подтвердилось, так как если брать статическую картинку(gdk-pixbuf-animation-get-static-image), то затраты памяти значительно меньше. Далее я думал, что gdk_pixbuf_animation - при создании создает только 1 кадр, и при запросе на сдвиг времени выдает следующий по порядку(пропуская лишние, если нужно) и удаляет предыдущий копию. Но похоже это не так так как если самому вызывать очитку отображенного кадра(unref) при удалении обьекта анимации создается сообщения о повторном удалении обьектов. Думаю создаються все кадра и не удаляются.

И ошибка или так задумано?

Friday, June 25, 2010

Сравнение скорости прорисовки карт(gmap, openlayers).

Маленькое сравнение библиотек для работы с картами (в скобках более слабый компьютер):
  1. gmap v3 - 7,186(13) секунд;
  2. gmap v2 - 20,541(34) секунд;
  3. openlayers - 6,181(7) секунд.
Условия:
  • Прорисовывается список стран используя изначально разобранный kml, для уравновешивания условий прорисовки (Gmap - для прорисовки kml используется разбор на уровне сервера с возвратом обратно только готового изображения);
  • Запускается по нажатию на start, и до момента нажатия stop. Почему не автоматом? Карта может прорисовываться асинхронно, а так точно можно отследить, хоть и не с абсолютной точностью, момент когда по мнению пользователя все прорисовано;
  • Подсчет времени начинается после разбора, результаты должны быть более-менее реалистичными;
  • Вариант прорисовки через canvas для openlayers не участвовал в сравнении, так как сильно проигрывал стандартному варианту;
  • Использовался ff 3.6.3(linux).
Если кто-то найдет ошибки в коде прорисовки или способы ускорения буду рад обсудить.

Saturday, June 5, 2010

Hybrid graphics and .34

Поставил себе .34 ядро в Ubuntu, в нем поддержка Hybrid graphics(switcheroo), оказалась отключена (файл для управления не создавался). Пересобирать ядро, как то желания не появилось, решил пока подождать выхода .34.1 и посмотреть на результаты в Lunar. В этом дистрибутиве появляются ядра в основном только после выхода первого багфикса, что в принципе и правильно.

В общем результаты: самый честный счетчик попугаев glxgears подрос до 3278 frames in 5.0 seconds(OpenGL renderer string: Mesa DRI R600 (RS780 9612) 20090101 TCL DRI2, 1.5 Mesa 7.7.1), в втором кубе вода стала прозрачной, но деревья стали выглядеть несколько странно в виде рубленных текстур.

Saturday, May 29, 2010

Формирование pdf из js

Обнаружилась интересная библиотека jspdf - позволяющая создавать простейшие pdf из js. Она основана на коде(скорее принципах и как пример) fpdf. Позволяет менять размер шрифта и размещать текст на странице - pdf возвращается как datauri, отлично работает в linux, но в windows есть несколько проблемок: ie не понимает datauri ни в каких формах, кроме как встроенное в страницу изображение, firefox при установленных обработчиках pdf(например: acrobat reader) происходит переход на этот url и показывается черный экран вместо контента страницы, иначе предложение загрузить. Это решаемо достаточно просто контент отправляется обратно на сервер как параметр POST, в ответ возвращается уже как контент с типом pdf - и все нормально работает.

P.S.: Я немного улучшил эту библиотеку добавив смену цвета шрифтов, поддерживается градации серого и полная RGB палитра.