12 октября 2010 г.

Tahoma в Linux

Выполняем в консоли следующие магические команды: :-)

cd /tmp
sudo apt-get install msttcorefonts
wget http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/IELPKTH.CAB
cabextract IELPKTH.CAB
sudo cp *.ttf /usr/share/fonts/truetype/msttcorefonts/
sudo fc-cache -f -v

И насkаждаемся Tahom-ой со сглаживанием и т.д.

На всякий случай, та Tahoma которая идет в wine нифига не имеет сглаживания и отображается весьма криво...

25 сентября 2010 г.

Qt + SQLITE + регистронезависимый поиск

Стояла задача обеспечить в sqlite регистронезависимый поиск по русскому тексту в UTF-8. Sqlite такого в стандартной поставке делать не умеет.

Выход найден.

Делаем следующее:

  1. Устанавливаем пакеты если их еще нет
    • libsqlite3-dev
    • sqlite3-0-dbg
  2. Скачиваем файл
    wget www.sqlite.org/cvstrac/getfile?f=sqlite/ext/icu/icu.c -O icu.c
  3. Собираем
    gcc -shared icu.c `icu-config --ldflags` -o libSqliteIcu.so

    для AMD 64

    gcc -shared icu.c `icu-config --ldflags` -fPIC -o libSqliteIcu.so

    Не забываем о регистре в именах файлов для *nix систем

    Копируем собранную библиотеку например к бинарику проекта, я скопировал в /usr/lib т.к. пользуюсь этой либой в command-line интерфейсе sqlite

  4. В pro файле добавляем
    LIBS += -lsqlite3
  5. В проекте добавляем
        #include <sqlite3ext.h>
        ...
        // после того как база данных открыта пишем
        QVariant v = db.driver()->handle();
       if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*")==0) {
           // v.data() returns a pointer to the handle
            sqlite3 *handle = *static_cast(v.data());
            if (handle != 0) { // check that it is not NULL
                int res = sqlite3_enable_load_extension(handle,1);
                if (res == SQLITE_OK)
                {
                    res = sqlite3_load_extension(handle,"libSqliteIcu.so",0,0);
                    if (res == SQLITE_OK)
                       qDebug() << "Sqlite3 load ICU extension sucessfully";
                    else
                       qDebug() << "Sqlite3 load ICU extension fail";
                }
                else
                       qDebug() << "Sqlite3 enable load extension fail";
            }
        }

И получаем проект в котором все запросы c LIKE, UPPER, LOWER отрабатываются с русским языком именно так как должно быть.

3 июля 2010 г.

Fancybox в FF под Linux

Хотел бы поделиться своими наблюдениями по особенностям работы чудного плагина Fancybox для JQuery

Помимо разных вкусностей этот плагин умеет делать "Image gallery" очень просто и достаточно красиво. Как это выглядит, для тех кто не в курсе, можно посмотреть на http://fancybox.net/

Так вот была у меня задача организовать эту самую галерею. Организовал (для тестов взял пачку своих wallpaper-ов, это важно) и натолкнулся на грабли, а именно под windows в IE, FF, Opera, Chome под linux в Opera, Chome, Seamonkey все эффекты просто летают, а под FF на linux - безбожно тормозят.

Как проверял версии Java, как тестировал под разными дистрибутивами и т.д. рассказывать не буду, опишу сам результат...

fancybox по умолчанию показывает эту самую галлерею в окне размером не более 75% от текущего разрешения монитора. Если картинка больше он ее соответственно масштабирует. Так вот в FF под linux это самое масштабирование происходит с жуткими тормозами. Если размеры картинок подпилить до более разумных размеров тут же наступает счастье и все эффекты летают как положено.

Если будете использовать такую фичу имейте в виду.

15 февраля 2010 г.

Переустановка мира

Если вдруг захочется странного, то можно переустановить все пакеты следующим образом:

Вариант 1:

# aptitude reinstall \~m

Вариант 2:

# dpkg -l | awk '{print $2;}' > /tmp/list_package
# cat /tmp/list_package | xargs -n1 apt-get -y --reinstall install