Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 27 июля 2011< ^ >
gds установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:13:36] ftrvxmtrx вышел(а) из комнаты
[00:16:04] ermine прочитала ругательства в адрес ocsigen http://blog.dbpatterson.com/post/7327834768 и ничо не поняла
[00:16:33] <ermine> там кстати хаскиль опять всуе упоминается
[00:16:52] <zert> http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-or-erlang-is-ghetto.html
https://groups.google.com/forum/#!msg/erlang-programming/w9L2tRYl6FE/38e8_IWQjB4J
[00:16:58] <zert> вот ещо набросы
[00:17:14] <gds> Typhon: интересно, но.. это же читать надо?!!  :]
[00:17:39] <gds> кстати, есть ссылка на весь выброс от мекрософта?
[00:18:48] ermine перекрестила gds от греха подальше
[00:18:53] <bobry> черт, комары задрали <_<
[00:19:20] <gds> ermine: да, чукча не читатель, чукча писатель!
[00:19:41] <bobry> кстати присоединяюсь к просьбе gds
[00:20:49] <ermine> ну насчет любви мелкософта к SML понятно - есть у них в .net такой SML....
[00:22:38] <ermine> давайте уже наконец с камла куданить валить
[00:22:45] <ermine> пока ygrek спит
[00:23:04] <bobry> что то у ermine совсем фатальные настроения последние две недели <_<
[00:23:44] <ermine> полная разочаровуха
[00:23:45] <gds> чтобы было идиально, надо на х-е сделать интерпретатор лиспа, куда добавить эрланговскую параллельность, и компилять это всё в llvm.
[00:24:09] gds пошол от греха подальше
[00:24:13] gds вышел(а) из комнаты
[00:24:14] <bobry> gds: где же место для камля ..
[00:24:17] <ermine> вон еще пост про оксиген добавил депресняка
[00:26:25] <Typhon> gds, Feed URL: http://research.microsoft.com/rss/publications.xml , а не вебне не могу найти, где бы они списком валялись. http://research.microsoft.com/en-us/research/default.aspx тут где-нибудь в корестностях можно поискать.
[00:27:27] <ermine> bobry: камло - это субстанция посередине Цэ и хаскилем
[00:29:38] zert вышел(а) из комнаты
[00:29:52] <ermine> у хаскиля были целые комитеты академиков, которые делали стандарт, а у камла что?
[00:30:36] <bobry> а у камла инрия :(
[00:31:08] <bobry> кстати стандарта то ни в какой форме нет?
[00:31:13] <bobry> как haskell'98 например
[00:31:24] <ermine> да какая инрия
[00:31:41] <ermine> это авторский проект
[00:32:05] <bobry> howcome?
[00:32:18] <ygrek> инрия, ага. студенческая поделка от пяти человек
[00:32:45] <bobry> hrm hrm, что это меняет, в принципе та
[00:33:22] <ygrek> ничего менять и не нужно
[00:48:53] <komar> ermine: я тоже ничего не понял. Что ли ниасилил ocamlfind ocamlopt -thread -g -package ocsigen.server,ocsigen.ext.ocsipersist-sqlite,ocsigen.ext.eliom,ocsigen.ext.eliom_duce,ocsigen.ext.staticmod $(LIB) $^ -o $@ -linkpkg $(NATIVEOPTS)
[00:55:18] ygrek вышел(а) из комнаты
[01:52:14] <ermine> komar: не, там какая-то проблема с динамической загрузкой нативных модулей в оксигень, и пчу-то у него возникают проблемы с сервисами
[01:53:11] ermine почитала еще чуток про хаскиль и порадовалась мудрости академиков
[01:53:15] ermine вышел(а) из комнаты
[03:43:22] ftrvxmtrx вошёл(а) в комнату
[05:04:34] komar вышел(а) из комнаты
[05:11:16] komar вошёл(а) в комнату
[05:12:11] zinid вошёл(а) в комнату
[05:56:06] komar вышел(а) из комнаты
[06:57:31] delete_ вошёл(а) в комнату
[08:27:18] bobry вышел(а) из комнаты
[08:32:21] gds вошёл(а) в комнату
[09:22:33] zinid вышел(а) из комнаты
[09:22:42] zinid вошёл(а) в комнату
[09:24:01] zinid вышел(а) из комнаты
[09:24:12] zinid вошёл(а) в комнату
[09:24:52] zinid вышел(а) из комнаты
[09:25:03] zinid вошёл(а) в комнату
[09:49:23] zinid вышел(а) из комнаты
[09:50:13] <Typhon> """ermine: у хаскиля были целые комитеты академиков, которые делали стандарт""" у цэплюсплюс тоже целые комитеты были
[09:51:42] zinid вошёл(а) в комнату
[10:05:56] Typhon вышел(а) из комнаты
[10:29:57] <bobry-> хах
[10:40:36] zinid вышел(а) из комнаты
[10:40:49] zinid вошёл(а) в комнату
[10:52:21] zinid вышел(а) из комнаты
[10:52:31] zinid вошёл(а) в комнату
[11:15:05] <bobry-> на тему х-ля http://www.reddit.com/r/programming/comments/7s948/can_someone_explain_finger_trees_without/c079emt
[11:24:18] ermine вошёл(а) в комнату
[11:34:24] Typhon вошёл(а) в комнату
[11:36:48] shaggie вошёл(а) в комнату
[11:40:06] <gds> Typhon: асилил микрософтовский фид, по крайней мере будущие новости буду видеть.  удивлён -- чото дофига разрабатывают и в слишком разных областях.
[11:41:49] <bobry-> товарищи, а есть какие нить общепринятые имена для функций из Int32/64?
[11:41:58] <bobry-> ++ ** // ?
[11:42:09] <Typhon> из недавнего ещё http://research.microsoft.com/apps/pubs/default.aspx?id=151805 приглянулсоь по названию и абстракту.
[11:42:34] <gds> Typhon: во, я как раз это знакомому хаскелюге закинул, нехай почитает, мне расскажет потом :)
[11:44:40] <Typhon> а разрабывают да, много, даже всякие экологичные штуки типа источников энергии проскакивали
[11:45:03] <gds> bobry-: мне хватает чего-то типа Int32_ops_as_float, где переопределяются +. операторы.  Иногда можно использовать Int32.(1 + 2)  (не знаю, сработает ли "из коробки", навряд ли, но всегда можно определить нужный модуль Int32, чтобы сработало).
[11:45:57] <bobry-> хм, из коробки такого нету, но идея здравая, мерси
[11:46:19] <gds> а как её реализовать -- в целом понятно?
[11:46:49] <gds> кстати, есть pa_do, он такие штуки (и лучше!) умеет сразу.
[11:47:03] <bobry-> как *красиво* реализовать не очень, а так можно ведь просто let (+.) = Int32.add etc
[11:47:08] <bobry-> pa_do это для монад чтоле?
[11:47:53] <bobry-> ох какая кошерная штука
[11:55:11] <gds> красиво --
module Int32 = struct
include Int32;
value ( + ) = Int32.add;
value ( * ) = Int32.mul;
...
end
[11:55:33] <gds> pa_do -- она такая.  Только вот раньше было геморно её собирать-ставить.
[11:55:58] <bobry-> ну, в арче ее нет :)
[11:56:10] <bobry-> кстати почему Int32.add, если мы делаем include?
[12:00:00] <gds> да, логично, можно/лучше и без "Int32."
[12:02:33] <ermine> сила привычки
[13:10:52] ftrvxmtrx вышел(а) из комнаты
[13:15:16] komar вошёл(а) в комнату
[13:22:46] klapaucius вошёл(а) в комнату
[13:29:54] <bobry-> товарищи, подскажите почему так:
Error: No implementations provided for the following modules:
         Str referenced from src/icmp.cmx
