Создание и тестирование клиента p2p - EiskaltDC++ (бывшая «Нужна помощь в создании и тестировании графического пакета DC»)
Модератор: Модераторы разделов
-
- Сообщения: 74
- ОС: ALT Linux Sisyphus
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Ок. Поправлю - только перенесу файл блокировки в ~/.eiskaltdc/eiskaltdc.lock, и раз такое дело, то файл с магнетом тоже придется переносить.
-
- Сообщения: 74
- ОС: ALT Linux Sisyphus
Re: Создание и тестирование клиента p2p - EiskaltDC++
в чате не работают http ссылки. кликаешь по ним - вставляется часть адреса в строку ввода чата (как при клике по нику)
это так задумано? известно об этом? (на первой странице в TODO не нашел)
это так задумано? известно об этом? (на первой странице в TODO не нашел)
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Да работают ссылки, по одинарному клику все открывается. по двойному - да вставляется кусок URL в поле ввода.
-
- Сообщения: 74
- ОС: ALT Linux Sisyphus
Re: Создание и тестирование клиента p2p - EiskaltDC++
ага
уже нашел багу в одном из наших пакетов
вопрос закрыт

-
- Сообщения: 1341
- ОС: Arch Linux amd64
-
- Сообщения: 4
- ОС: gentoo
Re: Создание и тестирование клиента p2p - EiskaltDC++
Чудно, мало проэктов обретают вторую жизнь и перерождение на таких скоростях. Антиспам-бот есть, хорошая сортировка и вывод результатов, мультипоточность уже была, ну, а дальше уже специфика. А нельзя ли добавить в фичреквестлист - в меню при нажатии ПКМ на конкретный файл в списке передач в меню - "поиск альтернатив", видел, что ищет само в указанный период, но иногда пригождается ручной режим, при глюках хаба и соединения.
-
- Сообщения: 100
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
Более-менее полный список изменений в текущей версии в SVN:
Теперь магнет-ссылки (а также уже и dchub://) можно передавать и без опции -m. Т.е. просто eistaltdc magnet:?xt=blablabla. Это избавляет от необходимости использования промежуточного скрипта для связки Firefox - Eiskaltdc. Теперь достаточно просто создать два строковых ключа в about:config (network.protocol-handler.app.magnet и network.protocol-handler.app.dchub) и всё будет работать.
(http://eiskaltdc.svn.sourceforge.net/viewvc/eiskaltdc/ChangeLog) писал(а):Changes from 0.5a
- Support for dchub:// links;
- Search results grouping;
- URL decoding;
- IPfilter with regexp support;
- AntiSpam function;
- Autodetecting system locale;
- New buttons on toolbar;
- Added tab close buttons for all tabs;
- Reworked tranlation loading;
- Fixed memory leaks (with new dclib);
- New icons in menus;
- Options dialog restyle;
- New icon set for userlist, now in png;
- New main application icon;
- Updated TODO, Changelog, NEWS files;
- Menu for middle click on nick in chat;
Теперь магнет-ссылки (а также уже и dchub://) можно передавать и без опции -m. Т.е. просто eistaltdc magnet:?xt=blablabla. Это избавляет от необходимости использования промежуточного скрипта для связки Firefox - Eiskaltdc. Теперь достаточно просто создать два строковых ключа в about:config (network.protocol-handler.app.magnet и network.protocol-handler.app.dchub) и всё будет работать.
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
Небольшой попрос разработчикам. А что, ip-фильтр не умеет по маскам работать? т.е. прописать туда адрес вида 192.168.0.0/24 нкак? При таком раскладе у меня встают все закачки намертво, даже из разрешённых диапазонов адресов. Чтобы скачивание возобновилось приходится ip-филтр отключать, а это не есть хорошо.
-
- Сообщения: 100
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
(r0g3r) писал(а):А что, ip-фильтр не умеет по маскам работать? т.е. прописать туда адрес вида 192.168.0.0/24 нкак?
Фильтр работает с регулярными выражениями. Это, возможно, немного сложнее, но гибче.
Записи 192.168.0.0/24 будет соответстовать запись ^192.168.0.\d{1,3}$
Ну, или если с портами - то ^192.168.0.\d{1,3}:\d{1,5}$
^ - начало строки
\d - любая десятичная цифра
{1,3} - предыдущий символ (т.е. любая десятичная цифра) может повторяться от 1 до 3 раз
$ - конец строки
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
2WiseLord
Не вопрос, дайте пожалуйста более подробное описание регеэкспов. А то из вашей записи не всё понятно.
Заранее благодарю.
Не вопрос, дайте пожалуйста более подробное описание регеэкспов. А то из вашей записи не всё понятно.
Заранее благодарю.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
\d - (от.англ digit) один символ от 0 до 9
\d{1,3} - число от 0 до 999 (т.е. содержит от одного до 3-х знаков)
(\d{1,3}.){3,3} - запись вида ddd.(0., 128., 27., 021.) должна повторится три раза (удобно для указания начала любого IP, т.е. (\d{1,3}.){3,3}213 - все IP, заканчивающиеся на 213)
^\d - строка начинается с одного числового символа
^\d$ - вся строка представляет собой от начала до конца один символ
:\d{1,5} - все порты, :\d{1,3} - все порты от 0 до 999
Этого хватит чтобы написать регэксп под любой IP.
P.S. в ближайшем будущем добавлю поддержку работы по маскам, импорт/экспорт правил в файл.
P.P.S очень рекомендуется указывать в регэкспе блокировку по портам
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
Обнаружен ещё один баг - по неясной причине eiskaltdc начинает полностью кушать процессор. Судя по всему, возникает такая ситуация после весьма длительной работы (> суток) в непрерывном режиме.
Ось: Gentoo x86. Сборка вчерашняя. Скажите, какую информацию вам надо для более полного понимания ситуации.
Ось: Gentoo x86. Сборка вчерашняя. Скажите, какую информацию вам надо для более полного понимания ситуации.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
r0g3r писал(а): ↑21.08.2009 21:42Обнаружен ещё один баг - по неясной причине eiskaltdc начинает полностью кушать процессор. Судя по всему, возникает такая ситуация после весьма длительной работы (> суток) в непрерывном режиме.
Ось: Gentoo x86. Сборка вчерашняя. Скажите, какую информацию вам надо для более полного понимания ситуации.
У вас включены модули INotify или IPFilter? Если да, то попробуйте их по-очереди отключать. Если один из них окажется проблемным то прошу выложить для INotify - ~/.eiskaltdc/inotify, а для IPFilter - ~/.eiskaltdc/ipfilter. В противном случае, мне потребуется подробное описание ваших действий, которые приводят к подобному поведению клиента и лог клиента (eiskaltdc -vv --socketlog both)
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
2RasenHerz:
Судя по всему проблема действительно в INotify. Во всяком случае, после его отключения резко упала нагрузка на процессор сама по себе. Пока что внимательно тестирую.
Заодно составил небольшой фичреквест:
1. Организовать группировку закачек во вкладке "Список передач>передача" таким образом, чтобы различные куски одного и того же файла отображались в виде иерархического дерева. То есть вверху название основного файла, уровнем ниже - полный список тех недостающих частей, которые сейчас качаются. Это бы упростило упрвавление ими. Ведь иногда надо эту самую закачку отменить, а искать в длиннющем списке, где какая передача сейчас идёт, останавливать её и только потом удалять - это крайне неудобно
1.1 Соответственно, добавить возможность удаления любой ненужной(-ых) закачки(-ек) одним щелчком мыши.
2. Добавить возможность бана конкретного пользователя/ip.
2.1 Добавить ещё один пункт меню (или кнопку), который бы позволял добавить некоего выбранного пользователя в друзья одним щелчком мыши в окне просмотра файлов оного. Это позволит не бегать по общему списку пользователей хаба туда-сюда, если вдруг внезамно захотелось добавить его в свой список.
3. Во вкладке "Пользовательский список" хотелось бы видеть пункт "Просмотреть файлы пользователи", который бы скачивал этот самый список при наличии юзера в сети.
Судя по всему проблема действительно в INotify. Во всяком случае, после его отключения резко упала нагрузка на процессор сама по себе. Пока что внимательно тестирую.
Заодно составил небольшой фичреквест:
1. Организовать группировку закачек во вкладке "Список передач>передача" таким образом, чтобы различные куски одного и того же файла отображались в виде иерархического дерева. То есть вверху название основного файла, уровнем ниже - полный список тех недостающих частей, которые сейчас качаются. Это бы упростило упрвавление ими. Ведь иногда надо эту самую закачку отменить, а искать в длиннющем списке, где какая передача сейчас идёт, останавливать её и только потом удалять - это крайне неудобно
1.1 Соответственно, добавить возможность удаления любой ненужной(-ых) закачки(-ек) одним щелчком мыши.
2. Добавить возможность бана конкретного пользователя/ip.
2.1 Добавить ещё один пункт меню (или кнопку), который бы позволял добавить некоего выбранного пользователя в друзья одним щелчком мыши в окне просмотра файлов оного. Это позволит не бегать по общему списку пользователей хаба туда-сюда, если вдруг внезамно захотелось добавить его в свой список.
3. Во вкладке "Пользовательский список" хотелось бы видеть пункт "Просмотреть файлы пользователи", который бы скачивал этот самый список при наличии юзера в сети.
-
- Сообщения: 1064
- ОС: Mageia
Re: Создание и тестирование клиента p2p - EiskaltDC++
r0g3r писал(а): ↑22.08.2009 21:211. Организовать группировку закачек во вкладке "Список передач>передача" таким образом, чтобы различные куски одного и того же файла отображались в виде иерархического дерева. То есть вверху название основного файла, уровнем ниже - полный список тех недостающих частей, которые сейчас качаются. Это бы упростило упрвавление ими. Ведь иногда надо эту самую закачку отменить, а искать в длиннющем списке, где какая передача сейчас идёт, останавливать её и только потом удалять - это крайне неудобно
упорядочивание - дело хорошее.
возможен случайный щелчок, поэтому это лучше реализовать в контекстном меню по правой кнопке мыши.
да, полезный функционал друзей/врагов. добавить возможность не только бана, но и ограничения скорости, а также возможность наоборот поощрять и увеличивать скорость.
r0g3r писал(а): ↑22.08.2009 21:212.1 Добавить ещё один пункт меню (или кнопку), который бы позволял добавить некоего выбранного пользователя в друзья одним щелчком мыши в окне просмотра файлов оного. Это позволит не бегать по общему списку пользователей хаба туда-сюда, если вдруг внезамно захотелось добавить его в свой список.
по-моему это лишнее. ведь мы выбираем пользователя в друзья не из-за его шары, хотя кому как.
это интересно и иногда полезно.
Консоль на мыло. Надо развивать графику.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Сам по себе механизм INotify нагрузку излишнюю не дает - 90% времени поток просто спит, другое дело старт INotify - индексация директроий может ощутимо нагрузить процессор. Как вариант, если у вас идет активное создание/изменение/удаление файлов в наблюдаемых директориях то по таймауту, когда INotify начинает "разгребать" сообщения от файловой системы их может быть очень много и их разбор нагрузит процессор, так что попробуйте для начала уменьшить количество наблюдаемых директорий и увеличить временной интервал для проверки директорий (хотя бы 1 минуту). Думаю перед релизом я добавлю механизм, предотвращающий обработку, к примеру, более 100 сообщений ФС за раз.
-
- Сообщения: 1064
- ОС: Mageia
Re: Создание и тестирование клиента p2p - EiskaltDC++
посмотрите, пожалуйста, чего можно сделать с тем, чтобы eiskaltdc использовал настройки подключения - ему реально они как об стенку горох. я уж как только его не заставлял их учесть - он не желает.
Консоль на мыло. Надо развивать графику.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Все желающие могут попробовать первый релиз-кандидат (svn r227).
Обновлен TODO на следующий релиз:
- Список закаченного/розданного
- Отказ от Qt3Support и полная миграция на Qt4
- Мастер первого запуска
- Базовая поддержка друзей/врагов
Скорее всего будет изменена нумерация версий на более удобную - X.Y.Z, где каждый новый релиз увеличивает минорную версию - X.Y+1.Z , а каждый корректирующий - субминорную - X.Y.Z+1, таким образом не придется выдумывать для коррестирующих релизов версии вида 0.5.0a. Кроме того, нумерация релизов скорее всего начнется с 1.0.0.
Если все пойдет гладко - релиз состоится в середине/конце следующей недели.
Обновлен TODO на следующий релиз:
- Список закаченного/розданного
- Отказ от Qt3Support и полная миграция на Qt4
- Мастер первого запуска
- Базовая поддержка друзей/врагов
Скорее всего будет изменена нумерация версий на более удобную - X.Y.Z, где каждый новый релиз увеличивает минорную версию - X.Y+1.Z , а каждый корректирующий - субминорную - X.Y.Z+1, таким образом не придется выдумывать для коррестирующих релизов версии вида 0.5.0a. Кроме того, нумерация релизов скорее всего начнется с 1.0.0.
Если все пойдет гладко - релиз состоится в середине/конце следующей недели.
Спасибо сказали:
-
- Сообщения: 122
- Статус: LOL
- ОС: RHEL\CentOS
Re: Создание и тестирование клиента p2p - EiskaltDC++
На сколько я понимаю,на SF остался стаый пакет для Дебиан?ОТ 9 августа...
-
- Сообщения: 100
- ОС: Gentoo Linux
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
2romkaromka:
Да, именно это я виду и имел. Немножко неверно выразился, благодарю за поправку.
Не совсем так. Я этой штукой пользуюсь ещё и как записной книжкой. Просто в нашей DC++ пользователей очень много, и у некоторых имеются действительно интересные и регулярно обновляемые шары.
2RasenHerz:
Тем не менее, факт фактом. Я специально увеличил интервал между обновления Inotify, но тем не менее, он действительно нагружает процессор. Достаточно поглядеть на загрузку в conky после включения/отключения данной штуки.
Также есть мысль, а почему бы дополнительно в не очень отдалённом будущем добавить туда поддержку libnotify, чтобы можно было через notify-send всяческие всплывающие сообщения посылать? Фича совсем необязательная, но иногда полезная.
возможен случайный щелчок, поэтому это лучше реализовать в контекстном меню по правой кнопке мыши.
Да, именно это я виду и имел. Немножко неверно выразился, благодарю за поправку.
по-моему это лишнее. ведь мы выбираем пользователя в друзья не из-за его шары, хотя кому как.
Не совсем так. Я этой штукой пользуюсь ещё и как записной книжкой. Просто в нашей DC++ пользователей очень много, и у некоторых имеются действительно интересные и регулярно обновляемые шары.
2RasenHerz:
Тем не менее, факт фактом. Я специально увеличил интервал между обновления Inotify, но тем не менее, он действительно нагружает процессор. Достаточно поглядеть на загрузку в conky после включения/отключения данной штуки.
Также есть мысль, а почему бы дополнительно в не очень отдалённом будущем добавить туда поддержку libnotify, чтобы можно было через notify-send всяческие всплывающие сообщения посылать? Фича совсем необязательная, но иногда полезная.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
r0g3r писал(а): ↑23.08.2009 19:192RasenHerz:
Тем не менее, факт фактом. Я специально увеличил интервал между обновления Inotify, но тем не менее, он действительно нагружает процессор. Достаточно поглядеть на загрузку в conky после включения/отключения данной штуки.
Также есть мысль, а почему бы дополнительно в не очень отдалённом будущем добавить туда поддержку libnotify, чтобы можно было через notify-send всяческие всплывающие сообщения посылать? Фича совсем необязательная, но иногда полезная.
С INotify я постараюсь разобраться. Вы можете "сами" обрабатывать уведомления, для этого создайте скрипт ~/.eiskaltdc/popup.sh - все уведомления будут перенаправлены ему:
~/.eiskaltdc/popup.sh "SENDER" "MESSAGE"
P.S. WiseLord где-то раньше оставлял скрипт для kdialog, думаю вам не составит труда его поправить и использовать с notify-send.
-
- Сообщения: 3
- ОС: Debian GNU/Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
Там есть пару проблем со сборкой на Qt 4.4.3:
- метод setTabsClosable появился только в Qt4.5, соотв-но его нужно взять в блок if QT_VERSION >= ..... Он используется на двух табах.
- слот DCConnectionManager::slotTabMoved в cpp-файле взят в блок if QT_VERSION >= 0x40500, а в хэдере - нет. Отсюда есть ошибка при линковке.
-
- Сообщения: 74
- ОС: ALT Linux Sisyphus
Re: Создание и тестирование клиента p2p - EiskaltDC++
Сломалась сортировка по размеру в поиске?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Faunus писал(а): ↑23.08.2009 21:23Там есть пару проблем со сборкой на Qt 4.4.3:
- метод setTabsClosable появился только в Qt4.5, соотв-но его нужно взять в блок if QT_VERSION >= ..... Он используется на двух табах.
- слот DCConnectionManager::slotTabMoved в cpp-файле взят в блок if QT_VERSION >= 0x40500, а в хэдере - нет. Отсюда есть ошибка при линковке.
Ок, поправлю. Когда добавлял возможность двигать табы то обернул все в QT_VERSION, а это не учел, спасибо.
UPD. fixed in svn r236
Если честно, там вообще много спорных вопросов в сортировке (сортирует Qt) - все результаты почему-то сортируются сначала по количеству, а потом уже по размеру/и т.д. Видимо это как-то связано с особенностями Qt
-
- Сообщения: 19
- ОС: Gentoo Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
2RasenHerz:
Попробую поковырять INotify согласно вашему совету на досуге.
А скриптик где лежит не подскажете?
Попробую поковырять INotify согласно вашему совету на досуге.
А скриптик где лежит не подскажете?

-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Код: Выделить всё
#!/bin/sh
title=$(echo "$1" | sed -e s/\</«/g -e s/\>/»/g)
message=$(echo "$2" | sed -e s/\</«/g -e s/\>/»/g)
notify-send -u normal -i eiskaltdc "${title}" "${message}" &
поместите это в ~/.eiskaltdc/popup.sh для последних svn версий, или в ~/.eiskaltdc/.dc/popup.sh для всех версий svn < 230
UPD. насчет сборки в Qt4.4, теперь вкладки поломались во всех ревизиях, так что просьба не паниковать. Препроцессор почему-то не разрешает добавлять в прототип класса подобное:
Код: Выделить всё
#ifdef QT_NEW
/** */
void slotCloseTabButtonClicked(int);
#endif
и просто не включает в класс метод slotCloseTabButtonClicked(int).
QT_NEW объявляется в начале хедера:
Код: Выделить всё
#if QT_VERSION >= 0x040500
#define QT_NEW
#endif
Собираю компилятором gcc-4.4.1, и мне интересно, у всех такая ерунда?
UPD. По независящим от меня обстоятельствам (moc игнорирует директивы препроцессора), поддержка кнопок закрытия на вкладках и возможность двигать вкладки на этот релиз будет отключена. Версия 1.0.0 выйдет с зависимотями Qt >= 4.4, все последующие - Qt >= 4.5
-
- Сообщения: 3
- ОС: Debian GNU/Linux
Re: Создание и тестирование клиента p2p - EiskaltDC++
При изменении цветов фона/текста в чате, изменения действуют только на окно chatoutput, а в окне chatinput меняется только цвет фона. Что есть не очень здорово - я поставил себе тёмно-серый фон и светло-зелёный текст. В основном окне чата - всё замечательно, а в окне ввода я почти не вижу набираемых сообщений, ибо цвет текста остался чёрным. Я у себя добавил такие строчки в DCChat::InitDocument():
{ /* Set foreground color for chat input */
QPalette palette = palette = TextEdit_CHATINPUT->palette();
palette.setColor( QPalette::Text, g_pConfig->GetChatColor(eccCHATLOCALTEXT) );
TextEdit_CHATINPUT->setPalette(palette);
}
Но это, ессесно, подхватит изменения только после перезапуска клиента. Ну и после закрытия/открытия окна чата, наверное, тоже должно подхватить. Для полноценной поддержки - нужно бы добавить событие типа "цвета чата поменялись" и соответствующий слотик в DCChat под это событие.
зю. Мне вообще такие вещи сюда писать, или лучше сразу в багтреккер? Сами пофиксите, или вам лучше готовый патч дать?
{ /* Set foreground color for chat input */
QPalette palette = palette = TextEdit_CHATINPUT->palette();
palette.setColor( QPalette::Text, g_pConfig->GetChatColor(eccCHATLOCALTEXT) );
TextEdit_CHATINPUT->setPalette(palette);
}
Но это, ессесно, подхватит изменения только после перезапуска клиента. Ну и после закрытия/открытия окна чата, наверное, тоже должно подхватить. Для полноценной поддержки - нужно бы добавить событие типа "цвета чата поменялись" и соответствующий слотик в DCChat под это событие.
зю. Мне вообще такие вещи сюда писать, или лучше сразу в багтреккер? Сами пофиксите, или вам лучше готовый патч дать?
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Создание и тестирование клиента p2p - EiskaltDC++
Faunus писал(а): ↑23.08.2009 23:43При изменении цветов фона/текста в чате, изменения действуют только на окно chatoutput, а в окне chatinput меняется только цвет фона. Что есть не очень здорово - я поставил себе тёмно-серый фон и светло-зелёный текст. В основном окне чата - всё замечательно, а в окне ввода я почти не вижу набираемых сообщений, ибо цвет текста остался чёрным. Я у себя добавил такие строчки в DCChat::InitDocument():
{ /* Set foreground color for chat input */
QPalette palette = palette = TextEdit_CHATINPUT->palette();
palette.setColor( QPalette::Text, g_pConfig->GetChatColor(eccCHATLOCALTEXT) );
TextEdit_CHATINPUT->setPalette(palette);
}
Но это, ессесно, подхватит изменения только после перезапуска клиента. Ну и после закрытия/открытия окна чата, наверное, тоже должно подхватить. Для полноценной поддержки - нужно бы добавить событие типа "цвета чата поменялись" и соответствующий слотик в DCChat под это событие.
зю. Мне вообще такие вещи сюда писать, или лучше сразу в багтреккер? Сами пофиксите, или вам лучше готовый патч дать?
Патчи лучше на багтрекер отправлять. Патч полезный, так что думаю принят он будет. Кроме того, можете сразу писать в jabber-конференцию разработчиков: eiskaltdc@conference.gentoo.ru