Hatred's Log Place

DON'T PANIC!

Apr 1, 2010 - 1 minute read - Comments - programming

Qwt - Qt виджеты для технических приложений

Ссылка в мемориз: http://qwt.sourceforge.net/

Из описания: библиотека включает визуальные виджеты, вспомогательные не визуальные классы, полезные в первую очередь для программ технической направленности. Так виджет для 2D построений предоставляет возможности масштабирования, ползунки, круговые органы управления, компасы, термометры, колеса прокрутки, кнопки для контроля или отображения значений переменных, массивов и т.д. Посмотреть все это добро можно на снимках: http://qwt.sourceforge.net/controlscreenshots.html

Библиотека распространяется на условиях модифицированной версии GPL, и достаточно либеральными исключениями, в частности разрешается статическая линковка, без раскрытия исходников, обязательному открытию подлежат только изменения в самой библиотеке. Подробности: http://qwt.sourceforge.net/qwtlicense.html

На странице проекта можно найти ссылки на производные работы, например: * QwtPolar, виджет для построения в полярной системе координат * QwtPlot3D, виджет для 3D построений и использованием OpenGL. * QtiPlot, готовое приложение, использующее виджет QwtPlot, для анализа и построения данных.

Существуют биндинги к питону и ruby.

Для пользователей ArchLinux в extra есть пакеты: * extra/qwt * extra/qwtplot3d Т.е. сама библиотека и её 3D вариант.

Mar 25, 2010 - 2 minute read - Comments - life

Про часовые пояса

Навеяно 615012 от камрадки mountain-diu

У всех на слуху очередное нововведение нашего замечательного правительства, о сокращении количества часовых поясов. Что не за очередное блеяние с экрана в исполнении ВВП или МДА, то бред полнейший. А все как мыши: плачут, колются, но продолжают жрать кактус.

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

Россия переводит время зря и цитата отсюда, мне она о многом говорит, особенно если вспомнить, люди из какой партии у власти стоят: > Есть у реформы и сторонники. Они поголовно находятся в административном корпусе регионов. Приблизившись к Москве на час, можно будет оперативнее и полнее взаимодействовать со столичными властями, хором заявляют чиновники в разных концах России.

или: > Недовольны и жители Камчатского края, что отныне и без того короткий световой день (особенно зимой) стал еще меньше. Правда, теперь жители Чукотки и Камчатки в новогоднюю ночь будут смотреть обращение президента не в час ночи, а в полночь. о да! как же, не услышат ровно в 12 часов очередную порцию бреда с экрана телевизора..

Или вот, про переход на 5 часовых поясов: Россия с 5 часовыми поясами - полнейший абсурд хоть и натянутые выкладки, но все равно виден весь бред сего творения.

Ну и ещё один пример отжига в подтверждение первой ссылки: Чукотка перейдет из девятого часового пояса в восьмой: > 12 марта дума Чукотского автономного округа поддержала идею о переходе региона в восьмой часовой пояс из девятого. Соответствующее обращение было направлено премьер-министру России Владимиру Путину. Сейчас временная разница между Москвой и Чукоткой — девять часов.

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

Да нахрена эти ученые нужны, зачем нужна эта какая-то РАН (особенно с последними порывами лихо реформировать академию)!

PS у меня ощущение, что вместо людей в думах у нас зомби и/или манекены, а решения принимает электронный (или даже механический) бредогенератор.

Mar 23, 2010 - 3 minute read - Comments - linux programming

Графический индикатор разряда батареи в IceWM

Решил тут собрать небольшое окружение на основе IceWM, вернуться, так сказать к истокам (работал он у меня в бытность ещё P100/24RAM). Но т.к. теперь ему предстояло работать на ноутбуке, в режиме питания от батареи было бы хорошо иметь возможность наблюдать статус разряда.

Mar 23, 2010 - 1 minute read - Comments - life

Хрень

Можно сказать научно-популярный фильм, да.

Mar 20, 2010 - 1 minute read - Comments - programming

Не люблю цитатники, но...

это меня проняло: > Еще один процесс, который может породить множество зомби, это демон… Иногда я должен напоминать себе, что пишу статью по программированию, а не сценарий фильма ужасов.

Отсюда: http://ibash.org.ru/quote.php?id=12598 по наводке l1feh4ck3r’а

