LINUX.ORG.RU

Сообщения BuG2BuG

 

erlangio — proof of technology обмен данными между модулем ядра Linux и виртуальной машиной Erlang

Форум — Development

Доброго времени суток, коллеги.

В рамках курсовой работы по курсу «Операционные системы» в МИЭМ НИУ ВШЭ, я реализовал однонаправленный механизм взаимодействия между драйвером ядра Linux и приложением на Erlang/OTP: https://github.com/MIEMHSE/erlangio.

Механизм представляет из себя следующее: драйвер при загрузке создает два устройства (одно символьное misc, а второе — файл в procfs). При записи в /dev/erlangio данные сохраняются в массив, а затем отдаются при чтении /dev/erlangio или /proc/erlangio. Приложение на Erlang/OTP при запуске создает callback на действие закрытия файла по записи с помощью механизма inotify. При вызове callback'а, данные читаются из /proc/erlangio. Почему нельзя было обойтись одним misc-устройством? Потому что при попытке открытия устройства из /dev/ с использованием операции file:open/2, возвращается eisdir. По причине странной работы с файлами, из procfs приходится читать файл небольшим костылем.

И вот, собственно, вопрос. Пытаясь изначально реализовать обмен не через procfs или сокеты (а, допустим, с помощью mmap), столкнулся с тем, что не смог найти вменяемого IPC между, собственно, ядром и юзерспейсом, если не считать kdbus (оно уже в ядре?). Может кто подскажет чего-нибудь путного почитать на эту тему?

Спасибо.

 , ,

BuG2BuG ()

[Eclipse] Вопрос знатокам

Форум — Development

