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

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

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

Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

Prorok87 писал(а):
04.02.2010 14:53
Что то мне кажется что я еще долго буду сидеть на АйскальтДЦ.

Вы думаете между релизами EiskaltDC нет ничего подобного? Поверьте, бывало намного хуже, просто обычно все обсуждается в нашей jabber-конференции и обычные пользователи подобного не читают. Почитайте начало треда - корректирующие релизы иногда выходили в один день с финальным релизом, а тут всего лишь prealpha-тестирование.
Prorok87 писал(а):
04.02.2010 14:53
Чуть не забыл.Так как я не юзаю пока новый клиент скажите есть ли там фича реализовующая вывод магнет ссылок в чате не полностью,а лишь ссылко-названием?:)

Уже давно
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

RasenHerz писал(а):
04.02.2010 14:51
P.S. проверьте, пожалуйста, r33 - очередную попытку уменьшить нагрузку (полностью изменен способ выполнения задач для чата, поисковика и менеджера передач) =)

По-прежнему при активном табе с хабом(~8000 юзеров) 100% CPU на машине ~ 1GHz.
eiskaltdcpp - 75%
X - 25%

Ещё в прошлых ревизиях я смотрел на загрузку CPU при скачке, если активным был не таб с хабом, а например с поиском или с очередью передач(т.е. когда не надо тратить ресурсы на отображение панели с юзерами) - она была меньше 100%.(какая точно не помню)

в r33 при скачке(с трёх источников) 40%.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

По умолчанию значение порта для шифрованных соединений выставлено в ноль - похоже отсюда и проблемы с произвольным значением.
Когда выставил такие значения портов:
TCP=1024
UDP=1025
TLS=1026
вывод при включённой отладке UPnP:
Forwarding 1024 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).
Forwarding 1026 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).
Forwarding 1025 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).

Так что изменения в r33 в 58-ой строке файла UPnP.h: unsigned short --> int - можно отменить.

В одном из моих предыдущих сообщений было замечание, по поводу того что в Linux ядре стоят ограничения на возможные значения портов: >=1024.
Может изменить значения по умолчанию на допустимые, например на такие:
TCP=1024
UDP=1025
TLS=1026
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

wilgib писал(а):
04.02.2010 15:47
RasenHerz писал(а):
04.02.2010 14:51
P.S. проверьте, пожалуйста, r33 - очередную попытку уменьшить нагрузку (полностью изменен способ выполнения задач для чата, поисковика и менеджера передач) =)

По-прежнему при активном табе с хабом(~8000 юзеров) 100% CPU на машине ~ 1GHz.
eiskaltdcpp - 75%
X - 25%

Ещё в прошлых ревизиях я смотрел на загрузку CPU при скачке, если активным был не таб с хабом, а например с поиском или с очередью передач(т.е. когда не надо тратить ресурсы на отображение панели с юзерами) - она была меньше 100%.(какая точно не помню)

в r33 при скачке(с трёх источников) 40%.

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

