11/29/2010

Книжное.

Закончил чтение книги "Программист-прагматик. Путь от подмастерья к мастеру".
Хочу заметить, что это весьма интересное повествование о том как следует подходить к процессу разработки, какие при этом могут встретиться ошибки и заблуждения и как их преодолеть.
Рассматриваются такие вопросы, как борьба с недостатками разрабатываемого ПО, тестировани, создание динамичных, легких в сопровождении программ.


Рекомендую к прочтению.

10/10/2010

Новая версия библиотеки QtAda 3.1.0

В свет вышла новая версия библиотеки QtAda 3.1.0. Как и обычно, скачать
можно здесь:

http://www.qtada.com/ru/download.html

Нововведения:
- поддержка модуля QtOpenGL
- поддержка классов QDir, QFileInfo, QProcessEnvironment, QSettings, QUrl модуля QtCore
- поддержка классов QAbstractTextDocumentLayout, QColorDialog, QGraphicsObject, QGraphicsSimpleTextItem, QGraphicsTextItem, QImage,
QImageReader, QImageWriter, QPlainTextDocumentLayout, QRgb модуля QtGui
- поддержка дополнительных операций для классов модулей QtCore и QtGui
- поддержка смешанных GtkAda/QtAda приложений на платформах X11
- исправления ошибок и улучшение производительности

9/11/2010

KDE 4.5.1 в Gentoo

Ура, в дерево portage в Gentoo Linux наконец то добавили новую версию KDE: KDE-4.5.1.

Только что обновился. Пересобрать  пришлось 151 пакет.
Вся перекомпиляция максимум заняла пару часов.

Из новшеств можно отметить следующее:
1. Область уведомлений работает удобней, красивше и адекватней :-)
2. Сделали нормальный интерфейс для управления настроками, разместив все на основной вкладке программы.
3. Добавились всякие новый плазмоиды.

9/07/2010

Gentoo : dbus-glib

После очередного обновления в Gentoo, похоже обновился dbus или же-что то с ним связанное.
И всякие приложения, использующие dbus начали падать. Вот так:

>pidgin
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/pygst.py", line 28, in
    import sys
KeyError: 'pygst'
process 5938: arguments to dbus_connection_ref() were incorrect, assertion "connection != NULL" failed in file dbus-connection.c line 2556.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace
Аварийный останов



Оказалось все просто. Нужно сделать emerge dbus-glib и все начнет работать.

8/27/2010

Cups и HPLIP

Сегодня обнаружил, что мой принтер hp1018 перестал печатать. Оказалось, что после обновления CUPS до версии 1.4.4 драйвер foo2zjs перестал работать. А так как последняя версия ebuild-a датируется 2008 годом, пришлось настраивать в CUPS использование драйверов HPLIP. И надо сказать, что это оказалось весьма легко и просто.
Ставим HPLIP:
USE="X hpcups libnotify policykit qt4 static-ppds udev-acl -doc -fax -hpijs -minimal -parport -scanner -snmp" emerge -vat =net-print/hplip-3.10.6

Пересобираем CUPS (не знаю зачем, но без этого не работало):
USE="X acl dbus gnutls java jpeg pam perl png python samba slp ssl threads tiff usb -debug -kerberos -ldap -php -static -xinetd" emerge -vat net-print/cups-1.4.4

После этого запускаем hp-setup,настраиваем принтер, перезапускаем cups.
и вуаля, все должно заработать с пол-пинка.

8/19/2010

ANN: Matreshka 0.0.5

Hello, I'm happy to announce new version of Matreshka toolkit version 0.0.5 for Ada language.

This version includes following features:


  • Text decoder (New) : various text encodings are supported
  • Message translator (New) : for localization of application's messages
  • New extensions of string manipulation package (New)
  • XML reader (New) : supports socket as input source
  • XML reader (New) : incremental parsing of input xml stream supported
  • A lot of bug fixes and performance improvements.
New version can be downloaded here : http://adaforge.qtada.com/cgi-bin/tracker.fcgi/matreshka/downloader

5/04/2010

Ошибочка в примерах для gnutls

В примерах gnutls обнаружил небольшую ошибочку, при использовании  функции:
void gnutls_transport_set_ptr (gnutls_session_t session, gnutls_transport_ptr_t ptr);

Второй параметр этой функции - на самом деле void *, и поэтому правильно ее вызывать не так 
int sd = tcp_connect ();
gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) sd);


а так:
int sd = tcp_connect (); 
gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) &sd);

4/28/2010

Gprbuild, xmlada для дистрибутивов Debian/Ubuntu и Gentoo Linux.

Привет.
Я подготовил пакеты QtAda (www.qtada.com), gprbuild, xmlada для дистрибутивов Debian/Ubuntu и Gentoo Linux.

