19 февраля 2011 г.

QR код

Время от времени встречал изображения похожие на то, что находиться внизу сообщения. Все думал, в чем прикол этих штрих кодов. И вот сегодня решил таки разобраться для себя раз и навсегда что же это такое и с чем его едят.

Итак это QR-код (Quick Response – быстрое распознавание, быстрый отклик, быстрый ответ) такие штрих коды придумали японцы как средство кодирования различной информации...

Например в приведённом штрих коде зашифрована моя контактная информация (визитка). Эту информацию можно считать мобильным телефоном со специальным приложением и получить готовую визитку не вбивая ничего руками.

В следующей партии визиток обязательно распечатаю на них такой :-)

Использование:

  1. Возьмите мобильный телефон с камерой
  2. Запустите программу для сканирования кода
  3. Наведите объектив камеры на код
  4. Получите информацию

4 января 2011 г.

Симулятор программиста

Вы хотите почувствовать себя программистом-профессионалом? Вы всегда хотели программировать но не получили соответствющего образования? Вы все делаете правильно, но проклятый ящик с микросхемами вас не понимает и все делает исключительно по своему?

Благодаря этому уникальному упражнению, вы, совершенно не зная ни одного языка программирования, сможете почувствовать себя настоящим программистом-профессионалом!

Для упражнения потребуются: - два участника; - часы (желательно с секундомером); - листок чистой бумаги; - ручка (шариковая или гелевая, но именно ручка,- это важно).

Один из участников будет "Заказчиком" (Работодателем), другой - "Исполнителем" (Программистом). "Заказчику" выдаются часы и право голоса, "Исполнителю" - бумага и ручка.

Начало упражнения: "Заказчик" засекает 10 минут и дает задание "Исполнителю": "Нарисуйте мне, пожалуйста, красивую девушку." Далее, пока "Исполнитель" рисует, стоя у него "над душой", высказывать следующие пожеллания к рисунку:

0:30 - Пусть у нее в руке будет меч.
1:00 - Двуручный меч, который она держит обоими руками!
1:30 - А в другую руку ей дайте УЗИ.
2:00 - Пусть она будет уставшей путешественницей, присевшей отдохнуть.
2:30 - На меч она опирается, отдыхает, значит.
3:00 - Пусть на ней будет развивающийся по ветру плащ!
3:30 - ...И купальник.
4:00 - А лучше доспех!
4:30 - Не... униформа!
5:00 - Уберите плащ, он не идет к униформе.
5:30 - Пусть она смело стоит на мостике космического крейсера!
6:00 - Почему у нее меч? Уберите это старье. А УЗИ переделайте в бластер!
6:30 - Ее волосы развиваются по ветру... для красоты, значит.
7:00 - Бастер не смотрится... уберите его. Она вообще капитан этого корабля, ей не нужен бластер!
7:30 - Ей нужна фуражка капитана! И аккуратно собранные на голове волосы!
8:00 - И сидеть она должна в кресле капитана!
8:30 - Красивая, суровая и необычайно смелая капитанша корабля пиратов...
9:00 - Нет, эскадры боевого флота Галлактической Федерации!
9:30 -... Вытягивая палец, отдающая приказ о смене курса...

По истечению 10 минут "Заказчик" берет работу "Исполнителя", критически ее осматривает и высказывает свое впечатление: "Ну это же совсем не то, что я хотел! А где ее верный советник? А почему у нее нет табельного оружия? И вообще, почему она такая некрасивая и суровая? Я же просил КРАСИВУЮ девушку! И вообще на рисунке столько каракулей... Плохой вы программист, зря я к вам обратился... Не буду платить за такую халтуру!"

Для большей остроты ощущений, можно взять целую "Комаду Разрабоотчиков", и пусть они вместе рисуют "большой и красивый пейзаж" за 10 минут"

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 отрабатываются с русским языком именно так как должно быть.