Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 9 ноября 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:06:52] Kakadu вышел(а) из комнаты
[01:04:04] Typhon вошёл(а) в комнату
[01:10:48] Typhon вышел(а) из комнаты
[01:11:23] Typhon вошёл(а) в комнату
[01:12:08] <ygrek> это ли не fail?
  QWidget* _arg0 = (arg0==Val_none) ? NULL : QWidget_val(arg0);
[01:15:21] Typhon вышел(а) из комнаты: Replaced by new connection
[01:15:22] Typhon вошёл(а) в комнату
[01:20:58] komar вышел(а) из комнаты
[01:22:08] <ygrek> hasCamlObj бажный, но не используется - это минимальный пример?
[01:31:07] <ygrek> минимальный пример это - qapp_create и exec - и всё равно крэшится
[01:45:39] <ygrek> убрал -O5 - перестало падать пустое приложение
[01:45:42] <ygrek> жесть
[01:48:12] <gds> плюсовая кривота!
[01:49:23] <ygrek> теперь у меня по крайней мере окошко показывается
[01:49:27] <ygrek> копаем дальше
[01:51:08] <ygrek> замечаем что при раскомментировании кода в main.ml пропадает вывод аргументов в qapp_exec
[01:51:59] <gds> кривая работа с дескрипторами?
[01:53:15] <ygrek> комментированием находим причину - new qwidget - копаем дальше
[02:15:54] Typhon вышел(а) из комнаты
[02:44:37] <ygrek> нифига не понятно
[03:10:59] ygrek вышел(а) из комнаты
[03:11:26] ygrek вошёл(а) в комнату
[03:22:11] ygrek вышел(а) из комнаты
[09:37:47] Kakadu вошёл(а) в комнату
[09:43:39] ygrek вошёл(а) в комнату
[10:38:49] bobry вошёл(а) в комнату
[10:55:05] ermine вошёл(а) в комнату
[11:30:37] <f[x]> пушнул минимальный проблемный код
[11:41:27] <Kakadu> f[x]: у тебя крешится?
[11:42:36] <Kakadu> у меня не крешится
[11:42:47] <Kakadu> меня смущает что во второй раз аргументы не печатаются
[11:44:08] <f[x]> не крешится
[11:44:13] <f[x]> смущает??
[11:44:26] <f[x]> это же ахтунг
[11:44:29] <f[x]> даже не так
[11:44:32] <f[x]> это же АХТУНГ
[11:44:44] <Kakadu> полярный зверек?
[11:45:04] <f[x]> ничего не получится построить если у тебя в фундаменте дырки
[11:45:08] <f[x]> ага
[11:54:39] <Kakadu> пушную ещё более минимальный проблемный код
[11:55:14] f[x] тянет сорцы qt
[11:56:04] <f[x]> гг, у меня тоже есть inher2 :)
[12:03:59] <f[x]> ап
[12:04:25] <Kakadu> кутишники кинули идею что первый аргумент всегда должен быть путём к проге
[12:04:33] <f[x]> не важно
[12:09:41] bobry вошёл(а) в комнату
[12:09:58] bobry вышел(а) из комнаты
[12:15:09] <f[x]> аргх!
[12:16:08] <f[x]> нашёл
[12:16:26] <f[x]> типичный долбоплюсизм кстати
[12:16:39] <Kakadu> давай подсказки, а я буду угадывать
[12:17:08] <f[x]> посмотри внимательно на параметры QApplication
[12:17:19] <f[x]> посмотри что происходит в конструкторе QApplication
[12:17:29] <f[x]> посмотри на его мемберы в QApplicationPrivate
[12:17:43] <f[x]> git://gitorious.org/qt/qt.git
[12:17:54] <Kakadu> да у меня есть локальные сорцы
[12:21:37] <f[x]> пушнул фикс
[12:24:10] <f[x]> хинт - везде где юзаешь отладочную печать для value - юзай %p а не %lld
[12:24:19] <f[x]> это безотносительно того крэша
[12:25:19] <ermine> чо за общественный секс тут устроили?
[12:26:18] <Kakadu> до /me пока не дошло
[12:26:26] bobry вышел(а) из комнаты
[12:28:50] <ermine> опять поломали inher/Makefile
[12:29:00] <f[x]> wtf?
    caml_register_global_root(&camlobj);