[13:29:59] <bobry-> Str же из stdlib'a
[13:32:52] <bobry-> ouch: «Although str is part of the standard distribution, it is not part of the standard library. Thus, it still has to be linked explicitly.»
[13:34:48] zert вошёл(а) в комнату
[13:36:04] <komar> -package str
[13:36:14] <komar> И вообще, выкинь его.
[13:36:17] <komar> Он кака.
[13:36:50] <bobry-> что то не понятно куда и что надо написать, что бы setup.ml сгенерированный oasisом линковался с str
[13:36:50] <komar> Возьми глобальный и надежный pcre, или олдскульный scanf, или наакадемничай кобинаторов.
[13:37:06] <bobry-> да йома, мне там пара функций нужна -- строку порезать
[13:37:21] <komar> String.nsplit?
[13:43:14] <ermine> хаскиль1
[13:43:19] <ermine> !
[13:43:35] <ermine> bobry-: а что ты решил написать на камле?
[13:43:40] <bobry-> komar: выпилил таки
[13:43:56] <bobry-> решил причесать icmp кусочек из вики, и добавить туда поддержку icmpv6
[13:45:56] <ermine> ну давай борись...
[13:46:02] <f[x]> BuildDepends: str
[13:46:16] <bobry-> f[x]: почему то не помогло
[13:46:27] <f[x]> oasis setup делал?
[13:46:48] <bobry-> у меня setup-dev, по идее он при каждом make setup вызывает
[13:46:56] <bobry-> в общем то уже и не важно :)
[14:00:37] <bobry-> # -1;;
- : int = -1
# (-) 1;;
[14:00:41] <bobry-> как это работает?
[14:01:12] <bobry-> (-) -- функция двух аргументов, но -1 возвращает int, а не (int -> int)
[14:01:15] <komar> # 1 - (-1);;
- : int = 2
[14:01:25] <komar> Как-то так.
[14:01:31] <bobry-> не-не, где логика?
[14:01:58] <f[x]> (-)1
[14:02:23] <komar> А чо логика?
[14:02:23] <f[x]> (-) это функция, а - это оператор, который в зависимости от контекста имеет разную семантику
[14:03:08] <f[x]> точнее - это лексический токен который в зависимости от контекста становится то унарным то бинарным оператором (как определено грамматикой)
[14:03:19] <bobry-> грязновато как то
[14:03:30] <f[x]> в каком месте?
[14:03:47] ftrvxmtrx вошёл(а) в комнату
[14:03:53] <bobry-> ну я бы предпочел отдельные операции для унарного отрицания и вычитания
[14:04:03] <bobry-> а не хак на уровне парсера
[14:04:25] <f[x]> это не хак, welcome to context-sensitive grammars
[14:05:33] <f[x]> отдельные операции если хочется тоже есть 1 + ~- 1
[14:14:21] <bobry-> хм, а ~ это инверсия? если да, то почему (~1) вызывает syntax error?
[14:15:09] <gds> "что бы setup.ml сгенерированный oasisом линковался с str" -- это разве возможно/приемлемо?
[14:15:31] <gds> # ( ~- );;
- : int -> int = <fun>
[14:15:47] <gds> # ( ~-. );;
- : float -> float = <fun>
[14:16:37] <bobry-> hrm hrm, ~- стало быть
[14:16:55] <bobry-> gds: а почему неприемлимо?
[14:17:52] <komar> Может, не setup.ml, а то, что собирается с помощью setup.ml?
[14:17:57] <gds> вроде setup.ml может линковаться только с stdlib, даже unix.cma не могут подгружать динамически.  вон, легалл был тут, рассказывал.
[14:24:06] komar вышел(а) из комнаты: Replaced by new connection
[14:24:07] komar вошёл(а) в комнату
[15:05:19] delete_ вышел(а) из комнаты
[15:07:51] shaggie вышел(а) из комнаты
[15:11:42] shaggie вошёл(а) в комнату
[16:20:49] bobry- вышел(а) из комнаты
[16:27:02] bobry- вошёл(а) в комнату
[16:38:06] bobry- вышел(а) из комнаты
[16:38:17] bobry- вошёл(а) в комнату
[16:50:50] <bobry-> так, очередной глупый вопрос -- есть у меня вот такой тип https://github.com/EchoTeam/ocaml-erlang-port/blob/master/ErlangTerm.ml#L12, пробую я его заматчить вот так http://paste.in.ua/2813 <http://paste.in.ua/2813/>, а компилятор гат такой ругается «Warning 4: this pattern-matching is fragile. It will remain exhaustive when constructors are added to type ErlangTerm.erlang_term.»
[16:51:07] <bobry-> моя не понимать -- я же использую только конструкторы, объявленные в типе erlang_term, wasrong?
[16:53:04] <gds> "это сопоставление с образцом является хрупкой. Она останется исчерпывающим, когда конструкторы добавили к типу"
[16:54:32] <bobry-> да-да, я понимаю
[16:54:44] <bobry-> просто конструкторы которыя использую уже есть в указанном типе
[16:56:44] <gds> правильно, есть.  Но если в тип добавят новые конструкторы, то данный паттерн-матчинг их учтёт по ветке "_ -> ...", что может вызвать (и частенько вызывает) неправильное поведение.  А иногда -- правильное.
[16:57:49] <bobry-> вот оно что, хм -- т.е. нужно конкретизировать паттерн
[16:58:06] <zinid> а у кого-нить ocamljs собирается?
[16:58:49] <bobry-> спасибо gds :)
[16:58:58] <gds> либо описать все варианты этого вариантного типа, либо, если это явно не нужно и изменения будут навряд ли, можно вынести подобный код в отдельный файл, в заголовке в каментах описать, почему вынесено, в _tags выключить эти предупреждения, и жить спокойно.
[17:00:41] <zinid> собирается, но только с отключенным lwt
[17:00:44] <zinid> чорт
[17:01:55] <f[x]> zinid: бери либо релизные версии ocamljs и lwt, либо самое свежее - там часто ломается совместимость
[17:02:47] <zinid> f[x]: я из git'а взял
[17:02:59] <zinid> оно там уже год почти не обновляется
[17:03:31] <f[x]> ну значит и lwt годичной давности надо
[17:03:36] <zinid> ыгы
[17:03:58] <f[x]> ocamljs это же что-то заброшенное, сейчас модно js_of_ocaml вроде
[17:04:23] <zinid> js_of_ocaml какой-то сложный мне показался
[17:06:04] komar вышел(а) из комнаты
[17:38:02] <ermine> f[x]: ocamljs заброшенное потому что аффтра переключился на scala, судя по его блогу
[17:40:46] <ermine> zinid: учи скалу!
[17:44:31] <zinid> скала сасёт
[17:47:27] <ermine> а ты ее уже пробовал, чтобы сделать такой вывод?
[17:56:36] <zinid> а что, говно тоже надо пробовать чтобы делать выводы? :)
[18:47:52] bobry- вышел(а) из комнаты
[18:48:20] komar вошёл(а) в комнату
[18:49:46] bobry- вошёл(а) в комнату
[18:53:54] komar вышел(а) из комнаты: Replaced by new connection
[18:53:56] komar вошёл(а) в комнату
[19:10:56] <bobry-> мне интересно названия типа ErlangPort.erlang_port_read это просто плохой стиль или так в камле принято?
[19:11:13] <zert> так принято
[19:11:17] <zert> стиль хороший
[19:11:25] <zert> я в крестах так же пишу
[19:11:42] <bobry-> ок, почему тогда в stdlib Array.array_make
[19:11:51] <bobry-> String.string_find
[19:11:52] <bobry-> etc
[19:12:01] <bobry-> меня дублирование префикса смущает
[19:12:18] <zinid> это да
[19:12:21] <Typhon> чтобы open можно было спокойно сделать, например
[19:12:43] <bobry-> ну это имхо лучше в отдельный модуль вынести
[19:12:52] <bobry-> что если я не хочу open :)
[19:16:08] <gds> а тут уже в немалой части автор решает, хочешь ли ты open.
[19:16:32] bobry- бы предпочел единый конвеншн
[19:17:24] <gds> то есть, вопрос с stdlib уже решён?
[19:17:33] <bobry-> в смысле?
[19:17:50] komar вышел(а) из комнаты: Replaced by new connection
[19:17:51] komar вошёл(а) в комнату
[19:19:16] <gds> кривая, без "правил приличия", с явной необходимостью велосипедить либо использовать extlib/batteries, со сложностью делать open на модулях, объявляющих слишком классически-именованные значения.
[19:20:32] <gds> если уж инрию нельзя заставить, чего уж ждать от авторов очень стороннего софта?
[19:21:21] <bobry-> :(
[19:21:35] <bobry-> я уверен в мэйл листе была не одна дискуссия на эту тему
[19:21:36] <bobry-> ведь да?
[19:21:46] <bobry-> у них должны быть какие то оправдания
[19:24:47] <gds> про небольшую stdlib -- были дискуссии, позиция ясна: не хотят поддерживать (а ведь там не только добавить функции надо -- надо ещё отвечать на вопросы, фиксить баги, переписывать под новые реалии и всё такое).  Про batteries -- инриа говорит, что "пока давайте в эту сторону, ибо другой стороны нет".  Про open и модули, использующие общие имена -- мало что говорят, но там и мне понятно -- module U = Unix и далее "U.имяфункции" всякие -- и коротко, и понятно, и работает на практике.
[19:27:08] zinid вышел(а) из комнаты
[19:27:16] <bobry-> про "эту сторону" что то не понял
[19:27:25] <bobry-> а можно линк какой нибудь по теме, если не сложно?
[19:28:10] <bobry-> вообще необходимость поддерживать самим отпадает с ростом камьюнити, правда это видимо не про камл
[19:31:29] <gds> эта сторона -- в том смысле, что другие направления неприемлемы для них, вроде как.  сходу -- внутри этого есть: http://lwn.net/Articles/76873/
необходимость поддерживать _что_?  stdlib?  а как отвечать за качество stdlib перед пользователями и даже членами консорциума?  "мы не знали, что тот плохой, негодный мальчишка запушит плохую имплементацию функции"?
[19:31:46] Typhon вышел(а) из комнаты
[19:32:26] <bobry-> ну проблема же явно не в пуше, куча языков имеют контрибьюторов -- если ревьюить патчи то все будет ок
[19:34:17] f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | **ocaml мёртв, move on**
[19:35:29] <gds> и куча языков имеет проблемы от этого.  с другой стороны, тут -- язык и stdlib поддерживается малым количеством людей, там же -- пошлют к автору конкретной функциональности и "гуляй вася".  про ревью патчей -- один хрен, что реализовать самому, что проверить чужой патч.  проверить проще, но как насчёт поддержки, например?
[19:36:22] komar вышел(а) из комнаты: Replaced by new connection
[19:36:23] komar вошёл(а) в комнату
[19:36:56] <bobry-> у окамла тоже проблемы, от отсутвия контрибьюторов -- идеального решения и не будет
[19:48:27] <ermine> хаскиль!
[19:48:43] <ermine> а еще у раби есть рулезные гемы
[19:49:30] <gds> bobry-: а чем не устраивает "ядрёное камло с ответственностью инрии + библиотеки сторонних авторов"?
[19:50:55] <ermine> ну лень искать наверное, а еще разброд в стилях и документациях
[19:53:16] <komar> Вот уж проблемы века.
[19:54:47] <ermine> даже не припомню лет 10 назад, чтобы были проблемы с Java в использовании базовых библиотек
[19:55:09] <ermine> а щас, спустя 10 лет - в базовых либлах камла почти ничо нет
[19:56:49] <gds> ermine: я тя поздравля и как бы чмоке -- за все ужасы, справедливо приоткрытые народу, а ранее скрываемые всластями и прочей ГПнёй.
[19:56:53] <komar> Ну дык оттого он и окамл.
[19:57:41] <f[x]> и шо цэ дало Sun'у?
[19:59:15] <gds> f[x]: ну как шо!  sun теперь причастен к очень даже приличной (в узких кружках) субедешечьке!
[20:01:36] ad1862 вошёл(а) в комнату
[20:15:15] shaggie вышел(а) из комнаты
[20:25:17] <ad1862> Здрасте всем. пробую окамл под винду, всё сделал как здесь описано http://tvolf.blogspot.com/2011/02/ocaml.html , окамл 3,11 и 3,12 бинарный, ocamlopt всёравно пишет: Cannon resolve symbols for C:\OCAML\lib\libasmrun.a(floats.o): ____strtod  ---- вот, чё делать незнаю,путнего нинагуглил, день промучался с ним
[20:27:48] ftrvxmtrx вышел(а) из комнаты
[20:27:56] <gds> ad1862: о, tvolf у меня в соседнем подъезде живёт.  Пойти к нему и спросить? :)
[20:27:59] ftrvxmtrx вошёл(а) в комнату
[20:28:50] <ad1862> gds: блин,  было бы здорово..
[20:29:02] <gds> (я вообще не знал, что он про такое пишет..)
[20:30:44] <gds> ad1862: бери overbld: http://sourceforge.net/projects/overbld/files/ -- если что, с ним помог бы.
[20:34:06] <ad1862> спасибо, попробую, бинарный под х86 идет, а то вот есть еще http://www.ocamlpro.com/code/2011-06-23-ocaml-mscv-win64.html но там 64
[20:36:08] <gds> ad1862: да не за что, всё равно фигня будет при попытке использовать хотя бы распространённые библиотеки -- придётся компилировать/ставить их, будет куча непоняток, вопросов.  Там ведь (как на caml.inria.fr) дают только компилятор и базовые штуки.
[20:39:22] <gds> (про вопросы я сужу исключительно на основании первого вопроса про strtod -- хочу упростить жизнь.  а то люди считают, что окамл такой весь недружелюбный со стороны винды, что аж удивительно, как я его там использую и всё нормально.)
[20:43:18] ftrvxmtrx вышел(а) из комнаты
[20:51:45] komar теперь всем будет говорить, что с окамлом в винде все нормально.
[20:51:51] <komar> Один черт сам не смотрел.
[20:52:09] <gds> ad1862: спросил его в жаббере (решил не бегать -- дал ссылоту на чятик и описал ситуацию), и, в общем, говорит мне "давай лучше ты помогай, я не особо знаток".  Хотя, спорить не буду, у него таки действительно получилось, даже .exe вышел.
[20:54:23] <gds> komar: не совсем всё, но нормально, чо.  Ровно так же, как шиндоус является операционкой.  То есть, в целом оно работает, и даже с кроссплатформенностью у окамла получается.  Но пробовать не надо, если есть варианты.  А обычно варианты таки есть.
[20:55:10] <gds> хоть **окамл мёртв**, но он ещё работает и пахнет.
[20:56:08] <gds> ad1862: кстати, настоящие пацаны используют agda2 и coq для написания реальных программ.  Рекомендую приобщиться.
[20:56:38] <komar> Толстота.
[20:56:47] <komar> Ты б еще х-ль порекомендовал.
[20:57:14] <gds> я его вчера рекомендовал (с интерпретатором лиспа и примитивами эрланга), сегодня другое меню.
[20:58:07] <gds> завтра расскажу вам про lisp over client-side pl/sql на oracle forms (я делал, почти сделал).
[20:59:47] ad1862 вышел(а) из комнаты
[21:00:26] <f[x]> надо постараться будет завтра сюда не читать
[21:08:30] <gds> не, я лучше не буду рассказывать.  самому горько.
[21:14:26] bobry вошёл(а) в комнату
[21:23:27] gds вышел(а) из комнаты
[21:32:46] ad1862 вошёл(а) в комнату
[21:48:14] shaggie вошёл(а) в комнату
[22:06:21] <ad1862> gds: есть еще ATS он как... тоже гут ) ?
[22:26:03] ad1862 вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[22:35:07] ftrvxmtrx вошёл(а) в комнату
[22:49:16] ftrvxmtrx вышел(а) из комнаты
[22:49:24] ftrvxmtrx вошёл(а) в комнату
[23:02:04] komar вышел(а) из комнаты: Replaced by new connection
[23:02:04] komar вошёл(а) в комнату
[23:28:06] ad1862 вошёл(а) в комнату
[23:28:06] ad1862 вышел(а) из комнаты
[23:28:25] ad1862 вошёл(а) в комнату
[23:33:30] ad1862 вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[23:52:25] shaggie вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!