gentoo.ru
Официальная конференция Direct Connect клиента EiskaltDC++
eiskaltdc@conference.gentoo.ru
Четверг, 20 июня 2013< ^ >
Tehnick установил(а) тему: Конференция разработчиков EiskaltDC++ | Conference of EiskaltDC++ developers
Site: https://code.google.com/p/eiskaltdc/
Logs: http://gentoo.ru/jabber/logs/eiskaltdc@conference.gentoo.ru/2013/
Bug tracker: https://code.google.com/p/eiskaltdc/issues/list
Notes for developers: https://code.google.com/p/eiskaltdc/wiki/notes_for_developers
How To Ask Questions The Smart Way: http://catb.org/%7Eesr/faqs/smart-questions.html
Как правильно задавать вопросы: http://parallel.ru/cluster/smart-questions-ru.html
Last stable release: 2.2.7 (2012-05-29)
Release schedule:
* 2013-06-23 Release EiskaltDC++ 2.2.8
Конфигурация комнаты
Участники комнаты

GMT+4
[00:05:13] pavelvat вошёл(а) в комнату
[00:07:47] <pavelvat> Tehnick: в коммите https://github.com/eiskaltdcpp/eiskaltdcpp/commit/1b67bba1dabde37f0c7972c3536c9eb333e285de
некоторые строки (почти все кроме одного случая), которые не компилируются mingw-gcc-4.6 добавлены как новые а не вместо каких-то других старых.
[00:11:23] <Tehnick> pavelvat, ты что, не видишь интересующие тебя строки?
[00:11:55] dhamp вошёл(а) в комнату
[00:12:11] <Tehnick> pavelvat, ctrl+f --> '   case stringValue:'
[00:12:17] <pavelvat> Tehnick: там не сделать выбор, без того чтобы не продублировать эти строки
[00:12:36] <Tehnick> А лучше по std::st
[00:12:45] <pavelvat> они новые, их раньше не было, они не вместо старого кода
[00:12:49] <Tehnick> Не понял.
[00:12:58] <Tehnick> Можешь привести пример?
[00:13:43] <pavelvat> Tehnick:
#ifdef MINGW
старый код
#else
новый код
#endif
тут нет старого кода
[00:13:55] <pavelvat> только новый
[00:14:26] <soulhunter> да, раньше этих ф-ий просто не было и из-за неверного типизирования падал демон
[00:14:27] <Tehnick> pavelvat, надо сделать аналог
[00:15:05] <pavelvat> Tehnick: мне не надо
[00:15:13] <soulhunter> )
[00:15:13] <pavelvat> Tehnick: если хочешь делай
[00:15:58] <Tehnick> pavelvat, не надо? Хорошо. Я сразу писал, что сомневаюсь в полезности демона под виндой.
[00:16:49] <dhamp> <soulhunter> да, раньше этих ф-ий просто не было и из-за неверного типизирования падал демон
из-за того что кто-то отчаянно хотел накормить чем-то странным, а демон не хотел и делал "бряк", так вернее.
[00:17:21] <dhamp> pavelvat, ты хочешь собирать демон под винды, вот ты и делай, ага ?
[00:18:24] <pavelvat> dhamp: демон раньше собирался без этих строк и никто не жаловался, ну и теперь так будет
[00:18:31] <Tehnick> pavelvat, ты хотя бы нужную строку для #if выяснил?
[00:18:56] <Tehnick> pavelvat, дык никто не жаловался, потому что никто не использовал.
[00:19:21] <Tehnick> pavelvat, вот он пользователь демона ---> soulhunter
[00:19:31] <Tehnick> Но у него не винда...
[00:19:48] <dhamp> pavelvat, "раньше была трава зеленее и небо ярче, верните всё взад"
[00:20:05] <pavelvat> Tehnick: вот тут проблемы, надо что-то вроде этого, но этот вариант неправильный:
#ifdef __MINGW32__ && (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
[00:20:48] <Tehnick> pavelvat, ты проверил, что в mingw используется __GNUC__ ?
[00:20:59] <dhamp> pavelvat, #id defined(__MINGW32__) && defined(__GNUC__ == 4 && __GNUC_MINOR__ < 7)
[00:21:05] <dhamp> #if*
[00:21:12] <Tehnick> +1
[00:21:24] <pavelvat> Tehnick: тут бывал раньше один пользователь Windows который демона под Windows собирал, я даже как-то нашёл в поиске его сайт с каким-то интерфейсом для демона под Windows.
[00:22:09] <pavelvat> Tehnick: rzed кажется его ник был
[00:23:10] <soulhunter> dhamp, cli его хотел накормить странным, а не я, я через jsonrpc шлю все с нужными типами изначально
[00:23:37] <pavelvat> Tehnick: нет не проверил, да там наверное другая строка.
[00:23:44] <Tehnick> Кстати, надо баги в cli пофиксить.
[00:24:44] <Tehnick> [23:27:10] <pavelvat> Tehnick: rzed кажется его ник был
Гугл нашел всего две ссылки в логах нашей конфы.
[00:25:23] <Tehnick> Но там он только заходит и выходит...
[00:25:46] <Tehnick> pavelvat, так что ты решил с этим кодом делать?
[00:25:55] <Tehnick> Там всего 6 мест поправить надо.
[00:26:38] <soulhunter> dhamp, я предлагал поправить cli и сделать жетские требования по типам входящих данных, но в итоге же решили с кастингом сделать
[00:27:07] <pavelvat> Tehnick: просто через #ifdef __MINGW__ без версий,
[00:27:46] <Tehnick> __MINGW32__
[00:28:02] <soulhunter> я вообще плохо понимаю смысл демона под виндоус, но чем черт не шутит, ведь и хостинги на винде есть :)
[00:28:41] <pavelvat> Tehnick: там после исправления этих шести мест, появилось ещё в utility.cpp нет декларации «stoll» в этой области видимости
спасибо dhamp за c++11
[00:29:28] <Tehnick> pavelvat, загуглил, __GNUC__ есть под mingw
[00:29:48] <dhamp> pavelvat, всё для слоупоков
[00:29:55] <pavelvat> Tehnick: так кода то старого нет, там только новый код с c++11
[00:30:24] <pavelvat> Tehnick: так что нет смысла проверять версии
[00:30:36] <Tehnick> pavelvat, он все правильно сделал. Просто пока рано увеличивать требования к компилятору.
[00:30:52] <Tehnick> pavelvat, короче, забей.
[00:30:57] <Tehnick> pavelvat, я сам сделаю.
[00:31:09] <Tehnick> Дольше с тобой обсуждаем.
[00:31:26] <pavelvat> Tehnick: компилятор gcc-4.6 под Linux справляется с компиляцией json, тут дело в том что mingw-gcc-4.6 != gcc-4.6
[00:31:27] <dhamp> Tehnick, забей и не делай - пусть мучается =)
[00:33:43] <Tehnick> pavelvat, еще раз: у нас в минимальных требованиях не gcc >= 4.6, а 4.4.x
[00:34:00] <Tehnick> И там этого запросто может не быть.
[00:34:15] <Tehnick> Да и в старом шланге этого точно нет.
[00:34:37] <pavelvat> Tehnick: требованиях к чему? к демону или к Qt-интерфейсу?
[00:34:46] <dhamp> Tehnick, т.к. gcc44 тупо не собирается на archlinux current, то gcc up to 4.6.x
[00:34:54] <Tehnick> pavelvat, ко всему, кроме Qt морды.
[00:35:28] <Tehnick> dhamp, чо-чо? Это ни разу не критерий.
[00:35:55] <dhamp> Tehnick, ну тады велосипедь сам )
[00:36:18] <pavelvat> Tehnick: так ведь dhamp использовал там функции из c++11, разве gcc-4.4 уже их умел?
[00:38:44] <Tehnick> dhamp, вот после этого релиза, займемся переработкой кода, повыбрасываем часть костылей, бампнем зависимости...
[00:39:09] <Tehnick> pavelvat, я не в курсе. Я не нашел этого в гугле.
[00:39:39] <Tehnick> По крайней мере наскоком.
[00:49:25] pavelvat вышел(а) из комнаты
[00:50:39] <Tehnick> Фикс тривиальный.
[00:50:54] <Tehnick> Только зря кучу времени на флуд в конфе убили.
[00:51:02] <Tehnick> Это контрпродуктивно.
[00:59:59] <Tehnick> soulhunter, с тебя проверка сборки и запуска демона в макоси. Думаю, это проще, чем Qt-морду собрать.
[01:02:04] <soulhunter> для меня да ) ну и в генте еще раз все проверю, давно не собирал из мастера. Завтра днем
[01:16:51] pavelvat вошёл(а) в комнату
[01:18:05] <pavelvat> Tehnick: #if defined(__MINGW32__) && defined(__GNUC__ == 4 && __GNUC_MINOR__ < 7)
defined опряделяет определена ли переменная а там сравнение с целой константой.
[01:18:29] <Tehnick> pavelvat, см. последний коммит.
[01:18:37] <pavelvat> z tuj b cvjnh.
[01:18:41] <pavelvat> я его и смотрю
[01:19:44] <Tehnick> pavelvat, https://github.com/eiskaltdcpp/eiskaltdcpp/commit/b08335c
[01:24:51] <pavelvat> Tehnick: я пробовал почти в таком же виде только у меня было так:
#ifdef __MINGW32__ && (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
а у тебя так:
#if defined(__MINGW32__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
мне казалось это одно и тоже.
[01:25:32] <pavelvat> Tehnick: http://pastebin.com/2a52Vhna
[01:28:31] <Tehnick> pavelvat, ок
[01:34:25] <pavelvat> Tehnick: DHT в DC++ использует TCP, а не UDP.
[01:35:43] <dhamp> pavelvat, bootstrap - tcp, непосредсвенно сам dht udp
[01:35:54] <Tehnick> pavelvat, кхм...
[01:36:01] <dhamp> pavelvat, или ты умеешь по tcp слать broadcast ?
[01:36:49] <pavelvat> тот порт для DHT который надо задавать в настройках клиента - это TCP порт.
[01:37:11] <dhamp> pavelvat, не неси чушь
[01:38:40] <Tehnick> log(str(F_("The %1% interface has failed to map the %2% %3% port") % impl.getName() % "UDP" % dht_port));
[01:39:06] <Tehnick> if(dht_port != 0 && !impl.open(dht_port, UPnP::PROTOCOL_UDP, str(F_(APPNAME " DHT Port (%1% UDP)") % dht_port))){
[01:39:13] <Tehnick> И т.п. в ядре.
[01:44:18] <pavelvat> dhamp:
"bootstrap - tcp, непосредсвенно сам dht udp" - но у меня в роутере проброшен порт для DHT только TCP.
[01:45:29] <Tehnick> pavelvat, грепни ядро по dht_port
[01:46:25] <Tehnick> И с очередью поиска тоже проблема на UDP порту была.
[01:46:30] <dhamp> pavelvat, bootstrap вообще не требует проброски портов, а ты лопухнулся с пробросом, если конечно iptables на роутере у тебя вообще отличает протоколы
[01:47:27] <pavelvat> отличает, там выбор TCP, UDP или both, у меня стоит TCP
[01:48:15] <pavelvat> я уже плохо помню, но когда запиливал DHT мне казалось что нужен был именно TCP порт для DHT.
[01:49:22] <pavelvat> Tehnick: демон собрался под Windows.
[01:49:39] <dhamp> pavelvat, без выхлопа iptables -L && iptables -L -t nat разговор ни о чём
[01:49:46] <Tehnick> pavelvat, хорошо.
[01:50:39] <Tehnick> Всем пока.
[01:50:43] Tehnick вышел(а) из комнаты
[01:52:34] pavelvat вышел(а) из комнаты
[05:57:41] dhamp вышел(а) из комнаты
[06:35:04] soulhunter вышел(а) из комнаты
[06:49:09] Diger вошёл(а) в комнату
[07:41:29] flylinkdc вошёл(а) в комнату
[08:05:37] <flylinkdc> Всем доброе утро
[08:17:16] <flylinkdc> Мы тут у себя решили попробовать в CID ClientManager::makeCid убрать приведение ника к нижнему регистру. string n = Text::toLower(aNick);
[08:17:53] <flylinkdc> тут подробнее - http://code.google.com/p/flylinkdc/source/detail?r=14247
[08:18:13] <flylinkdc> кто следит за ядром - может найдете скрытый побочный эффект.
[08:57:31] soulhunter вошёл(а) в комнату
[09:04:28] mars1an вошёл(а) в комнату
[09:12:30] Diger вышел(а) из комнаты: Replaced by new connection
[09:12:40] Diger вошёл(а) в комнату
[09:54:34] Alexey вошёл(а) в комнату
[11:55:59] soulhunter вышел(а) из комнаты
[12:25:41] dhamp вошёл(а) в комнату
[12:54:17] <dhamp> flylinkdc, скорее всего не будет скрытых эффектов
>в DC регистр же не учитывается хаб не пустит двух ников с одинаковыми никами но разными по регистры (хотя надо проверить )
всё nmdc хабы точно не пустят если соответсвуют стандарту и только для nmdc данная функция и зовётся, для создания fakecid, adc работает несколько иначе. что собственно в issue и написано.
[12:57:28] <flylinkdc> подробнее про не пустят?
[13:02:00] <flylinkdc> т.е. считаешь что можно без проблем убрать toLower?
[13:02:07] <dhamp> flylinkdc, такой юзер уже есть и он на хабе не зареген, кикнет с сообщением что такй ник уже на хабе есть, если зареген будет просить пароль
[13:02:25] <flylinkdc> CID фейковый изменится но он ведь юзается только внутри для кей мапы менеджера
[13:02:55] <flylinkdc> я под профайлером это преобразование видел в хот-поинтах. когда на хабах по 20-40 тыщ юзеров
[13:03:11] <flylinkdc> все их ники прокидываются через Lower
[13:03:39] <flylinkdc> Еж уже  выкинул :) https://code.google.com/p/flylinkdc/source/detail?r=14255#
[13:04:14] <flylinkdc> но думаю что-то что-то сломается
[13:04:24] <dhamp> flylinkdc, у нас ядерный юзерлист уже давненько case-sensitive
[13:05:09] <dhamp> flylinkdc, пока ничего не выплыло
[13:05:11] <flylinkdc> CID ClientManager::makeCid(const string& aNick, const string& aHubUrl) const noexcept {
    string n = Text::toLower(aNick);
[13:05:18] <flylinkdc> вот ваш код
[13:05:24] <flylinkdc> от 17 числа
[13:05:31] <flylinkdc> зачем тут toLower?
[13:05:41] <flylinkdc> тоже выкините?
[13:06:38] <dhamp> flylinkdc, я несколько про другой код говорил )
[13:06:50] <dhamp> flylinkdc, это тоже выкинем
[13:07:48] <dhamp> flylinkdc, только до релиза или после пока не знаю
[13:08:30] <flylinkdc> лчше после релиза
[13:09:04] <flylinkdc> мы пока это у себя погоняем.
[13:15:29] <dhamp> flylinkdc, странная у вас функция findLecacyUser
[13:15:36] <dhamp> Legacy*
[13:25:07] <flylinkdc> сейчас сравню с вашей
[13:31:57] <flylinkdc> она у нас со стронга. ваша же осталась со старого кода - r4xx
[13:34:23] <dhamp> flylinkdc, ваша быстрее ? )
[13:35:51] <flylinkdc> конечно
[13:35:57] <flylinkdc> Util::stricmp(ou->getIdentity().getNick(), aNick)
[13:36:07] <flylinkdc> вот эта штука лезет в мапу для получения ника
[13:36:11] <flylinkdc> + там мютекс
[13:36:18] <flylinkdc> и это на каждом юзере
[13:36:29] <flylinkdc> а вот эта команда ou->getUser()->isSet(User::NMDC)
[13:36:37] <flylinkdc> ищет только по NMDC
[13:37:22] <flylinkdc> т.е есл юзера на ADC то его функция не найдет...
[13:37:28] <flylinkdc> это уже логически баг наверно
[13:37:39] <flylinkdc> а что странного ты увидел в нашей функции?
[13:37:46] <flylinkdc> точнее в стронговской
[13:39:58] <dhamp> flylinkdc, только то что отдельный map по юзерам
[13:40:18] <flylinkdc> так было в строге.
[13:40:29] <flylinkdc> счас гляну для чего он еще юзается
[13:41:57] <flylinkdc> спасибо что заметил. по моему эту мапу можно похерить
[13:42:10] <flylinkdc> у нас ник в юзере лежит и достается тоже без блокировки
[13:42:32] <flylinkdc> вечером по дифам гляну когда стронг это добавил и зачем
[13:46:25] <flylinkdc> хм. у вас в коде тоже есь NickMap nicks;
[13:47:34] <flylinkdc> но хранение даже сложнее. с парой и флажком
typedef std::pair<std::string, bool> NickMapEntry;
typedef unordered_map<CID, NickMapEntry> NickMap;
[13:48:27] <flylinkdc> в DC++ аналогично
[13:48:29] <dhamp> flylinkdc, эта функция зовётся в 2 местах в SearchManager.cpp
там код такого вида
        from = ClientManager::getInstance()->findUser(nick, url);
        if(!from) {
            // Could happen if hub has multiple URLs / IPs
            from = ClientManager::getInstance()->findLegacyUser(nick);
            if(!from) {
                dcdebug("Search result from unknown user");
                return;
            }
        }
то есть если мы внезапно не нашли юзера по cid, зовём эту тормоз функцию и ищем
[13:48:43] <dhamp> у нас по крайней мере
[13:49:31] <flylinkdc> я думаю у нас так-же
[13:50:04] <flylinkdc> так-же.
[13:50:22] <flylinkdc> тогда забейте
[13:50:26] <flylinkdc> оно не часто зовется
[13:50:41] <flylinkdc> а вот мапа ников помоему лишняя
[13:50:59] <flylinkdc> подробнее посомтрю вечером
[13:51:38] <flylinkdc> у вас флаг юзается для сохранения юзера
[13:51:39] <flylinkdc> void ClientManager::saveUser(const CID& cid) {
    Lock l(cs);
    auto i = nicks.find(cid);
    if(i != nicks.end())
        i->second.second = true;
}
[13:51:44] <flylinkdc> не знаешь что это?
[13:51:52] <flylinkdc> куда и зачем он сохраняется?
[13:51:58] <flylinkdc> в строге такого кода вообще нет
[13:52:28] <dhamp> flylinkdc, в @user_config@/Users.xml
[13:53:46] <dhamp> flylinkdc, у нас этого xml нет, для чего оно не помню
[13:54:34] <flylinkdc> в коде файл есть void ClientManager::saveUsers() const
[13:55:01] <flylinkdc> и зовется метод ClientManager::getInstance()->saveUsers();
[13:55:12] <flylinkdc> мертвяк?
[13:56:35] <dhamp> string getUsersFile() const { return Util::getPath(Util::PATH_USER_LOCAL) + "Users.xml"; }
оно у нас в локале
[13:57:09] <dhamp> cat ~/.local/share/eiskaltdc++/Users.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Users>
    <User CID="SXADQM2WKXKK5RCKBEN5M5IXO3P63XXHZNNDSGI" Nick="ellgrassa"/>
    <User CID="ECVASR6Q5CX7QV33TQAYVR3BLPSWBLQ3CWO5ZHY" Nick="Bismark88"/>
    <User CID="HGZWGKJXT2RKCDAXM3A5AX2T3PU6PZD6LV6L6LQ" Nick="deimos"/>
    <User CID="J2PP2MFG4AWPHADPJCRG2EOJZL5AHGBN7SW4PZI" Nick="DEn4ikkkkk"/>
</Users>
[13:57:24] <dhamp> flylinkdc, вот как-то там оно выглядит
[13:58:42] <flylinkdc> т.е. у вас этот файл создается?
[13:58:49] <flylinkdc> а накой он ты не знаешь?
[13:59:13] <flylinkdc> я нашел зачем эта мапа ников - она чтобы собирать ники офлан-юзеров. юзается тут - StringList ClientManager::getNicks
[14:44:19] Tehnick вошёл(а) в комнату
[14:44:33] <Tehnick> Такой файл есть и активно обновляется.
[14:45:13] <Tehnick> $ grep CID  ~/.local/share/eiskaltdc++/Users.xml| wc -l
30
[14:50:11] <Tehnick> dhamp: если хочешь начать все ломать, можно не ждать релиз. Создай ветку 2.3.x и дерзай.
[14:51:00] <Tehnick> dhamp: только ui файлы для gtk-морды не стоит в glade редактировать: он их изуродует до неузнаваемости
[14:53:22] <Tehnick> dhamp: а если большие изменения планируются в ядре (например, поддержка ipv6), то имеет смысл сразу ветку 3.0.x создавать...
[14:55:03] <dhamp> Tehnick, зачем? если есть локальные ветки ? )
thinkpad :: work2/c/eiskaltdcpp ‹my*› » git branch
  2.2.x
  dcppsyncv2
  dcppsyncv3
  dcppsyncv4
  ipfilter
  master
* my
[14:55:06] <flylinkdc> а зачем юзается Users.xml кто знает?
[14:56:07] <Tehnick> dhamp: очевидно, чтобы это было не только тебе доступно. Может я тоже хочу все поломать... =)
[14:57:08] <flylinkdc> +1 и мы посмотрим
[14:57:17] <flylinkdc> вдруг что стырим вкусное :)
[14:57:36] <Tehnick> dhamp: кстати, к содержимому файла TODO возражения/предложения есть?
[15:03:26] <dhamp> Tehnick, * Improve Lua support. - это вообще о чём ?
[15:04:51] <dhamp> Tehnick, кстати такой вопрос, в dc++ запили плагины - нужны или нафиг ?
[15:05:52] <Tehnick> dhamp: это в общем. Там у юзеров что-то не работало. Надо будет разобраться. И диалог для отладки в Qt морде мне с этим поможет.
[15:06:37] <Tehnick> dhamp: для чего там плагины? о_О
[15:06:59] <Tehnick> dhamp: они в ядро их запилили?..
[15:07:05] <dhamp> Tehnick, да
[15:07:15] <Tehnick> Епт.
[15:07:28] <dhamp> Tehnick, зайди на sf.net да посмотри
[15:07:29] <Tehnick> Нет, я не думаю, что нам это нужно.
[15:07:37] <Tehnick> Ссылку?
[15:08:07] <Tehnick> Какой хоть фукнционал эти плагины добавляют?
[15:08:11] <dhamp> http://sourceforge.net/projects/dcplusplus/files/Plugins/
[15:08:14] <dhamp> Tehnick,
[15:08:21] <dhamp> вот и смотри какой функционал
[15:09:09] <Tehnick> Ничего полезного не вижу.
[15:09:14] <Tehnick> Хрень какая-то.
[15:10:39] <Tehnick> Интересно, разработчик DC++ еще не отказался сделать из своего клиента соц.сеть?..
[15:10:51] <Tehnick> *отказался от идеи
[15:12:59] <dhamp> Tehnick, а где было написано что они это хотят сделать ?
[15:17:33] Diger вышел(а) из комнаты
[15:19:02] Diger вошёл(а) в комнату
[15:19:15] <Tehnick> Уже не помню. Надо гуглить.
[15:21:00] Diger вышел(а) из комнаты
[15:21:21] Diger вошёл(а) в комнату
[15:25:20] <Tehnick> dhamp: https://dcpp.wordpress.com/2009/07/16/network-of-the-future-next-level-filesharing/
[15:37:56] Tehnick вышел(а) из комнаты
[15:39:01] Tehnick вошёл(а) в комнату
[15:40:43] <Tehnick> dhamp: "...Повышение системных требований обусловлено прекращением поддержки в Chrome и Chromium старых версий библиотеки GTK+, ниже версии 2.24..."
[15:41:03] <Tehnick> dhamp: предлагаю со следующего релиза поступить так же.
[15:41:04] <dhamp> Tehnick, и к чему это?
[15:41:18] <dhamp> Tehnick, хочешь дропнуть gtk2 ?
[15:41:31] <Tehnick> Нет.
[15:41:34] <Tehnick> См. выше.
[15:41:49] <Tehnick> Убрать поддержку более старый версий.
[15:42:08] <Tehnick> В релизе 2.24.0 было много изменений.
[15:42:13] <dhamp> Tehnick, у нас и так поддерживается только gtk2 версии 2.24
[15:42:33] <dhamp> если кто-то умидрился собрать на меньшей версии
[15:42:35] <dhamp> его дело
[15:42:48] <Tehnick> Эм.
[15:43:41] <Tehnick> Ок.
[15:43:45] <dhamp> Tehnick, или ты где то нашёл GTK_CHECK_VERSION(2,x,x)?
[15:44:06] <Tehnick> Нет.
[15:44:47] <dhamp> Tehnick,
в INSTALL уже давненько
:eiskaltdcpp-gtk:
-----------------
gettext
libpango
libgtk2 (>= 2.24)
libglib2 (>= 2.24)
[15:45:08] <Tehnick> Я забыл, когда мы бампнуть успели.
[15:45:54] <dhamp> Tehnick, на версии 2.2.5
[15:46:13] Diger вышел(а) из комнаты
[15:46:13] <Tehnick> Давно это было...
[15:46:33] <Tehnick> А новость про хром только сейчас прочитал.
[15:49:37] Tehnick вышел(а) из комнаты
[16:04:03] soulhunter вошёл(а) в комнату
[16:36:28] <dhamp> flylinkdc,
не подскажешь в чём разница
@@ -274,3 +272,3 @@ wchar_t toLower(wchar_t c) noexcept {
#ifdef _WIN32
-        return static_cast<wchar_t>(reinterpret_cast<ptrdiff_t>(CharLowerW((LPWSTR)c)));
+        return LOWORD(CharLowerW(reinterpret_cast<LPWSTR>(MAKELONG(c, 0))));
#else
[16:54:03] Diger вошёл(а) в комнату
[17:05:55] soulhunter вышел(а) из комнаты
[17:21:55] flylinkdc вышел(а) из комнаты
[17:30:43] flylinkdc вошёл(а) в комнату
[17:59:17] mars1an вышел(а) из комнаты
[18:09:27] Кирилл вошёл(а) в комнату
[21:31:30] flylinkdc вышел(а) из комнаты
[21:31:43] flylinkdc вошёл(а) в комнату
[21:50:47] Nikoli вышел(а) из комнаты
[21:52:51] Nikoli вошёл(а) в комнату
[22:10:51] Alexey вышел(а) из комнаты
[22:37:35] Tehnick вошёл(а) в комнату
[23:22:05] Кирилл вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!