LINUX.ORG.RU

Сообщения RomanU

 

Qt и проверка указателей на 0

Форум — Development

Практически во всех примерах с использованием Qt (да и не только, вообщем-то) после создания указателя с помощью new сразу идёт его использование безо всякой проверки на 0. С одной стороны это не создаёт лишних строк для человека, который смотрит этот код в качестве примера, и даёт общую картину как использовать код. Но меня настораживает то, что я вижу такой код во многих программах. Т.е. никаких проверок на 0. Получили указатель - и вперёд. Я не помню, где я читал, но мне встречалась такая информация, что, якобы, если new возвращает 0, то уже особо и нет смысла дальше что-то делать, т.к. программа будет уже работать некорректно из-за нехватки памяти. Вот так вот кардинально получается: либо всё, либо уже ничего (программа в таком случае обычно вылетает). Я размышлял над этим несколько недель. В итоге в своих программах я обязательно проверяю каждый указатель. Хоть и в недрах Qt я нахожу, что там часто не проверяется, но считаю, что если и будет кто-то виноват в разыменовании нуля, то хотя бы пусть это буду не я.

Возникает вопрос: как же всё-таки правильно поступать - проверять или уже не заморачиваться с каждым указателем? Есть подозрение, что отсутствие подобных проверок - это просто быдлокод. Но хочется понять, как же правильно.

 ,

RomanU
()

[calculate] Не компилируется Qt из git

Форум — Development

Никак не могу скомпилить кьют. Последний раз пробовал где-то пару месяцев назад, всё работало. Потом обновил репозиторий Qt, сделал make confclean и сконфигурировал так:

./configure -prefix /devel/qt -opensource -no-gtkstyle
Потом сделал gmake -j3, и в результате через несколько секунд следующее:
               ....
gmake[1]: Entering directory `/devel/qt/src/corelib'
g++ -c -include .pch/release-shared/QtCore -m64 -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++-64 -I. -I../../include -I../../include/QtCore -I.rcc/release-shared -Iglobal -I../../tools/shared -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared -o .obj/release-shared/qtextboundaryfinder.o tools/qtextboundaryfinder.cpp
g++ -c -include .pch/release-shared/QtCore -m64 -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++-64 -I. -I../../include -I../../include/QtCore -I.rcc/release-shared -Iglobal -I../../tools/shared -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared -o .obj/release-shared/moc_qnamespace.o .moc/release-shared/moc_qnamespace.cpp
g++ -c -include .pch/release-shared/QtCore -m64 -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++-64 -I. -I../../include -I../../include/QtCore -I.rcc/release-shared -Iglobal -I../../tools/shared -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared -o .obj/release-shared/moc_qthread.o .moc/release-shared/moc_qthread.cpp
.moc/release-shared/moc_qnamespace.cpp:426: ошибка: ‘WA_LockPortraitOrientation’ is not a member of ‘Qt’
.moc/release-shared/moc_qnamespace.cpp:427: ошибка: ‘WA_LockLandscapeOrientation’ is not a member of ‘Qt’
.moc/release-shared/moc_qnamespace.cpp:428: ошибка: ‘WA_AutoOrientation’ is not a member of ‘Qt’
.moc/release-shared/moc_qnamespace.cpp:440: ошибка: ‘AA_S60DisablePartialScreenInputMode’ is not a member of ‘Qt’
.moc/release-shared/moc_qnamespace.cpp:460: ошибка: ‘NoFormatConversion’ is not a member of ‘Qt’
gmake[1]: *** [.obj/release-shared/moc_qnamespace.o] Ошибка 1
gmake[1]: *** Ожидание завершения заданий...
gmake[1]: Leaving directory `/devel/qt/src/corelib'
gmake: *** [sub-corelib-make_default-ordered] Ошибка 2

Сначала подумал, что просто в гит залили некомпилируемый код. Но прошло несколько дней, каждый день какие-то обновления там по мелочи, но проблема не решается. Сталкивался ли кто-нибудь с этой бедой? Как её решить?

gcc -v
Используются внутренние спецификации.
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /var/calculate/tmp/portage/sys-devel/gcc-4.4.5/work/gcc-4.4.5/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.5 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.5/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.5/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.4.5/python --enable-checking=release --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.4.5 p1.2, pie-0.4.5'
Модель многопоточности: posix
gcc версия 4.4.5 (Gentoo 4.4.5 p1.2, pie-0.4.5)

 

RomanU
()

Запись музыкальных инструментов. Как правильно?

Форум — Talks

Хочу скоро приобрести несколько инструментов: гитара, бас, клавиши.
В связи с этим есть несколько вопросов.
Что необходимо для того, чтобы записать каждый инструмент по дорожке и потом свести их?

1. Достаточно ли звуковой карты ноутбука с входом от микрофона?
2. Если не достаточно, какую карту для обычного компа лучше брать? С ценой в разумных пределах (скажем, не дороже 1500 руб). 
   Точнее, какую минимально возможную модель звуковой карты посоветуете?
3. Достаточно ли подавать выход с электрогитары на линейный вход звуковухи (или на микрофонный вход) 
   или нужно какой-нибудь предусилитель/микшер/etc? Какой, например?
4. Каким софтом лучше воспользоваться для записи?
5. Можно ли будет звук от гитары программно обогатить какой-то примочкой 
   прямо в процессе записи? Каким способом?
6. Какие могуть быть грабли и подводные камни в этом процессе с точки зрения новичка в звукозаписи?
RomanU
()

Шифрование сообщений ICQ

Форум — Desktop

Подскажите, возможно ли шифровать сообщения, чтобы никто не мог отснифить их? Вот у меня Licq соединяется через прокси (HTTPS) на 443 порт ICQ сервера, но у меня возникают смутные подозрения, что это без толку, и мои сообщения кто-то (напр, админ Internet ISA Proxy) может читать. Пробовал воспользоваться tcpdump, вроде ничего вменяемого нельзя прочитать. Но всё же ... где истина?

