Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 8 ноября 2011< ^ >
ygrek установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire
Конфигурация комнаты
Участники комнаты

GMT+3
[00:44:17] Kakadu вышел(а) из комнаты
[01:51:29] ygrek вышел(а) из комнаты
[02:00:44] Typhon вышел(а) из комнаты
[03:09:55] ftrvxmtrx вошёл(а) в комнату
[03:10:40] ftrvxmtrx вышел(а) из комнаты
[06:07:06] komar вышел(а) из комнаты
[06:07:39] komar вошёл(а) в комнату
[06:36:56] komar вышел(а) из комнаты
[06:37:09] komar вошёл(а) в комнату
[07:03:58] ermine вошёл(а) в комнату
[07:06:01] komar вышел(а) из комнаты
[07:06:48] komar вошёл(а) в комнату
[07:24:09] komar вышел(а) из комнаты
[07:24:28] komar вошёл(а) в комнату
[07:40:14] komar вышел(а) из комнаты
[07:41:26] komar вошёл(а) в комнату
[08:02:33] komar вышел(а) из комнаты
[08:23:12] bobry вошёл(а) в комнату
[08:47:51] ermine озадачилась проблемой thread-safe без использования мутексов
[08:48:02] bobry вошёл(а) в комнату
[08:48:02] bobry вышел(а) из комнаты
[08:51:07] bobry вошёл(а) в комнату
[08:51:07] bobry вышел(а) из комнаты
[08:51:46] bobry вошёл(а) в комнату
[08:51:46] bobry вышел(а) из комнаты
[08:58:12] komar вошёл(а) в комнату
[09:03:42] bobry вышел(а) из комнаты
[09:14:23] ygrek вошёл(а) в комнату
[10:29:44] klapaucius вошёл(а) в комнату
[10:39:50] ygrek вышел(а) из комнаты
[10:46:06] Kakadu вошёл(а) в комнату
[11:23:31] shaggie вошёл(а) в комнату
[12:16:29] komar вышел(а) из комнаты: Replaced by new connection
[12:16:30] komar вошёл(а) в комнату
[12:42:54] <Kakadu> как я устал от этой унылой работы, серьёзно
[12:43:33] <Kakadu> после стольких лет на линуксе я понимать что значит мануал какой-то кривой
[12:56:44] <ermine> поменяй работу
[13:00:23] <Kakadu> я сам об этом думаю
[13:22:06] Typhon вошёл(а) в комнату
[14:14:20] ermine в поисках Истинного пути полирует змеиные сучки в своей горгоне
[14:14:27] <ermine> Kakadu: как там kabkqt?
[14:14:43] <Kakadu> никак, я сижу на работе
[14:15:44] <ermine> а вчера где сидел?
[14:15:47] <Kakadu> дома
[14:15:57] <ermine> прогульщик
[14:16:03] <Kakadu> полставки
[14:16:23] <ermine> ну еще учеба есть
[14:16:28] <Kakadu> на 5м курсе?
[14:16:31] <ermine> в школу надо еще ходить!
[14:16:44] <Kakadu> на 5м уже не надо
[14:17:07] <ermine> а из lablqt диплом получится?
[14:18:11] <Kakadu> нихера
[14:18:29] <Kakadu> если бы
[14:19:51] <ermine> тут я обнаружила, что в lablqt и lablgtk будет одна и та же проблема - как лечиться от тредоподобности - в клиенте как бы несколько тредов, главный в гуевом приложении и воркеры, которые работают с сетью
[14:20:25] <ermine> для lablgtk решение проблемы видимо в том, чтобы в воркерах изменять данные в главном треде в его idle режиме
[14:21:30] <Kakadu> я хз
[14:21:38] <ermine> тогда ничо не блокируется и мутексы долой
[14:21:43] komar вышел(а) из комнаты
[14:21:46] <Kakadu> планирую как-то сделать интерфейс горгоны на qml
[14:21:57] <Kakadu> может пойму чтонить
[14:22:01] Kakadu вышел(а) из комнаты
[14:22:13] Kakadu вошёл(а) в комнату
[14:22:17] <ermine> в psi тредов тоже нет (если не считать треда резолвера dns)
[14:22:54] <Typhon> а зачем мутексы? у гуёвого треда очередь событий должна быть, как мне кажется, в которую воркеры гадят
[14:23:13] <ermine> а если бы я щас применила labltk - интересно как я бы там делала асихронные сокеты
[14:23:25] <ermine> да и в qt тоже как-то хз
[14:23:43] <ermine> в gtk есть вотчеры в glib
[14:24:46] <ermine> асихронные без тредов и lwt - это наверное тупо select()
[14:25:16] ermine сделала пометку в записях насчет селекта
[14:26:21] <Kakadu> в кути есть целый namespace QtConcurrent
[14:27:36] <ermine> в gtk тоже есть gthread
[14:28:14] <ermine> но как-то безрадостно - надо помечать критичные зоны совсем а-ля камло (enter/leave)
[14:30:44] <Kakadu> нада пробовать,,..........
[14:32:00] <ermine> гы
[15:30:16] klapaucius вышел(а) из комнаты
[15:42:06] <Kakadu> что-то дебаженье вендовых дллок падвендой не айс
[15:42:44] <f[x]> а что там не айс?
[15:42:55] <f[x]> windbg + pdb <- ок
[15:43:15] <Kakadu> я хотел с g++ + gdb Но руки не оттуда
[15:51:22] <gds> а зачем дебагер?
[15:52:28] <gds> а, понял, для стектрейса из корки.
[18:06:18] bobry вышел(а) из комнаты
[18:07:03] bobry вошёл(а) в комнату
[18:09:29] Kakadu вышел(а) из комнаты
[18:33:38] <ermine> gds: скажи еще раз (или в первый раз), когда map выгоднее чем hashtable? мне надо в основном вытаскивать по ключу, не изменять, в начале размер не известен, добавлять однократно при запуске
[18:33:52] <ermine> а вообще пора послушать умную теорию
[18:34:06] <ermine> ключ - строка
[18:34:11] Typhon вышел(а) из комнаты
[18:34:19] <ermine> тело - функция
[18:35:08] ermine додумала очереднюю гениальную модель борьбы с xmpp в горгоне и жаждет применить то ли мап, то ли хэштабло для хранения обработчиков расширений протокола
[18:36:19] <gds> ermine: map vs hashtbl примерно равны, когда мало элементов.  далее -- зависит от кучи вещей.  если элементы долго хешируются (развесистые, например, но структурно весьма разные) -- hashtbl выгоднее.  если нужна персистентность -- только map.  если элементов вообще мало ( <= 5 ), то assoc lists ок.
[18:37:27] <gds> расширения -- пофиг, как хранить.  это всё одинаково быстро для простых случаев.
[18:40:06] <ermine> в пределах 200 элементов, если имплементить все расширения протокола
[18:41:29] ermine еще обсасывает проблему, как решать проблему, когда обработчик не знает что делать с результатом и хочет его вернуть, то есть не unit на хвосте
[18:42:49] <ermine> gds: ну тут видимо вопрос в трате времени на хэширование vs ходления по деревьям
[18:42:53] ftrvxmtrx вошёл(а) в комнату
[18:44:52] <ermine> придумала насчет неприкаянных обработчиков - не регистрировать их в мапе, а просто напрямую вызывать из других обработчиков, когда надо, тут всё взаимосвязано, как кажется
[18:45:26] <ermine> так, мап или хэштабло? :) кидать чоль монетку
[18:51:14] <ermine> ладно, пусть будет хэштабло
[18:51:39] <ermine> gds: что лучше - три хэштабла или рекорд с тремя полями 'a option?
[18:52:19] <ermine> в одном хэштабле
[18:52:28] f[x] затаил дыхание
[18:53:04] <ermine> f[x]: будет большая телега от gds?
[18:53:29] <f[x]> возможно даже длиннее чем 42
[18:55:44] ermine решила что три хэштабла лучше...
[18:56:22] <ermine> чего б еще спросить
[19:04:06] Kakadu вошёл(а) в комнату
[19:09:31] <ermine> таки ключ не строка, а тьюпл из string option * string
[19:18:00] komar вошёл(а) в комнату
[19:30:02] <gds> > ermine: gds: что лучше - три хэштабла или рекорд с тремя полями 'a option?
если поля в значении, а не в ключе -- лучше один хештаблиц.
[19:30:21] <gds> даже если ключ таков, хештаблица скорее всего лучше.
[19:36:06] <ermine> я уже сделала три хэштаблы и теперь думаю про гуй
[19:36:34] <ermine> интересно как задавать при компиляции тот или иной гуй и что компилять
[19:37:17] <ermine> а то Kakadu скоро доточит, а у меня ничо не готово!
[19:38:07] <ermine> если сочетать с оазисом, то гуй видимо придется оформлять в виде либлы
[19:38:20] <ermine> и подключать то или иное
[19:38:43] <ermine> а в коде как классы выбирать?
[19:39:08] <f[x]> лучше делай сетевой протокол управления клиентом и тогда гуи можно делать отдельным процессом на жаве
[19:39:15] <ermine> ну наверное они в обеих либлах-гуях должны зваться одинаково
[19:39:41] <f[x]> нет, они должны быть абстрактными
[19:39:57] <f[x]> и твои гуи либы должны предоставлять одинаковый интерфейс
[19:40:02] <f[x]> но это же ужс
[19:40:38] <ermine> ну интерфейс понятно
[19:41:47] <ermine> просто если с модулями module A = B(C), то еще могу представить в своем воображении как B или C берутся из либлы, а классы?
[19:42:23] <ermine> что-то не так в моем воображении
[19:42:59] <ermine> скорее это open модули как-то называть
[19:44:19] ftrvxmtrx вышел(а) из комнаты
[19:48:27] <ermine> подумался другой вариант - гуй как execution-проекты, а обшая часть - в виде либлы
[19:48:48] <ermine> это вкуснее и заманчивее выглядит: компилить сразу все виды гуя
[19:49:01] <ermine> f[x]: годно?
[19:51:41] <ermine> молчание - знак согласия
[19:56:44] <f[x]> годно
[20:10:09] gds вышел(а) из комнаты
[20:10:15] gds вошёл(а) в комнату
[20:27:13] <Kakadu> может в рассылке пожаловаться на моё падение камла?
[20:29:02] <gds> посоветуют уменьшить пример до минимума.
я тоже посоветую.
но кто ж запретит пожаловаться.
[20:29:09] <gds> (вот блин, опять не хокку.)
[20:30:47] <Kakadu> а что от туда ещё можно выкинуть?
[20:31:11] <f[x]> как сейчас можно говорить -
Kakadu, пришло время пофиксить крэш. крэш сам не пофиксится. пофикси его.
[20:31:15] <f[x]> * модно
[20:31:19] <gds> Kakadu: из /inher/* , имеешь ввиду?
[20:31:26] <Kakadu> gds: да
[20:32:09] <Kakadu> f[x]: чтобы пофиксить надо иметь power of heavy metal, кторой у меня нет
[20:32:51] <f[x]> ололо
[20:34:32] f[x] afk
[20:34:40] <f[x]> посмотрю inher вечером
[20:34:45] <f[x]> ночером
[20:36:22] <Kakadu> у вас 7 часов же только! халявщики
[20:37:28] shaggie вышел(а) из комнаты
[20:37:52] <gds> Kakadu: поехали по порядку.
A.cpp: точно все <caml/*.h> нужны?  Хотя и не в них проблема.
AA.cpp: непонятно, откуда берётся значение, привязанное к идентификатору _camlobj.  оно в protected-поле хранится?  точно всё ок с регистрацией?
но это был очень поверхностный анализ, да и не столько анализ.
ещё рекомендую изложить алгоритм без qt (или он и так без?  тогда забей.); ещё -- постараться сделать алгоритм как можно более линейным -- например, попробовать поубирать по одному вызовы методов объекта, вынося их во внешние функции (объект же один, можно позволить для отладки).
[20:41:10] <Kakadu> gds:  в АА.срр нет _camlobj
[20:44:48] <Kakadu> gds: что ты имеешь ввиду под поубирать вызовы методов объекта?
gds: алгоритм без кутэ не существует (
[20:46:06] <gds> да в рот кому-то ноги (может и мне) из-за этих ваших веток.  всё, потом буду смотреть, точно не сейчас.
а кутэ можно заменить на подобный класс, ничего толком не делающий.
[20:46:39] <Kakadu> а в гитхабе можно главной сделать другую ветку?
[20:48:07] <gds> да не, это у меня в мозгу надо прописать другую ветку, тут не в репке дело.
[20:51:46] <ermine> а можно ли в камле хранить список классов, кастуя их по родителю, то можно ли класс из этого списка кастовать в сторону подкласса?
[20:52:38] <ermine> у меня конкретно - это список окошек с разными фишками в каждом окне, все окна - виджеты, соответственно это список виджетов
[20:55:14] <ermine> :> - это в сторону базового или подкласса?
[20:55:34] ermine смотрит на gds
[20:55:47] <Kakadu> вроде базового
[20:56:45] <gds> ermine: я тут без леди пока, приходится некоторые вещи делать самому -- жрат, хозяйство, поэтому далеко не всегда "у терминала".  ща.
[20:56:47] <ermine> Kakadu: починил следующую корку?
[20:57:03] <Kakadu> нет
[20:58:06] <gds> ermine: подтипизировать можно по умолчанию только в сторону объекта с меньшим количеством и менее конкретных методов.
[20:58:38] <gds> ermine: что со списком будешь делать дальше, даже если, представим, он таки есть?
[20:58:47] <gds> хочешь подклассы извлекать?
[21:00:02] <ermine> gds: ну не список, а опять хэштабло, вынимаю по ключу нужно окошко и следующий пакет протокола в нем отображаю
[21:00:39] <gds> ermine: "отобразить" == "вызвать метод"?  сделай его общим у всех классов, сделай его виртуальным у базового класса, всё ок.
[21:01:28] <ermine> gds: да, но методы в разных окошках могут быть разного калибра
[21:01:54] <ermine> разные окошки - чат, белая доска, шахматы, к примеру
[21:01:56] <gds> ermine: сделай "одного калибра".
[21:02:06] <gds> а, понял.
[21:02:32] <ermine> обработка протокола в них не производится
[21:02:38] gds afk 10..20min; подумаю.
ermine: опиши чуть-чуть глубже, на один шаг хотя бы.

[21:03:51] <ermine> если каждый обработчик будет сам держать свой список окон одного калибра, то я еще не могу придумать как отследить закрытие окна
[21:04:16] <ermine> хотя наверное можно извратиться
[21:04:57] <ermine> вообще можно
[21:05:28] <ermine> Kakadu: в qt можно повесить обработчик на закрытие окошка?
[21:06:06] <ermine> в gtk - это подключиться к сигналу уничтожения виджета
[21:07:33] <Kakadu> ermine: отнаследоваться и переопределить closeEvent
[21:08:35] ermine запустила свежий main из inher
[21:08:39] <ermine> упало
[21:09:39] <Kakadu> если баг пофиксится вы узнаете об этом первыми
[21:55:18] ermine вышел(а) из комнаты
[22:14:24] ygrek вошёл(а) в комнату
[23:00:22] ftrvxmtrx вошёл(а) в комнату
[23:47:55] ftrvxmtrx вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!