LINUX.ORG.RU

Сообщения legolegs

 

[math]Как строится таблица критических значений критерия Фишера?

Сабж. Готовых таблиц в интернете и справочниках полно, но они все маловаты.

 

legolegs
()

Почему семафоры не являются объектами файловой системы?

Пайпы, например, являются. Почему семафоры нет? Они бы сделали ненужным такой маразм как .lock-файлы. Писать и читать в файлы-семафоры бессмысленно, но можно открывать и ждать/обламываться, в том числе и из скриптов.
Выглядеть это должно примерно так:
вызов mksem [--value число] имя...
вызов open(,"w") или в shell [n]<имя блокирует вызов до освобождения семафора
вызов open(,"r") или в shell [n]>имя возвращает ошибку, если семафор занят
вызов close() естественно освобождает семафор.
ИМХО, понятный и полезный интерфейс. Почему так не сделали?

legolegs
()

convmvfs -o allow_other не работает

Старая как мир задача: виндузятникам перекодировать имена файлов на ftp в cp1251.

Монтирую так:

[root@battlehummer ~]# ll /srv/ftp/pub/
итого 12                               
drwxr-xr-x 9 legolegs legolegs 4096 Мар  7 19:54 fedora
drwxr-xr-x 2 root     root       48 Мар  8 21:39 music
[root@battlehummer ~]# convmvfs -o allow_other,ocharset=cp1251,direct_io,default_permissions,srcdir=/mnt/big/Music/ /srv/ftp/pub/music
srcdir=/mnt/big/Music               
icharset=UTF-8                      
ocharset=cp1251                     
[root@battlehummer ~]# ll /srv/ftp/pub/
итого 20                               
drwxr-xr-x   9 legolegs legolegs 4096 Мар  7 19:54 fedora
drwxr-x--- 109 legolegs users    4096 Янв 31 16:40 music
[root@battlehummer ~]# su -c "ls -l /srv/ftp/pub/" legolegs
итого 20
drwxr-xr-x   9 legolegs legolegs 4096 Мар  7 19:54 fedora
drwxr-x--- 109 legolegs users    4096 Янв 31 16:40 music
[root@battlehummer ~]# su -c "ls -l /srv/ftp/pub/" otheruser
ls: невозможно получить доступ к /srv/ftp/pub/music: Отказано в доступе
итого 12
drwxr-xr-x 9 legolegs legolegs 4096 Мар  7 19:54 fedora
?????????? ? ?        ?           ?            ? music

Как видно, allow_other я указал. Пользователь-владелец директории всё видит, пользователь, входящий в группу users видит вопросики вместо прав доступа.

Что я делаю не так?

legolegs
()

[C]Проверка на переполнение int

Какой способ проверки на переполнение int (а также long int и т.д.) самое труЪ? Кроме откровенно быдлокодерских, пока на ум пришло следующее: 1) Не использовать unsigned и проверять смену знака 2) Проверять флаг переполнения asm'ом

Какой способ используют эксперты ЛОРа? Интересует минимальное падение скорости и переносимость хотябы в рамках x86. Примеры кода с асмрм приветствуются.

 

legolegs
()

[Резюме] программист C++ (Липецк или удалённо)

Осипов Олег Владиславович
22 года

Знания:
язык C++ (естественно, с шаблонами, наследованием, пониманием что как скомпилируется. Кнута чту)
многопоточность/многопроцеснность (win32 и posix)
STL, boost,Qt, sqlite
Также:
опыт работы с Borland C++ Builder 6 (vcl и winapi)
shell-скриптинг
паковка rpm
html+css+js+php+mysql

Реализовывал численные методы; читал, отлаживал и рефакторил чужой код.
Читаю документацию на английском (например, C++0x working draft)
Быстро обучаюсь.

email: legolegs@ya.ru

 

legolegs
()

[C++][goto]«Оператор goto перескакивает через конструктор» - это правда???

веревка достаточной длины чтобы выстрелить себе в ногу

Этот метод не срабатывает в С++, потому что функции конструктора вызываются неявно в качестве части объявления; объявление часто скрывает вызов функции. Если вы пропускаете объявление, то вы пропускаете и вызов конструктора. Например, в следующей программе деструктор для x вызовется, а конструктор нет:

foo()
{
if ( некое_условие )
goto выход;
некий_класс x; // Конструктор не вызывается. (Оператор goto
// перескакивает через него.)
// ...
выход:
// Здесь вызывается деструктор для x при выходе x из
// области видимости.
}
Вследствие этой проблемы лучше всего совсем избегать переходов goto в программах на С++.

 

legolegs
()

FB2 в GNU/Linux

Предлагаю обменяться опытом по сабжу. Интересует, в первую очередь, создание .fb2

С чтением вопросов практически нет: fbreader и khaalireader отлично работают. В первом даже есть базовая функциональность библиотеки.

Хотелось бы иметь тулзы для конвертирования в правильный формат из неправильных (в т.ч. пакетные/консольные). Существует что-нибудь такое? Стабильность и наличие в репозиториях желательны, но необязательны.

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

>>>

legolegs
()

Восстановить .cdr с помощью foremost

После неудачного перемещения раздела были потеряны нужные файлики. Фото и документы я частично восстановил (что уцелело). Сначала натравил foremost, потом что получилось проверил на открываемость с помощью ImageMagik и antiword соответственно. Осталась кучка файлов, которые осталось рассортировать вручную и вернуть в производственный, так сказать, процесс. А вот с кореловскими файлами сложнее. Конфиг foremost'а я для них написал и что-то оно восстанавливает, но утилиты проверки корректности никакой нет. Открывать каждый файл и визуально определять повреждён он или нет - не улыбается совершенно. Единственная известная утилита uniсonvertor выходит с кодом 0 даже если не смогла сконвертировать файл. Возможно, тут пробегут разработчи sk1 (хотя им на форум я тоже попытаюсь написать). Интересуют конструктивные советы по валидации cdr'ок и восстановлению файлов вообще.

>>>

legolegs
()

[крик души] Ну и где, #%$, надёжность GNU/Linux?

Задолбало, товарищи! за-дол-ба-ло!!! И не знаю что делать.

Вот запустил nexuiz и для пробы выбрал "ultimate" в разделе видео-настроек. (Ну я понимаю, что это была не лучшая идея, но виснуть то зачем?) Спустя пару секунд амарок позаикался, покрякал, завис и позже заткнулся, тем временем мышь шевелилась рывками и тоже встала. numlock переключался с задержкой и тоже перестал реагировать. Всё зависло на хрен. Прямо как в оффтопике. Позор. :(

Такое уже случалось раньше и, судя по признакам, дело в свопинге. В высокопроизводительной многозадачной операционной системе, выполняющейся на двухъядерном процессоре и со свопом на sata-диске со включенным DMA. Смерть от свопинга. Приехали.

Практика показывает, что обычно в своп попадают редко используемые данные, и всё идёт хорошо. Но иногда в свопе оказываются часто используемые данные. Просто потому, что места в ОЗУ для них нет. И начинается бешеный свопинг, подкачка осуществляется не время от времени, а постоянно. Разумеется, это ОЧЕНЬ медленно. Ну пусть бы, раз программа не умеет экономить память - пусть тормозит. Но нэээт! Остальные программы, добросовестные, вообще останавливаются!!! Включая, разумеется, X.org и даже /bin/login! Однажды я просто не смог залогиниться с виртуального терминала, т.к. login слишком долго проверял пароль и отваливался по таймауту! Но я не пойму, ПОЧЕМУ??? Ведь процессор не используется (хотя бы одно ядро то), а для планировщика IO вроде как все равны. Откуда тормоза, блин? Как бороться? Как предотвращать?

>>>

 

legolegs
()

Fedora 8: нет звука в старых играх

Был. Обновился и не стало.

Конкретно: Alpha Centauri (от loki естественно), ja2-stracciatella и даже openttd. Никаких сообщений в stderr. Просто нет звука. При этом в том же quake3 звук есть, ls -R ~ > /dev/dsp как и положено противно шипит и т.п. Как чинить?

>>>

legolegs
()

Определитель Рауса в TeX

Учусь в универе, стараюсь использовать ЛаТеХ при написании отчётов. Столкнулся с проблемой, не пойму как правильно решить.

Определитель Рауса - это такая здоровенная квадратная матрица и надо сначала взять кусочек из левого верхнего угла размером 1х1 элемент и посчитать определитель, затем 2х2, затем 3х3 и т.д. Рисуется это примерно так:

||||11| 12| 13| 14|

||| 21 22| 23| 24|

|| 31 32 33| 34|

| 41 42 43 44|

Вопрос знатокам: как это реализуется фтех?

PS Пробовал комбинировать \multicolumn и \multirow и внутри делать табличку с рамкой - не получается. Ещё есть вариант с \vline - но слева они слипаются в одну линию.

>>>

legolegs
()

djvu2any - дарю :)