И ещё, если возможно, то существует ли сабж для win32 ?
Хочется помочь другу, у него вроде читают сообщения :(

P.S. Переход на Jabber просьба не предлагать. Интересует именно subj.
RomanU
()

КДЕ: фон иконок gtk приложений в трее

Форум — Desktop

Подскажите, плиз, как сделать, если возможно, чтобы фон иконок был прозрачным (принимал фон самого трея) ?
Для всех приложений K и Qt это работает, а вот с такими как Stardict,
d4x и подобные - белый квадрат в трее :(
Как с этим бороться?
RomanU
()

2 Alexandr Terekhov

Форум — Development

Привет. Твой ящик на gmail что-то не работает, и я не смог тебе отправить Understanding the Linux Kernel 3rd.

RomanU
()

Получить данные через HTTP proxy

Форум — Development

Есть http прокси, на localhost:8080.
Хочу получить файл из инета. Делаю:

telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Пишу:

CONNECT myserver.ru:443 HTTP/1.1
HOST myserver.ru:443

Получаю:
HTTP/1.1 200 Connection established
Via: 1.1 RELAY

Пишу:
GET http://myserver.ru/test/news.php HTTP/1.0

После этого получаю:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
<blockquote>Hint: <a href="https://myserver.ru/"><b>https://myserver.ru/</b>
</a></blockquote></p>
<hr />
<address>Apache/2.0.46 (Red Hat) Server at myserver.ru Port 443</address>
</body></html>
Connection closed by foreign host.

Как сформировать правильный запрос? Что именно надо писать
и как правильно работать с http proxy?

Пробовал так:
GET https://myserver.ru/test/news.php HTTP/1.0
То же самое.
RomanU
()

inline функция: помогите понять кое-что

Форум — Development

Копирую оригинал доков, чтобы не быть голословным.

Each fix-mapped linear address is represented by an integer index defined in the enum
fixed_addresses data structure:
enum fixed_addresses {
FIX_APIC_BASE,
FIX_IO_APIC_BASE_0,
[...]
__end_of_fixed_addresses
};
Fix-mapped linear addresses are placed at the end of the fourth gigabyte of linear
addresses. The fix_to_virt( ) function computes the constant linear address starting
from the index:
inline unsigned long fix_to_virt(const unsigned int idx)
{
if (idx >= _ _end_of_fixed_addresses)
__this_fixmap_does_not_exist( );
return (0xffffe000UL - (idx << PAGE_SHIFT));
}
Let's assume that some kernel function invokes fix_to_virt(FIX_IOAPIC_BASE_0).
Since the function is declared as "inline," the C compiler does not invoke fix_to_virt( ),
but just inserts its code in the calling function. Moreover, the check on the index value is
never performed at runtime. In fact, FIX_IOAPIC_BASE_0 is a constant, so the compiler
can cut away the if statement because its condition is false at compile time. Conversely, if
the condition is true or the argument of fix_to_virt( ) is not a constant, the compiler
issues an error during the linking phase because the symbol __this_fixmap_does_not_exist is not defined elsewhere. Eventually, the compiler
computes 0xffffe000-(1<<PAGE_SHIFT) and replaces the fix_to_virt( ) function
call with the constant linear address 0xffffd000.

Т.е., коротко говоря, компилер отрежет вызов __this_fixmap_does_not_exist().

А вот не получается у меня мой тестовый пример. См. ниже.
RomanU
()

файрвол для сотового?

Форум — Talks

А возможно ли программное решение, которое позволит мне что-то наподобие
файрвола?

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

Слышали ли вы что-нибудь подобное?
RomanU
()

Изменение раскладки при написании URL в Firefox

Форум — Talks

Надоел уже один глюк:
хочу, например, набрать урл. Начинаю писать "www", а пишется "ццц".
Раскладка заведомо английская. Причём, следующие символы начинают
писаться нормально, английскими.
Также бывает и не только в строке для набора URL.
Но и, например, когда хочу что-то в гугле поискать. Такая же история.
Бывает, как нарочно через 1-2 буквы вставляется русская :(

Использую KDE, xxkb. Вроде видал такое только в Firefox, в других приложениях
не замечал. У кого-нибудь бывало подобное?
RomanU
()

Если это не глюк, то какой смысл?

Форум — Talks

http://www.linux.org.ru/view-message.jsp?msgid=1135195

Не пойму, почему иногда заголовок ответа на какой-то топик не совпадает
с самим топиком.
Например, тема называется "Oracle сдаётся", 
а заголовок ответа: "Re: Oracle сдаётся".
Но следом идёт:
"Re: Novell выпускает проект для совместной работы Hula".

Это с каким-то умыслом или глюки?
RomanU
()

lsmod: интересная фича

Форум — Development

Набросал такой модуль:

Файл current.c
====================================================
#include <linux/kernel.h>
#include <linux/module.h>
#include <asm/current.h>

int init_module(void) {

    printk(KERN_ALERT "The process is \"%s\" (pid %i)\n",
                current->comm, current->pid);

    return 0;
}

void cleanup_module() {
}

MODULE_LICENSE("GPL");
====================================================

Делаю insmod, затем lsmod.

И вижу:

Module                  Size  Used by
get_current()           1408  0
smbfs                  61432  2
hfsplus                56708  0
nls_cp866               5120  1
nls_iso8859_1           4096  0
      ..... и т.д.

В <asm/current.h>:
#define current get_current()

Что и имеем вместо названия модуля .... 
Файл модуля - current.ko

ну разве не LOL ? :)
RomanU
()

ДрайверА или драйверЫ (множ. число). Как правильно?

Форум — Talks

Если честно, немного достало, что слышу постоянно "драйверА".
Тогда почему не компьютерА, принтерА ?
ИМХО, это неграмотность. Или я не прав?

Вот читал сейчас Linux Device Drivers 2nd edition в переводе Киселёва.
Стало грустно, когда там увидел "различные драйверА могут иметь
 различные характеристики даже для одного и того же устройства." :(
RomanU
()

BUG: количество страниц в конце каждой новости на главной странице

Форум — Linux-org-ru

Вот поставил я, чтобы у меня деление страниц было по 15 сообщений на 
страницу. Обновилось только top 10.
А в новостях - как было, так и осталось 50 сообщений на страницу.

Когда я пробовал в самом начале, поставил 20. Всё работало отлично.
Когда сменил на 15, перестало :(
Вот, кстати, около часа назад снова стало работать по 15 нормально.
А сейчас поломалось. Пофиксите, пожалуйста ...
RomanU
()

kernel: чем выгоднее макросы likely/unlikely по сравнению с обычным if?

Форум — Development

Не могу понять смысл данных макросов ( в <linux/compiler.h> ).
Как я понял - это как-то позволяет генерировать "intelligent code".
Об этом написано ниже.
Если кто может, поясните, в чём преимущество.

Из блога на kerneltrap.org (http://kerneltrap.org/node/4705):

Ever wondered what the likely and unlikely macros in the linux kernel are ?

The macros are defined as :

#define likely(x)       __builtin_expect((x),1)

#define unlikely(x)     __builtin_expect((x),0)

The __builtin_expect is a method that gcc (versions >= 2.96) offer for programmers to indicate branch prediction information to the compiler. The return value of __builtin_expect is the first argument (which could only be an integer) passed to it.

To check it out how it could be beneficial, an excerpt from "info gcc" :

     if (__builtin_expect (x, 0))

                foo ();




     [This] would indicate that we do not expect to call `foo', since we

     expect `x' to be zero. 

Based on this information the compiler generates intelligent code, such that the most expected result is favored.
RomanU
()

В чём проблема?

Форум — Admin

Когда пытаюсь запустить в konsole сеанс "Новый Root Midnight Commander",
то после ввода пароля запуск mc задерживается на несколько секунд.
Похоже, дело в winbind.
Как устранить данную особенность?

В логах ядра вот что:

Sep  1 08:14:41 romanu su: (to root) roman on /dev/pts/13
Sep  1 08:14:52 romanu winbindd[6428]: [2005/09/01 08:14:52, 0] rpc_client/cli_pipe.c:rpc_api_pipe(435)
Sep  1 08:14:52 romanu winbindd[6428]:   cli_pipe: return critical error. Error was Call timed out: server did not respond
after 10000 milliseconds

Что надо указать ещё в конфигах или где-то ещё, чтобы он не ждал 10 секунд?

-------------------------------------------------------
/etc/samba/smb.conf:

[global]
preferred master = no
winbind gid = 10000-20000
winbind uid = 10000-20000
workgroup = DOMAIN_YMGECO
printcap name = cups
printcap cache time = 750
cups options = raw
printer admin = @ntadmin, root, administrator
username map = /etc/samba/smbusers
map to guest = Bad User
include = /etc/samba/dhcp.conf
security = domain
restrict anonymous = no
paranoid server security = no
null passwords = yes
domain master = no
unix password sync = yes
max protocol = NT
ldap ssl = No
server signing = Auto
wins server = 192.168.0.1
dos charset = CP866
winbind use default domain = yes
hostname lookups = yes
message command = sh -c '/opt/kde3/bin/receivepopup.sh "%s" "%f"'

-------------------------------------------------------
/etc/nsswitch.conf:

passwd: compat winbind
group:  compat winbind

hosts:  files lwres dns
networks:       files dns

services:       files
protocols:      files
rpc:    files
ethers: files
netmasks:       files
netgroup:       files
publickey:      files

bootparams:     files
automount:      files nis
aliases:        files

Дистриб SuSE 9.3, самба 3.0.13
RomanU
()

Под виндой и под линухом разное содержимое CD. Почему?

Форум — General

Недавно всунул диск от фотокамеры с дровами под винды (попросили
 расшарить компакт по сети и установить). Потом долго не мог понять, 
почему нету дров на компакте :) Когда вставил диск в комп с виндой, 
обнаружил, что содержимое изменилось.

В линухе показывало то, что предназначено для маков, а в винде - 
соответственно, под винду.

Я знаю, что есть разные расширения для компактов. А какие конкретно 
используются в данном случае? кто знает?
И как сделать так, чтобы такой диск можно было прочитать и в линухе?
RomanU
()

Непонятки с perl и iptables

Форум — Development

Из перла вызываю system( "iptables -D INPUT -s 192.168.0.20:83 -j REJECT");

При этом, аналогично вызывается правило для объекта 10.1.1.1 (без указания порта). 
Адреса 10.1.1.1 в сети нет.

В первом случае наблюдаю какое-то подвисание, секунд на 15.
Непонятно, почему iptables может "тормозить" на этом правиле.

ps ax показывает следущее:

27120 pts/12   S+     0:00 sh -c iptables -D INPUT -s 192.168.0.20:83 -j REJECT 2>/dev/null
27121 pts/12   S+     0:00 iptables -D INPUT -s 192.168.0.20:83 -j REJECT

Через несколько секунд программа продолжает работать как обычно.
RomanU
()

2Shaman007

Форум — Linux-org-ru

http://www.linux.org.ru/view-message.jsp?msgid=1008492

А что тебе вообще интересно? такую ерунду, бывает, пропускают. Аж тошно смотреть :(

Имхо, модератор ты гнилой.

RomanU
()

Как записать последовательность действий на экране в видеофайл?

Форум — Desktop

RomanU
()

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