Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 1 июля 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | F#, Coq - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:50] komar вышел(а) из комнаты: Replaced by new connection
[00:00:50] komar вошёл(а) в комнату
[00:36:03] ermine вышел(а) из комнаты
[01:16:40] tilarids вышел(а) из комнаты: Computer went to sleep
[06:16:32] f[x] вошёл(а) в комнату
[08:00:43] f[x] вышел(а) из комнаты
[08:00:46] bobry вошёл(а) в комнату
[08:01:02] <bobry> господа, а как бы мне протащить 'a в elt здесь? http://paste.in.ua/8415 <http://paste.in.ua/8415/>
[08:01:44] <bobry> прямо сейчас у меня ошибка: Error: Unbound type parameter 'a
[08:32:50] <bobry> сделал пока вот так http://paste.in.ua/8416 <http://paste.in.ua/8416/>, но хотелось бы обойтись без функторов
[08:33:15] tilarids вошёл(а) в комнату
[08:34:01] bobry вышел(а) из комнаты
[08:34:08] bobry вошёл(а) в комнату
[08:49:09] tilarids вышел(а) из комнаты: Computer went to sleep
[08:59:48] bobry вышел(а) из комнаты
[10:51:20] ermine вошёл(а) в комнату
[10:56:22] zinid вошёл(а) в комнату
[11:11:06] klapaucius вошёл(а) в комнату
[11:11:42] f[x] вошёл(а) в комнату
[11:31:55] bobry вошёл(а) в комнату
[11:38:04] ftrvxmtrx вышел(а) из комнаты
[11:42:49] tilarids вошёл(а) в комнату
[11:48:28] bobry вышел(а) из комнаты
[11:57:31] Typhon вошёл(а) в комнату
[12:24:51] ftrvxmtrx вошёл(а) в комнату
[12:37:21] Typhon вышел(а) из комнаты
[12:39:52] Typhon вошёл(а) в комнату
[12:41:34] f[x] вышел(а) из комнаты
[12:42:40] Kakadu вошёл(а) в комнату
[12:51:24] tilarids вышел(а) из комнаты: Computer went to sleep
[13:43:19] tilarids вошёл(а) в комнату
[13:45:49] tilarids вышел(а) из комнаты
[13:50:40] tilarids вошёл(а) в комнату
[14:03:45] f[x] вошёл(а) в комнату
[14:28:11] Typhon вышел(а) из комнаты
[14:48:40] Typhon вошёл(а) в комнату
[15:10:42] bobry вошёл(а) в комнату
[15:16:52] <bobry> господа, может мой вопрос про Categorical не дошел? там какие-то глюки были с жаббером
[15:19:22] <gds> bobry: вопрос видел, но по сути ничего сказать не могу.  Впрочем, если тебе будет несложно дать минимальный почти работающий пример, можно было бы покрутить его, так как сходу лично я не могу понять, что у тебя есть и что именно не получается.
[15:28:10] <bobry> gds: у тебя тоже сообщения двоятся?
[15:28:39] <bobry> вот суженная версия: почему нельзя подставить полиморфный тип в сигнатуру http://paste.in.ua/8419/
[15:29:33] <ADEpt> bobry: чисто интуитивно, я понимаю, почему компилятор недоволен :)
[15:33:11] <bobry> ADEpt: ну гм, интуитивно я тоже догадываюсь, но это же тупо подстановка — что такого?
[15:34:09] <ADEpt> bobry: дык где то, что ты подставляешь? :) Допустим, у тебя бы "f" имел тип "t -> int". Как ты протайпчекаешь такую подстановку?
[15:45:07] <gds> bobry: 1. сообщения не двоятся.  2. а почему бы не объявить конкретный тип в сигнатуре?  module Bar : sig type bar_t include Foo with type t := bar_t end = struct type bar_t let f x = x end;;
[16:10:22] <f[x]> eue
[16:10:29] <f[x]> EWIN
[16:15:14] <bobry> gds: потому что categorical distribution хочется иметь полиморфным по типу, над которым это распределение задано
[16:15:22] <bobry> int Categorical.t напр.
[16:21:27] <bobry> посему вопрос: можно ли проще http://paste.in.ua/8422 <http://paste.in.ua/8422/>
[16:21:33] bobry вышел(а) из комнаты
[17:32:12] f[x] вышел(а) из комнаты
[18:22:50] f[x] вошёл(а) в комнату
[18:25:48] ftrvxmtrx вышел(а) из комнаты
[18:35:45] bobry вышел(а) из комнаты
[19:08:09] <zinid> а в типовыводилках кто-нить шарит?
[19:08:50] <zinid> я вот смотрю что творится в эрланговском диалайзере, там аццкий ад
[19:09:07] <zinid> сплошная эвристика перебором
[19:09:07] Kakadu вышел(а) из комнаты: Logged out
[19:09:29] <f[x]> ну если у языка нет формального описания
[19:09:32] <zinid> это по другому нереально сделать в динамических языках?
[19:10:23] <gds> ну, я-то немного разбираюсь, но эрлангу помочь не смогу, и, главное, не захочу.  Лучше бы мне кто помог с "параллельным велосипедом", который покрыл бы нишу эрланга, но с камлотипизацией.
[19:11:03] <zinid> gds: у эрланга есть шелл и code swapping
[19:11:22] <zinid> если в твоём велосипеде этого не будет, никто не будет юзать
[19:11:29] <zinid> ну я точно :)
[19:11:45] <zinid> опыт с jamler'ом у нас был :)
[19:11:48] f[x] вышел(а) из комнаты
[19:12:18] <gds> экспортировав достаточно информации (рантайм-определения типов), шелл можно оформить.  code swapping -- можно на dynlink сделать, а можно, к чему склоняюсь, через ввод нового процесса и мягкое убиение старого процесса.
[19:12:43] <zinid> gds: сомнительно это всё
[19:13:14] <gds> конкретнее давай.  Обосри мои идеи, чтобы я не тратил время на бесперспективное говно.
[19:14:20] <komar> zinid: на кой черт нужен шелл?
[19:14:33] <zinid> komar: штобы аццкий дебаг делать
[19:14:43] <zinid> komar: у кастомеров это постоянно происходит
[19:14:52] <zinid> а иначе баги нереально ловить
[19:14:59] <komar> Я вот сейчас в самом динамическом из динамических языков и испльзую шелл исключительно для того, чтобы разобраться, почему динамическое говно работает через жопу.
[19:15:45] <komar> Если б не это — пользовался бы скриптами, удобнее намного.
[19:16:17] <zinid> просто надо поюзать шелл, я так хз как объяснить
[19:16:18] <komar> Но нет же, каждый чертов метод надо ИССЛЕДОВАТЬ.
[19:16:23] <komar> Дык юзаю же ж.
[19:16:43] <zinid> ну вот у тебя что-то идёт не так с софтиной, что делать?
[19:16:56] <zinid> вот она сидит жрёт память
[19:17:00] <zinid> что делать?
[19:17:40] <komar> Э-э? Разбираться.
[19:17:47] <zinid> как?
[19:17:51] <komar> У вас какой-то волшебный шелл, который показывает, где память жрется?
[19:17:53] <zinid> останавливать?
[19:17:57] <zinid> да
[19:18:05] <zinid> я подключаюсь и смотрю process_info
[19:18:13] <zinid> смотрю жырный процесс
[19:18:18] <zinid> щупаю его
[19:18:23] <zinid> если надо - прибью
[19:18:27] <zinid> как unix-shell
[19:18:46] <komar> -_-
[19:18:54] <komar> Я точно так же делаю.
[19:19:01] <komar> Только у меня шелл называется htop
[19:19:15] <komar> Впрочем, вру: не делаю.
[19:19:19] <zinid> и причём тут htop?
[19:19:25] <komar> У unicorn’а потому что встроенная прибивалка есть.
[19:19:31] <zinid> сразу тогда halt -p нах, чо
[19:20:07] <zinid> процесс - я имею вииду процесс внутри ырланка
[19:20:22] <komar> Ну вот я подключаюсь по ссха до сервера, запускаю хтоп, давлю эф шесть, выбираю %MEM, смотрю жырный процесс, прибиваю его нажатием эф девять.
[19:20:37] <komar> Внутри, снаружи.
[19:20:37] <zinid> ну молодец
[19:20:44] <komar> Понаделают костылей, потом мучаются.
[19:20:44] <zinid> а я так не хочу делать
[19:20:57] <zinid> я хочу найти причину
[19:21:02] <zinid> вот флудят j.r
[19:21:06] <zinid> нашли дыру
[19:21:09] <komar> А как ты причину с помощью шелла найдешь?
[19:22:00] <gds> отвечаю на вопрос, как у меня будет.  1. Добавить отладку (objsize) в подозрительных местах, особенно на глобальных структурах данных, перекомпилировать, запустить, перекинуть всю работу на новый процесс.  2. Если проблема не в глобальных структурах данных, то ровно как у тебя в раскладе: каждый процесс это камлозначение, и его можно objsize тоже.  Дальше -- отладка: почему жрёт, зачем, какие входные данные, и так далее.
[19:22:02] <zinid> ты предлагаешь мне эфф девять на ejabberd'а делать на j.r?
[19:22:29] <zinid> gds: ну это одна из причин
[19:22:45] <zinid> gds: я вот могу залезть и запустить профилировщик
[19:22:57] <zinid> или посмотреть трейс процесса
[19:23:04] <zinid> или какие сообщения он получает
[19:23:06] <zinid> и тд и тп
[19:23:11] <komar> strace штоле
[19:23:13] <zinid> как ты это всё предусмотришь?
[19:23:29] <komar> Пойду-ка я отсюда.
[19:23:34] <zinid> strace тут непричём
[19:24:31] <zinid> gds: я только за если это будет в камле
[19:24:48] ftrvxmtrx вошёл(а) в комнату
[19:24:49] <zinid> потому что ырланк задрал реально, рефактирить нереально
[19:24:56] Typhon вышел(а) из комнаты
[19:25:20] <zinid> в данный момент разработка ejabberd'а тупо встала потому что никто не хочет ничего ломать
[19:25:25] <zinid> dialyzer не помогает
[19:26:01] <ADEpt> gds: у нас в недрах назревает ocamlopt, который метит значения в хипе местом, в котором они были порождены. Получается очень приятный хип профайлер. Оно крешится иногда, но есть шанс, что до конца года оно уйдет в апстрим
[19:27:37] <gds> "какие сообщения получает" -- и у меня вполне получится, благо, рантайм-информация о типе есть.  В остальном -- только отладочные сообщения.  Ковыряться дебаггером -- фи.
[19:27:56] <gds> ADEpt: о, чотко!
[19:28:47] <zinid> gds: у ырланка есть всякие таблички, их содержимое можно чистить из шелла :)
[19:28:55] <zinid> ну или изменять
[19:29:02] <zinid> про дебаггер не понял
[19:29:33] <zinid> ну в принципе дебаггер не особо нужен, ок
[19:29:45] <gds> ну это тот же дебаггер -- вручную лазить по коду, чото там менять, ковырять.  Есть отладочная печать для этих целей.
[19:29:51] <zinid> ага
[19:30:02] <ADEpt> gds: и процессы, которые seamless заменяют уже работающие, используются в полный рост, кстати
[19:30:05] <gds> ну и вот, ненужен™
[19:30:21] <gds> ADEpt: а как они у вас сделаны?
[19:31:43] <ADEpt> gds: обычно между ними и клиентами суется pubsub-like фиговина, которая позволяет подключить новый паблишер, убить старый, и сама сделает фейловер между ними
[19:34:14] <zinid> в принципе, если бы хоть какая-то типовыводилка рабочая была в ырланке - уже хорошо (dialyzer - херня)
[19:36:49] <gds> грамотно.
[20:50:54] zinid вышел(а) из комнаты
[20:51:49] tilarids вышел(а) из комнаты: Machine going to sleep
[21:31:16] tilarids вошёл(а) в комнату
[21:56:13] ftrvxmtrx вышел(а) из комнаты
[21:57:35] ftrvxmtrx вошёл(а) в комнату
[23:13:05] bobry вошёл(а) в комнату
[23:17:18] <bobry> интересно что не так с эрланговской типовыводилкой
[23:25:26] Kakadu вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!