Возникла необходимость сконвертировать много файлов .djvu в 
"обыкновенный" формат. Пришлось долго думать, в чём, собственно, суть 
кучи утилит в составе djvulibre.
В итоге родился простенький скрипт, делающй из djvuшника директорию со страницами. Пользуйтесь :)

Возможности:
=> Многопоточность (по числу процессоров)
=> ddjvu в моей сборке любит падать на ровном месте, скрипт запустит его повторно
=> Конвертация во множество различных форматов (за счёт imagemagick) 

Проблемы:
Очень большие большие изображения обрабатываются в несколько потоков гораздо медленнее из-за нехватки памяти, используйте команду
JOBS=1 djvu2any.sh file.djvu
чтобы принудительно использовать 1 поток.
Программа не прерывается по ctrl+c, надо "добивать" через
killall djvu2any.sh ddjvu convert

Вообще я не очень в программировании на шелле, наверно много сделал неоптимально. И с английским проблемы, но фиг с ним :)

Сам скрипт:

#!/bin/sh

# This program is free software, released under terms of GNU GPL3
# 2007 (c) Osypov Oleg [ legolegs at yandex ru ]

# requires: djvulibre, ImageMagick

FNAME=$1
TOFORMAT=$2
if [[ "$FNAME" == "" ]]; then
	echo "Usage: $0 file [to_format (default: png)]" 1>&2
	exit 1
fi
if [[ "$TOFORMAT" == "" ]]; then
	TOFORMAT=png
fi
DIRNAME=`echo $FNAME | sed "s/\.\w*$//"`
if [[ "$DIRNAME" == "$FNAME" || "$DIRNAME" == "" ]]; then
	DIRNAME=${FNAME}_export
fi
mkdir $DIRNAME
if (! touch $DIRNAME) ; then 
	echo "Cannot use dir \`\`$DIRNAME''" 1>&2
	exit 1
fi
PAGES=`djvudump $FNAME | grep INFO | wc -l`
if (($PAGES < 1)); then
	echo "0 pages found" 1>&2
	exit 1
fi
rm $FNAME.log 2> /dev/null
if [[ "$JOBS" == "" ]]; then
	JOBS=`cat /proc/cpuinfo 2> /dev/null | grep "^processor" | wc -l`
	if (($JOBS < 1)); then
		JOBS=1
	fi
fi
for j in `seq 1 $JOBS`; do
	for i in `seq -w $j $JOBS $PAGES`; do
		OK=true
		if (! ddjvu -format=ppm -page=$i $FNAME  $DIRNAME/$i.ppm ); then
			echo "ddjvu crush on page $i, retrying..." 1>&2
			rm $DIRNAME/$i.ppm 2> /dev/null
			if (! ddjvu -format=ppm -page=$i $FNAME  $DIRNAME/$i.ppm ); then
				echo "ddjvu crush twice on page $i, logged" 1>&2
				echo "$i" >> $FNAME.log
				OK=false
			fi
		fi
		if ($OK); then
			convert $DIRNAME/$i.ppm $DIRNAME/$i.$TOFORMAT
			rm $DIRNAME/$i.ppm
		fi
	done &
	WAITUS="$WAITUS $!"
done
wait $WAITUS
ERRORS=`cat $FNAME.log 2> /dev/null | wc -l`
if (($ERRORS > 0)); then
	echo "$ERRORS pages are not exported, see \`\`$FNAME.log'' for numbers" 1>&2
fi

>>>

legolegs
()

Принтер samsung 2010 пропадает из lsusb

Придирчиво выбирал себе лазерник, чтоб без гимора завёлся в линуксе. Не угадал :(

KDEшный визард раз из 20 показывает hal:///org/freedesktop/Hal/devices/usb_device_ffffffff_ffffffff_noserial_printe r_noserial (и никогда - "просто USB") но отпечатать тестовую страницу не удалось ни разу. В логах

I [21/Oct/2007:23:18:35 +0400] Started backend /usr/lib/cups/backend/hal (PID 5425) for job 60.

E [21/Oct/2007:23:18:35 +0400] [Job 60] Unable to open device "hal:///org/freedesktop/Hal/devices/usb_device_ffffffff_ffff ffff_noserial_printer_noserial": No such device

Попробовал ситапку с прилагаемого диска - тоже ничего не фурычит :(

Стал копать глубже и заметил, что lsusb часто задумывается и в итоге не видит принтера (флешки и мобильники видятся и работают). Такое ощущение, что проблема в кабеле, но у меня их два разных. Не пойму куда копать.

Должен ли вообще принтер быть виден как /dev/ttyUSB0 ?

>>>

legolegs
()

Создание odt

Надо, чтобы программа создавала odt: простое оформление и формулы

Что посоветует ЛОР?

>>>

legolegs
()

Zavisaet X srazu pri zapuske

Videokarta intel 915, vsio rabotalo poka ne otrubili svet. Teper' vklyuchayu komp i pri zapuske iksov vizhu chiornyj `ekran. Klava/mysh' kak voditsya, ne rabotayut, ctrl+alt+backspace tozhe. Zagruzilsya v 3 runlevel, stal razbitat'sya. V logah nichego osobennogo net:

[root@battlehummer ~]# grep "(WW)" /var/log/Xorg.0.log.old

(WW) warning, (EE) error, (NI) not implemented, (??) unknown.

(WW) No monitor specified for screen "Screen0".

(WW) The core pointer device wasn't specified explicitly in the layout.

(WW) No FontPath specified. Using compiled-in default.

(WW) intel(0): Register 0x61114 (PORT_HOTPLUG_STAT) changed from 0x00000000 to 0x00000b00

(WW) AIGLX: 3D driver claims to not support visual 0x23

(WW) AIGLX: 3D driver claims to not support visual 0x24

(WW) AIGLX: 3D driver claims to not support visual 0x25

(WW) AIGLX: 3D driver claims to not support visual 0x26

(WW) AIGLX: 3D driver claims to not support visual 0x27

(WW) AIGLX: 3D driver claims to not support visual 0x28

(WW) AIGLX: 3D driver claims to not support visual 0x29

(WW) AIGLX: 3D driver claims to not support visual 0x2a

(WW) AIGLX: 3D driver claims to not support visual 0x2b

(WW) AIGLX: 3D driver claims to not support visual 0x2c

(WW) AIGLX: 3D driver claims to not support visual 0x2d

(WW) AIGLX: 3D driver claims to not support visual 0x2e

(WW) AIGLX: 3D driver claims to not support visual 0x2f

(WW) AIGLX: 3D driver claims to not support visual 0x30

(WW) AIGLX: 3D driver claims to not support visual 0x31

(WW) AIGLX: 3D driver claims to not support visual 0x32

(WW) <default pointer>: No Device specified, looking for one...

[root@battlehummer ~]#

Ne znayu chto delat :( Menyal drajver s intel na i810 i dazhe na vesa. Udalyal konfig voobsche - reakciya odna i tazhe - iksy visnut namertvo. pisal v sosednej konsoli

sleep 60 && killall -9 Xorg ; killall -9 X; killall -9 startx

ne pomogaet. Hotya po power normal'no komp vyklyuchaetsya (no `ekran chiornyj vsyu dorogu)

Pomogite, chto delat'? PS izvinite za translit, pishu iz links, u nego `eto vmesto russkoj raskladki pochemuto.

legolegs
()

3D ускорение и i810

Сменил материнку на днях и, автоматически, сменил видюху с gf440 на интеловскую интегрянку. Переписал конфиг:
...
Section "Module"
Load "dri"
Load "record"
Load "v4l"
Load "dbe"
#Load "GLcore"
Load "extmod"
Load "glx"
Load "type1"
Load "freetype"
EndSection

Section "ServerFlags"
Option "AIGLX" "true"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "i810"
Option "RenderAccel" "true"
Option "AddARGBGLXVisuals" "True"
Option "DDC" "False"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps" "true"
Option "DRI" "true"
EndSection

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection
...
Все проги между делом ругаются хз на что:
[legolegs@battlehummer Valve]$ glxgears
libGL warning: 3D driver claims to not support visual 0x5a
5191 frames in 5.0 seconds = 1038.145 FPS
Берил тормозит просто ужос как.
CS1.6 (через вайн 0.9.44) ругается
err:wgl:X11DRV_wglGetProcAddress (wglMakeContextCurrentARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglGetCurrentReadDCARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglCreatePbufferARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglGetPbufferDCARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglReleasePbufferDCARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglDestroyPbufferARB) - not found
err:wgl:X11DRV_wglGetProcAddress (wglQueryPbufferARB) - not found
и вылетает в главном меню. Короче опенГЛ есть, да какой-то не такой.

Что можно сделать чтоб
1) берил не тормозил
2) контра не валилась?

PS дистриб федора6, контра самосборная с тюнингованым опенГЛ
раньше, на нвидии, всё работало

legolegs
()

Полёт к Альфе Центавра

Мне тут моч^W детство в голову ударило и я задал себе задачку по физике для 7го класса - обсчитать сабж.
Дано:
ly=9460528404879358.8126 //световой год в метрах
l=4.22*ly //расстояние до цели
g=9.8 //жэ оно и в африке жэ
a=2*g //бум лететь на двух жэ, полпути разгон, потом торможение
m=50*10^6 //звездолёт 50 тыс. тонн (от балды умножил атомную подлодку на 2)
t=2*sqrt(l/a) //общее время в пути, секунд
t/(60*60*24*365) //переведём в годы для наглядности, получилось чуть меньше 3х лет
v=a*t //тут я ради интереса посчитал максимальную скорость и обнаружил, что она втрое больше скорости света. Ну да, 3 года меньше, чем 4.22, я мог бы и раньше заметить.
И как быть? Я не ожидал, что так разгонюсь. Очевидно, формулу надо менять. На какую? И как считать мощность не допру. В школе по физике пять с плюсом было, а сейчас элементарные вещи забыл. Расчитываю, что атомный реактор даст 5 мегаватт, двигатель не знаю какой, предположим фотонный со 100% кпд для простоты.
Может кто поможет?

legolegs
()

как защитить витую пару на полу

Опытные одмины, посоветуйте сабж от стульев, ног и т.д.
Те столы, что стоят одной стороной к стене - всё окей, провод даже не видно. Те, который спиной к стене - провод от стены к компу (что под столом). Надо закрыть какой-нибудь кренью типа стального кабель-канала. Есть такие вещи в продаже? Если есть, то как правильно называются и где можно заказать.

ЗЫ вайфай не предлагать, долбить пол - тоже

legolegs
()

beryl не запускается

Этот чортов берил отказывается работать,
несмотря на то, что всё, что ему надо установлено и работает.

[legolegs@battlehummer ~]$ ps -u legolegs
  PID TTY          TIME CMD
 2294 ?        00:00:00 startkde
 2335 ?        00:00:00 ssh-agent
 2338 ?        00:00:00 dbus-launch
 2339 ?        00:00:00 dbus-daemon
 2381 ?        00:00:00 gpg-agent
 2396 ?        00:00:00 start_kdeinit
 2397 ?        00:00:00 kdeinit
 2400 ?        00:00:00 dcopserver
 2402 ?        00:00:00 klauncher
 2404 ?        00:00:02 kded
 2409 ?        00:00:00 kwrapper
 2411 ?        00:00:00 ksmserver
 2414 ?        00:00:02 kdesktop
 2416 ?        00:00:06 kicker
 2417 ?        00:00:00 kio_media
 2418 ?        00:00:00 kio_file
 2428 ?        00:00:00 kwikdisk
 2431 ?        00:00:01 gxneur
 2438 ?        00:00:00 klipper
 2439 ?        00:00:00 lineakd
 2440 ?        00:00:03 konsole
 2443 ?        00:00:00 kalarmd
 2447 pts/1    00:00:00 bash
 2467 ?        00:00:00 knotify
 2512 pts/1    00:00:00 ps
[legolegs@battlehummer ~]$ beryl
**************************************************************
* Beryl system compatiblity check                            *
**************************************************************

Detected xserver                                : NVIDIA

Checking Display :0.0 ...

Checking for XComposite extension               : passed (v0.3)
Checking for XDamage extension                  : passed
Checking for RandR extension                    : passed
Checking for XSync extension                    : passed

Checking Screen 0 ...

Checking for GLX_SGIX_fbconfig                  : passed
Checking for GLX_EXT_texture_from_pixmap        : passed
Checking for non power of two texture support   : passed
Checking maximum texture size                   : passed (2046x2046)

Relaunching beryl with __GL_YIELD="NOTHING"
**************************************************************
* Beryl system compatiblity check                            *
**************************************************************

Detected xserver                                : NVIDIA

Checking Display :0.0 ...

Checking for XComposite extension               : passed (v0.3)
Checking for XDamage extension                  : passed
Checking for RandR extension                    : passed
Checking for XSync extension                    : passed

Checking Screen 0 ...

Checking for GLX_SGIX_fbconfig                  : passed
Checking for GLX_EXT_texture_from_pixmap        : passed
Checking for non power of two texture support   : passed
Checking maximum texture size                   : passed (2046x2046)

beryl: Another window manager is already running on screen: 0
beryl: No manageable screens found on display :0.0
[legolegs@battlehummer ~]$ rpm -qa | grep nvidia
xorg-x11-drv-nvidia-96xx-1.0.9631-7.lvn6
kmod-nvidia-96xx-1.0.9631-7.2.6.20_1.2962.fc6
[legolegs@battlehummer ~]$ rpm -qa | grep beryl
beryl-settings-0.2.0-1.fc6
beryl-core-0.2.0-1.fc6
beryl-plugins-0.2.0-1.fc6
beryl-manager-0.2.0-1.fc6

Дистриб федора 6.
Наглость берила не знает границ, т.к. никакого "Another window manager" нет.
Специально прибил kwin и проследил, чтобы кдешная прозрачность была отключена.
Что делать?
legolegs
()

limits.conf: Ограничение на объём памяти, используемый программой

У меня Fedora 6. Некоторые программы иногда начинают жрать память и жрут пока не лопнут. Часто у меня терпение лопается гораздо раньше и я жму резет, ибо прибить такую прогу пока комп интенсивно свопится совершенно невозможно.
Итак, задача: ограничить объём памяти, который может выделить программа, ну, скажем, объёмом ОЗУ.
Птичка мне насвистела, что с помощью limits.conf можно ограничить всё подряд. Нашёл оный файл по адресу /etc/security/limits.conf и прописал в нём
* hard data 262144
* hard rss 262144
Второе, как я понял не совсем то, а что такое первое я точно не знаю, но по смыслу подходит. И ничего не изменилось. Специально накорябал прогу, выделяющую малоком 300 метров и она не спеша, но без помех сделала своё чёрное дело. Так как-же, чёрт возьми, правильно пользоваться этим лимитс.конф?

примечания:
на всякий случай продублировал /etc/security/limits.conf в /etc/limits.conf
заставил прогу выделить 500мб и ждать так 10 минут
никаких действий чтобы "применить" изменённый limits.conf не предпринимал т.к. не нашёл в мани про это ничего.

legolegs
()

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