Возможно ли в Eclipse 3.4 отключить подсветку синтаксических ошибок (подчёркивания или вообще проверку) для конкретных типов файлов (.m - Objective-C поставил как файл исходников C/C++ - открывается в CDT, .psp - Python Server Pages просто открывается с помощью редактора PyDev)? А то половина кода подчёркнуто, раздражает сильно. :(

---
С Уважением,

BuG2BuG ()

[2 bender] OpenProj PNG Extension для OpenProj 1.4

Форум — General

Уважаемый автор сего чуда: http://code.google.com/p/openprojext/ ,

Недавно начал заниматься планированием. Аналога OpenProj (помимо глючного GanttProject) не нашёл, но в нём не хватало экспорта в PNG. Однако bender дописал её, но только для 1.2. Теперь вопрос bender'у: не могли бы Вы выложить сборку для версии OpenProj 1.4, а то тот код базируется на версии 1.2, а её сборки под Mac OS X уже нигде неть. T_____T

Спасибо.

---
С Уважением,

BuG2BuG ()

[Python] Построчный режим буферизации

Форум — Development

Пишу на Python клиент-серверное приложение, где сервер использует суперсервер xinetd, цепляясь за сокеты своими stdin и stdout. И вроде бы всё ничего, но один момент мне абсолютно не понравился. Программа сначала читает все данные, проходит какой-то промежуток времени и только потом она отдаёт их в сокет. Думаю, во всём виноват режим буферизации. Для C построчный режим устанавливался бы как setvbuf (stream, 0, _IOLBF, 0);, а в Python абсолютно ума не приложу, как сделать что-то подобное. Может у кого-то есть идеи?

---
С Уважением,

>>>

BuG2BuG ()

[Python] Проверка на None с присваиванием

Форум — Development

Доброго времени суток, All:

Кто-нибудь знает, как в таком выражении проверить, что curr.fetchone() не является None и сразу присвоить его тьюплу, а то пытаюсь сделать так, но если юзверя нет в бд, то вылазит экзепшн TypeError: 'NoneType' object is not iterable. Вот думаю, кроме отлова исключения есть ли способы?

curr.execute('SELECT (passwd) FROM users WHERE login = (%s)', (login,))
(gotpasswd,) = curr.fetchone()

---
С Уважением,

>>>

BuG2BuG ()

[C] Проблемы с самопальным итератором.

Форум — Development

Доброго времени суток, all.

На днях начал писать мини-движок для игры в шашки/шахматы/нарды/... (в-общем, любые игры, использующие поле). Всё бы ничего, дело продвигалось, но возникла проблема, самостоятельно которую решить у меня так и не получилось. 

Код:

// Объявляем свою структуру для игровых объектов со ссылками на предыдущий и следующий

typedef struct CGameObject* GameObjectPtr;

typedef struct CGameObject
{
    int x;
    int y;
    GameObjectPtr prev;
    GameObjectPtr next;
} GameObject;

// ----------------------------------

// Сравниваем x и y двух объектов. При совпадении, возвращаем указатель на первый
static GameObjectPtr comparexy(GameObjectPtr go, GameObjectPtr goxy)
{
    if((go->x == goxy->x) && (go->y == goxy->y))
    {
        return go;
    }
    return NULL;
}

// Собственно, итератор с callback-функцией, принимающей два параметра - текущий объект и дополнительный.
GameObjectPtr iterate(GameObjectPtr begin, GameObjectPtr callback(GameObjectPtr, GameObjectPtr), GameObjectPtr additional)
{
    GameObjectPtr gocur = begin, goret = NULL;
    while(gocur->next != NULL)
    {
        gocur = gocur->next;
        if((goret = callback(gocur, additional)) != NULL)
        {
            return goret;
        }
    }
    return NULL;
}

// Функция поиска объекта по его x и y
GameObjectPtr gofindbyxy(GameObjectPtr begin, int x, int y)
{
    GameObjectPtr gonew = goalloc(NULL);
    gonew->x = x;
    gonew->y = y;
    return iterate(begin, comparexy, gonew);
}

При вызове gofindbyxy(begin, 1, 1); объекта, который существует он просто не находит. :(
Не знаю, где собака порылась, не могу найти ошибку, если надо могу привести код аллокатора и деструктора.

---
С Уважением,

>>>

BuG2BuG ()

[C++][Qt3] Зачем Qmake реализует объявления слотов?

Форум — Development

Доброго времени суток, All:

Пару часов назад начал изучать Qt3. До этого графические приложения 
писал на C++ только под QNX/Photon (собственно, и C++ подзабыл, а 
слоты и сигналы для меня - что-то новое).

Обрисую ситуацию: создаю форму в Qt Designer, объявляю сигналы и 
слоты (virtual) там же. Создаю простое приложение:

//------------
// main.cpp
//------------

#include <qapplication.h>

#include "qtableform.h"

int main(int argc, char **argv)
{
	QApplication app(argc, argv);
	QTableForm * frmMain = new QTableForm;
	app.setMainWidget(frmMain);
	frmMain->show();
	return app.exec();
}

//------------
// qtableformlogic.cpp
//------------

#include "qtableform.h"

void QTableForm::fileExit()
{
	printf("Hello, world!!1111\n");
}

//------------

Далее делаю так:

[bug2bug@bug2bug-sl QTable]$ qmake -project
[bug2bug@bug2bug-sl QTable]$ qmake
[bug2bug@bug2bug-sl QTable]$ make
/usr/lib/qt-3.3/bin/uic qtableform.ui -o qtableform.h

[ ========= CUT ========== ]

g++  -o QTable main.o qtableformlogic.o qtableform.o moc_qtableform.o   -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm
qtableform.o: In function `QTableForm::fileExit()':
/home/bug2bug/Projects/QTable/qtableform.cpp:548: multiple definition of `QTableForm::fileExit()'
qtableformlogic.o:/usr/lib/qt-3.3/include/qglist.h:150: first defined here
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [QTable] Ошибка 1
[bug2bug@bug2bug-sl QTable]$  

Смотрю, хоба на. А и правда оно уже объявлено само в файле, которого 
я не создавал:

//------------
// qtableform.cpp
//------------

void QTableForm::fileExit()
{
    qWarning( "QTableForm::fileExit(): Not implemented yet" );
}

//------------

Не знаю как это излечить. Если у кого есть соображения - поделитесь 
пожалуйста.

Заранее благодарен,

ЗЫ: Просьба не ругать сильно, если я чего-то не догоняю. Gtk+ & 
C/PyGtk для меня ближе, но, к сожалению, задача поставлена конкретно. :(

---
С Уважением,

>>>

BuG2BuG ()

OpenBox + PyPanel [NetBSD/i386]

Галерея — Скриншоты

Я понял, что ошибался, используя openSUSE 10.3 на своём SOHO-десктопе. Поэтому решил поэксперементировать: поставил последний стабильный релиз NetBSD 4.0. Всё ПО собрано с pkgsrc [просто замечательный фреймворк]. Решил отказаться от DE. Раньше имел опыт работы только с Fluxbox WM, сейчас же решил попробывать OpenBox. Порадовала конфигурация в XML-файлах. В качестве панельки используется PyPanel, кстати очень конфигурабельная вещь, как видно из названия, написанная на языке Python. В качестве браузера используется Opera, ибо скорость работы Bon Echo [Firefox] меня не порадовала. Клиентом к mpd служит Sonata - клиент, стоящий в одном ряду с gmpc. В качестве терминала используется XFce4'шный Terminal. Ну и Jabber / ICQ - клиентом идёт Pidgin. Вроде всё. С нетерпением жду комментариев.

С Уважением,

>>> Просмотр (1280x1024, 298 Kb)

BuG2BuG ()

Доступны iso-образы NetBSD-4.0

Новости — BSD
Группа BSD

Вышел четвёртый по счёту выпуск основной версии ОС NetBSD.

Напомню, NetBSD - это свободно распространяемая по лицензии BSD, защищенная, кросс-платформенная, Unix-подобная операционная система, развиваемая в соответствии с концепциями Open Source. NetBSD работает на множестве аппаратных платформ, от 64-битных серверов Opteron и настольных систем до карманных и встроенных устройств.

Список значительных отличий от третьей ветки:

  • Добавлена поддержка AC'97 модемов
  • Исправлено большое количество ошибок в драйвере EHCI. Теперь как высокоскоростные, так и низкоскоростные устройства могут соединяться с высокоскоростными хабами
  • IPF обновлён до версии 4.1.22, PF обновлён до версии 3.7
  • С FreeBSD портирован драйвер ieee1394 для поддержки Firewire
  • В ядро добавлена поддержка tmpfs
  • Предварительно добавлена поддержка System V Boot File System
  • С OpenBSD портирован драйвер для поддержки сетевых карт NVIDIA nForce
  • Добавлена поддержка некоторых устройств
  • Многочисленные изменения для поддерживаемых платформ
  • Обновлено основное ПО: binutils, gcc, bind, postfix, openssh, openssl, openpam, pppd
  • Полный список изменений: ftp://ftp.netbsd.org/pub/NetBSD/NetBS...

    >>> Образы для скачивания

BuG2BuG ()

Проблемы при копировании большого видео с фотоаппарата.

Форум — General

Дано: 
  Debian GNU/Linux 4.0 r1 Etch (ядро 2.6.18.5-686);
  KDE 3.5.5
  Фотоаппарат Kodak EasyShare M853, на котором видеофайл ~700 метров.
  На разделе-приёмнике свободно 4,0 ГБ.

При копировании конька пишет: "нет связи" и ждёт, лампочка на фотоаппарате мигает. 
Минут через 5-7 выкидывает ошибку "Неизвестная ошибка (дальше невоспроизводимые символы)" с кнопкой "Отмена", лампочка на фотоаппарате просто горит. 
Файлы размером мегабайт ~100 копируются успешно. Никто с подобным поведением не сталкивался?

---
С Уважением,

>>>

BuG2BuG ()

Fedora 8, nVidia-Legacy и Compiz

Форум — Desktop

Поставил драйвера для своего GeForce 256 на FC8/i386. 
Захотелось запустить Avant Window Navigator, а он требует Compiz.
Поставил Compiz, Emerald и "подобное фуфло" на GNOME, запускаю:

[bug2bug@bug2bug ~]$ compiz --replace

Бордеры у окон исчезают, в терминал ничего не выводится, X'ы виснут, но курсор мыши двигается. 
Спасает Ctrl-Alt-Bksp. Пошукал по форумам, пишут много чего интересного, но не про мой случай. 

Выхлоп uname:

[bug2bug@bug2bug ~]$ uname -a
Linux bug2bug 2.6.23.1-49.fc8 #1 SMP Thu Nov 8 21:41:26 EST 2007 i686 i686 i386 GNU/Linux

Direct Rendering есть:

[bug2bug@bug2bug ~]$ glxinfo | grep direct
direct rendering: Yes

Вот конфиг xorg.conf:

[bug2bug@bug2bug ~]$ cat /etc/X11/xorg.conf
Section "ServerLayout"
        Identifier     "single head configuration"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib/xorg/modules/extensions/nvidia"
        ModulePath   "/usr/lib/xorg/modules"
EndSection

Section "Module"
        Load  "extmod"
        Load  "record"
        Load  "dbe"
        Load  "glx"
        Load  "xtrap"
        Load  "freetype"
        Load  "type1" 
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us,ru"
        Option      "XkbOptions" "grp:shifts_toggle,grp_led:scroll"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        ModelName    "LCD Panel 1280x1024"
        HorizSync    31.5 - 64.0
        VertRefresh  56.0 - 65.0
        Option      "dpms"
EndSection

Section "Device"
        Identifier  "Videocard0"
        Driver      "nvidia"
        Option      "AllowGLXWithComposite" "true"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
        Option     "AddARGBGLXVisuals" "True"
EndSection


Помогите, пожалуйста.

---
С Уважением,

>>>

BuG2BuG ()

Ubuntu 7.10 и 4 монстра-тяжеловеса

Галерея — Скриншоты

Собственно, под монстрами-тяжеловесами понимаются GNOME, Matlab, Vmware Server и Netscape Navigator 9.

Хотя это не совсем верно. Учитывая субъективные ощущения, Netscape работает быстрее Firefox, хотя полностью совместим с ним. Возможно Вы выскажетесь против проприетарных продуктов (в частности, Matlab, которому есть достойная замена в лице GNU Octave / Scilab, которые, однако, не интуитивно понятны (документации меньше, аналога syms в Octave так и не нашёл(на гугл, мануалы и кривые руки не намекать))). Что касается Vmware, то внутри работает NetBSD, в котором из pkgsrc собирается Perl как зависимость KDE. Всё работает на машине PIII-866MHz, 512MB RAM, из которых 256 выделены Vmware.

Просьба предложения "отправиться в биореактор", "грызть апстенку" и подобные оставить при себе, а постить лишь конструктивную критику.

---
Best Regards, Bauman Moscow State Technical University freshman, The Russian NetBSD Community member, The QNX Community member, Sergei [BuG2BuG] Sobko.

>>> Просмотр (1280x1024, 207 Kb)

BuG2BuG ()

RSS подписка на новые темы