Создание и тестирование клиента p2p - EiskaltDC++ (бывшая «Нужна помощь в создании и тестировании графического пакета DC»)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
gray_graff
Сообщения: 74
ОС: ALT Linux Sisyphus

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение gray_graff »

RasenHerz,
https://bugzilla.altlinux.org/show_bug.cgi?id=21101
тут патчик. глянь, пожалуйста
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

Ок. Поправлю - только перенесу файл блокировки в ~/.eiskaltdc/eiskaltdc.lock, и раз такое дело, то файл с магнетом тоже придется переносить.
Спасибо сказали:
Аватара пользователя
gray_graff
Сообщения: 74
ОС: ALT Linux Sisyphus

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение gray_graff »

в чате не работают http ссылки. кликаешь по ним - вставляется часть адреса в строку ввода чата (как при клике по нику)
это так задумано? известно об этом? (на первой странице в TODO не нашел)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

Да работают ссылки, по одинарному клику все открывается. по двойному - да вставляется кусок URL в поле ввода.
Спасибо сказали:
Аватара пользователя
gray_graff
Сообщения: 74
ОС: ALT Linux Sisyphus

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение gray_graff »

RasenHerz писал(а):
19.08.2009 09:16
Да работают ссылки, по одинарному клику все открывается. по двойному - да вставляется кусок URL в поле ввода.

ага
уже нашел багу в одном из наших пакетов
вопрос закрыт :)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

Группировка результатов поиска теперь такая:

Изображение
Спасибо сказали:
remmargana
Сообщения: 4
ОС: gentoo

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение remmargana »

Чудно, мало проэктов обретают вторую жизнь и перерождение на таких скоростях. Антиспам-бот есть, хорошая сортировка и вывод результатов, мультипоточность уже была, ну, а дальше уже специфика. А нельзя ли добавить в фичреквестлист - в меню при нажатии ПКМ на конкретный файл в списке передач в меню - "поиск альтернатив", видел, что ищет само в указанный период, но иногда пригождается ручной режим, при глюках хаба и соединения.
Спасибо сказали:
Аватара пользователя
WiseLord
Сообщения: 100
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение WiseLord »

Более-менее полный список изменений в текущей версии в SVN:

(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) и всё будет работать.
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

Небольшой попрос разработчикам. А что, ip-фильтр не умеет по маскам работать? т.е. прописать туда адрес вида 192.168.0.0/24 нкак? При таком раскладе у меня встают все закачки намертво, даже из разрешённых диапазонов адресов. Чтобы скачивание возобновилось приходится ip-филтр отключать, а это не есть хорошо.
Спасибо сказали:
Аватара пользователя
WiseLord
Сообщения: 100
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение WiseLord »

(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 раз
$ - конец строки
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

2WiseLord
Не вопрос, дайте пожалуйста более подробное описание регеэкспов. А то из вашей записи не всё понятно.

Заранее благодарю.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

r0g3r писал(а):
21.08.2009 11:07
2WiseLord
Не вопрос, дайте пожалуйста более подробное описание регеэкспов. А то из вашей записи не всё понятно.

Заранее благодарю.

\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 очень рекомендуется указывать в регэкспе блокировку по портам
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

Обнаружен ещё один баг - по неясной причине eiskaltdc начинает полностью кушать процессор. Судя по всему, возникает такая ситуация после весьма длительной работы (> суток) в непрерывном режиме.

Ось: Gentoo x86. Сборка вчерашняя. Скажите, какую информацию вам надо для более полного понимания ситуации.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

r0g3r писал(а):
21.08.2009 21:42
Обнаружен ещё один баг - по неясной причине eiskaltdc начинает полностью кушать процессор. Судя по всему, возникает такая ситуация после весьма длительной работы (> суток) в непрерывном режиме.

Ось: Gentoo x86. Сборка вчерашняя. Скажите, какую информацию вам надо для более полного понимания ситуации.

У вас включены модули INotify или IPFilter? Если да, то попробуйте их по-очереди отключать. Если один из них окажется проблемным то прошу выложить для INotify - ~/.eiskaltdc/inotify, а для IPFilter - ~/.eiskaltdc/ipfilter. В противном случае, мне потребуется подробное описание ваших действий, которые приводят к подобному поведению клиента и лог клиента (eiskaltdc -vv --socketlog both)
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

2RasenHerz:
Судя по всему проблема действительно в INotify. Во всяком случае, после его отключения резко упала нагрузка на процессор сама по себе. Пока что внимательно тестирую.

Заодно составил небольшой фичреквест:
1. Организовать группировку закачек во вкладке "Список передач>передача" таким образом, чтобы различные куски одного и того же файла отображались в виде иерархического дерева. То есть вверху название основного файла, уровнем ниже - полный список тех недостающих частей, которые сейчас качаются. Это бы упростило упрвавление ими. Ведь иногда надо эту самую закачку отменить, а искать в длиннющем списке, где какая передача сейчас идёт, останавливать её и только потом удалять - это крайне неудобно
1.1 Соответственно, добавить возможность удаления любой ненужной(-ых) закачки(-ек) одним щелчком мыши.
2. Добавить возможность бана конкретного пользователя/ip.
2.1 Добавить ещё один пункт меню (или кнопку), который бы позволял добавить некоего выбранного пользователя в друзья одним щелчком мыши в окне просмотра файлов оного. Это позволит не бегать по общему списку пользователей хаба туда-сюда, если вдруг внезамно захотелось добавить его в свой список.
3. Во вкладке "Пользовательский список" хотелось бы видеть пункт "Просмотреть файлы пользователи", который бы скачивал этот самый список при наличии юзера в сети.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение romkaromka »

r0g3r писал(а):
22.08.2009 21:21
1. Организовать группировку закачек во вкладке "Список передач>передача" таким образом, чтобы различные куски одного и того же файла отображались в виде иерархического дерева. То есть вверху название основного файла, уровнем ниже - полный список тех недостающих частей, которые сейчас качаются. Это бы упростило упрвавление ими. Ведь иногда надо эту самую закачку отменить, а искать в длиннющем списке, где какая передача сейчас идёт, останавливать её и только потом удалять - это крайне неудобно

упорядочивание - дело хорошее.
r0g3r писал(а):
22.08.2009 21:21
1.1 Соответственно, добавить возможно удаления ненужной(-ых) закачки(-ек) одним щелчком мыши.

возможен случайный щелчок, поэтому это лучше реализовать в контекстном меню по правой кнопке мыши.
r0g3r писал(а):
22.08.2009 21:21
2. Добавить возможность бана конкретного пользователя/ip.

да, полезный функционал друзей/врагов. добавить возможность не только бана, но и ограничения скорости, а также возможность наоборот поощрять и увеличивать скорость.
r0g3r писал(а):
22.08.2009 21:21
2.1 Добавить ещё один пункт меню (или кнопку), который бы позволял добавить некоего выбранного пользователя в друзья одним щелчком мыши в окне просмотра файлов оного. Это позволит не бегать по общему списку пользователей хаба туда-сюда, если вдруг внезамно захотелось добавить его в свой список.

по-моему это лишнее. ведь мы выбираем пользователя в друзья не из-за его шары, хотя кому как.
r0g3r писал(а):
22.08.2009 21:21
3. Во вкладке "Пользовательский список" хотелось бы видеть пункт "Просмотреть файлы пользователи", который бы скачивал этот самый список при наличии юзера в сети.

это интересно и иногда полезно.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

r0g3r писал(а):
22.08.2009 21:21
2RasenHerz:
Судя по всему проблема действительно в INotify. Во всяком случае, после его отключения резко упала нагрузка на процессор сама по себе. Пока что внимательно тестирую.


Сам по себе механизм INotify нагрузку излишнюю не дает - 90% времени поток просто спит, другое дело старт INotify - индексация директроий может ощутимо нагрузить процессор. Как вариант, если у вас идет активное создание/изменение/удаление файлов в наблюдаемых директориях то по таймауту, когда INotify начинает "разгребать" сообщения от файловой системы их может быть очень много и их разбор нагрузит процессор, так что попробуйте для начала уменьшить количество наблюдаемых директорий и увеличить временной интервал для проверки директорий (хотя бы 1 минуту). Думаю перед релизом я добавлю механизм, предотвращающий обработку, к примеру, более 100 сообщений ФС за раз.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение romkaromka »

посмотрите, пожалуйста, чего можно сделать с тем, чтобы eiskaltdc использовал настройки подключения - ему реально они как об стенку горох. я уж как только его не заставлял их учесть - он не желает.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

Все желающие могут попробовать первый релиз-кандидат (svn r227).

Обновлен TODO на следующий релиз:

- Список закаченного/розданного
- Отказ от Qt3Support и полная миграция на Qt4
- Мастер первого запуска
- Базовая поддержка друзей/врагов

Скорее всего будет изменена нумерация версий на более удобную - X.Y.Z, где каждый новый релиз увеличивает минорную версию - X.Y+1.Z , а каждый корректирующий - субминорную - X.Y.Z+1, таким образом не придется выдумывать для коррестирующих релизов версии вида 0.5.0a. Кроме того, нумерация релизов скорее всего начнется с 1.0.0.

Если все пойдет гладко - релиз состоится в середине/конце следующей недели.
Спасибо сказали:
Аватара пользователя
Burger
Сообщения: 122
Статус: LOL
ОС: RHEL\CentOS

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение Burger »

На сколько я понимаю,на SF остался стаый пакет для Дебиан?ОТ 9 августа...
Спасибо сказали:
Аватара пользователя
WiseLord
Сообщения: 100
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение WiseLord »

На SF ещё и SVN есть, о нём речь и шла.

P.S. Залил RC1 на sourceforge: ссылка.
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

2romkaromka:
возможен случайный щелчок, поэтому это лучше реализовать в контекстном меню по правой кнопке мыши.

Да, именно это я виду и имел. Немножко неверно выразился, благодарю за поправку.

по-моему это лишнее. ведь мы выбираем пользователя в друзья не из-за его шары, хотя кому как.

Не совсем так. Я этой штукой пользуюсь ещё и как записной книжкой. Просто в нашей DC++ пользователей очень много, и у некоторых имеются действительно интересные и регулярно обновляемые шары.

2RasenHerz:
Тем не менее, факт фактом. Я специально увеличил интервал между обновления Inotify, но тем не менее, он действительно нагружает процессор. Достаточно поглядеть на загрузку в conky после включения/отключения данной штуки.
Также есть мысль, а почему бы дополнительно в не очень отдалённом будущем добавить туда поддержку libnotify, чтобы можно было через notify-send всяческие всплывающие сообщения посылать? Фича совсем необязательная, но иногда полезная.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

r0g3r писал(а):
23.08.2009 19:19
2RasenHerz:
Тем не менее, факт фактом. Я специально увеличил интервал между обновления Inotify, но тем не менее, он действительно нагружает процессор. Достаточно поглядеть на загрузку в conky после включения/отключения данной штуки.
Также есть мысль, а почему бы дополнительно в не очень отдалённом будущем добавить туда поддержку libnotify, чтобы можно было через notify-send всяческие всплывающие сообщения посылать? Фича совсем необязательная, но иногда полезная.

С INotify я постараюсь разобраться. Вы можете "сами" обрабатывать уведомления, для этого создайте скрипт ~/.eiskaltdc/popup.sh - все уведомления будут перенаправлены ему:
~/.eiskaltdc/popup.sh "SENDER" "MESSAGE"

P.S. WiseLord где-то раньше оставлял скрипт для kdialog, думаю вам не составит труда его поправить и использовать с notify-send.
Спасибо сказали:
Faunus
Сообщения: 3
ОС: Debian GNU/Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение Faunus »

WiseLord писал(а):
23.08.2009 10:58
Залил RC1 на sourceforge


Там есть пару проблем со сборкой на Qt 4.4.3:

- метод setTabsClosable появился только в Qt4.5, соотв-но его нужно взять в блок if QT_VERSION >= ..... Он используется на двух табах.
- слот DCConnectionManager::slotTabMoved в cpp-файле взят в блок if QT_VERSION >= 0x40500, а в хэдере - нет. Отсюда есть ошибка при линковке.
Спасибо сказали:
Аватара пользователя
gray_graff
Сообщения: 74
ОС: ALT Linux Sisyphus

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение gray_graff »

Сломалась сортировка по размеру в поиске?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

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

gray_graff писал(а):
23.08.2009 21:30
Сломалась сортировка по размеру в поиске?

Если честно, там вообще много спорных вопросов в сортировке (сортирует Qt) - все результаты почему-то сортируются сначала по количеству, а потом уже по размеру/и т.д. Видимо это как-то связано с особенностями Qt
Спасибо сказали:
Аватара пользователя
r0g3r
Сообщения: 19
ОС: Gentoo Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение r0g3r »

2RasenHerz:
Попробую поковырять INotify согласно вашему совету на досуге.

А скриптик где лежит не подскажете? :)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

r0g3r писал(а):
23.08.2009 22:13
2RasenHerz:
Попробую поковырять INotify согласно вашему совету на досуге.

А скриптик где лежит не подскажете? :)

Код: Выделить всё

#!/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
Спасибо сказали:
Faunus
Сообщения: 3
ОС: Debian GNU/Linux

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение Faunus »

При изменении цветов фона/текста в чате, изменения действуют только на окно 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 под это событие.

зю. Мне вообще такие вещи сюда писать, или лучше сразу в багтреккер? Сами пофиксите, или вам лучше готовый патч дать?
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Создание и тестирование клиента p2p - EiskaltDC++

Сообщение RasenHerz »

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
Спасибо сказали: