Хочу разместить на форме несколько панелей, разделить их каким-нибудь
сплиттером, чтобы потом менять размер каждой части.
Однако, JSplitPane позволяет поместить только 2 панели.
Есть ли что-то, что позволит мне разместить большее число панелей
и разделить их?
Вот как, например, в NetBeans в Compact Windows Mode.
Хотелось бы, конечно, исходники с нормальной лицензией.
Ну или не исходники, но что б работало, как описал выше:)
Написал простенькую программу на Java (только недавно стал изучать), она коннектится к ораклу и делает запрос. Когда я запускаю её - всё нормально.
Но вот я хочу сделать jar, создаю, добавляю туда мой main.class,
получается внутри каталог classTest и в нём мой файл main.class,
в манифесте пишу Main-Class: classTest/main и вот ....
мой архив не работает :( результат ниже.
Подскажите, чего ему может не хватать, если без архива программа
работает, а в архиве - нет! Импортится только оракловый архив,
ему я и прописываю classpath. Непонятно, почему мой архив не может найти драйвер оракла, хотя программа находит.
[roman@romanu \ Wed Feb 2 \ 09:22:42 -> Java]$ java -classpath /Oracle/OraHome/jdbc/lib/classes111.zip:$PWD classTest/main
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
[roman@romanu \ Wed Feb 2 \ 09:22:52 -> Java]$ java -classpath /Oracle/OraHome/jdbc/lib/classes111.zip:$PWD -jar classTest/testJar.jar
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at classTest.main.main(main.java:28)
Exception in thread "main" java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at classTest.main.main(main.java:35)
[roman@romanu \ Wed Feb 2 \ 09:23:08 -> Java]$
Пытаюсь создать CA сертификат и им подписать другой сертификат,
чтобы использовать его для LDAP сервера.
# Здесь создаю CA
openssl genrsa -des3 -out very_security/ca.key 2048
openssl req -new -x509 -days 1825 -key very_security/ca.key -out certs/ca.cert
# Создаю сертификат для LDAP и пытаюсь его подписать ca.cert'ом
openssl genrsa -out private/slapd.key 1024
openssl req -new -key private/slapd.key -out tmp/slapd.csr
openssl x509 -req -days 1095 -in tmp/slapd.csr -out private/slapd.cert -CA certs/ca.cert -CAkey very_security/ca.key -CAcreateserial
# Делаю PEM
mv private/slapd.key private/slapd.pem
cat private/slapd.cert >> private/slapd.pem
Ввожу пароль, всё создаётся. Пытаюсь проверить сертификат:
[root@ldap_pdc openssl]# openssl verify -CAfile certs/ca.cert private/slapd.pem
private/slapd.pem: /C=ru/ST=Russia/L=G/O=ymg/OU=ldap/CN=ldap.ymgeo.ru
error 18 at 0 depth lookup:self signed certificate
/C=ru/ST=Russia/L=G/O=ymg/OU=ldap/CN=ldap.ymgeo.ru
error 7 at 0 depth lookup:certificate signature failure
Как правильно создать сертификат и подписать его, чтобы у меня
не возникали эти ошибки??
Если я делаю так:
openssl req -new -x509 -days 365 -nodes -out private/slapd.pem -keyout private/slapd.pem
то получаю:
[root@ldap_pdc private]# openssl verify slapd.pem
slapd.pem: /C=RU/ST=Russia/L=Gelendzhik/O=ymgeo/OU=LDAP/CN=LDAP.ymgeo.ru/Email=admin@ymgeo.
ru
error 18 at 0 depth lookup:self signed certificate
OK
То есть ОК всё же показывает. Объясните, плиз. Уже несколько доков
прочитал, но всё равно до конца не понимаю.
В конфиге самбы для настройки LDAP я пишу:
ldap delete dn = Yes
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
При этом команда
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
создаёт Posix аккаунт у юзера.
Для создания изначально sambaSAMaccount используют это:
add user script = /usr/local/sbin/smbldap-useradd -a -m "%u"
Что я имею:
Самба не может поменять атрибуты у юзера или машины, т.е.
превратить из Posix аккаунта аккаунт самбы.
Если добавлять машину в домен, то самба почему-то сама не прописывает
свои атрибуты к аккаунту машины, и он так и остаётся Posix.
При миграции юзеров из NT4 домена в домен Samba имею такие проблемы:
если в smb.conf создавать Posix аккаунты (тем способом, как я писал выше),
то самба не может изменить атрибуты юзеров и машин и добавить свои
атрибуты класса sambaSAMaccount.
Если создавать sambaSAMaccount, то самба говорит, что аккаунт юзера
уже имеет атрибуты sambaSAMaccount. То есть она анализирует хорошо,
но чтобы самой добавлять класс sambaSAMaccount - этого ещё я не добился.
Вопросы:
1. Какие настройки в smb.conf должны быть, чтобы корректно изменялся
аккаунт юзера из Posix в Samba-аккаунт?
2. Нужно ли иметь Posix аккаунты всех юзеров на локальной машине (сервере)
при использовании LDAP или можно обойтись только аккаунтами
в базе LDAP ?
3. Как избежать двойного повторения действия для успешного добавления
машины в домен и пользователя? Самба выдаёт успешное завершение
только со второй попытки, и это, естесственно, напрягает
3. Как правильно мигрировать с NT4 домена в домен Samba, чтобы
атрибуты аккаунтов изменялись правильно (без ошибок) ?
P.S. HOWTO уже читал-перечитался :( Всё делаю как там - не работает.
Лог миграции приведу ниже.
Подскажиите,реален ли сабж ...
Думаю сделать так:
на машине стоит OpenLDAP, nss_ldap, pam_ldap.
Думаю поставить несколько штук самб (т.е. несколько PDC будет).
Каждая самба будет свой домен рулить. На 1 сетевой интерфейс
навешать несколько IP, по одному для каждой самбы.
Т.е. задача сэкономить железо.
Мне кажется, что с nss_ldap всё будет ок, так как может искать
в поддиректориях пароли, группы, etc.
Вот с самба буду пробовать. Но всё же, хочу спросить, есть ли
какие-нибудь ограничения, которые точно непозволят мне такое сделать
или всё возможно? :)
Люди, подскажите плз. К примеру, есть правила:
Внешние адреса на роутере(это пример):
1) 213.128.1.1
2) 213.128.1.2
Внутренний сервер имеет адрес 10.2.1.1 . Надо сделать нат на него
и подсчитать трафик входящий и исходящий с каждого внешнего адреса.
iptables -t nat -N ACCT_IN_213.128.1.1
iptables -t nat -N ACCT_OUT_213.128.1.1
iptables -t nat -N ACCT_IN_213.128.1.2
iptables -t nat -N ACCT_OUT_213.128.1.2
iptables -t nat -F ACCT_IN_213.128.1.1
iptables -t nat -F ACCT_OUT_213.128.1.1
iptables -t nat -F ACCT_IN_213.128.1.2
iptables -t nat -F ACCT_OUT_213.128.1.2
iptables -t nat -A PREROUTING -d 213.128.1.1 -j ACCT_IN_213.128.1.1
iptables -t nat -A ACCT_IN_213.128.1.1 -j DNAT --to 10.2.1.1
iptables -t nat -A POSTROUTING -s 10.2.1.1 -j ACCT_OUT_213.128.1.1
iptables -t nat -A ACCT_OUT_213.128.1.1 -j SNAT --to 213.128.1.1
iptables -t nat -A PREROUTING -d 213.128.1.2 -j ACCT_IN_213.128.1.2
iptables -t nat -A ACCT_IN_213.128.1.2 -j DNAT --to 10.2.1.1
iptables -t nat -A POSTROUTING -s 10.2.1.1 -j ACCT_OUT_213.128.1.2
iptables -t nat -A ACCT_OUT_213.128.1.2 -j SNAT --to 213.128.1.2
Что я имею в результате: считаются не все пакеты. Я так думаю, что
только первые пакеты. Я прав? Как тогда подсчитать остальные?
Ведь в FORWARD уже будет замененный получатель, там уже не узнать,
с какого адреса конкретно прошёл пакет. А если только первые пакеты
проходят через nat-таблицу, что делать?
Как правильно подсчитать трафик (т.е. что добавить в эти правила,
удалить что-то или изменить их), если несколько внешних адресов
натятся на один внутренний?
Есть целая куча цепочек iptables:
iptables -t nat .....
....
iptables -t filter ...
...........
etc.
Допустим, я хочу добавить цепочку для подсчёта трафика:
iptables -N traf
iptables -A INPUT -j traf
Ну и так далее. Но вопрос не об этом:)
Куда правильно будет вставить эти строки - до основных правил или
после? или вовсе неважно?
Добрый день! Устал тут мучаться с QDockWindow, потому что не хочет
на экране показывать так, как мне надо, устал уже сегодня экспериментировать,
поэтому прошу помощи. Надо расположить 2 QDockWindow следующим образом:
---------------------------
| |
| Область с |
| компонентами |
| |
| |
1 | |
| |
| |
|====================|
| 2 |
| |
--------------------------
Это как например в QT Linguist. А у меня, как бы я ни мучался,
2-я DockWindow занимает __ВСЮ__ нижнюю область, то есть так:
---------------------------
| |
| Область с |
| компонентами |
| |
| |
1 | |
| |
| |
==========================|
2 |
|
--------------------------
Подскажите, как правильно это сделать, устал уже мучаться :(
Смотрел исходники лингвиста, но я пока не очень дружу с layouts,
чтобы их так круто расположить. Пробовал по-всякому. Но никак :(
День добрый!
Пытаюсь перекодировать содержимое ячейки в QTable из кои8 в ср1251.
Я разными способами пытался. И через QTextCodec (сначала в юникод, а затем оттуда обратно, другого способа не нашёл), а потом через iconv.
И тем, и другим способом после обратного занесения значения в ячейку
вижу только ???????????? ????? ????????? :(
Как быть?
Через iconv просто беру DataSourceTable->text (i, j), подаю её на вход
iconv с соответствующими параметрами. А потом обратно DataSourceTable->setText ( i, j )
Но выводит, как я уже и говорил, вопросы. А буквы русские до перекодировки отображает нормально в ячейке.
Какие ещё дополнительно преобразования надо сделать со строкой, чтобы
получить нормальный результат??
Есть такая конструкция.
В заголовке:
typedef enum TWPages
{
TWP_HEADER = 0,
TWP_LOAD_SEQ,
TWP_TPL_SRC,
TWP_DATA_SRC,
TWP_LOAD_SRC,
TWP_SQL_QUERY,
TWP_LOGGING
} TabWidgetPage;
В программе:
94 switch ( InfoTabWidget->currentPage () )
95 {
96 case TWP_HEADER:
97 case TWP_LOAD_SEQ:
98 case TWP_TPL_SRC:
99 LoadTemplateFile ();
100 break;
101 case TWP_DATA_SRC:
102 LoadDataFile ();
103 break;
104 default:
105 ;
106 }
Ошибки компилера:
src/cmainform.cpp: In method `void CMainForm::fileOpen ()':
src/cmainform.cpp:94: switch quantity not an integer
src/cmainform.cpp:98: duplicate case value `TWP_TPL_SRC'
src/cmainform.cpp:97: previously used here
src/cmainform.cpp:101: duplicate case value `TWP_DATA_SRC'
src/cmainform.cpp:97: previously used here
Вопрос: как использовать правильно множества в switch?
Вопрос такой: когда компилю прогу, получаю ~11 мегов. Не очень :(
Там конечно другие либы линкуются. Но у них не такой размер.
Я собрал QT статиком, думая, что это поможет. Но в результате получилось, что при ключе -static в компиляции моей проги линковщик захотел ещё статик либы Xext или ещё что-то (возможно Х11).
Как сделать, чтобы получить меньший размер проги? Видимо, статичная либа QT не помогла :( А разница debug и release проекта не больше мегабайта. strip помогает увеличить размер проги в 2 раза. Но 5 мегов всё равно многовато. Хелп.
Попробуем сюда помещать патчи по сабжу.
Вот один из них:
Как-то я тут обнаружил пару проблем. Во-первых, при сохранении файла проекта в самом файле обнаруживаются лишние пустые строки. Во-вторых, если во флагах использовать такую конструкцию:
LIBS += `cat $(ORACLE_HOME)/lib/sysliblist`
то знаки ` успешно удалялись :(
Вот это всё я пофиксил. Кому поможет - буду рад.
Кстати, проблема с QDialog::exec() и модальностью диалога решается соответствующей установкой параметра parent.
--- qt-3.3.1/tools/designer/designer/project.cpp Mon Jan 19 20:27:25 2004
+++ qt-3.3.1_patched/tools/designer/designer/project.cpp Wed Mar 10 10:59:00 2004
@@ -374,7 +374,7 @@
}
if ( ( c.isLetter() || c.isDigit() || c == '.' || c == '/' || c == '_' || c == '\\' || c == '\"' || c == '\'' || c == '=' ||
- c == '$' || c == '-' || c == '(' || c == ')' || c == ':' || c == '+' || c == ',' || c == '~' ) &&
+ c == '$' || c == '-' || c == '(' || c == ')' || c == ':' || c == '+' || c == ',' || c == '~' || c == '`' ) &&
c != ' ' && c != '\t' && c != '\n' ) {
if ( !inName )
currName = QString::null;
@@ -561,6 +561,9 @@
int end = contents.find( '\n', i );
if ( end == -1 )
end = contents.length() - 1;
+ else
+ while ( contents[end+1] == '\n' )
+ end++; // Remove extra symbols '\n'
contents.remove( start, end - start + 1 );
}
}
@@ -580,6 +583,8 @@
lastWasBackspash = ( contents[ i ] == '\\' ||
lastWasBackspash && ( contents[ i ] == ' ' || contents[ i ] == '\t' ) );
}
+ while ( contents[i+1] == '\n' )
+ i++; // Remove extra symbols '\n'
contents.remove( start, i - start + 1 );
}
}
Хотелось бы внутри скрипта баша вызывать некоторую программу на перле (можно конечно вызывать из баша выполнение перл-скрипта, но хочу, чтобы было всё в одном файле).
И вот в чём, собственно, у меня проблемы. Например, есть программа на перл (это кусок, в котором происходит ошибка):
%token TOK_1 TOK_2 TOK3
TOK_4 TOK5
TOK_6
...........
и т.д.
1. Имеет ли значение, что токены 4, 5, 6 расположены на другой строке?
2. Различаются ли как-нибудь по приоритету токены 4, 5 от 1, 2, 3
а также 6 от 4, 5 или нет?
3. Допустим, я удаляю токены 1, 2, 4. Строки выглядят так:
TOK_3
TOK_5
TOK_6
Удаляю соответственно правила, связанные с токенами 1, 2, 4.
Это не проходит - выдаёт ошибку. Если их поместить в 1 строчку -
то ошибки нет. Но я не знаю, правильно ли так, поскольку в первоначальном варианте они были на разных строках. Помогите, пожалуйста!