Hatred's Log Place

DON'T PANIC!

Dec 12, 2011 - 1 minute read - programming

Qt Creator & doxygen

Сегодня пролетело в рассылке:

Hi,

Qt Creator master has recently got a feature, which has been requested a few times, for Doxygen blocks generation. If you type /** or /*! and press enter/return before a declaration, you’ll get something like:

/*!
 *
 * <br/>param data
 * <br/>param options
 * <br/>return
 */
QString generate(const Data &data, const Options &options);

You can also opt whether or not you want an additional <br/>brief command and leading asterisks for comment continuation (when breaking lines). The options are in Text Editor->Completion->Documentation Comments.

Notice that the style is identified from the comment beginning. If you start it with /*! then the Qt style is used. Otherwise, the Java style with the @ prefix for the commands is picked.

Cheers, Leandro

Проверил - работает, удобно :)

Dec 1, 2011 - 1 minute read - programming

Hibernate + SQLite

Шаг 1. Взять sqlite-jdbc отсюда: http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC или при помощи Maven (описание по той же ссылке)

Шаг 2. Положить у себя в проект класс SQLiteDialect, взятый отсюда: http://arnoraps.tweakblogs.net/blog/3146/hibernate-with-sqlite.html или из архива отсюда: http://code.google.com/p/hibernate-sqlite/ (HibernateSQLite.zip)

Шаг 3. В конфигурацию Hibernate добавить примерно следующее: ```xml

org.sqlite.JDBC jdbc:sqlite:./data.db ru.sincore.db.SQLiteDialect

Nov 17, 2011 - 4 minute read - programming

Jetty, JSP и Maven

На правах заметки:

  • Список зависимостей для Maven, что бы получить последнюю (8.0.4) версию embedded Jetty и получить рабочий JSP.
  • Конфиг для embedded Jetty, что бы завёлся JSP.

Подробности подкатом

Nov 16, 2011 - 1 minute read -

Java Timezone

В последней Java6 не включена tzdata с информацией о том, что в России, сейчас нет перехода на зимнее время. Дальнейшие пояснения излишни.

Как фиксить? Обновить tzdata при помощи предлагаемой ораклом утилиты:

Nov 10, 2011 - 1 minute read -

Новый GTK+ и падение Opera

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

$ opera

(opera:13093): Gtk-CRITICAL **: IA__gtk_widget_unrealize: assertion `GTK_IS_WIDGET (widget)' failed

(opera:13093): Gtk-CRITICAL **: IA__gtk_widget_is_toplevel: assertion `GTK_IS_WIDGET (widget)' failed
opera [crash logging]: CRASH!!
/usr/lib/opera/opera got signal SIGSEGV at address B6B26E77

Log was created here:
/var/tmp/crash20111110210615.txt
Убито

Для столкнувшихся с этой же проблемой в ArchLinux:

Nov 2, 2011 - 1 minute read -

Переехал на BlogTNG

Переехал на BlogTNG вместо классической связки плагинов blog/tag/discussion. Разработчики, к слову, те же самые.

Уже пришлось малость залезть в исходники, для корректировки работы с тегами, но в целом ощущения положительные.

Теперь будем постепенно адаптировать другие части системы под новый блого-движок.

Oct 31, 2011 - 1 minute read -

Библиотека

Как сказал один умный дядька (вот к своему позору запамятовал как его зовут, вроде Аристотель): “Дайте мне библиотеку и я в пустыне построю университет!”. Пусть у меня тут не университет, но… полезных и интересных книг? есть их у меня! Посему начинаю проект по публикации своей домашней электронной библиотеки. И вот первые ласточки: материалы по учебе в ДВГТУ

Oct 31, 2011 - 1 minute read - life

Пять процентов

Подкинули ссылочку на интересную статью в компьютерее, называется “Пять процентов”

Интересная нужно сказать теория. Тут вот думаю, к каким “пяти процентам” отношусь я?

Oct 31, 2011 - 1 minute read - life

Шутки

Вообще жизнь интересная штука: каждый день, новая шуточка, даже интересно, а что ж завтра то будет?

Oct 18, 2011 - 3 minute read - linux туризм maps programming

QLandkarteGT: Экспорт всей карты в растр, а не только видимой области

В QLandkarteGT есть удобная вещь - экспорт видимой области карты со всеми отображаемыми точками, треками, измерениями и т.п. в растровый (PNG) файл.

Мне же потребовалось, что бы вся карта как есть была экспортирована. Пришлось полезть в исходники. Прямого пути сделать такое не нашлось, пришлось сделать несколько костыльно (имхо), но работоспособно (ибо нужно срочно - готовить карту к предстоящим соревнованиям).

Патч подкатом.

Oct 16, 2011 - 2 minute read - туризм maps programming

Поломанная привязка карт в QLandkarteGT

Сегодня столкнулся с тем, что привязывая карту в QLandkarteGT, получаю такую ошибку:

/usr/bin/gdal_translate -a_srs +proj=merc +a=6378245.0000 +b=6356863.0188 +towgs84=24,-123,-94,-0.02,0.25,0.13,1.1,0 +units=m  +no_defs -gcp 108 182 inf inf -gcp 3310 189 inf inf -gcp 3308 3126 inf inf -gcp 93 3119 inf inf -gcp 1704 1657 inf inf /home/hatred/maps/1/src/K-53-26-view-raw.tiff /tmp/qt_temp.B12852
Input file size is 3402, 3428
0...10...20...30...40...50...60...70...80...90...100 - done.

/usr/bin/gdalwarp -order 1 -r cubic -dstnodata "255" /tmp/qt_temp.B12852 /tmp/qt_temp.u12852

ERROR 1: Attempt to create -2147483648x-2147483648 dataset is illegal,sizes must be larger than zero.
Creating output file that is -2147483648P x -2147483648L.

Неудачно!

Сначала было подумал, что поломано в SVN версии, однако, в релизной 1.2.4 ситуация точно такая же.

Сразу и сходу смутили параметры inf в опции -gcp. Так что решил поглядеть в коде, благо собираю из SVN и он у меня всегда под рукой.

Немного времени, расстановка логов, анализ привели к тому что обнаружилось двойное преобразование координат в функции

bool GPS_Math_Str_To_LongLat(const QString& str, float& lon, float& lat, const QString& srcproj, const QString& tarproj)

в файле GeoMath.cpp

Первое преобразование было в блоке кода:

if(GPS_Math_Str_To_Deg(str, lon, lat,true))
 {
   if(pjTar)
   {
       u = lon * DEG_TO_RAD;
       v = lat * DEG_TO_RAD;
        pj_transform(pjSrc,pjTar,1,0,&u,&v,0);
   }   
 }
 else

а второе преобразование в следующем блоке кода:

if(pjTar && pjSrc)
 {
   pj_transform(pjSrc,pjTar,1,0,&u,&v,0);
 }

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

Сменил первый блок на такой:

if(GPS_Math_Str_To_Deg(str, lon, lat,true))
 {
    u = lon * DEG_TO_RAD;
    v = lat * DEG_TO_RAD;
 }
 else

пересобрал и всё заработало отлично и замечательно.

UPD: а теперь всё то же самое, но в виде патча:

Index: src/GeoMath.cpp
===================================================================
--- src/GeoMath.cpp	(revision 3010)
@@ -392,12 +392,8 @@
 
     if(GPS_Math_Str_To_Deg(str, lon, lat,true))
     {
-        if(pjTar)
-        {
-            u = lon * DEG_TO_RAD;
-            v = lat * DEG_TO_RAD;
-            pj_transform(pjSrc,pjTar,1,0,&u,&v,0);
-        }
+        u = lon * DEG_TO_RAD;
+        v = lat * DEG_TO_RAD;
     }
     else
     {

PS автору письмо отправлено

Oct 14, 2011 - 1 minute read -

USB Typewriter

Это винрарно:

Oct 12, 2011 - 1 minute read - programming

Паттерны проектирования

Случайно наткнулся на сайт: http://www.design-pattern.ru - “Справочник “Паттерны проектирования”

Прицепом:

PS а это планирую купить: http://www.ozon.ru/context/detail/id/6108824