wilgib писал(а):
04.02.2010 16:46
По умолчанию значение порта для шифрованных соединений выставлено в ноль - похоже отсюда и проблемы с произвольным значением.
Когда выставил такие значения портов:
TCP=1024
UDP=1025
TLS=1026
вывод при включённой отладке UPnP:
Forwarding 1024 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).
Forwarding 1026 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).
Forwarding 1025 to 192.168.0.2 (http://192.168.0.1:80/upnp/control3).

Так что изменения в r33 в 58-ой строке файла UPnP.h: unsigned short --> int - можно отменить.

В одном из моих предыдущих сообщений было замечание, по поводу того что в Linux ядре стоят ограничения на возможные значения портов: >=1024.
Может изменить значения по умолчанию на допустимые, например на такие:
TCP=1024
UDP=1025
TLS=1026

Так проброс заработал? И думаю лучше будет сделать подсказки, что на некоторых системах порты < 1024 зарезервированы.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

RasenHerz писал(а):
05.02.2010 06:52
Так проброс заработал?

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

RasenHerz писал(а):
05.02.2010 06:52
И думаю лучше будет сделать подсказки, что на некоторых системах порты < 1024 зарезервированы.

Согласен, можно сделать всплывающие подсказки при наведении мыши на поле для ввода порта.

По поводу отмены изменения в 58-ой строке файла UPnP.h:
unsigned short --> int
Возможные значения портов: от 1 до 65535
тип int: от -32768 до 32767
тип unsigned short: от 0 до 65535
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

wilgib писал(а):
05.02.2010 12:10
тип int: от -32768 до 32767

на всех 32-битных x86 архитектурах, что я встречал это 2147483647, да и уже не важно, я всего лишь проверял свою догадку, в локальной копии уже давно unsigned short. Поменял на int только потому, что подумал что где-то в программе возвращается отриц.число.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

RasenHerz писал(а):
05.02.2010 12:22
на всех 32-битных x86 архитектурах, что я встречал это 2147483647, да и уже не важно, я всего лишь проверял свою догадку, в локальной копии уже давно unsigned short. Поменял на int только потому, что подумал что где-то в программе возвращается отриц.число.

Ясно.

Поддержка старого EiskaltDC, после выхода релиза EiskaltDC++ 2.0 прекратится?
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

wilgib писал(а):
05.02.2010 13:20
Поддержка старого EiskaltDC, после выхода релиза EiskaltDC++ 2.0 прекратится?

В trunk принимаются только патчи, фактически ветвь 1.x уже считается мертвой (разработчик, которому она была доверена, отказался от нее).
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

Для машины ~1GHz:
Вроде как при скачке загрузка CPU примерно такая же как в windows-клиентах под Windows XP.
А вот при отображении панели с юзерами загрузка CPU значительно выше.

Сравнение загрузки CPU при отображении панели с юзерами на разных клиентах:

EiskaltDC++(хаб ~7000 юзеров):
окно развёрнутое на весь экран:
eiskaltdcpp - 70-75%
X - 20-25%
окно небольшого размера:
eiskaltdcpp - 50-60%
X - 18-23%

LinuxDC++(хаб ~7000 юзеров):
окно развёрнутое на весь экран:
linuxdcpp - 10-30%
X - 2-8%
окно небольшого размера:
linuxdcpp - 10%
X - 2-4%

EiskaltDC-1.0.41(хаб ~9000 юзеров):
окно развёрнутое на весь экран:
eiskaltdc - 25-28%
X - 7-12%
окно небольшого размера:
eiskaltdc - 9-13%
X - 3-5%

DC++ под Windows XP: не более 10% на хабе с 12000 юзеров

Раз в EiskaltDC-1.0.41 нагрузка CPU в сравнении с EiskaltDC++ значительно меньше, а реализация отображения панели с юзерами тоже на Qt4, почему бы не использовать эту реализацию в EiskaltDC++. Хотя лучше, конечно, добится загрузки CPU не выше чем у клиента DC++ под Windows XP - не более 10% на хабе с 12000 юзеров.

Правильно ли я понимаю, что раз на машине ~1GHz загрузка CPU 100%, а на машине ~2GHz ~ 5-10%, то дело в том, что реализация отображения панели с юзерами, имеет какой-то конструктивный изъян, либо содержит баги(или и то и другое одновременно), или же тут имеет значение не только величина тактовой частоты, а ещё архитектура процессора.
Спасибо сказали:
tehnick
Сообщения: 70
ОС: Debian GNU/Linux Sid

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

Сообщение tehnick »

Потестировал сейчас немного EiskaltDC++ из 44 ревизии:

1) Наконец-то поправлен баг с повторным поиском в той же вкладке. Это хорошо.

2) На локальных хабах (менее 1000 пользователей на каждом) загрузка процессора минимальная и клиент работает отлично.

3) Специально подключился к одному из самых крупных хабов в России (Озерки). На нем было в тот момент около 9000+-500 юзеров. Минимальная загрузка процессора (<10%) наблюдается, когда в соответствующем виджете отображается начало списка пользователей, если же пролистать этот список к концу, то загрузка процессора возрастает до 100% и интерфейс программы сильно тормозит.

Рекомендация: обновлять список пользователей и сопутствующую информацию (ту, что ниже него) не чаще одного раза в 1-2 секунды. (Да, по таймеру...) И лучше конечно сделать по дефолту именно 2 секунды, а потом можно будет добавить соответствующую опцию в настройки. Сейчас же информация обновляется слишком часто. К примеру, информация о количестве пользователей на хабе по моим наблюдениям иногда обновлялась до 3-4 раз в секунду! Зачем?

В клиентах FreeDC++ и EiskaltDC подобная проблема не наблюдается, хотя информация там тоже обновляется чаще раза в секунду. Загрузка меньше 10% при любом расположении списка. Странно...

4) Надпись на прогрессбаре (колонка Status в панели Transfers) смотрится ужасно, даже если увеличить ширину столбца, чтобы текст умещался в одну строку. Ничего длиннее текста вида xx.x% там быть не должно. Любую другую информацию лучше вынести в отдельный столбец.
Спасибо сказали:
Аватара пользователя
MrFree
Сообщения: 18
ОС: Ubuntu 13.10

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

Сообщение MrFree »

Что то мне натурально не везет со сборкой. полный лог внутри, может кто скажет что с компилятором?

из бранч/транк на гуглякоде
buntu 9.10/ cmake 2.8 / gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 / Qt 4.6.1 (4.6.0 тоже самое) /

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

