Ярлыки

Bash (2) Linux (2) Books (1) Debugging (1) Qt (1) api design (1)

вторник, 14 июня 2011 г.

Qt Api Design Principles

Not long ago I have came across the article on Qt API design principles.

There you can find good suggestions on how you should write good API, some ideas on naming convention, designing interfaces. The ideas are quite common, but it is still good to read them once again in good text.

Same article in russian.

понедельник, 18 апреля 2011 г.

Bash & debugging

One more thing I've came across in linux is debugging.

Had to implement an application that is separate in two modules: exe and dll. Ok, build scripts put both of those to one directory, but if you just start exe, then linux will not find corresponding dll.

/lib/ld-linux.so.2 --library-path [path_to_library] [executable_name]
Works pretty nice.

Other issue was to get error stream output. Found a bit easier: somewhere in wiki.
[exec_name] 2>&1
This moves error stream to output stream. Quite handy thing for debugging.

Читать дальше......

понедельник, 11 апреля 2011 г.

Все мы в психбольнице

Наткнулся я тут недавно на замечательную книжку Алана Купера "Психбольница в руках пациентов" (Alan Cooper "The Inmates Are Running the Asylum"). Произведение, которое все время чтения выбивает из колеи.

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


Итак: читаем, комментируем.

Читать дальше......

вторник, 28 сентября 2010 г.

Знакомство с Bash

Не так давно судьба заставила перебраться на линукс, выбор коего пал на Kubuntu по соображениям лени. А так же потребовалось поднять CI систему на этом самом линуксе. Решено использовать с этой целью бbash. Пусть я и забиваю гвозди микроскопом, но зато много чего нового в этом деле можно выучить.

Итак задача:
Собирается много юнит тестов. Каждый набор тестов -- это исполняемый файл, каждый файл лежит в своем каталоге.
Надо: написать скрипт для bash, который прогонит все тесты и подведет итог о результатах.

Собственно решение подвернулось следующее:
1) ищем все исполняемые файлы
2) все их выполняем и складываем возвращаемые значения (получим количество проваленных тестов. Не обязательно, но мне захотелось)
3) выводим результат. Если ненулевой, то пора паниковать, иначе -- все хорошо.

Пока получилось вот что:

files=$(find ./tests/ -executable -type f)

echo '************************'
echo '** executables to run **'
echo '************************'
echo

for x in $files;
    do
    echo $x
    done

echo
echo '*********************'
echo '** start execution **'
echo '*********************'
echo


result=$((0))
for x in $files;
    do
    $x
    result=$(($result+$?))
    echo
    done

if [ "$result" != "0" ]
then
    echo **********
    echo ** FAIL **
    echo **********
else
    echo
    echo '*************************'
    echo '******** PASSED *********'
    echo '*************************'
echo
fi
exit $result


итак по пунктам:
files=$(find ./tests/ -executable -type f)
создаем переменную files и записываем в нее вывод метода find.
параметры find:
./tests/ -- искать в папке ./tests/
-executable -- исполняемый файл
-type f -- указываем, что искать надо файлы

result=$((0))
for x in $files;
do
$x
result=$(($result+$?))
echo
done
Создаем счетчик result.
В цикле выполняем все найденные файлы.
Увеличиваем счетчик на значение возвращенное последним исполняемым файлом. Вот это самое '$?'.

if [ "$result" != "0" ]
then
    ...failed
else
    ...succeeded
fi
exit $result
Тут просто: выводим и возвращаем результат, для дальнейшего использования.

Вот примерно так. Надеюсь кому-нибудь поможет.