[12:29:25] <f[x]> Kakadu: rtfm ещё раз
[12:29:41] <f[x]> и объясни всему чату смысл register_global_root и как он работает
[12:31:15] <Kakadu> f[x]: сейчас я думаю что данное value не перемещается и не собирается мусорщиком никуда и до тех пока не разрегистрируется.
[12:31:23] <Kakadu> а сейчас прочитаю мануал про это
[12:31:31] <f[x]> неправильно
[12:38:00] <Kakadu> f[x]: тебя смущает что я remove_global_root не делал?
[12:38:19] <f[x]> нет
[12:38:34] <f[x]> расскажи что делает register
[12:40:06] ygrek вышел(а) из комнаты: Replaced by new connection
[12:40:06] ygrek вошёл(а) в комнату
[12:41:44] <f[x]> ап
[12:43:38] <Kakadu> ну там написано что надо глобальные переменные так регистрировать
[12:44:40] <f[x]> ну уже звоночек
[12:44:48] <f[x]> у тебя camlobj там глобальное?
[12:44:59] <f[x]> какой смысле вообще регистрировать стековую переменную?
[12:45:25] <f[x]> для мусорщика memory root это место в памяти где хранится адрес камлевого значения
[12:45:45] <f[x]> если при сборке мусорщик это значение сдвинет то он знает что в том месте этот адрес надо обновить
[12:47:42] <f[x]> и что-то я вообще не улавливаю логику keypressevent'а
[12:48:06] <f[x]> дёргается handler у x0 но откуда он там возьмётся вообще если это просто абстрактная обёртка сишного значения?
[12:49:02] f[x] на сегодня всё
[12:50:06] <Kakadu> f[x]: ты хочешь сказать что регистрировать корень не надо?
[12:50:16] <f[x]> надо
[12:50:33] <f[x]> только надо регистрировать реальный адрес, а не на стеке
[12:50:45] <f[x]> брать адрес от value это вообще бессмыслица
[12:51:06] <f[x]> нужен адрес того места где лежит value
[12:51:09] <f[x]> вы
[12:51:12] <f[x]> тьфу
[12:52:15] <f[x]> ну и вообще пока забей на руты, просто отключи мусорщик и убедись что у тебя основная логика работает
[12:59:19] ermine открыла мануал по камлевым классам
[13:04:32] Typhon вошёл(а) в комнату
[13:07:13] shaggie вошёл(а) в комнату
[13:19:45] ygrek вышел(а) из комнаты
[14:11:04] <Kakadu> почесал репу и родил что-то ипа мануала про то, как должно работать наследование в lablqt
https://github.com/Kakadu/lablqt/wiki/Inheritance
[14:11:20] <Kakadu> типа*
[14:13:01] <gds> о как :)
[14:15:57] <Kakadu> чтобы ygrek и все-все-все(с) в непонятках не ходили
[14:16:31] <gds> Kakadu: ща у меня чуть других дел, но потом нарисую сам описанную схему.  прошу лишь проверить её ещё раз на предмет нестыковок / фактических ошибок.
[14:17:13] <ermine> f inher компилится или опять Maefile хардкодить по-своему?
[14:17:48] <Kakadu> ermine: у тебя есть мануал как подсунуть камлобилду сишные исходники?
[14:18:30] <f[x]> и смержьте наконец new2 в master
[14:19:03] <ermine> github.com/ermine/camlimages
[14:19:18] <ermine> всё там сишное и pkg-config впридачу
[14:19:20] <f[x]> а зачем кстати на камлевой стороне наследоваться?
[14:19:39] <gds> f[x]: затем, чтобы описывать логику/поведение в терминах qt.
[14:19:41] <Kakadu> а как не наследоваться*
[14:19:45] <Kakadu> ?
[14:20:00] <f[x]> т.е. теперь мне чтобы повесить на кнопку хэндлер надо сабклассить кнопку?
[14:20:01] ermine поделила потроха горгоны на gtk и common и думает, что с этим делать дальше
[14:20:23] <f[x]> в lablgtk я бы просто сделал let b = new button in b#on_click (fun ...)
[14:21:27] <ermine> там калбэки вместо ручного процессинга евентов
[14:21:30] <ermine> удобно
[14:22:00] <f[x]> т.е. сабкласситься удобно когда ты делаешь новый тип виджета - чтобы логика и данные были в одном месте и пользователю легко было это использовать
[14:22:19] <Kakadu> f[x]: может чтобы пока работало сделаем?
[14:22:24] <f[x]> а когда сам используешь какой-то виджет то удобно навешивать хэндлеры на лету
[14:22:33] <f[x]> ну это да :)
[14:24:26] <f[x]> вариант на память - камлевый qwidget это внутри рекорд с кложурками, с сишной стороны это отнаследованный класс. все методы переопределены так что они сначала смотрят в табличку кложурок и дёргают их если есть
[14:27:04] <Kakadu> f[x]: > т.е. теперь мне чтобы повесить на кнопку хэндлер надо сабклассить кнопку?
В кути как-то хитро сделано. Чтобы обработать некоторые события надо сабкласситться, а на некоторые события посылаются сигналы (clicked() например). Почему-то где-то одно а где-то иное я не скажу
[14:39:19] <f[x]> для того чтобы обработать сигнал надо сабкласситься?
[14:39:26] <Kakadu> нет
[14:39:48] Typhon вышел(а) из комнаты: Replaced by new connection
[14:39:49] Typhon вошёл(а) в комнату
[14:39:52] <Kakadu> надо иметь класс где определен слот хорошего типа и соединить сигнал со слотом
[14:39:59] <f[x]> а
[14:40:02] <f[x]> тогда ок
[14:41:14] <ermine> делаешь класс, реализующий все сигналы и наследуешь его при создании объекта
[14:41:20] <ermine> так в lablgtk1
[14:41:36] <ermine> втором
[14:42:17] <ermine> там еще сначала делается скелет объекта, без сигналов, только основные методы, конечный объект - это наследство скелета и сигналов
[14:43:06] <ermine> на с++ это множественное наследование интерфейсов
[14:47:15] <ermine> а вот проперти присваиваются классу не через classname ~prop1 ~prop ..., вместо этого вызывается функция, которая хочет много лейблов и в качестве калбэка ему дается функция создания объекта, а сама она обрабатывает проперти и втыкает в объект
[16:00:48] Typhon вышел(а) из комнаты
[16:00:59] <gds> в принципе, для создания своей кнопки с onclick, конечно, удобнее делать это в форме "new qbutton ~onclick:(fun ...) ()".  а вот инхерить -- неудобно.  с другой стороны, всегда можно сгенерить класс поверх базового, который будет предоставлять
class qbutton ?onclick ?onshit ?label ... () = object
inherit qbutton_base as b
method onclick = match onclick with None -> b#onclick | Some x -> x
[16:02:02] <f[x]> да
[16:05:32] Typhon вошёл(а) в комнату
[16:30:46] АК вышел(а) из комнаты
[16:35:05] АК вошёл(а) в комнату
[18:18:01] <Kakadu> люди, я правда сумел смержить бранчи в labqt или всё хрень это?
[18:19:34] <f[x]> ага, только теперь передвинь master на new2, а new2 удали
[18:30:04] <Kakadu> f[x]: а я не похерю весь репозиторий этим делом? ибо руки у меня кривые-кривые...
[18:30:32] f[x] вышел(а) из комнаты
[18:30:39] f[x] вошёл(а) в комнату
[18:31:33] <f[x]> git co master; git merge new2; git br -d new2
[18:38:42] <Kakadu> что -то new2 не проподает из веб-клиента
[18:38:57] <Kakadu> хотя я сделал
$ git br -d new2
Deleted branch new2 (was 146c54b).
[18:39:54] <f[x]> это удалило локальную ветку
[18:40:06] <f[x]> git push origin :new2
[18:40:47] <Kakadu> вот бы я в каком-то мануале это встретил
[18:41:10] <f[x]> во всех мануалах это есть
[18:46:09] <gds> эй, вы чего это тут, редактируете историю?
[18:46:28] <Kakadu> gds: переписываем
[18:54:39] <f[x]> нет-нет сэр, что вы, всё в рамках закона
[18:55:09] <gds> мкэй.
[19:27:42] Typhon вышел(а) из комнаты
[20:00:42] ftrvxmtrx вошёл(а) в комнату
[20:12:53] ftrvxmtrx вышел(а) из комнаты
[20:20:11] <ermine> классы рулят!
[20:20:20] <ermine> их проще чем модулей склонять
[20:41:03] <ermine> а вт неинтересный вопрос: как написать декларацию типов:
type a = b
and class type b = ...?
[20:41:19] ermine зациклилась
[21:04:11] <gds> ermine: никак, чо.
class type b = ...
type a = b
[21:06:38] shaggie вышел(а) из комнаты
[21:22:18] <ermine> они рекурсивные
[21:23:54] <ermine> class type a = object method : t -> unit end
and type t = { abc : (string, a) Hashtbl.t }
[21:24:07] <ermine> не
[21:24:19] <ermine> в общем почти так
[21:25:48] <gds> ermine: попробуй в рекурсивный модуль закатать, с обращением по Имямодуля.тип в обоих определениях.
[21:27:17] <ermine> а
[21:42:13] <ermine> module rec требуют сигнатуру
[21:42:16] <ermine> ну ладно
[21:47:00] <ermine> gds: идея сработала, пасиб
[21:47:39] <ermine> хотя и не без гимору
[21:55:33] <gds> знаю про сигнатуру, ага.  пичалька, но катит.  с другой стороны, всегда можно два типа выделить в отдельный модуль.
[22:12:46] <gds> думал как-нибудь сделать более логичную штуку над камлом.  фактически, сейчас у нас есть разномастная универсальная квантификация, экзистенциальные типы, структурная подтипизация, типы рекурсивные и не очень, да и много чего.  только синтаксис и способы описания этого -- какие-то странноватые.  но это будет в нереализованных идеях, так как я даже более тупые вещи дорулить не могу толком.  лох, чо.
[22:28:24] ermine дописалась до кнцептуальной проблемы
[22:29:04] <ermine> у меня горгона с рождения задочена под мультилогин, вот вопрос - какой аккаунт задействовать, когда хочешь зайти в конфу через меню?
[22:29:44] <ermine> ладно, надо делать диалоговое  окошко и выбирать аккаунт
[22:30:07] <ermine> Kakadu: как там lablqt? у меня уже почти всё готово под мультигуй!
[22:32:02] <ermine> о, горгоночка работает
[22:33:27] gorgona вошёл(а) в комнату
[22:33:37] <gorgona> а вот и йа!
[22:35:06] <gorgona> хде аплодисменты
[22:36:45] gds как бы хлопает
[22:37:01] <gds> gorgona, отдай скриншот!
[22:38:48] <gorgona> еще рано
[22:38:49] <gds> вообще, удобно это, админить жаббер-сервер и иметь площадку для тестов жаббер-клиента.  надо будет подумат.  :]
[22:38:58] <gorgona> ща закоммичусь и пойду спатки
[22:39:00] gorgona вышел(а) из комнаты
[22:40:04] <ermine> мне это можно
[22:40:24] <ermine> даже более того - потребовать сразу пофиксить или дописать на сервере, если надо
[22:40:37] <Kakadu> ух ты, горгона сама себя коммитит
[22:45:15] <ermine> уф
[22:46:33] <ermine> ща погляжу на сон грядущий на lablqt
[22:47:22] <ermine> Kakadu: ты по-прежнему возишься в inher?
[22:51:08] ermine запустила main и озирается
[22:51:17] <ermine> оно не упало в кору, но и окошка не видно
[23:11:49] <Kakadu> ermine: на игрек нахалявил
[23:13:48] <Kakadu> я вернул креш в зад
[23:15:45] <gds> Kakadu: именно на минимальном примере?
[23:21:31] <Kakadu> именно в inher
[23:21:49] <Kakadu> c минимальностью там немного напряжно
[23:23:53] <gds> Kakadu: у меня в последнее время мозга нет почти.  это печально.  извени.
[23:33:18] schurshik вошёл(а) в комнату
[23:33:22] Typhon вошёл(а) в комнату
[23:37:02] Typhon вышел(а) из комнаты: Replaced by new connection
[23:37:03] Typhon вошёл(а) в комнату
[23:37:34] gorgona вошёл(а) в комнату
[23:38:50] schurshik вышел(а) из комнаты: qutIM : Jabber plugin
[23:39:20] <gorgona> научиться бы теперь рисовать урлы и кликать на них
[23:40:17] gorgona вышел(а) из комнаты
[23:43:04] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!