mrfree@mrfree-desktop:~/svn/eiskaltdcpp/build$ dcmake ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for malloc.h
-- Looking for malloc.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for mallinfo
-- Looking for mallinfo - found
-- Looking for malloc_stats
-- Looking for malloc_stats - found
-- Looking for malloc_trim
-- Looking for malloc_trim - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for sys/socket.h
-- Looking for sys/socket.h - found
-- Looking for ifaddrs.h
-- Looking for ifaddrs.h - found
-- Looking for net/if.h
-- Looking for net/if.h - found
-- Looking for include files HAVE_ADDRS_H
-- Looking for include files HAVE_ADDRS_H - found
-- Found BZip2: /usr/lib/libbz2.so
-- Looking for BZ2_bzCompressInit in /usr/lib/libbz2.so
-- Looking for BZ2_bzCompressInit in /usr/lib/libbz2.so - found
-- Boost version: 1.40.0
-- Found the following Boost libraries:
-- Found ZLIB: /usr/lib/libz.so
-- Found OpenSSL: /usr/lib/libssl.so;/usr/lib/libcrypto.so
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.6.1 (using /usr/bin/qmake)
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- checking for module 'libupnp'
--   found libupnp, version 1.8.0
-- Found the upnp libraries at /usr/lib/libupnp.so
-- Found the upnp headers at /usr/include
-- Library directory: /usr/local/lib
-- Data directory: /usr/local/share/eiskaltdcpp
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mrfree/svn/eiskaltdcpp/build
mrfree@mrfree-desktop:~/svn/eiskaltdcpp/build$ make -j3
Scanning dependencies of target dcpp
[  0%] [  1%] [  1%] Building CXX object dcpp/CMakeFiles/dcpp.dir/AdcCommand.cpp.o
Building CXX object dcpp/CMakeFiles/dcpp.dir/ADLSearch.cpp.o
Building CXX object dcpp/CMakeFiles/dcpp.dir/AdcHub.cpp.o
[  2%] Building CXX object dcpp/CMakeFiles/dcpp.dir/BZUtils.cpp.o
[  2%] Building CXX object dcpp/CMakeFiles/dcpp.dir/BufferedSocket.cpp.o
[  3%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Client.cpp.o
[  3%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ClientManager.cpp.o
[  4%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ConnectionManager.cpp.o
[  5%] Building CXX object dcpp/CMakeFiles/dcpp.dir/CryptoManager.cpp.o
[  5%] Building CXX object dcpp/CMakeFiles/dcpp.dir/DCPlusPlus.cpp.o
[  6%] Building CXX object dcpp/CMakeFiles/dcpp.dir/DirectoryListing.cpp.o
[  6%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Download.cpp.o
[  7%] Building CXX object dcpp/CMakeFiles/dcpp.dir/DownloadManager.cpp.o
[  7%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Encoder.cpp.o
[  8%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Exception.cpp.o
[  8%] Building CXX object dcpp/CMakeFiles/dcpp.dir/FavoriteManager.cpp.o
[  9%] Building CXX object dcpp/CMakeFiles/dcpp.dir/File.cpp.o
[ 10%] Building CXX object dcpp/CMakeFiles/dcpp.dir/FinishedItem.cpp.o
[ 10%] Building CXX object dcpp/CMakeFiles/dcpp.dir/FinishedManager.cpp.o
[ 11%] Building CXX object dcpp/CMakeFiles/dcpp.dir/HashBloom.cpp.o
[ 11%] Building CXX object dcpp/CMakeFiles/dcpp.dir/HashManager.cpp.o
[ 12%] Building CXX object dcpp/CMakeFiles/dcpp.dir/HttpConnection.cpp.o
[ 12%] Building CXX object dcpp/CMakeFiles/dcpp.dir/LogManager.cpp.o
[ 13%] Building CXX object dcpp/CMakeFiles/dcpp.dir/NmdcHub.cpp.o
[ 13%] Building CXX object dcpp/CMakeFiles/dcpp.dir/QueueItem.cpp.o
[ 14%] Building CXX object dcpp/CMakeFiles/dcpp.dir/QueueManager.cpp.o
[ 15%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ResourceManager.cpp.o
[ 15%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SFVReader.cpp.o
[ 16%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SSL.cpp.o
[ 16%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SSLSocket.cpp.o
[ 17%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SearchManager.cpp.o
[ 17%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SearchResult.cpp.o
[ 18%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ServerSocket.cpp.o
[ 18%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SettingsManager.cpp.o
[ 19%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ShareManager.cpp.o
[ 20%] Building CXX object dcpp/CMakeFiles/dcpp.dir/SimpleXML.cpp.o
[ 20%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Socket.cpp.o
[ 21%] Building CXX object dcpp/CMakeFiles/dcpp.dir/StringTokenizer.cpp.o
[ 21%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Text.cpp.o
[ 22%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Thread.cpp.o
[ 22%] Building CXX object dcpp/CMakeFiles/dcpp.dir/TigerHash.cpp.o
[ 23%] Building CXX object dcpp/CMakeFiles/dcpp.dir/TimerManager.cpp.o
[ 24%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Transfer.cpp.o
[ 24%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Upload.cpp.o
[ 25%] Building CXX object dcpp/CMakeFiles/dcpp.dir/UploadManager.cpp.o
[ 25%] Building CXX object dcpp/CMakeFiles/dcpp.dir/User.cpp.o
[ 26%] Building CXX object dcpp/CMakeFiles/dcpp.dir/UserConnection.cpp.o
[ 26%] Building CXX object dcpp/CMakeFiles/dcpp.dir/Util.cpp.o
[ 27%] Building CXX object dcpp/CMakeFiles/dcpp.dir/ZUtils.cpp.o
[ 27%] Building CXX object dcpp/CMakeFiles/dcpp.dir/stdinc.cpp.o
[ 28%] Building CXX object dcpp/CMakeFiles/dcpp.dir/version.cpp.o
Linking CXX static library libdcpp.a
[ 28%] Built target dcpp
[ 29%] [ 29%] [ 30%] Generating ../../eiskaltdcpp/translations/eiskaltdcpp.en.qm
Generating ../../eiskaltdcpp/translations/eiskaltdcpp.ru.qm
Generating ui_UITransferView.h
[ 31%] Generating moc_Antispam.cxx
Updating '/home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/translations/eiskaltdcpp.en.qm'...
Updating '/home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/translations/eiskaltdcpp.ru.qm'...
    Generated 0 translation(s) (0 finished and 0 unfinished)

    Ignored 410 untranslated source text(s)
    Generated 405 translation(s) (350 finished and 55 unfinished)

    Ignored 5 untranslated source text(s)
[ 31%] [ 32%] Generating moc_AntiSpamFrame.cxx
Generating moc_DownloadQueue.cxx
[ 33%] Generating moc_DownloadQueueModel.cxx
[ 33%] [ 33%] Generating moc_FavoriteHubModel.cxx
[ 34%] Generating moc_FileBrowserModel.cxx
Generating moc_FavoriteHubs.cxx
[ 35%] [ 35%] Generating moc_FinishedTransfers.cxx
[ 36%] Generating moc_FinishedTransfersModel.cxx
Generating moc_HashProgress.cxx
[ 36%] Generating moc_HubFrame.cxx
[ 38%] [ 38%] Generating moc_IPFilter.cxx
Generating moc_IPFilterFrame.cxx
[ 38%] Generating moc_IPFilterModel.cxx
[ 39%] [ 39%] [ 40%] Generating moc_Magnet.cxx
Generating moc_MainWindow.cxx
Generating moc_PMWindow.cxx
[ 41%] [ 41%] Generating moc_Settings.cxx
Generating moc_SettingsConnection.cxx
[ 42%] Generating moc_SettingsDownloads.cxx
[ 42%] Generating moc_SettingsPersonal.cxx
[ 43%] Generating moc_SettingsSharing.cxx
[ 43%] Generating moc_QuickConnect.cxx
[ 44%] [ 44%] Generating moc_SearchFrame.cxx
[ 45%] Generating moc_SearchModel.cxx
Generating moc_ShareBrowser.cxx
[ 45%] Generating moc_ToolBar.cxx
[ 46%] Generating moc_TransferView.cxx
[ 47%] Generating moc_TransferViewModel.cxx
[ 47%] Generating moc_UPnP.cxx
[ 48%] Generating moc_UPnPMapper.cxx
[ 48%] Generating moc_UserListModel.cxx
[ 49%] Generating moc_WulforManager.cxx
[ 49%] Generating moc_WulforSettings.cxx
[ 50%] Generating moc_WulforUtil.cxx
[ 50%] [ 51%] Generating ui_UIAntiSpam.h
[ 52%] Generating ui_PrivateMessage.h
Generating ui_HubFrame.h
[ 53%] [ 53%] [ 53%] Generating ui_UIFavoriteHubs.h
Generating ui_UIDownloadQueue.h
Generating ui_UIFavoriteHubEditor.h
[ 54%] [ 54%] Generating ui_UIFinishedTransfers.h
Generating ui_UIHashProgressDialog.h
[ 55%] Generating ui_UIIPFilter.h
[ 55%] [ 56%] Generating ui_UIMagnet.h
Generating ui_UISearchFrame.h
[ 57%] Generating ui_UIQuickConnect.h
[ 57%] [ 58%] Generating ui_UISettings.h
Generating ui_UISettingsConnection.h
[ 59%] [ 59%] [ 59%] Generating ui_UISettingsSharing.h
Generating ui_UISettingsPersonal.h
Generating ui_UISettingsDownloads.h
[ 60%] Generating ui_UIShareBrowser.h
Scanning dependencies of target eiskaltdcpp
[ 61%] [ 62%] [ 62%] Building CXX object eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/moc_AntiSpamFrame.cxx.o
Building CXX object eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/main.cpp.o
Building CXX object eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/moc_Antispam.cxx.o
[ 62%] Building CXX object eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/moc_DownloadQueue.cxx.o
[ 63%] Building CXX object eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/moc_DownloadQueueModel.cxx.o
In file included from /home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/../dcpp/BufferedSocket.h:28,
                 from /home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/../dcpp/UserConnection.h:26,
                 from /home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/../dcpp/ConnectionManager.h:24,
                 from /home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/MainWindow.h:20,
                 from /home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/main.cpp:22:
/home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/../dcpp/Socket.h:44: error: expected unqualified-id before ‘int’
/home/mrfree/svn/eiskaltdcpp/eiskaltdcpp/../dcpp/Socket.h:44: error: expected ‘)’ before ‘int’
make[2]: *** [eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/main.cpp.o] Ошибка 1
make[2]: *** Ожидание завершения заданий...
make[1]: *** [eiskaltdcpp/CMakeFiles/eiskaltdcpp.dir/all] Ошибка 2
make: *** [all] Ошибка 2
mrfree@mrfree-desktop:~/svn/eiskaltdcpp/build$


Решено:
не собирается на libupnp 1.8
откат до 1,6,6 решил проблему
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

tehnick писал(а):
07.02.2010 01:41
3) Специально подключился к одному из самых крупных хабов в России (Озерки). На нем было в тот момент около 9000+-500 юзеров. Минимальная загрузка процессора (<10%) наблюдается, когда в соответствующем виджете отображается начало списка пользователей, если же пролистать этот список к концу, то загрузка процессора возрастает до 100% и интерфейс программы сильно тормозит.

Рекомендация: обновлять список пользователей и сопутствующую информацию (ту, что ниже него) не чаще одного раза в 1-2 секунды. (Да, по таймеру...) И лучше конечно сделать по дефолту именно 2 секунды, а потом можно будет добавить соответствующую опцию в настройки. Сейчас же информация обновляется слишком часто. К примеру, информация о количестве пользователей на хабе по моим наблюдениям иногда обновлялась до 3-4 раз в секунду! Зачем?

В клиентах FreeDC++ и EiskaltDC подобная проблема не наблюдается, хотя информация там тоже обновляется чаще раза в секунду. Загрузка меньше 10% при любом расположении списка. Странно...

4) Надпись на прогрессбаре (колонка Status в панели Transfers) смотрится ужасно, даже если увеличить ширину столбца, чтобы текст умещался в одну строку. Ничего длиннее текста вида xx.x% там быть не должно. Любую другую информацию лучше вынести в отдельный столбец.

Дело в том что иконки начинают загружаться только непосредственно перед отрисовкой (а загрузившись однажды, больше не загружаются), таким образом , промотав список на 9к пользователей вниз вы нагрузили клиент загрузкой 9к иконок. в r46 эта регрессия поправлена (так же как и в EiskaltDC иконки загружаются сразу). Добавил таймер для обновления статуса раз в 3 секунды, в общем, пробуйте. С менеджером передач пока еще не закончил полностью, все еще может поменяться.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

r46:
По-прежнему на машине ~1GHz 100% CPU, при отображении панели с юзерами.

12 потоков:

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

ls /proc/`pidof eiskaltdcpp`/task
3800  3801  3803  3804  3805  3806  3807  3808  3811  3812  3813  3814  3815


Как вчера уже обсуждалось на jabber конференции eiskaltdc@conference.gentoo.ru у плазмоида из состава KDE - System Load Viewer загрузка CPU отображается столбцами разного цвета:
если удалить каталог ~./dc++, и запустить клиент то цвет столбца синий
если же запустить клиент LInuxDC++, который использует тот же каталог ~./dc++, и похоже что-то в него записывает, то когда запускаешь EiskaltDC++ цвет столбца жёлтый.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

tehnick писал(а):
07.02.2010 01:41
4) Надпись на прогрессбаре (колонка Status в панели Transfers) смотрится ужасно, даже если увеличить ширину столбца, чтобы текст умещался в одну строку. Ничего длиннее текста вида xx.x% там быть не должно. Любую другую информацию лучше вынести в отдельный столбец.

А меня наоборот всё устраивает, я считаю что здесь ничего менять не надо. Та информация которая там указана - там и должна быть. А ширину прогресс-бара было бы неплохо сделать запоминающейся. Как в принципе и ширину всех остальных полей везде где только они используются.
Ширина полей в finished downloads/uploads -для типов files/users: название полей для этих типов отображения - разные, а вот размеры одинаковые(например поле filename для типа Files и поле user для типа Users - имеют одинаковую ширину, и если эту ширину поменять например для типа Users, а потом переключится на тип Files - то ширина поля filename тоже поменяет размер)

В Transfers сломано поле "file name".
Спасибо сказали:
tehnick
Сообщения: 70
ОС: Debian GNU/Linux Sid

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

Сообщение tehnick »

RasenHerz писал(а):
07.02.2010 09:45
Дело в том что иконки начинают загружаться только непосредственно перед отрисовкой (а загрузившись однажды, больше не загружаются), таким образом , промотав список на 9к пользователей вниз вы нагрузили клиент загрузкой 9к иконок. в r46 эта регрессия поправлена (так же как и в EiskaltDC иконки загружаются сразу). Добавил таймер для обновления статуса раз в 3 секунды, в общем, пробуйте.


Потестировал прогу из 47 ревизии. Проблема, описанная в пункте 3) осталась. Таймер на 3 секунды, к сожалению, не помог. Загрузка процессора равномерная, без скачков. На что тратятся такты процессора для меня загадка. Где бы это можно посмотреть?.. Ну и конечно возникает вопрос: у автора программы подобная проблема наблюдается или нет? Может быть вся проблема в моей неудачной сборке...

Ну и немного о многопоточности:

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

$ ls /proc/`pidof eiskaltdcpp`/task
25187  25199  25203  25205  25209  25211  25213  25215
25192  25202  25204  25206  25210  25212  25214  25225
$ ls /proc/`pidof eiskaltdc`/task
3626  3627  3628  3633  3634
$ ls /proc/`pidof freedcpp`/task
26235  26236  26242  26243  26244  26268  26269  26270  26271  26272  26273  26289

Открыты одни и те же вкладки: подключен к трем локальным хабам и к dc.ozerki.net.
Спасибо сказали:
pavelvat
Сообщения: 64
ОС: Arch Linux i686

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

Сообщение pavelvat »

tehnick, советую обращаться не сюда, а на jabber конференцию eiskaltdc@conference.gentoo.ru - там разработчики ответят практически мгновенно, да и вести диалог перепиской в jabber гораздо быстрей.
Спасибо сказали:
gyrt
Сообщения: 48
ОС: Debian & CentOS

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

Сообщение gyrt »

Кстати, кто нибудь пробовал оптимизацию давать при сборке? Скажем -O2 в флагах компиляции? (или -O3)
Linux is like a wigwam. No Windows, no Gates and an apache inside.
Спасибо сказали:
dhampire
Сообщения: 409
ОС: arch x86_64

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

Сообщение dhampire »

gyrt писал(а):
07.02.2010 20:20
Кстати, кто нибудь пробовал оптимизацию давать при сборке? Скажем -O2 в флагах компиляции? (или -O3)

по дефолту CMAKE_BUILD_TYPE=RelWithDebInfo - соответсвует CXX_FLAGS = -O2 -g + другие заданные флаги
Спасибо сказали:
gyrt
Сообщения: 48
ОС: Debian & CentOS

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

Сообщение gyrt »

Чорт, не посмотрел. Ну надо бы с -O3 попробовать, как оно пашет
Linux is like a wigwam. No Windows, no Gates and an apache inside.
Спасибо сказали:
Аватара пользователя
panoptus
Сообщения: 49
ОС: Ubuntu

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

Сообщение panoptus »

Комрады, покажите инструкцию по сборке EiskaltDC++, больно уж хочется присоединиться к тестированию...
Сырцы из свн качнул, а чем и как компилить - не в курсе.
Спасибо сказали:
Аватара пользователя
MrFree
Сообщения: 18
ОС: Ubuntu 13.10

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

Сообщение MrFree »

далее cmake, смотри лог - там будет видно чего не хватает.
лучше я думаю будет е просто cmake ./
а mkdir build && cd build
и затем cmake ../
Спасибо сказали:
ksl87
Сообщения: 55
ОС: opensuse 11.2, KDE 4.3

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

Сообщение ksl87 »

Подскажите пожалуйста опцию для cmake чтобы изменить префикс на ~/user
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

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

Сообщение RasenHerz »

panoptus писал(а):
10.02.2010 01:01
Комрады, покажите инструкцию по сборке EiskaltDC++, больно уж хочется присоединиться к тестированию...
Сырцы из свн качнул, а чем и как компилить - не в курсе.

ksl87 писал(а):
10.02.2010 09:36
Подскажите пожалуйста опцию для cmake чтобы изменить префикс на ~/user

cmake -DCMAKE_INSTALL_PREFIX=<your_prefix> ./

Собственно сроки немного сдвинулись:
Release schedule:
* 12.02 Feature-freeze
* 15.02 Tag EiskaltDC++ 2.0alpha
* 17.02 Release EiskaltDC++ 2.0alpha
Спасибо сказали:
Аватара пользователя
panoptus
Сообщения: 49
ОС: Ubuntu

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

Сообщение panoptus »

Итак, инструкция для бунту и, вероятно, дебиана:
1. Установить программу subversion:
# apt-get install subversion


2. Скачать сырцы с помощью subversion:


3. Поставить cmake и удовлетворить зависимости:
# apt-get install cmake qt4-qmake libbz2-dev zlib1g-dev libboost-dev libssl-dev libqt4-dev libupnp-dev


4. Перейти в каталог с сырцами eiskaltdc, запустить
cmake ./

5. Если все нормально - запустить
make


Сразу же расскажу замеченные неудобства разработчикам:
1. Переключение между вкладками в меню настроек по двойному клику... по-началу думал, что переключение вобще не работает))
2. С помощью ssh пробросил себе прокси на локалхост, пытаюсь прописать в прокси 127.0.0.1 порт 40000, а он пишет
"No valid SOCKS5 server IP found!"

3. Программа вылетела удалении нескольких запросов на скачку файл-листов с Transfers
4. После вылета я завершил ее процес в htop, но при следующем запуске выдает:
Cannot listen socket because:
Permission denied

Please check your connection settings

5. Если можно, сделайте закрытие табов по клику колесиком мыши.
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

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

Сообщение alkesta »

(RasenHerz) писал(а):EiskaltDC++ 2.0alpha

А почему нумерация такая странная, намекающая на стабильный зрелый релиз, с координальными изменениями по отношению к стабильному предыдущему мажорному релизу, которого не было..
Как бы еще не было не то, чтобы минорной версии EiskaltDC++, а уже 2-я мажорная..

EiskaltDC и EiskaltDC++ продукты разные и имеют разные названия, потому использовать общую нумерацию для 2-х разных продуктов не логично.

Не многие linux`овые продукты имеют мажорную версию больше единицы, а тут девелопмент не имевший релиза, а уже 2.0!?

Valknut - версия 0.4
mplayer после 10 лет разработки имеет номер 1.0
ffmpeg - версия 0.5

Может пока не было релиза, привести нумерацию к понятному общепринятому виду, типа 0.0.2.33
Спасибо сказали:
Аватара пользователя
Atolstoy
Сообщения: 1655
Статус: Tux in the rain
ОС: Linux x86_64

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

Сообщение Atolstoy »

А у меня cmake доходит до 100% и спотыкается при линковке libcrypto:

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

Undefined            first referenced
 symbol                  in file
RAND_seed                           ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_DecryptUpdate                   ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_DecryptFinal                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_get_error                       ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_EncryptFinal                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_lib_error_string                ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
CRYPTO_set_locking_callback         ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RSA_public_encrypt                  ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_bf_cbc                          ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_EncryptUpdate                   ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_DecryptInit                     ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_EncryptInit                     ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RSA_free                            ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_CIPHER_CTX_init                 ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
CRYPTO_num_locks                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_peek_error                      ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RAND_bytes                          ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
X509_verify_cert_error_string       ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_func_error_string               ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_reason_error_string             ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
CRYPTO_set_id_callback              ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RSA_check_key                       ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RSA_private_decrypt                 ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
d2i_RSAPublicKey                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
i2d_RSAPublicKey                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
EVP_CIPHER_CTX_cleanup              ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
RSA_generate_key                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_print_errors_fp                 ../dclib/core/libcore.a(csocket.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ERR_free_strings                    ../dclib/core/libcore.a(cssl.cpp.o)  (symbol belongs to implicit dependency /lib/libcrypto.so.0.9.8)
ld: fatal: symbol referencing errors. No output written to eiskaltdc
collect2: ld returned 1 exit status
make[2]: *** [eiskaltdc/eiskaltdc] Error 1
make[1]: *** [eiskaltdc/CMakeFiles/eiskalt.dir/all] Error 2

Честно говоря, уже запутался и не понимаю использует ли cmake сановский сс или gcc.

Система OpenSolaris.
Всего лишь 26 литров пива достаточно человеку для удовлетворения ежедневной потребности в кальции. Здоровое питание - это так просто!
http://atolstoy.wordpress.com
Спасибо сказали:
ksl87
Сообщения: 55
ОС: opensuse 11.2, KDE 4.3

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

Сообщение ksl87 »

Собрал r55 на opensuse11.2, собралось тьфу-тьфу нормально:)
1) Имеется опечатка в "настройки" вкладка "загрузки" и там "директория незаПершенных загрузок"
2) вкладка "загрузить в" имеется но как добавит туда пути я не нашел.
3) При попытке сменить кодировку по умолчанию в настройках с UTF8 на cp1251 ничего не получалось, програма упорно все равно использовала utf8. Я прописал в ~/.dc++/EiskaltDC++.xml в строчку <default_locale type="string">cp1251</default_locale> нужную кодировку и она сменилась. Но в настройках опять сменить кодировку на другую не получилось.
4) Пока решал предыдущую проблему, возникла мысль почему конфиг лежит в ~/.dc++ а не например в ~/.config/eskailtdc
5) При попытке отменить загрузку в менеджере загрузок вылетает с ошибкой сегментирования.
6) Проблем с произвдительностью нету. Подключался к 3 хабам на одном из которых около 7тыс пользователей, процессор сильно не нагружался.
7) При нажатии на значок поиск появляется вкладка с поиском, в котором левая боковая понель имеется где есть настройки размера, и хабов в которых искать. При собственно поиске она пропадает и при новом поиске в этом же окне уже нет возможности задать размер и др. настройки поиска с этой панельки:(
8) Хотелось бы иметь возможность группировать результаты поиска.

А в целом мне очень понравился клиент, оставил его по умолчанию.

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

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

Сообщение RasenHerz »

alkesta писал(а):
10.02.2010 14:22
EiskaltDC и EiskaltDC++ продукты разные и имеют разные названия, потому использовать общую нумерацию для 2-х разных продуктов не логично.

Не многие linux`овые продукты имеют мажорную версию больше единицы, а тут девелопмент не имевший релиза, а уже 2.0!?

Может пока не было релиза, привести нумерацию к понятному общепринятому виду, типа 0.0.2.33

Большинство пользователей полагает, что EiskaltDC = EiskaltDC++, принятие нумерации 0.x.x.x при существующих релизах 0.4.10 - 1.41.0 вызовет, на мой взгляд, лишнюю путаницу. Продукты не разные - разные версии (никто не заставляет команиии вести разные версии для своих десктопных и серверных решений). Если вам удобно, можете принять EiskaltDC++-2.0alpha за EiskaltDC-1.90.0.

ksl87 писал(а):
10.02.2010 16:09
1) Имеется опечатка в "настройки" вкладка "загрузки" и там "директория незаПершенных загрузок"
2) вкладка "загрузить в" имеется но как добавит туда пути я не нашел.
3) При попытке сменить кодировку по умолчанию в настройках с UTF8 на cp1251 ничего не получалось, програма упорно все равно использовала utf8. Я прописал в ~/.dc++/EiskaltDC++.xml в строчку <default_locale type="string">cp1251</default_locale> нужную кодировку и она сменилась. Но в настройках опять сменить кодировку на другую не получилось.
4) Пока решал предыдущую проблему, возникла мысль почему конфиг лежит в ~/.dc++ а не например в ~/.config/eskailtdc
5) При попытке отменить загрузку в менеджере загрузок вылетает с ошибкой сегментирования.
6) Проблем с произвдительностью нету. Подключался к 3 хабам на одном из которых около 7тыс пользователей, процессор сильно не нагружался.
7) При нажатии на значок поиск появляется вкладка с поиском, в котором левая боковая понель имеется где есть настройки размера, и хабов в которых искать. При собственно поиске она пропадает и при новом поиске в этом же окне уже нет возможности задать размер и др. настройки поиска с этой панельки:(
8) Хотелось бы иметь возможность группировать результаты поиска.

1) Ок, поправим.
2) Это заглушка, функционал будет реализован в скором времени.
3) Поправили
4) Это дает возможность всем клиентам пользоваться едиными настройками dc++
5) Бывает, постараюсь в скором времени найти причину
6) -
7) Это уже обсуждалось, вытяните ее слева (она просто прячется чтобы не занимать место). Добавлю кнопку чтобы ее показывать
8) Сейчас есть группировка по TTH. Группировка по остальным критериям появиться чуть позже.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

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

Сообщение romkaromka »

RasenHerz писал(а):
10.02.2010 18:28
4) Это дает возможность всем клиентам пользоваться едиными настройками dc++

лучше все же разные директории для каждого клиента
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Chiron
Сообщения: 36
ОС: openSUSE 11.4 x86_64

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

Сообщение Chiron »

По-моему для EiskaltDC++ логичнее было бы сделать все-таки свою нумерацию версий, отличную от EiskaltDC. Но это ИМХО.
Спасибо сказали: