gentoo.ru
Официальная конференция Direct Connect клиента EiskaltDC++
eiskaltdc@conference.gentoo.ru
Вторник, 19 июля 2011< ^ >
dhamp установил(а) тему: Last stable release: 2.2.3 || Конференция разработчиков EiskaltDC++
Логи: http://gentoo.ru/jabber/logs/eiskaltdc@conference.gentoo.ru/2011/
Активность в багтрекере: http://code.google.com/p/eiskaltdc/updates/list
Активность разработки: http://github.com/negativ/eiskaltdcpp/network
Release schedule:
* 2011-09-18 Release EiskaltDC++ 2.2.4
TODO:
* IPv6 in DC++ Core
* JSON interface in EiskaltDC++ Daemon
ADC notes:
https://adc.svn.sourceforge.net/svnroot/adc/trunk/ADC.txt
https://adc.svn.sourceforge.net/svnroot/adc/trunk/ADC-EXT.txt
http://www.adcportal.com/wiki/ADC_Proposals_list
Git notes:
http://habrahabr.ru/blogs/development/68341/
http://dl.dropbox.com/u/281916/delete/book.pdf
JSON:
http://ru.wikipedia.org/wiki/JSON
http://en.wikipedia.org/wiki/JSON
http://en.wikipedia.org/wiki/JSON-RPC
JSON parser from Boost:
http://plaincodesource.blogspot.com/2011/03/json-c-boost.html
http://stackoverflow.com/questions/717618/simple-server-client-boost-example-not-working
HTTP and TCP client/server examples:
http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/examples.html
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:25] Клёк вышел(а) из комнаты
[00:00:33] <tehnick> pavelvat: а вот этого я тебе просто так объяснить не могу... =)
[00:01:32] <tehnick> Это даже забавно.
[00:01:41] <tehnick> Сейчас что-нибудь придумаю.
[00:01:58] <tehnick> У нас есть костюм робота.
[00:02:28] <tehnick> И не открыв его, ты не знаешь, если ли кто внутри.
[00:02:38] <tehnick> *не узнаешь
[00:03:20] <tehnick> Берем кто-то и примеряет этот костюм на людей.
[00:03:29] <tehnick> *Берет
[00:03:59] <tehnick> Ты знаешь, что когда отдавал костюм, он был пуст.
[00:04:13] <tehnick> Ты знаешь, что тебе вернули костюм.
[00:04:26] <tehnick> У тебя есть ссылка на костюм.
[00:04:28] <tehnick> node
[00:04:57] <tehnick> Ты хочешь узнать, вернули тебе пустой костюм (NULL) или с человеком внутри.
[00:05:28] <tehnick> И ты выполняешь операцию открытия костюма (get).
[00:05:52] <tehnick> В результате открытия костюма ты получаешь ссылку на объект внутри.
[00:06:15] <tehnick> Это может быть реальный Вася (не нуль) или пустота (ноль).
[00:06:33] <tehnick> А далее уже по обстоятельствам...
[00:06:35] <tehnick> =)
[00:06:43] <tehnick> pavelvat: наглядно вроде?..
[00:06:48] bangae вышел(а) из комнаты
[00:07:44] <tehnick> s/если ли кто внутри/есть ли кто внутри/
[00:07:52] <tehnick> Опечатки... =(
[00:09:19] <pavelvat> tehnick: ты заменил указатель node имеющий тип Node::Ptr на конструкцию node.get() которая возвращает что-то для указателя node и ты удверждаешь что логика не меняется.
а функция get явно не определена в классе Node, видимо она наследуется от другого класса, вот я тебя и спросил по сути что делает функция get() в применении к node.
[00:09:56] <tehnick> pavelvat: блин, ну посмотри ты на коммит раньше, а?
[00:09:59] <dhamp> [23:51:38] tehnick: dhamp: это ты посоветовал dyndns отключить
[23:51:47] tehnick: dhamp: и это ты его в ядро перенес...
а причём тут это ? - поиск работает - только вот нужно выставлять верный режим подключения и если активный режим -  верный ип - который вернётся с динднса,
[00:10:04] <tehnick> Был он этот get.
[00:10:44] <tehnick> dhamp: все, я понял. У него для локального хаба внешние настройки?..
[00:11:16] <pavelvat> tehnick:
if(node.get() != NULL)
и
if(node != NULL)
ты утверждаешь что это одно и тоже.
[00:11:30] <tehnick> pavelvat: нет же блин!
[00:11:42] <tehnick> pavelvat: ты коммиты посмотри!
[00:11:44] <tehnick> pavelvat: https://github.com/negativ/eiskaltdcpp/commit/5d5ef02
[00:12:08] <tehnick> pavelvat: я всего-лишь get переместил в другое место.
[00:12:19] <dhamp> возможно, есть ещё глюк с добавление результатов, когда результаты приходят в гуй шлются и видятся в дебаг выводе но на экране пустота, у меня один раз такое было при динамической смене дефолт режима подкл.
[00:12:43] <pavelvat> tehnick: а потом ты сделал так:
https://github.com/negativ/eiskaltdcpp/commit/03bdb586476d5523c706838c62f893b008b793a9
[00:12:51] <dhamp> [00:09:28] tehnick: dhamp: все, я понял. У него для локального хаба внешние настройки?..
а он где-то предоставил свои настройки ? )
[00:12:52] <tehnick> dhamp: а переподключение не происходит что ли?
[00:13:07] <dhamp> tehnick, это если не переподкл. к хабам
[00:13:08] tehnick вышел(а) из комнаты
[00:13:20] tehnick вошёл(а) в комнату
[00:13:30] <dhamp> bind или unbind на порты проходит динамически
[00:13:57] <dhamp> но возможно не обновляется инфа о клиенте на хабе,
[00:14:12] <tehnick> Айпишник же невалидный...
[00:14:13] <dhamp> то есть клиент шлёт её а хаб игнорит
[00:14:40] <dhamp> в целях "антиспама" так сказать
[00:14:45] <tehnick> Угу.
[00:14:53] <tehnick> Скорее всего именно так.
[00:15:07] <tehnick> pavelvat: увидел теперь? Все нормально?
[00:15:56] <pavelvat> tehnick: и даже если брать только твой первый коммит:
https://github.com/negativ/eiskaltdcpp/commit/5d5ef02
то раньше указателю node присваивался результат от взятия get(), а после твоих изменений происходит только вызов node.get() без присваивания его укзателю node
[00:16:11] <tehnick> Эх...
[00:16:33] <tehnick> Я такое красочное объяснение сочинил...
[00:16:34] <pavelvat> tehnick: прочитай выше
[00:16:37] <tehnick> Но без толку.
[00:17:25] <tehnick> pavelvat: get может быть применено только к объекту. Поэтому gcc посылал такой код полностью обоснованно.
[00:17:46] <pavelvat> tehnick: в каком файле определена функция get() применяемая к node - тогда сразу всё станет ясно.
[00:17:57] <dhamp> (eiskaltdcpp-gtk:18108): Gtk-CRITICAL **: IA__gtk_entry_set_text: assertion `text != NULL' failed
а вот это печально
[00:18:14] <tehnick> dhamp: о, и у тебя появилось?
[00:18:33] <tehnick> Это не после моих изменений в диалоге настроек.
[00:18:38] <tehnick> Оно было давно.
[00:18:57] <dhamp> tehnick, comboboxentry не пашут
[00:18:57] <tehnick> Я тебе писал уже...
[00:19:03] <tehnick> Э?
[00:19:15] <tehnick> dhamp: например?
[00:19:22] <dhamp> ты мне писал не про это вообще
[00:19:53] <tehnick> Кстати, да.
[00:19:55] <tehnick> (eiskaltdcpp-gtk:21435): Gtk-CRITICAL **: IA__gtk_box_reorder_child: assertion `GTK_IS_WIDGET (child)' failed
[00:19:58] <dhamp> на пример поиске предыдущую строку запроса  не выбрать
[00:20:02] <tehnick> Другая ошибка.
[00:21:51] <tehnick> pavelvat: это базовая операция (типа getInstance). Я не знаю как объяснить...
[00:22:53] <tehnick> pavelvat: и да, я писал уже: смотри пример использования get() выше в том же файле.
[00:22:59] <tehnick> Если мне не веришь...
[00:23:07] <tehnick> Поверь автору кода.
[00:24:27] <tehnick> dhamp: угу, странно
[00:24:44] <tehnick> Юзеры не оценят такую фичу...
[00:25:02] <tehnick> dhamp: ты проблему с обновлением файлов перевода смотрел?
[00:25:35] <pavelvat> tehnick:
"[00:11:04] <pavelvat> tehnick:
if(node.get() != NULL)
и
if(node != NULL)
ты утверждаешь что это одно и тоже.
[00:11:19] <tehnick> pavelvat: нет же блин!
[00:11:30] <tehnick> pavelvat: ты коммиты посмотри!
[00:11:33] <tehnick> pavelvat: https://github.com/negativ/eiskaltdcpp/commit/5d5ef02
[00:11:56] <tehnick> pavelvat: я всего-лишь get переместил в другое место."
но до твоего коммита там был просто node, а ты его заменил  на node.get()
т.е. ранше в if() было сравнение указателя node с указателем NULL, а теперь сравнение того что вернет node.get() с указателем NULL - так что же должна вернуть get?
[00:26:13] <pavelvat> конечный твой коммит вот
https://github.com/negativ/eiskaltdcpp/commit/5d5ef02
[00:26:36] <pavelvat> т.е. вот https://github.com/negativ/eiskaltdcpp/commit/03bdb586476d5523c706838c62f893b008b793a9
[00:26:43] <tehnick> pavelvat: да
[00:27:01] <tehnick> pavelvat: пример с костюмом прочитал?
[00:27:57] <tehnick> pavelvat: могу построчно попробовать объяснить
[00:28:34] <tehnick> pavelvat: https://github.com/negativ/eiskaltdcpp/blob/03bdb58/dht/KBucket.cpp#L125
[00:28:51] <pavelvat> tehnick: раз node.get() - указатель не совпадающий с node то поскольку node присваивалось значение не только в предыдущем if вот так:
node = (Node*)ClientManager::getInstance()->findDHTNode(u->getCID()).get();
но и раньше в коде, то ты не учитываешь старое значение node заменяя его на node.get()
[00:29:57] <tehnick> pavelvat: а нафига тебе старое значение node?
[00:30:19] <tehnick> Нужен именно node.get()
[00:30:37] <tehnick> А когда гет будет выполнен в коде --- не важно.
[00:31:06] <tehnick> Важно, что он будет выполнен до проверки условия внутри if.
[00:31:21] <tehnick> До произведения логической операции сравнения.
[00:31:35] <tehnick> Компилятору пофиг, где оно стоит.
[00:31:47] <tehnick> Отдельной строкой или внутри условия проверки.
[00:32:05] <tehnick> В итоговом бинарнике разницы вообще не будет.
[00:32:11] <pavelvat> tehnick: потому что в коде DHT из StrongDC++ стоит именно условие if(node != NULL), а не if(node.get() != NULL)
из-за того что node не обязательно было присвоено значение в предыдущем if - node может иметь старое значение присвоенное ему ранее в коде.
[00:33:15] <tehnick> pavelvat: понял, да.
[00:33:57] <pavelvat> tehnick:
"[00:30:07] <tehnick> Нужен именно node.get()"
это ещё почему - ведь в оригинале get() применяется только внутри этого:
if(node == NULL && u->isOnline())
{
// try to get node from ClientManager (user can be online but not in our routing table)
// this fixes the bug with DHT node online twice
node = (Node*)ClientManager::getInstance()->findDHTNode(u->getCID());
}
а ты теперь всегда применяешь get()  к node
[00:34:49] <tehnick> pavelvat: ага. Можешь вернуть к состоянию 5d5ef02, но я сомневаюсь, что это что-то изменит.
[00:35:11] <tehnick> pavelvat: если node был не ноль, гет вернет тот же объект.
[00:35:36] <tehnick> *ссылку на тот же объект
[00:37:36] <pavelvat> tehnick:
"[00:34:37] <tehnick> pavelvat: ага. Можешь вернуть к состоянию 5d5ef02"
нет, т.к. и это состояние тоже не правильное, потому что ранее было присваивание node результата:
(Node*)ClientManager::getInstance()->findDHTNode(u->getCID()).get()
а теперь просто вызов без присваивания:
node.get();
т.е. node не получит того значения которое было в оригинальном коде из StrongDC++
[00:37:39] amfetamin вышел(а) из комнаты
[00:37:49] amfetamin вошёл(а) в комнату
[00:50:43] <tehnick> > а теперь просто вызов без присваивания:
А вот тут ты неправ.
[00:51:00] <tehnick> Но зато я понял, в чем у тебя проблема.
[00:51:26] <tehnick> Я уже приводил пример оператора i++
[00:51:38] <tehnick> Но он изменяет значение переменной.
[00:51:49] <tehnick> И пример неудачный наверное.
[00:51:55] <tehnick> Зайдем с другой стороны.
[00:53:00] <tehnick> Есть операторы begin() и end(), которые возвращают ссылку на начало и конец списка.
[00:53:36] <tehnick> И есть операторы next() и prev(), которые возвращают ссылки на следующий и предыдущий элементы.
[00:54:09] <tehnick> get() тоже возвращает ссылку на конкретный объект.
[00:56:44] amfetamin вышел(а) из комнаты
[00:58:54] <pavelvat> tehnick: да get() возвращает ссылку, но вот в этом коммите до которого ты предлагаешь откатиться:
https://github.com/negativ/eiskaltdcpp/commit/5d5ef02
написано вот что:
node = (Node*)ClientManager::getInstance()->findDHTNode(u->getCID());
node.get();
а было вот это:
node = (Node*)ClientManager::getInstance()->findDHTNode(u->getCID()).get();
т.е. не сделано присваивание и node имеет не то значение которое было в оригинальном коде StrongDC++, надо вот так сделать:
node=node.get;
[00:59:29] <tehnick> Нет.
[00:59:53] <tehnick> get меняет указатель node
[01:00:43] <tehnick> pavelvat: т.е. твой вариант верен
[01:00:52] <tehnick> pavelvat: потому что он ничего не изменяет
[01:01:58] <tehnick> Я просто не дописал выше.
[01:02:13] <dhamp> [00:23:47] tehnick: dhamp: ты проблему с обновлением файлов перевода смотрел?
нет ещё
[01:02:17] <tehnick> next() и prev() узменяют сам указатель
[01:02:22] <tehnick> Так и гет...
[01:02:43] <pavelvat> tehnick:
"[00:59:41] <tehnick> get меняет указатель node"
ничего себе! а почему же функция тогда имеет имя get - ведь get-функции специально так именуют и обычно объявляют константными чтобы было ясно что функция только получает что-либо, но ничего не меняет. Для меняющих функций принято использовать set в имени.
[01:03:26] <tehnick> Хотя, я уже не помню, есть ли в STL функция next() или тупо ++указатель.
[01:04:42] <tehnick> pavelvat: не знаю, может быть прав ты.
[01:04:49] <tehnick> Но мне точно пора спать.
[01:04:56] <tehnick> Мозг уже в ауте.
[01:05:18] <tehnick> pavelvat: спроси кого-нибудь еще.
[01:05:28] <pavelvat> tehnick: а ты уверен, что get() действительно меняет node.
[01:05:31] <tehnick> pavelvat: я объяснил свою логику
[01:05:54] <tehnick> pavelvat: я смотрел по коду выше. В том же файле.
[01:06:17] <tehnick> pavelvat: и нет, я теперь не уверен.
[01:08:09] <pavelvat> tehnick: в классе Node нет определения get - она видимо наследуется, может эта функция вообще где-то в ядре через макрос генерится, надо будет найти и проверить.
[01:08:34] <dhamp> /usr/bin/xgettext: предупреждение: файл `../ui/favoriteusers.ui' имеет неизвестное расширение `ui'; трактуется как C
[01:10:47] pavelvat вышел(а) из комнаты
[01:12:02] <dhamp> tehnick, это всё из-за расширения....
[01:12:13] <tehnick> dhamp: о_О
[01:12:51] Клёк вошёл(а) в комнату
[01:15:24] <tehnick> Но называть их xml, как в некоторых примерах тоже как-то нехорошо...
[01:15:37] <tehnick> *.xmp
[01:15:42] <tehnick> *.xml
[01:15:50] <dhamp> tehnick, *.glade
[01:16:03] <dhamp> так сохраняются любые файлы
[01:16:05] <tehnick> Вот уж точно не glade..
[01:16:20] <dhamp> независимо от формата проекта libglade или gtkbuilder
[01:18:36] <dhamp> xgettext --keyword=translatable="yes" ../eiskaltdcpp-gtk/ui/hash.glade --output="-"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-19 01:17+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../eiskaltdcpp-gtk/ui/hash.glade:7
msgid "Indexing files..."
msgstr ""
#: ../eiskaltdcpp-gtk/ui/hash.glade:21
msgid "Run in background"
msgstr ""
#: ../eiskaltdcpp-gtk/ui/hash.glade:55
msgid "<b>Processing file:</b>"
msgstr ""
#: ../eiskaltdcpp-gtk/ui/hash.glade:124
msgid "<b>Statistics</b>"
msgstr ""
#: ../eiskaltdcpp-gtk/ui/hash.glade:155
msgid "Pause"
msgstr ""
как бы намекает
[01:19:13] <dhamp> хотя не, фейл =)
[01:19:28] <dhamp> если указать язык оно пашет и для ui
[01:21:47] Diger вышел(а) из комнаты
[01:22:20] <dhamp> $ make eiskaltdcpp-gtk_po
[  0%] Generating po/libeiskaltdcpp.pot.upd
/usr/bin/xgettext: ../FavoriteManager.cpp:1:1: not well-formed (invalid token)
[  0%] Generating po/libeiskaltdcpp_be.po.upd
[  0%] Generating po/libeiskaltdcpp_bg.po.upd
[  0%] Generating po/libeiskaltdcpp_cs.po.upd
[  0%] Generating po/libeiskaltdcpp_de.po.upd
[  0%] Generating po/libeiskaltdcpp_en.po.upd
[  0%] Generating po/libeiskaltdcpp_es.po.upd
[  0%] Generating po/libeiskaltdcpp_fr.po.upd
[  0%] Generating po/libeiskaltdcpp_hu.po.upd
[  0%] Generating po/libeiskaltdcpp_pl.po.upd
[  0%] Generating po/libeiskaltdcpp_ru.po.upd
[  0%] Generating po/libeiskaltdcpp_sr.po.upd
[  0%] Generating po/libeiskaltdcpp_sk.po.upd
[  0%] Generating po/libeiskaltdcpp_uk.po.upd
[  0%] Generating po/eiskaltdcpp-gtk.pot.upd
/usr/bin/xgettext: ../src/sound.cc:1:1: not well-formed (invalid token)
[  0%] Generating po/eiskaltdcpp-gtk_be.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_bg.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_cs.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_de.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_en.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_es.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_fr.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_hu.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_pl.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_ru.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_sr.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_sk.po.upd
[  0%] Generating po/eiskaltdcpp-gtk_uk.po.upd
[100%] Built target eiskaltdcpp-gtk_po
tehnick ^^
[01:22:43] <tehnick> dhamp: ?
[01:22:51] <dhamp> вот только не пашет нихера =)
[01:22:57] <tehnick> touch сделай для ui файлов
[01:23:05] <tehnick> И огребешь...
[01:24:33] <tehnick> dhamp: http://f-spot.org/GtkBuilder_Transition
[01:24:40] <tehnick> Step 2: From .glade to .ui
Open your new tmp.glade using glade-3.
Go to Edit -> Preferences and select toolkit version 2.12. Then click the execute button to verify for versions and deprecations. This should not give problems, if it does: talk to us, we'll probably need to fix some out-dated widgets. Generally, there should not be any problems though. Close preferences.
Go to File -> Save as and save your file into the src/ui/ folder, in GtkBuilder format. Name it with a .ui extension, e.g.: version_name_dialog.ui.
[01:24:52] <tehnick> Это что сейчас нагуглил.
[01:25:03] <tehnick> Но я читал раньше где-то в другом месте.
[01:25:09] <tehnick> Пример для gtk3.
[01:25:29] <tehnick> Что-то вроде "Hello world"
[01:26:13] <dhamp> tehnick, и как из них переводы дёргать ?
[01:26:32] <tehnick> А вот хрен его знает.
[01:26:44] <tehnick> Я потому и удивился, что дело в расширении...
[01:27:19] <dhamp> если явно указать язык пашет
[01:27:31] <tehnick> В документации они вообще пишут file.xml
[01:27:39] <dhamp> но вот как объяединить результаты нихера не понятно
[01:28:08] <tehnick> С расширением xml он прожевывает?
[01:28:48] <tehnick> http://developer.gnome.org/gtk3/3.0/gtk-getting-started.html
[01:28:53] <dhamp> да с любым
[01:28:56] <tehnick> builder.ui
[01:29:01] <tehnick> Епт...
[01:29:11] <dhamp> если явно указать я какого языка дёргаем
[01:29:38] <dhamp> для libglade и gtkbuider файлов это glade
[01:29:45] <dhamp> Glade*
[01:30:20] <tehnick> dhamp: да пофигу glade, какое расширение.
[01:30:29] <tehnick> Открывает нормально.
[01:30:48] <dhamp> tehnick, бля......
[01:30:52] <dhamp> ты не понял
[01:31:32] <dhamp> xgettext определяет как дёргать по указанному языку как аргументу, либо по расширению файла
[01:31:46] <dhamp> и ui он не занет
[01:31:48] <dhamp> знает*
[01:32:13] <tehnick> dhamp: теперь понял
[01:36:21] <tehnick> dhamp: ему в cmake можно аргументы передать
[01:38:12] <tehnick> In the actual Glade3 version (3.10) the GUI can be saved as .glade file (for libGlade) or as .ui file (for GtkBuilder). The later is the modern variant, supporting more features. GladeToBac generates code for both variants, depending on the suffix of the GUI-XML file.
[01:38:30] <tehnick> Короче, разброд и шатания в расширении файла.
[01:38:54] <tehnick> Для gtk3 часто встречается расширение .ui
[01:39:07] <tehnick> Я сейчас уже никакой.
[01:39:23] <tehnick> Предлагаю отложить проблему на следующий вечер.
[01:39:26] <tehnick> dhamp: ^^
[01:39:30] <tehnick> Всем пока.
[01:39:38] tehnick вышел(а) из комнаты
[01:47:10] tehnick вошёл(а) в комнату
[01:47:36] <tehnick> pavelvat: grep -r ' get(' ./dcpp/*.h
[01:47:42] tehnick вышел(а) из комнаты
[01:51:53] ubuntu11.04 вышел(а) из комнаты
[01:53:42] ubuntu11.04 вошёл(а) в комнату
[02:30:09] Клёк вышел(а) из комнаты
[02:33:28] dhamp вышел(а) из комнаты
[03:29:11] gray_graff/work вышел(а) из комнаты
[03:30:05] gray_graff/work вошёл(а) в комнату
[03:47:15] Alexey вышел(а) из комнаты
[04:02:10] Alexey вошёл(а) в комнату
[04:02:54] Alexey вышел(а) из комнаты
[08:07:49] ONYX вошёл(а) в комнату
[09:07:28] ONYX вышел(а) из комнаты
[09:14:07] ONYX вошёл(а) в комнату
[09:52:36] Diger вошёл(а) в комнату
[10:25:20] Diger вышел(а) из комнаты: Отключён
[10:30:59] ONYX вышел(а) из комнаты
[11:11:41] dhamp вошёл(а) в комнату
[11:14:17] dhamp вышел(а) из комнаты
[11:32:17] WiseLord вошёл(а) в комнату
[11:34:36] gray_graff вышел(а) из комнаты
[11:48:02] Tehnick вошёл(а) в комнату
[11:48:24] Tehnick вышел(а) из комнаты
[11:49:57] ONYX вошёл(а) в комнату
[11:56:50] Клёк вошёл(а) в комнату
[12:00:41] gray_graff/work вышел(а) из комнаты
[12:06:23] gray_graff/work вошёл(а) в комнату
[12:32:51] rzed вошёл(а) в комнату
[12:36:11] Клёк вышел(а) из комнаты
[12:37:25] Клёк вошёл(а) в комнату
[12:43:54] gray_graff/work вышел(а) из комнаты
[12:44:37] WiseLord вышел(а) из комнаты
[12:44:49] gray_graff/work вошёл(а) в комнату
[12:53:59] rzed вышел(а) из комнаты
[12:54:09] rzed вошёл(а) в комнату
[12:58:12] Клёк вышел(а) из комнаты
[12:59:38] Клёк вошёл(а) в комнату
[13:01:25] Diger вошёл(а) в комнату
[13:13:36] WiseLord вошёл(а) в комнату
[13:30:18] rzed вышел(а) из комнаты: <|> :ытанмок зи (а)лешыв dezr
[13:41:01] gray_graff/work вышел(а) из комнаты
[13:41:48] gray_graff/work вошёл(а) в комнату
[14:21:22] gray_graff/work вышел(а) из комнаты
[14:24:20] gray_graff/work вошёл(а) в комнату
[14:24:43] Клёк вышел(а) из комнаты
[15:23:12] Diger вышел(а) из комнаты: Отключён
[15:41:44] Alexey вошёл(а) в комнату
[15:50:06] gray_graff вошёл(а) в комнату
[16:10:17] ubuntu11.04 вышел(а) из комнаты
[16:34:00] dhamp вошёл(а) в комнату
[16:39:05] dhamp вышел(а) из комнаты
[16:42:31] ubuntu11.04 вошёл(а) в комнату
[17:12:02] FiliN вошёл(а) в комнату
[17:13:46] ONYX вышел(а) из комнаты
[17:14:40] Diger вошёл(а) в комнату
[17:41:11] WiseLord вышел(а) из комнаты
[17:51:33] gray_graff/work вышел(а) из комнаты
[17:52:24] gray_graff/work вошёл(а) в комнату
[18:25:32] FiliN вышел(а) из комнаты
[18:25:42] FiliN вошёл(а) в комнату
[19:34:41] rzed вошёл(а) в комнату
[19:44:32] gelraen вышел(а) из комнаты
[19:47:44] gelraen вошёл(а) в комнату
[19:51:02] gray_graff вышел(а) из комнаты
[19:59:43] gray_graff/work вышел(а) из комнаты
[20:02:57] gray_graff/work вошёл(а) в комнату
[20:05:38] FiliN вышел(а) из комнаты
[20:29:45] gray_graff/work вышел(а) из комнаты
[20:31:28] gray_graff/work вошёл(а) в комнату
[21:31:42] FiliN вошёл(а) в комнату
[21:41:21] gelraen вышел(а) из комнаты
[21:49:30] gelraen вошёл(а) в комнату
[21:58:26] gelraen вышел(а) из комнаты
[21:59:41] gelraen вошёл(а) в комнату
[22:00:19] FiliN вышел(а) из комнаты
[22:00:32] FiliN вошёл(а) в комнату
[22:01:08] FiliN вышел(а) из комнаты
[22:04:41] ONYX вошёл(а) в комнату
[22:05:31] FiliN вошёл(а) в комнату
[22:16:21] gray_graff/work вышел(а) из комнаты
[22:18:12] gray_graff/work вошёл(а) в комнату
[23:02:32] rzed вышел(а) из комнаты: <|> :ытанмок зи (а)лешыв dezr
[23:17:20] FiliN вышел(а) из комнаты
[23:18:52] FiliN вошёл(а) в комнату
[23:20:08] amfetamin вошёл(а) в комнату
[23:32:01] amfetamin вышел(а) из комнаты
[23:39:04] FiliN вышел(а) из комнаты
[23:42:10] FiliN вошёл(а) в комнату
[23:45:41] FiliN вышел(а) из комнаты
[23:45:51] FiliN вошёл(а) в комнату
[23:51:58] FiliN вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!