Mar 20, 2010 - 2 minute read - Comments - programming

Повелся :-)

Задачка: http://bishop-it.ru/2010/03/codeinrussian

Ну там в комментах я написал, в gcc такое не проканывает (пока точно известно, что проканывает в MSVC, а как дела обстоят с компиляторами Intel/Sun/Borland мне не известно). Но… в транслите так же сделал вариант: http://codepad.org/zEs0pjLl или тут:

/*
 * Собирать: 
 *      gcc -include stih.h -o stih stih.c
 * Посмотреть вывод препроцессора:
 *      gcc -E -include stih.h -o stih stih.c
 */

/*
 * stih.h
 */
#include <stdio.h>

#define NACHALO int main() {<br/>
                  char *out = NULL; <br/>
                  char *txt = NULL; <br/>
                  FILE *fp  = NULL;
#define KONETS    return 0;}
#define PROGRAMMY

#define Vyvedi
#define tekst
#define na
#define v
#define ekran out = NULL
#define fajl out =

#define nachalo ; if (out == NULL) <br/>
                    fp = stdout;<br/>
                  else <br/>
                    fp = fopen(out, "w"); txt =
#define konets ; if (fp != NULL)<br/>
                 {<br/>
                  if (txt != NULL) fprintf(fp, "%s", txt);<br/>
                  if (fp != stdout) fclose(fp); <br/>
                 }
#define teksta


/*
 * stih.c
 * Тут перевел в транслит, т.к. gcc (только ли он?) не поддерживает #define РУССКИЙ
 * в общем, сути не меняет
 */
NACHALO PROGRAMMY

Vyvedi tekst na ekran

nachalo teksta
"YA pomnyu chudnoe mgnoven'e: <br/>n<br/>
Peredo mnoj yavilas' ty, <br/>n<br/>
Kak mimoletnoe viden'e, <br/>n<br/>
Kak genij chistoj krasoty."
konets teksta

Vyvedi tekst v fajl "Stikh.txt"

nachalo teksta
"V tomlen'yakh grusti beznadezhnoj<br/>n<br/>
V trevogakh shumnoj suety,<br/>n<br/>
Zvuchal mne dolgo golos nezhnyj<br/>n<br/>
I snilis' milye cherty."
konets teksta

KONETS PROGRAMMY

Mar 16, 2010 - 1 minute read - Comments - programming

Emacs и автодополнение

Есть такой пакет CEDET, в прошлом посте дал ссылочку на статью Алекса Отта по его настройке.

Захотелось получить красивое меню автодополнения после ввода . или -> в C/C++ программах. Изучая его же конфиги (начинающим, и не только - рекомендую, есть интересности, в частности - автовставка шаблона при создании нового файла) наткнулся на интересную минорную моду: company-mode, которая то, что мне нужно и делает. Причем, по ходу ввода - выбор в меню изменяется.

Подкатом картинка, которая демонстрирует как это работает у меня.

Mar 15, 2010 - 1 minute read - Comments -

Emacs и пустые меню

Столкнулся с проблемой: в некоторых модах, которые добавляют пункты меню в Emacs, эти самые пукнты меню оказываются пустыми, причем, при последующем перезапуске, бывают оказываются и не пустыми.

Собственно вот так это выглядит, открыт C-файл и выбран пункт меню C:

Поиск привел на английски форум ArchLinux: http://bbs.archlinux.org/viewtopic.php?id=83860, собственно от туда варианты решения: 1. выполнять команду: M-x accelerate-menu 2. установить переменную окружения GDK_NATIVE_WINDOWS перед запуском Emacs:bashexport GDK_NATIVE_WINDOWS=1

И сразу на правах рекомендации: Doxymacs

И ещё одна рекомендация, статья Алекса Отта по настройке CEDET: http://alexott.net/ru/writings/emacs-devenv/EmacsCedet.html

Mar 11, 2010 - 3 minute read - Comments - programming

Делать было вечером, делать было нечего

Сначала поставлена задача: удалить рекомендации в своем блоге на Juick.com, вручную неохота было, решил написать скрипт, в результате получился некоторый аналог DELETEALL, только без удаления подписок, комментов.

Код:

#!/bin/bash

### Удаляет ваши сообщения или рекомендации с Juick.com

# section может быть: blog, recomm
section="blog"
# имя блога, по сути - ваш ник
blog="vasya"