Для Gentoo Linux  я создал спецальный оверлэй ada-overlay. В неместь ebuild файлы для
gnat-gcc-4.4.3, gprbuild, xmlada и qtada. Запакованный оверлэй можно скачать отсюда:

    https://sourceforge.net/projects/qtada/files/Gentoo/ada-overlay.tar.bz2/download

Для Debian и Ubun Linux я создал .deb пакеты дял gprbuild, xmlada и qtada.

gprbuild package:
    https://sourceforge.net/projects/qtada/files/Debian/gprbuild_1.3.0-1_i386.deb/download

xmlada package:
    https://sourceforge.net/projects/qtada/files/Debian/libxmlada-dev_4.3.1-1_i386.deb/download

qtada package:
https://sourceforge.net/projects/qtada/files/Debian/qtada-dev_3.0.0-1_i386.deb/download

P.S. Не обращайте внимание на имя проекта, которо отображается при скачивании =)

4/04/2010

gnat-gcc-4.4.3 в Gentoo Linux.

Кому интересно, я добавил ebuild для компилятора ады gnat-gcc-4.4.3 в gentoo Linux.
Теперь буду его тестировать.
Также планирую обновить пакеты xmlada и добавить пакет gprbuild.

Распределенная компиляция: Gentoo Ubuntu и distcc

На моей домашней машине стоит Gentoo Linux, а это значит я постоянно там что нибудь компиляю. Так вот я уже много всяких штук перепробовал для ускорения компиляции, таких как ccache, компиляция в оперативной памяти. И вот недавно, в связи с приобретением ноутбука, появилась возможность установить и настроить distcc для распределенной компиляции.

Итак что мы имеем:

1. Desktop :
  • AMD Athlon (tm) 64 3000+, 2 гб. оперативной памяти.
  • Gentoo Linux x86_64, 2.6.33 - linux kernel, gcc version 4.4.3
2. Laptop :
  • Intel(r) Core(tm) i3 CPU M 330, 2.13GHz, 3 гб. оперативной памяти.
  • Ubuntu Linux x86_64, 2.6.33 - linux kernel, gcc version 4.4.3
Для того, чтобы собранные с помощью distcc бинарники работали, необходимо, чтобы
первые две цифры в версии компилятора были одинаковыми.

Настройка Ubuntu.
Устанавливаем компиляторы и distcc:

sudo apt-get install gcc g++ distcc

Затем добавляем в файл /etc/distcc/hosts адрес хоста, на котором можно запускать кrомпиляцию и через "/" максимальное количество потоков, которое способен принять для компиляции компьютер:

echo "192.168.2.1/2" > /etc/distcc/hosts

Далее нужно настроить демон distcc который будет принимать файлы для компиляции от Desktop компьютера. Для этого редактируем файл /etc/default/distcc где устанавливаем какой интерфейс слушать, сколько работ может принимать хост для компляции и т.д. Вот пример моего файла конфигурации:

STARTDISTCC="true"
ALLOWEDNETS="127.0.0.1 192.168.2.1"
LISTENER="192.168.2.2"
NICE="10"
JOBS="4"

После этого запускаем демон distcc:

/etc/init.d/distcc start

Настройка Gentoo.
Устанавливаем distcc :

emerge -v distcc

Указываем список хостов, на которые передавать данные для компиляции и количество потоков:

/usr/bin/distcc-config --set-hosts "
192.168.2.1/2 192.168.2.2/4"

настраиваем демон distcc, добавляя в файл /etc/conf.d/distccd следующие строки:

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.2.2"
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.2.1"
DISTCCD_OPTS="${DISTCCD_OPTS} --jobs 2"


запускаем distcc:

/etc/init.d/distccd start

Для того, чтобы проверить, что все настроено правильно добавляем в Gentoo в файл /etc/make.conf строчку:

FEATURES="distcc"

и пробуем собрать какой нибудь пакет:

emerge dev-libs/glib

И в то же самое время, смотрим на Ubuntu файл логов distcc. Если все работает нормально, то сообщения должны быть примерно такими:

distccd[5791] (dcc_job_summary) client: 192.168.2.1:55352 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:67ms x86_64-pc-linux-gnu-gcc /var/tmp/ccache/api.tmp.ZION.23853.i

Возможные проблемы.

Я столкнулся со следующей проблемой. В логах на машине с Ubuntu у меня появлялась строчка:

distccd[4506] (dcc_execvp) ERROR: failed to exec x86_64-pc-linux-gnu-g++: No such file or directory.

Это сообщение появлялось из за того, что в Gentoo компилятор называется x86_64-pc-linux-gnu-g++ а в Ubuntu x86_64-linux-gnu-g++.
Чтобы это вылечить, нужно создать в каталоге /usr/bin/ символическую ссылку:

ln -s g++ x86_64-pc-linux-gnu-g++

2/19/2010

Удаление завершающих пробелов в Emacs.

Для того, чтобы Emacs при сохранении удалял завершающие пробелы, в конфиг файл нужно добавить вот такую строчку:

(add-hook 'before-save-hook 'delete-trailing-whitespace)

9/08/2009

Перебор аргументов в shell скрипте.

Вчера открыл для себя очень удобную возможность в shell-скриптах:
оказывается если в цикле for не задать список аргументов, то в качестве оного используется переменная $@ - список аргументов командной строки.
Вот пример:
for i
do
echo $i;
done

Предупреждения GCC

Этот пост небольшое дополнение к посту Белого Рыцаря, в котором речь идет об опциях, включающих те или иные предупреждения компилятора gcc.

Для того чтобы включить "все предупреждения, gcc нужно передать опции -Wall и -Wextra, однако, вопреки расхожему мнению, эти опции включают далеко не все предупреждения, которые может выдавать gcc.

А вот для того, чтобы посмотреть, какие предупреждения будут выключены или включены, вследствие использования той или иной опции, нужно выполнить команду (для -Wall):

gcc -c -Q -Wall --help=warnings

которая выдаст следующее:
Следующие ключи контролируют предупреждения компилятора:

-Wabi [выключено]


-Waddress [включено]


-Waggregate-return [выключено]


-Waliasing


-Walign-commons


-Wall


-Wampersand


-Warray-bounds [включено]


Список получится длинный и зависит от версии компилятора.
Эта же команда работает и для ключей оптимизации:
gcc -c -Q -O3 --help=optimizers

На выходе тоже получится длинный список включенных и отключенных возможностей оптимизации.

А если выполнить команду:

gcc -c -Wall --help=warnings

То можно посмотреть, что означает каждая из опций, контролирующих предупреждения:

Следующие ключи контролируют предупреждения компилятора:

-Wabi Предупреждать о различиях по сравнению с компиляцией при помощи компилятора, совместимого с ABI


-Waddress Warn about suspicious uses of memory addresses


-Waggregate-return Предупреждать о возвращении функциями
структур, объединений, массивов


-Waliasing Warn about possible aliasing of dummy arguments


-Walign-commons Warn about alignment of COMMON blocks


-Wall Включить все основные виды предупреждений.

Вот так.

8/07/2009

Поисковик по научным работам.

В своей работе, мне часто приходится искать научные статьи около компьютерной тематики.
И кроме традиционных arxiv.org и ieee.org, последний к тому же платный, я для себя открыл бесплатный и очень удобный поисковик citeseerx.ist.psu.edu, на котором можно найти очень много всего интересного.
Думаю кому-нибудь пригодится.

Embedded Linux Conference

В сети доступны доклады и презентации с конференции Embedded Linux Conference.
Есть что послушать и есть чего почитать.
Смотреть тут: http://free-electrons.com/blog/elc-2009-videos/

7/25/2009

Дефрагментация xfs

Я частенько что нибудь качаю с помощью торрентов, и вот недавно я решил посмотреть, а каков же уровень фрагментации на разделе для торрентов.
И о ужас, он оказался 86 %. Страшная цифра. Но обо всем по порядку.
Чтобы посмотреть какое устройство у вас куда примонтировано нужно в консоли набрать команду mount без параметров.

Для того чтобы посмотреть, каков уровень фрагментации файлов на разделах с файловой системой xfs, нужно установить программы xfs_db и xfs_fsr. Находятся они в пакетах xfsprogs и xfsdump соответственно.

Устанавливаем:
emerge sys-fs/xfsdump sys-fs/xfsprogs

Теперь чтобы посмотреть уровень фрагментации нужно запустить программу xfs_db -r /устройство
например:
xfs_db -r /dev/sda3

и далее в появившейся консоли набрать команду frag
xfs_db> frag

Примерно такого содержания может оказаться ее вывод:

actual 170812, ideal 22388, fragmentation factor 86.89%

И это есть не очень хорошо.
Жмем q чтобы выйти.

Чтобы запустить дефрагментацию набираем
xfs_fsr -v /dev/sda3
и ждем.
Вот так.

6/14/2009

QtAda Examples

Всем привет.
Рад сообщить вам о начале проекта по портированию Qt примеров с языка C++ на язык
Ada.
В настоящий момент полностью реализовано 5 примеров.
Адрес проекта : https://sourceforge.net/projects/qtada/

Все желающие могут присоединиться.
P.S. Для вас это отличная возможность изучить и Qt и Аду.

6/08/2009

Релиз QtAda 3.0

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

Системные требования:
  • компилятор - gnat gpl 2009
  • семантический анализатор asis-gpl-2009
  • библиотека qt-4.5.1
Скачать библиотеку QtAda можно с официального сайта www.qtada.com