Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 10 января 2010< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | voice по запросу | ocaml мёртв, move on
Конфигурация комнаты

GMT+3
[00:05:08] Kakadu вошёл(а) в комнату
[00:05:19] Kakadu вышел(а) из комнаты
[00:31:27] ermine вышел(а) из комнаты
[01:16:31] ygrek вышел(а) из комнаты
[01:50:17] Typhon вошёл(а) в комнату
[02:03:00] abiogenesis вошёл(а) в комнату
[02:28:02] Typhon вышел(а) из комнаты
[03:24:32] abiogenesis вышел(а) из комнаты
[04:13:48] iNode вышел(а) из комнаты
[08:12:06] iNode вошёл(а) в комнату
[09:30:29] Typhon вошёл(а) в комнату
[11:56:23] ermine вошёл(а) в комнату
[11:59:15] sceptic вышел(а) из комнаты
[12:31:46] abiogenesis вошёл(а) в комнату
[12:32:28] sceptic вошёл(а) в комнату
[12:38:09] ygrek вошёл(а) в комнату
[12:40:50] <ygrek> если ты лок не берёшь то можно так и делать
[12:41:09] <ygrek> а если лок берёшь, то нельзя потому что мусорщик может буфер сдвинуть
[12:42:40] <abiogenesis> скачиваю страницу с помощью ocamlnet-2.2.9, в итоге результат такой:
Thread 1 killed on uncaught exception Failure("Mimestring.scan_value_with_parameters")
это баг ocamlnet и исправлениб не поддаётся?
[12:43:20] <ygrek> как скачиваешь? код?
[12:43:30] <ygrek> ответ что в mime?
[12:43:43] <ygrek> тогда может ответ кривой
[12:43:54] <abiogenesis> Http_suck.http_get "http://url", Http_suck это из sulci
[12:44:01] <ygrek> в любом случае исключение поймать то можно
[12:46:27] <ygrek> что за урла? посмотри что делает Mimestring.scan_value и почему там ошибка
[12:46:59] <abiogenesis> любая страница из http://killmepls.ru
[12:52:09] <abiogenesis> Вот почему наверное
* Scans values with annotations like
* [name ; p1=v1 ; p2=v2 ; ...]
* For example, MIME types like "text/plain;charset=ISO-8859-1" can
* be parsed
* Raises [Failure] on syntax errors.
[12:52:33] <ygrek> $ ocaml
Objective Caml version 3.11.1
# #require "netclient";;
# let s = Http_client.Convenience.http_get "http://killmepls.ru/";;
# String.length s;;
- : int = 29740
[12:53:47] <ygrek> Content-Type: text/html; charset=utf-8;
[12:53:54] <ygrek> наверное это не по стандарту
[12:55:34] <abiogenesis> Unknown directive `require'
[12:56:45] <ygrek> media-type = type "/" subtype *( ";" parameter )
[12:56:53] <ygrek> да, не по стандарту
[12:57:07] <ygrek> но кидать от этого исключение наружу - нехорошо, все вопросы к ermine :)
[12:57:23] <ygrek> #use "topfind";;
[12:57:28] <ygrek> у меня в .ocamlinit
[12:58:13] <abiogenesis> да, так у меня тоже скачивается
[13:04:30] <ermine> а не надо втупую копипастить код
[13:04:49] <ermine> у меня код особо не смотрит на хидеры
[13:06:06] <ermine> а медиа иногда нужен чтобы правильно проставить кодировку хмля, но реально нигде не юзаю щас
[13:07:06] <ermine> ygrek: по поводу буфера: в исходниках камля otherlibs/unix/write.c там буфер копипастится в другой буфер и суется в write() вместе внутри блокировки
[13:07:18] <ermine> если память не изменяет
[13:08:41] <ygrek> ermine: ну всё правильно
[13:09:08] <ermine> ygrek: та я не вижу разницы между memmove и write
[13:09:23] <ygrek> там memmove то без лока делается
[13:09:30] <ermine> можно ж вместо memmove сразу write ызвать, сэкономив на вызове
[13:09:41] <ygrek> write может заблокироваться
[13:09:56] <ygrek> и у тебя весь процесс будет висеть
[13:09:57] <ermine> а где у write лок?
[13:10:15] <ygrek> какой лок? у камля рантайм лок
[13:10:36] <ygrek> который релизиться по enter_blocking_section
[13:10:42] <ygrek> * тся
[13:10:52] <ermine> я про сискол write
[13:11:36] <ygrek> ну если это write в сеть - может блокироваться произвольно долго, в зависимости от сети
[13:11:38] <ermine> короче, я нифига не поняла
[13:12:16] <ermine> ну может и так
[13:12:32] <ygrek> так и есть
[13:12:54] <ermine> собсно я про шалости сети забыла :)
[13:13:35] <ermine> вчера нашла второй сегфолт, оно валится на вызове функции из камля, буду сегодня разбирать
[13:15:23] <ygrek> даже если не сеть - например диск, тоже долгий вызов, по сравнению с memmove
[13:16:12] <ygrek> может иметь смысл дать другим потокам возможность делать что-то полезное пока ядро будет изображать write
[13:16:28] <ygrek> ценой лишнего malloc/free
[13:16:29] <ermine> там смущает то, что надо создавать второй буфер
[13:16:41] <ermine> варианты - malloc или buf[size]
[13:17:02] <ygrek> ты не смущайся, а замерь скорость :)
когда заметишь эффект - скажешь
[13:17:02] <ermine> второе не нравится из-за непонятного размера
[13:19:00] <ygrek> Это будет иметь значение только в очень сильно io-bound коде, имхо. Premature optimization и далее по тексту.
[13:39:14] <ermine> ygrek: ну, я решаю как реализовать буфера в sl_read/write и bio_read/write
[13:40:39] <ygrek> делай самым простым способом - malloc+memmove
[13:43:06] <ermine> ну для начала можно и так
[13:43:10] <ermine> потом посмотрим
[13:43:31] <ermine> 1:1 биндинг С<->Ocaml - это не всегда гуманно
[13:44:45] <ermine> ygrek: а у тебя ocurl перестал падать и залипать?
[13:46:21] <ermine> если да - то можно свернуть на него с ocamlnet
[13:48:21] <ygrek> ermine: угу, работает 24/7 без проблем
[13:49:03] <ermine> ygrek: круто
[13:49:32] <ermine> вот если камлевые каналы in/out_channel работают без проблем, значит и все остальное тоже может
[13:49:49] <ygrek> насчёт 1:1 - тоже верно, поэтому часто можно срезать углы и обобщать какой-то функционал внутри биндинга, отдавая наружу удобный более высокоуровневый интерфейс
[14:05:07] <ygrek> ermine: http://gdsfh.dyndns.org/kamlo/Threads
комменты велкам
[14:08:19] <ermine> ygrek: там в первом же абзаце неясен смысл слова "потока"
[14:08:38] <ermine> приминительно к камлу термин "поток" испорчен :)
[14:29:31] <ermine> ygrek: кста, в 1 варианте camlparams/camlreturn ведь не нужны - там нет аллокаций от камля
[14:29:40] <sceptic> в русской литературе thread принято называть "потоками"
[14:30:12] <ermine> а channels?
[14:37:13] <ermine> мда, на вики появляются реально полезные статьи
[15:17:48] <ygrek> channel это канал
[15:17:53] abiogenesis вышел(а) из комнаты
[15:18:20] <ygrek> да, camlparam не нужны, но те кто об этом знает и так знает, а остальным не надо
[15:18:48] <ygrek> рискованная экономия на спичках
[15:20:39] <ermine> та я щас в биндингах широко использую макросы ML_1, ML_2, высмотренные в lablgtk
[15:20:49] <ermine> ими очень удобно описывать 1:1 биндинг
[15:21:40] <ermine> еще я обнаружила, что функции типа void abc(int i) {return int} тоже не нуждаются в описании - достаточно external в .ml
[15:22:02] <ermine> в общем, все это можно вписать в вики и сделать подробную доку по биндингам
[15:22:33] <ygrek> угу
[15:23:36] <ygrek> ещё упомянть аттрибут noalloc и "%identity" and co
[15:23:56] <ygrek> и ты ещё торчишь статью про ерланг
[15:24:16] <ermine> про noalloc вот я не в курсе даже
[15:24:36] <ermine> эти все штуки в документации не упоминаются
[15:24:52] <ygrek> угу
[15:25:07] <ermine> ygrek: ок, напишу про ырланк :))
[15:25:54] <ygrek> http://camltastic.blogspot.com/2008/08/tip-calling-c-functions-directly-with.html
[15:26:33] <ermine> я туда в основном лазила в последние дни:
http://www.linux-nantes.org/~fmonnier/OCaml/ocaml-wrapping-c.php
[15:27:51] <ygrek> да, там как раз всё что надо для обычного использования
[15:27:58] <ermine> да, ту ссылку я щас почитаю
[15:28:07] <ygrek> эти ссылки надо в вики собрать
[15:29:04] <ermine> http://caml.inria.fr/pub/ml-archives/caml-list/2006/05/097f63cfb39a80418f95c70c3c520aa8.en.html
[15:29:17] <ermine> те две ссылки - с ocaml-tutorial.org
[15:41:50] <ygrek> http://caml.inria.fr/pub/ml-archives/caml-list/2004/08/4ca580b6c311ce8b39cd685f81cecfac.en.html
[15:50:21] <ermine> вот там как раз нет camlparams/camlreturn. а я еще сомневалась, можно ли без них с caml_enter/leave
[15:51:04] <ermine> и есть второй вариант описывания блокировок как в стандартной библиотеке камля
[15:51:14] <ermine> там root's
[15:58:40] <ygrek> кстати в caml-list в "problem creating .cma library" как раз это тоже обсуждают
[16:00:22] <ermine> и к чему там пришли?
[16:00:28] <ermine> я мейллист не читаю
[16:05:25] <ygrek> просто упомянули все эти трюки/ссылки
[16:13:00] <ermine> трюки - это плохо
[17:08:33] ygrek вышел(а) из комнаты
[17:08:34] ygrek вошёл(а) в комнату
[17:14:03] <ermine> кроме noallow есть и другие флаги
[17:14:07] <ermine> ых
[17:14:49] <ermine> надо читать и сразу аккумулировать в вики
[17:15:44] <ygrek> float и noalloc, больше не встречал
[17:17:07] <ermine> а еще "f"
[17:17:36] <ermine> а не
[17:17:43] <ermine> можно писать парами две функции
[17:18:15] <ermine> для byte/native code
[17:18:36] <ermine> но это я уже встречала в какой-то доке или туториале давно :)
[17:19:07] <ygrek> в доке есть
[17:36:04] ygrek вышел(а) из комнаты
[17:36:05] ygrek вошёл(а) в комнату
[17:36:08] ygrek вышел(а) из комнаты
[17:36:12] ygrek вошёл(а) в комнату
[18:55:45] ExplicitCall вошёл(а) в комнату
[19:04:15] ermine читает вики в камлюнити
[19:04:27] <ermine> зря я давно туда не заглядывала - там много веселого
[19:25:52] sceptic вышел(а) из комнаты
[19:31:17] sceptic вошёл(а) в комнату
[19:44:50] Kakadu вошёл(а) в комнату
[19:58:18] ExplicitCall вышел(а) из комнаты: Logged out
[20:06:46] ExplicitCall вошёл(а) в комнату
[20:48:55] Kakadu вышел(а) из комнаты
[23:06:05] quiet_listener вошёл(а) в комнату
[23:06:27] quiet_listener вышел(а) из комнаты
[23:07:56] iNode вышел(а) из комнаты
[23:21:28] ermine сделала небольшой вброс в вики
[23:22:22] <ermine> ygrek: теперь у gds отпуск?
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!