# Jabber account, в котором у вас зарегестрирован juick@juick.com
jname="vasya.pupkin"
jpass="superpassword"
jserv="jabber.ru"

## BEGIN ##
u="http://juick.com/$blog/?show=$section"
tmp_file=tmp_$section.txt
while true
do
  # посты со страницы будут удалены, соответственно их место
  # займут более старые
  lynx -dump "$u" > $tmp_file

  # Вычленяем ссылку на следующу страницу
  tmp=`cat $tmp_file | grep 'Older ->' | grep '|'`
  if [ -z "$tmp" ]; then
    next_num=`cat $tmp_file | grep 'Older ->' | awk -F']' '{print $1}' | sed 's| <br/>[||'`
  else
    next_num=`cat $tmp_file | grep 'Older ->' | awk -F'|' '{print $2}' | awk -F']' '{print $1}' | sed 's| <br/>[||'`
  fi
  # да, этаким мы сделаем trim, сделайте при помощи sed, будет элегантней (и просто)
  next_num=`echo $next_num | awk '{print $1}'`
  next_link=`cat $tmp_file | grep "$next_num. http://" | grep "show=$section" | grep 'page=' | awk '{print $2}'`

  cat $tmp_file <br/>
              | grep '<br/>[[0-9]*<br/>]#[0-9]*,' <br/>
              | grep 'now<br/>|ago' <br/>
              | awk '{print $1}' <br/>
              | sed 's|^<br/>[[0-9]*<br/>]||;s|,$||' <br/>
              | while read line
              do
                post_num=`echo $line | sed 's|^#||'`
                action="D"

                [ x"$section" = x"recomm" ] && action='!'

                echo "Delete/unrecomend post: $line (http://juick.com/$post_num)"
                echo "$action $line" | sendxmpp -u $jname -p "$jpass" -j $jserv -s 'bye' juick@juick.com

                sleep 10
              done

  # А вот когда указателя на следующую страницу не будет, тогда выходим
  if [ -z "$next_num" ]; then
    break;
  fi
done

Для чего не спрашивайте, просто стало интересно написать :) Для работы нужно: * bash * lynx * sendxmpp

Счастливые арчеводы могут первые два пункта поставить из репозиториев, а sendxmpp собрать из AUR: http://aur.archlinux.org/packages.php?ID=17929

UPD: спасибо камраду sandr1x , в Ubuntu/Debian работа программы sendxmpp (там кстати её версия указана как 1.18, хотя актуальная - 0.0.8) завершается с ошибкой:

Can't use an undefined value as a HASH reference at /usr/share/perl5/XML/Stream.pm line 1165.

С подобным поведением сталкивались на работе когда настраивали sendxmpp для отправки уведомлений. Решение такое: открываем файл /usr/share/perl5/XML/Stream.pm переходим на строку указанную в ошибке (1165), находим чуть выше ее строку:

    delete($self->{SIDS}->{$currsid});

и заменяем на:

       delete($self->{SIDS}->{$currsid}) unless $currsid eq $sid;

Примерный патч выглядит так:

--- /usr/share/perl5/XML/Stream.pm.orig 2007-07-10 21:16:47.000000000 +0400
@@ -1160,7 +1160,7 @@
                $self->{SOCKETS}->{*STDIN} = $sid;
        }

1.       delete($self->{SIDS}->{$currsid});
+       delete($self->{SIDS}->{$currsid}) unless $currsid eq $sid;

    if (exists($self->GetRoot($sid)->{version}) &&
        ($self->GetRoot($sid)->{version} ne ""))

Файл принадлежит пакету libxml-stream-perl версии 1.22 в ArchLinux это пакет perl-xml-stream версии 1.23, там данные исправления уже присутствуют, так что если есть возможность - обновляемся, или ставим Arch, правда не задаем глупых вопросов, а то новоявленные арчеводы ex-убунтоиды ими уже на форуме поддостали :)

Mar 10, 2010 - 1 minute read - Comments - programming

Porting Unix Software

Пользительная книжка, не лишне держать под рукой:

http://www.lemis.com/grog/Documentation/PUS/

Книжка представлена в виде единого PDF и отдельных PDF для каждой части.

И прицепом: Object-Oriented Programming With ANSI-C

Если у кого есть ссылка на переводы - киньте в комменты.