From jixiuf@REDACTED Fri Feb 1 03:09:22 2013
From: jixiuf@REDACTED (jixiuf)
Date: Fri, 01 Feb 2013 10:09:22 +0800 (CST)
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References:
<510AE2EA.4060308@jkemp.net>
Message-ID: <20130201.100922.280107508503578068.jixiuf@gmail.com>
>> This is the part that was failing for me, actually - I get an error about
>> reloading a beam file when I ran the make from within emacs. Works OK from a
>> command line, but not from emacs.
>
> This is what I have in my emacs.d/init.el:
>
> (global-set-key (kbd "C-x RET") 'compile)
>
> So it's CTRL-C M and I get the compile prompt, which defaults to "make
> -k", then enter. Of course I have a Makefile that contains ./rebar
> compile in the default target.
>
> Emacs knows how to go to the source line on error with CTRL `
>
> I personally would not want my compiler to auto-compile when I saved
> the file, though I realize some IDEs not only do that, but try to
> compile as you type! Everyone has a different thing though.
>
I write erlang-dired-mode.el for emacs
https://raw.github.com/jixiuf/erlang-dired-mode/master/erlang-dired-mode.el
there is a function called `erlang-auto-compile' maybe can help you if you
use emacs.
From yurinvv@REDACTED Fri Feb 1 04:16:37 2013
From: yurinvv@REDACTED (Slava Yurin)
Date: Fri, 01 Feb 2013 10:16:37 +0700
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510ADD5A.4060103@jkemp.net>
References: <510ADD5A.4060103@jkemp.net>
Message-ID: <335831359688597@web12f.yandex.ru>
An HTML attachment was scrubbed...
URL:
From max.lapshin@REDACTED Fri Feb 1 04:57:39 2013
From: max.lapshin@REDACTED (Max Lapshin)
Date: Fri, 1 Feb 2013 06:57:39 +0300
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <335831359688597@web12f.yandex.ru>
References: <510ADD5A.4060103@jkemp.net>
<335831359688597@web12f.yandex.ru>
Message-ID:
Frankly speaking, it is one of the reasons, why I don't use releases at
all: it is a horrible mess with file locations.
I always configure Emakefile and run in erlang console make:all([load]).
It is much faster and more predictable than all your reloaders and syncs.
On Fri, Feb 1, 2013 at 7:16 AM, Slava Yurin wrote:
> Hi John.
>
> Maybe https://github.com/tex/ssync can help you.
>
> 01.02.2013, 04:09, "John Kemp" :
>
> Hi,
>
> I have been writing an application using rebar to build the app. I run
> the server and open a console. I then change the source code and
> apparently I need to leave the console, 'make rel' and restart the app
> and the console.
>
> I'm sure there's a better way to do what I'm doing.
>
> One project I found is https://github.com/rustyio/sync, but this did not
> (yet) work for me according to the instructions.
>
> How can I have my rebar (or just Erlang) app automatically recompile
> ('make rel') when one of the source files changes, or run a command from
> within the console to do this?
>
> Cheers,
>
> JohnK
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From samuelrivas@REDACTED Fri Feb 1 07:56:54 2013
From: samuelrivas@REDACTED (Samuel)
Date: Fri, 1 Feb 2013 07:56:54 +0100
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
Message-ID:
make:all([load]) was my usual way of working until not so long ago.
The main problem is that projects usually come without Emakefiles, but
I had this in my erlang default, which worked in most of the cases:
make() -> make([]).
make(Options) ->
make:all(
[load, debug_info | Options]
++ [{i, "../include"}, {outdir, "../ebin"}]).
Lately I have been using EDTS (https://github.com/tjarvstrand/edts)
which is truly awesome, but it breaks my usual workflow as it compiles
every time I save, so make gently refuses to compile anything, thus
not load the new code. But edts automatically loads all changes in the
node shell (emacs wrapper around the erlang shell) which is in many
ways better than the default erlang shell, so I now use that and rely
on edts reloading all my changes automatically. It is working well so
far, and is slightly faster than my previous edit-save-make:all
workflow.
Best
--
Samuel
From qoocku@REDACTED Fri Feb 1 09:25:52 2013
From: qoocku@REDACTED (=?UTF-8?B?RGFtaWFuIERvYnJvY3p5xYRza2k=?=)
Date: Fri, 01 Feb 2013 09:25:52 +0100
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510ADD5A.4060103@jkemp.net>
References: <510ADD5A.4060103@jkemp.net>
Message-ID: <510B7C10.3010802@gmail.com>
A long time ago I used the attached bash script which utilizes
"inotifywait" tool (I think it's Linux only feature) to wait for some
files changed and then it does a command you've given. I used it for TDD
;);) Theoretically you may use "inotifywait" to compile if some sources
changed and then to reload the modules if *.beam files changed (due to
compilation) using some rpc:call to specified node.
-- D.
W dniu 31.01.2013 22:08, John Kemp pisze:
> Hi,
>
> I have been writing an application using rebar to build the app. I run
> the server and open a console. I then change the source code and
> apparently I need to leave the console, 'make rel' and restart the app
> and the console.
>
> I'm sure there's a better way to do what I'm doing.
>
> One project I found is https://github.com/rustyio/sync, but this did
> not (yet) work for me according to the instructions.
>
> How can I have my rebar (or just Erlang) app automatically recompile
> ('make rel') when one of the source files changes, or run a command
> from within the console to do this?
>
> Cheers,
>
> JohnK
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fmon.sh
Type: application/x-shellscript
Size: 1877 bytes
Desc: not available
URL:
From n.oxyde@REDACTED Fri Feb 1 13:05:37 2013
From: n.oxyde@REDACTED (Anthony Ramine)
Date: Fri, 1 Feb 2013 13:05:37 +0100
Subject: [erlang-questions] OTP R16A has been released
In-Reply-To: <510AC5D4.7040500@ernovation.com>
References:
<510AC5D4.7040500@ernovation.com>
Message-ID: <274E5960-EB96-43CB-99E0-7E0AD26E28F7@gmail.com>
IMHO these two files shouldn't even be versioned. There are some stuff in
the OTP build process that makes me cry, like how there are 4 identical
aclocal.m4 files in 4 different directories when there could be only one
either at the repository root or in erts/automake/ so that erts can be
built standalone.
--
Anthony Ramine
Le 31 janv. 2013 ? 20:28, Erik Reitsma a ?crit :
> Hi Kenneth,
>
> Could you update the config.sub and config.guess to include arm-linux-androideabi, unless there is a reason to keep the 2007 version in favor of the one from 2012-12-30? The fewer files I need to update to cross-compile for Android, the better!
>
> Regards,
> *Erik.
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From kostis@REDACTED Fri Feb 1 13:35:32 2013
From: kostis@REDACTED (Kostis Sagonas)
Date: Fri, 01 Feb 2013 13:35:32 +0100
Subject: [erlang-questions] OTP R16A has been released
In-Reply-To: <274E5960-EB96-43CB-99E0-7E0AD26E28F7@gmail.com>
References:
<510AC5D4.7040500@ernovation.com>
<274E5960-EB96-43CB-99E0-7E0AD26E28F7@gmail.com>
Message-ID: <510BB694.8080206@cs.ntua.gr>
On 02/01/2013 01:05 PM, Anthony Ramine wrote:
> IMHO these two files shouldn't even be versioned. There are some stuff in
> the OTP build process that makes me cry, like how there are 4 identical
> aclocal.m4 files in 4 different directories when there could be only one
> either at the repository root or in erts/automake/ so that erts can be
> built standalone.
You are very kind in your words... ;)
There are actually 6 of them, not just 4, all identical!
kostis@REDACTED:~/HiPE/otp$ wc `find . -name aclocal.m4`
1905 5931 61331 ./lib/megaco/aclocal.m4
1905 5931 61331 ./lib/wx/aclocal.m4
1905 5931 61331 ./lib/erl_interface/aclocal.m4
1905 5931 61331 ./lib/odbc/aclocal.m4
1905 5931 61331 ./aclocal.m4
1905 5931 61331 ./erts/aclocal.m4
For what's worth, I second your suggestions.
Cheers,
Kostis
From define.null@REDACTED Fri Feb 1 13:47:14 2013
From: define.null@REDACTED (Defnull)
Date: Fri, 1 Feb 2013 04:47:14 -0800 (PST)
Subject: [erlang-questions] edoc: documenting "-type"
In-Reply-To:
References:
<4E1D3FED.4070409@gmail.com>
Message-ID: <781d5e3c-3e04-4aa6-b98d-7fae61652b4d@googlegroups.com>
This syntax is broken in R15B03, I failed to make edoc use it.
On Wednesday, July 13, 2011 1:30:43 PM UTC+4, Lukas Larsson wrote:
>
> Hi,
>
> It is not supported via the traditional edoc syntax, however it is
> supported by the new type documentation generation. If you write
>
> -type key() :: binary() | atom().
> %% This type is awesome. Really, it is great.
>
> The comment below the type will be included in the generated edoc.
>
> Lukas
>
> On Wed, Jul 13, 2011 at 8:49 AM, Richard Carlsson
> > wrote:
>
>> On 2011-07-12 23:25, Daniel Goertzen wrote:
>>
>>> I am trying to document a "-type" close to the top of my modules like
>>> this...
>>>
>>> %% @doc This type is awesome. Really, it is great.
>>> -type key() :: binary() | atom().
>>>
>>> ... but it collides with my module @doc entry above it ("multiple @doc
>>> tag" error).
>>>
>>> Is there a right way to document types or is this not supported right
>>> now? The generated documentation shows all my types nicely, but I'd
>>> love to have a bit of explanation appear with them.
>>>
>>
>> It's not supported right now, but it's a good idea. Thanks.
>>
>> /Richard
>>
>> ______________________________**_________________
>> erlang-questions mailing list
>> erlang-q...@REDACTED
>> http://erlang.org/mailman/**listinfo/erlang-questions
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From define.null@REDACTED Fri Feb 1 14:08:45 2013
From: define.null@REDACTED (Defnull)
Date: Fri, 1 Feb 2013 05:08:45 -0800 (PST)
Subject: [erlang-questions] edoc: documenting "-type"
In-Reply-To: <781d5e3c-3e04-4aa6-b98d-7fae61652b4d@googlegroups.com>
References:
<4E1D3FED.4070409@gmail.com>
<781d5e3c-3e04-4aa6-b98d-7fae61652b4d@googlegroups.com>
Message-ID: <18234ee1-1769-4625-90ae-907d2f9ddb0d@googlegroups.com>
My fault, type should be used in specs in order to appear in the
documentation
On Friday, February 1, 2013 4:47:14 PM UTC+4, Defnull wrote:
>
> This syntax is broken in R15B03, I failed to make edoc use it.
>
> On Wednesday, July 13, 2011 1:30:43 PM UTC+4, Lukas Larsson wrote:
>>
>> Hi,
>>
>> It is not supported via the traditional edoc syntax, however it is
>> supported by the new type documentation generation. If you write
>>
>> -type key() :: binary() | atom().
>> %% This type is awesome. Really, it is great.
>>
>> The comment below the type will be included in the generated edoc.
>>
>> Lukas
>>
>> On Wed, Jul 13, 2011 at 8:49 AM, Richard Carlsson wrote:
>>
>>> On 2011-07-12 23:25, Daniel Goertzen wrote:
>>>
>>>> I am trying to document a "-type" close to the top of my modules like
>>>> this...
>>>>
>>>> %% @doc This type is awesome. Really, it is great.
>>>> -type key() :: binary() | atom().
>>>>
>>>> ... but it collides with my module @doc entry above it ("multiple @doc
>>>> tag" error).
>>>>
>>>> Is there a right way to document types or is this not supported right
>>>> now? The generated documentation shows all my types nicely, but I'd
>>>> love to have a bit of explanation appear with them.
>>>>
>>>
>>> It's not supported right now, but it's a good idea. Thanks.
>>>
>>> /Richard
>>>
>>> ______________________________**_________________
>>> erlang-questions mailing list
>>> erlang-q...@REDACTED
>>> http://erlang.org/mailman/**listinfo/erlang-questions
>>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From arif@REDACTED Fri Feb 1 16:04:22 2013
From: arif@REDACTED (arif@REDACTED)
Date: Fri, 1 Feb 2013 07:04:22 -0800
Subject: [erlang-questions] Websocket client for yaws server - problem with
fragmentation?
Message-ID: <58a4c2db448767ace0df65607fecad5e.squirrel@fulvetta.riseup.net>
Hi,
I have tried to write some client functions to test the yaws websocket
server (https://github.com/arifishaq/erlws.git)
I have discovered a couple of interesting things I didn't know about:
- there is support for the ping message
- there is support for fragmented messages
On the latter, I have run into some problems and am curious to know what's
wrong, if anything is.
I am testing the server usign ct_run (see the suite in the test directory)
In practice, everything works, except when I try to send fragmented
messages. If there isn't a pause of at least 1 ms between the sending of
each fragmented message, the tests fragmented_text_delivery and
fragmented_binary_delivery fail.
Could this be a problem with the common test framework? Or with yaws?
Actually, the server does collect all the fragments and reports the
composed message to the callback module.
As I am a newbie to Erlang, I still don't know how to use trace or dbg to
try to figure out what's going on.
Thanks for any suggestions.
Best regards
Arif
From serge@REDACTED Fri Feb 1 16:20:36 2013
From: serge@REDACTED (Serge Aleynikov)
Date: Fri, 01 Feb 2013 10:20:36 -0500
Subject: [erlang-questions] edoc: documenting "-type"
In-Reply-To: <18234ee1-1769-4625-90ae-907d2f9ddb0d@googlegroups.com>
References:
<4E1D3FED.4070409@gmail.com>
<781d5e3c-3e04-4aa6-b98d-7fae61652b4d@googlegroups.com>
<18234ee1-1769-4625-90ae-907d2f9ddb0d@googlegroups.com>
Message-ID: <510BDD44.20007@aleynikov.org>
I have a similar question. In the following test module the generated
documentation for proto() type includes proper comment, but the
options() doc doesn't include comment. It seems to be immaterial if "%%
Protocol options." appear on the same line as the ending "]." of the
options() type or the next line. Why is the edoc generator doesn't
include comment for the options() type?
-module(test).
-export([t/2]).
-type proto() :: tcp | ssl.
%% Protocol type.
-type options() :: [
{server, Server::string()}
| {port, Port::integer()}
].
%% Protocol options.
%% * Server - server to connect to (no MX lookup)
%% * Relay - domain to do MX lookup of list of servers
-spec t(Proto :: proto(), Options :: options()) -> ok.
t(_Proto, _Options) -> ok.
Segment of relevant generated docs:
options() =
[{server, Server :: string()} | {port, Port :: integer()}]
proto() = tcp | ssl
Protocol type.
> On Wednesday, July 13, 2011 1:30:43 PM UTC+4, Lukas Larsson wrote:
> Hi,
>
> It is not supported via the traditional edoc syntax, however it
> is supported by the new type documentation generation. If you write
>
> -type key() :: binary() | atom().
> %% This type is awesome. Really, it is great.
>
> The comment below the type will be included in the generated edoc.
>
> Lukas
From john@REDACTED Fri Feb 1 16:40:25 2013
From: john@REDACTED (John Kemp)
Date: Fri, 1 Feb 2013 10:40:25 -0500
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <335831359688597@web12f.yandex.ru>
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
Message-ID: <8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
This does not seem to work on a Mac FWIW since there is no equivalent of the inotify tools on OS X, for similar reasons to Damian's suggestion. Otherwise (on Linux), it looks promising...
Cheers,
John
On Jan 31, 2013, at 10:16 PM, Slava Yurin wrote:
> Hi John.
>
> Maybe https://github.com/tex/ssync can help you.
>
> 01.02.2013, 04:09, "John Kemp" :
> Hi,
>
> I have been writing an application using rebar to build the app. I run
> the server and open a console. I then change the source code and
> apparently I need to leave the console, 'make rel' and restart the app
> and the console.
>
> I'm sure there's a better way to do what I'm doing.
>
> One project I found is https://github.com/rustyio/sync, but this did not
> (yet) work for me according to the instructions.
>
> How can I have my rebar (or just Erlang) app automatically recompile
> ('make rel') when one of the source files changes, or run a command from
> within the console to do this?
>
> Cheers,
>
> JohnK
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
From g@REDACTED Fri Feb 1 16:48:05 2013
From: g@REDACTED (Garrett Smith)
Date: Fri, 1 Feb 2013 09:48:05 -0600
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID:
For dev purposes, I bet that a few millisecond delay in change
detection + recompile is okay. inotify facilities is a bit much IMO
for this application.
The Mochiweb reloader polls for changes to the beam files themselves
and there is a delay, but it's not a problem, unless you're not
*really* human.
On Fri, Feb 1, 2013 at 9:40 AM, John Kemp wrote:
> This does not seem to work on a Mac FWIW since there is no equivalent of the inotify tools on OS X, for similar reasons to Damian's suggestion. Otherwise (on Linux), it looks promising...
>
> Cheers,
>
> John
>
> On Jan 31, 2013, at 10:16 PM, Slava Yurin wrote:
>
>> Hi John.
>>
>> Maybe https://github.com/tex/ssync can help you.
>>
>> 01.02.2013, 04:09, "John Kemp" :
>> Hi,
>>
>> I have been writing an application using rebar to build the app. I run
>> the server and open a console. I then change the source code and
>> apparently I need to leave the console, 'make rel' and restart the app
>> and the console.
>>
>> I'm sure there's a better way to do what I'm doing.
>>
>> One project I found is https://github.com/rustyio/sync, but this did not
>> (yet) work for me according to the instructions.
>>
>> How can I have my rebar (or just Erlang) app automatically recompile
>> ('make rel') when one of the source files changes, or run a command from
>> within the console to do this?
>>
>> Cheers,
>>
>> JohnK
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From serge@REDACTED Fri Feb 1 16:53:05 2013
From: serge@REDACTED (Serge Aleynikov)
Date: Fri, 01 Feb 2013 10:53:05 -0500
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID: <510BE4E1.3070608@aleynikov.org>
Another alternative to autoloading of modified beam files the moment
modification is made is to include the following user_default module [1]
in the ERL_LIBS path, which will add a handful of useful commands to the
shell including l() that will reload all modified beams.
Serge
[1] https://github.com/saleyn/util/blob/master/src/user_default.erl
On 2/1/2013 10:40 AM, John Kemp wrote:
> This does not seem to work on a Mac FWIW since there is no equivalent of the inotify tools on OS X, for similar reasons to Damian's suggestion. Otherwise (on Linux), it looks promising...
>
> Cheers,
>
> John
>
> On Jan 31, 2013, at 10:16 PM, Slava Yurin wrote:
>
>> Hi John.
>>
>> Maybe https://github.com/tex/ssync can help you.
>>
>> 01.02.2013, 04:09, "John Kemp" :
>> Hi,
>>
>> I have been writing an application using rebar to build the app. I run
>> the server and open a console. I then change the source code and
>> apparently I need to leave the console, 'make rel' and restart the app
>> and the console.
>>
>> I'm sure there's a better way to do what I'm doing.
>>
>> One project I found is https://github.com/rustyio/sync, but this did not
>> (yet) work for me according to the instructions.
>>
>> How can I have my rebar (or just Erlang) app automatically recompile
>> ('make rel') when one of the source files changes, or run a command from
>> within the console to do this?
>>
>> Cheers,
>>
>> JohnK
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
From mononcqc@REDACTED Fri Feb 1 17:36:27 2013
From: mononcqc@REDACTED (Fred Hebert)
Date: Fri, 1 Feb 2013 11:36:27 -0500
Subject: [erlang-questions] OTP R16A has been released
In-Reply-To:
References:
<20130130154013.GA10589@ferdmbp.local>
Message-ID: <20130201163626.GA98072@ferdmbp.local>
Hi, just to let you (and other readers) know, I've just updated the
current erlang-history repository to work with R16A.
(https://github.com/ferd/erlang-history)
I've tested it locally on my machines and it still works fine here.
Regards,
Fred.
On 01/30, Motiejus Jak?tys wrote:
> On Wed, Jan 30, 2013 at 3:40 PM, Fred Hebert wrote:
> > Also:
> >
> > OTP-10739 Add search to Erlang shell's history. Thanks to Fred
> > Herbert.
>
> History between sessions is not implemented (I get readline-style
> ctrl-r in same session fine which is super cool)?
>
> /home/motiejus$ erl -config hist.config -name labas
> Erlang R16A (erts-5.10) [source] [smp:2:2] [async-threads:10] [hipe]
> [kernel-poll:false]
>
> Eshell V5.10 (abort with ^G)
> (labas@REDACTED)1> application:get_all_env(kernel).
> [{hist_file,"erlang-history"},
> {included_applications,[]},
> {error_logger,tty},
> {hist_size,120},
> {hist_drop,["q().","init:stop()."]}]
> (labas@REDACTED)2> q().
> ok
> (labas@REDACTED)3> %
> /home/motiejus$ ls -lA | grep erlang
> -r-------- 1 motiejus motiejus 20 Rgp 23 23:00 .erlang.cookie
>
>
> --
> Motiejus Jak?tys
From wallentin.dahlberg@REDACTED Fri Feb 1 18:43:24 2013
From: wallentin.dahlberg@REDACTED (=?ISO-8859-1?Q?Bj=F6rn=2DEgil_Dahlberg?=)
Date: Fri, 1 Feb 2013 18:43:24 +0100
Subject: [erlang-questions] OTP R16A has been released
In-Reply-To: <510BB694.8080206@cs.ntua.gr>
References:
<510AC5D4.7040500@ernovation.com>
<274E5960-EB96-43CB-99E0-7E0AD26E28F7@gmail.com>
<510BB694.8080206@cs.ntua.gr>
Message-ID:
"stand alone" apps with there own configure.
These used to be links, but cannot be links anymore.
We didn't want their macros to deviate.
I utterly hate this too.
2013/2/1 Kostis Sagonas
> On 02/01/2013 01:05 PM, Anthony Ramine wrote:
>
>> IMHO these two files shouldn't even be versioned. There are some stuff in
>> the OTP build process that makes me cry, like how there are 4 identical
>> aclocal.m4 files in 4 different directories when there could be only one
>> either at the repository root or in erts/automake/ so that erts can be
>> built standalone.
>>
>
> You are very kind in your words... ;)
>
> There are actually 6 of them, not just 4, all identical!
>
> kostis@REDACTED:~/HiPE/**otp$ wc `find . -name aclocal.m4`
> 1905 5931 61331 ./lib/megaco/aclocal.m4
> 1905 5931 61331 ./lib/wx/aclocal.m4
> 1905 5931 61331 ./lib/erl_interface/aclocal.m4
> 1905 5931 61331 ./lib/odbc/aclocal.m4
> 1905 5931 61331 ./aclocal.m4
> 1905 5931 61331 ./erts/aclocal.m4
>
> For what's worth, I second your suggestions.
>
> Cheers,
> Kostis
>
> ______________________________**_________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/**listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From fritchie@REDACTED Fri Feb 1 19:21:15 2013
From: fritchie@REDACTED (Scott Lystig Fritchie)
Date: Fri, 01 Feb 2013 12:21:15 -0600
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: Message of "Fri, 01 Feb 2013 10:53:05 EST."
<510BE4E1.3070608@aleynikov.org>
Message-ID: <47389.1359742875@snookles.snookles.com>
Serge Aleynikov wrote:
sa> [1] https://github.com/saleyn/util/blob/master/src/user_default.erl
Howdy, Serge. I've been using the l() function from that
user_default.erl module for years. It's tremendously handy. There are
times where I want to reload several modules after recompiling but load
them sometime at my choosing rather than immediately after the compiler
is done. l() does that.
-Scott
From dch@REDACTED Fri Feb 1 19:39:25 2013
From: dch@REDACTED (Dave Cottlehuber)
Date: Fri, 1 Feb 2013 19:39:25 +0100
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID:
On 1 February 2013 16:40, John Kemp wrote:
> This does not seem to work on a Mac FWIW since there is no equivalent of the inotify tools on OS X, for similar reasons to Damian's suggestion. Otherwise (on Linux), it looks promising...
I've used rustyio/sync successfully on Windows and Mac, with notifu
and growl respectively. More info in the README.md at
https://github.com/rustyio/sync
The key things I found:
- run sync *before* you start editing your erlang files
- if the beam doesn't change, nothing will get reloaded
A+
Dave
From jeremy@REDACTED Fri Feb 1 19:54:38 2013
From: jeremy@REDACTED (Jeremy Ong)
Date: Fri, 1 Feb 2013 10:54:38 -0800
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID:
+1 for rustyio/sync.
Haven't had any problems. @John it looks like you are running a released
version compiled with rebar? Sync or anything else won't work with that
approach. Load the beam files directly with erl -pa path/to/ebin/dirs
deps/*/ebin
On Fri, Feb 1, 2013 at 10:39 AM, Dave Cottlehuber wrote:
> On 1 February 2013 16:40, John Kemp wrote:
> > This does not seem to work on a Mac FWIW since there is no equivalent of
> the inotify tools on OS X, for similar reasons to Damian's suggestion.
> Otherwise (on Linux), it looks promising...
>
> I've used rustyio/sync successfully on Windows and Mac, with notifu
> and growl respectively. More info in the README.md at
> https://github.com/rustyio/sync
>
> The key things I found:
>
> - run sync *before* you start editing your erlang files
> - if the beam doesn't change, nothing will get reloaded
>
> A+
> Dave
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From serge@REDACTED Fri Feb 1 20:09:37 2013
From: serge@REDACTED (Serge Aleynikov)
Date: Fri, 01 Feb 2013 14:09:37 -0500
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <47389.1359742875@snookles.snookles.com>
References: <47389.1359742875@snookles.snookles.com>
Message-ID: <510C12F1.8040903@aleynikov.org>
Hi Scott,
Nice to know I'm not the only one finding it useful! ;-)
Other than for auto-compilation/loading of erlydtl templates, I also
find that having control over the moment of code loading is more
advantageous, as the function shows what modules were loaded, so you
know what version of code is running.
Concerning the user_default, I believe I added a couple more useful
functions there (i.e tc/2, tc/4) after I published this module a while
back. Enjoy! ;-)
Serge
On 2/1/2013 1:21 PM, Scott Lystig Fritchie wrote:
> Serge Aleynikov wrote:
>
> sa> [1] https://github.com/saleyn/util/blob/master/src/user_default.erl
>
> Howdy, Serge. I've been using the l() function from that
> user_default.erl module for years. It's tremendously handy. There are
> times where I want to reload several modules after recompiling but load
> them sometime at my choosing rather than immediately after the compiler
> is done. l() does that.
>
> -Scott
>
From diego.llarrull@REDACTED Fri Feb 1 21:01:10 2013
From: diego.llarrull@REDACTED (Diego Llarrull)
Date: Fri, 01 Feb 2013 17:01:10 -0300
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510C12F1.8040903@aleynikov.org>
References: <47389.1359742875@snookles.snookles.com>
<510C12F1.8040903@aleynikov.org>
Message-ID: <510C1F06.3080304@tecso.coop>
Hello everyone,
I'm working on a riak_core based project, that is, one which uses rebar
+ GNU make and where the src files are located in different folders
than the beam files, which are inside inside zipped (.ez) files.
sync + libnotify will do the trick for unzipped files, but some extra
trickery was needed to load the new .beam files
a) compile the modified sources
b) (create and) run a script that generates the .zip files containing
the .beams and deploys those files in their destination directory
c) run the following code:
reload() ->
Modules = [ X || {X,L} <- code:all_loaded(),
is_list(L),string:str(L, ?PATH_TO_CODE_DIR) =/= 0],
lists:map(fun(X) -> c:l(X) end, Modules).
Hope this helps anyone, right now I'm trying out ssync to see if it is
able to handle zipped files.
Best regards,
Diego
On 01/02/13 16:09, Serge Aleynikov wrote:
> Hi Scott,
>
> Nice to know I'm not the only one finding it useful! ;-)
>
> Other than for auto-compilation/loading of erlydtl templates, I also
> find that having control over the moment of code loading is more
> advantageous, as the function shows what modules were loaded, so you
> know what version of code is running.
>
> Concerning the user_default, I believe I added a couple more useful
> functions there (i.e tc/2, tc/4) after I published this module a while
> back. Enjoy! ;-)
>
> Serge
>
> On 2/1/2013 1:21 PM, Scott Lystig Fritchie wrote:
>> Serge Aleynikov wrote:
>>
>> sa> [1] https://github.com/saleyn/util/blob/master/src/user_default.erl
>>
>> Howdy, Serge. I've been using the l() function from that
>> user_default.erl module for years. It's tremendously handy. There are
>> times where I want to reload several modules after recompiling but load
>> them sometime at my choosing rather than immediately after the compiler
>> is done. l() does that.
>>
>> -Scott
>>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From nyarly@REDACTED Fri Feb 1 21:41:05 2013
From: nyarly@REDACTED (Judson Lester)
Date: Fri, 1 Feb 2013 12:41:05 -0800
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510C1F06.3080304@tecso.coop>
References: <47389.1359742875@snookles.snookles.com>
<510C12F1.8040903@aleynikov.org> <510C1F06.3080304@tecso.coop>
Message-ID:
On a related note, has anyone written Common Test hooks to compile/reload
the CUT modules before running tests? When I get back to Erlang, it's the
top of my list, but I really wouldn't complain if it's been done already.
Judson
On Fri, Feb 1, 2013 at 12:01 PM, Diego Llarrull
wrote:
> Hello everyone,
>
> I'm working on a riak_core based project, that is, one which uses rebar +
> GNU make and where the src files are located in different folders than the
> beam files, which are inside inside zipped (.ez) files.
>
> sync + libnotify will do the trick for unzipped files, but some extra
> trickery was needed to load the new .beam files
>
> a) compile the modified sources
> b) (create and) run a script that generates the .zip files containing the
> .beams and deploys those files in their destination directory
> c) run the following code:
>
> reload() ->
> Modules = [ X || {X,L} <- code:all_loaded(), is_list(L),string:str(L,
> ?PATH_TO_CODE_DIR) =/= 0],
> lists:map(fun(X) -> c:l(X) end, Modules).
>
> Hope this helps anyone, right now I'm trying out ssync to see if it is
> able to handle zipped files.
>
> Best regards,
>
> Diego
>
>
> On 01/02/13 16:09, Serge Aleynikov wrote:
>
>> Hi Scott,
>>
>> Nice to know I'm not the only one finding it useful! ;-)
>>
>> Other than for auto-compilation/loading of erlydtl templates, I also
>> find that having control over the moment of code loading is more
>> advantageous, as the function shows what modules were loaded, so you
>> know what version of code is running.
>>
>> Concerning the user_default, I believe I added a couple more useful
>> functions there (i.e tc/2, tc/4) after I published this module a while
>> back. Enjoy! ;-)
>>
>> Serge
>>
>> On 2/1/2013 1:21 PM, Scott Lystig Fritchie wrote:
>>
>>> Serge Aleynikov wrote:
>>>
>>> sa> [1] https://github.com/saleyn/**util/blob/master/src/user_**
>>> default.erl
>>>
>>> Howdy, Serge. I've been using the l() function from that
>>> user_default.erl module for years. It's tremendously handy. There are
>>> times where I want to reload several modules after recompiling but load
>>> them sometime at my choosing rather than immediately after the compiler
>>> is done. l() does that.
>>>
>>> -Scott
>>>
>>> ______________________________**_________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/**listinfo/erlang-questions
>>
>
> ______________________________**_________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/**listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From gumm@REDACTED Fri Feb 1 21:46:28 2013
From: gumm@REDACTED (Jesse Gumm)
Date: Fri, 1 Feb 2013 14:46:28 -0600
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID:
I too run Rusty's sync.
There are a few situations where sync breaks down a bit:
1) Includes - sync does not detect changes to include files, and so if you
were to change an include with records, for example, you could end up with
modules that have the old version of the record loaded, and other modules
with the new version of the record loaded.
2) parse_transform - From what I understand, sync has some issue with
parse_transforms.
This is what, as far as I understand, inspired the development of tex/ssync
- which works similarly to sync, but watches all files (even rebar.config,
from what it seems) and relies on rebar to recompile everything, then
reloads the beams. I haven't played with ssync at all, but I've been
meaning to, it seems a worthwhile effort to offload the compiling to rebar
and just watch for file changes to trigger the recompile.
-Jesse
On Fri, Feb 1, 2013 at 12:54 PM, Jeremy Ong wrote:
> +1 for rustyio/sync.
>
> Haven't had any problems. @John it looks like you are running a released
> version compiled with rebar? Sync or anything else won't work with that
> approach. Load the beam files directly with erl -pa path/to/ebin/dirs
> deps/*/ebin
>
>
> On Fri, Feb 1, 2013 at 10:39 AM, Dave Cottlehuber wrote:
>
>> On 1 February 2013 16:40, John Kemp wrote:
>> > This does not seem to work on a Mac FWIW since there is no equivalent
>> of the inotify tools on OS X, for similar reasons to Damian's suggestion.
>> Otherwise (on Linux), it looks promising...
>>
>> I've used rustyio/sync successfully on Windows and Mac, with notifu
>> and growl respectively. More info in the README.md at
>> https://github.com/rustyio/sync
>>
>> The key things I found:
>>
>> - run sync *before* you start editing your erlang files
>> - if the beam doesn't change, nothing will get reloaded
>>
>> A+
>> Dave
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
--
Jesse Gumm
Owner, Sigma Star Systems
414.940.4866 || sigma-star.com || @jessegumm
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From carlsson.richard@REDACTED Fri Feb 1 22:28:43 2013
From: carlsson.richard@REDACTED (Richard Carlsson)
Date: Fri, 01 Feb 2013 22:28:43 +0100
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
<8B5F28A9-F0FE-469A-B0E1-11CA26A9242E@jkemp.net>
Message-ID: <510C338B.6090408@gmail.com>
On 2013-02-01 16:48, Garrett Smith wrote:
> For dev purposes, I bet that a few millisecond delay in change
> detection + recompile is okay. inotify facilities is a bit much IMO
> for this application.
>
> The Mochiweb reloader polls for changes to the beam files themselves
> and there is a delay, but it's not a problem, unless you're not
> *really* human.
There's also this: https://github.com/richcarl/file_monitor
I also had a couple of rather experimental modules called code_monitor
and autoload - I used to keep them under my EUnit development repo, but
I recently removed them and made a new repo for file_monitor. The other
files can be dug out from the history
(https://github.com/richcarl/eunit/commits/master) if you want to play
with them.
/Richard
From steven.charles.davis@REDACTED Sat Feb 2 01:47:48 2013
From: steven.charles.davis@REDACTED (Steve Davis)
Date: Fri, 1 Feb 2013 16:47:48 -0800 (PST)
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To:
References: <510ADD5A.4060103@jkemp.net> <335831359688597@web12f.yandex.ru>
Message-ID: <3fec85bd-6f31-4c07-ac4f-b0008e9765f0@googlegroups.com>
+1
On Thursday, January 31, 2013 9:57:39 PM UTC-6, Max Lapshin wrote:
>
> Frankly speaking, it is one of the reasons, why I don't use releases at
> all: it is a horrible mess with file locations.
>
> I always configure Emakefile and run in erlang console make:all([load]).
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From dm.klionsky@REDACTED Sat Feb 2 09:39:15 2013
From: dm.klionsky@REDACTED (Dmitry Klionsky)
Date: Sat, 02 Feb 2013 11:39:15 +0300
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510ADD5A.4060103@jkemp.net>
References: <510ADD5A.4060103@jkemp.net>
Message-ID: <510CD0B3.9010307@gmail.com>
We use modified version of sync https://github.com/ten0s/sync that
supports releases, detects new files, and monitors changes in include
files (at least it should, don't use this feature often) as far as the
next requirements are met:
1. Make sync somehow available to your release. Include it into your
release or put it in the erlang libs.
2. Build the project with debug_info.
3. Remove {debug_info, strip} from reltool.config
4. Add {excl_archive_filters, [".*"]} to reltool.config
5. Start sync:start() before making any changes.
6. Disable any growl notifications (optional)
We also edit files in emacs with flymake mode enabled using custom
erlang syntax checker for *.erl, *.hrl, *.config files
https://github.com/ten0s/syntaxerl
In general our workflow is:
1. Build the project with rebar
$ make
2. Start it in the console mode
$ make console
3. Start sync
> sync:start().
4. Now start edit files. Whenever flymake says that the file is OK
pretty soon sync will reload it. This workflow works fine until you need
to make big changes like adding a child to a supervisor or make a new
application. In this case go to point 1 and start over.
Hope this helps.
On 02/01/2013 12:08 AM, John Kemp wrote:
> Hi,
>
> I have been writing an application using rebar to build the app. I run
> the server and open a console. I then change the source code and
> apparently I need to leave the console, 'make rel' and restart the app
> and the console.
>
> I'm sure there's a better way to do what I'm doing.
>
> One project I found is https://github.com/rustyio/sync, but this did
> not (yet) work for me according to the instructions.
>
> How can I have my rebar (or just Erlang) app automatically recompile
> ('make rel') when one of the source files changes, or run a command
> from within the console to do this?
>
> Cheers,
>
> JohnK
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
--
Best regards,
Dmitry Klionsky
From sergej.jurecko@REDACTED Sat Feb 2 09:58:16 2013
From: sergej.jurecko@REDACTED (Sergej Jurecko)
Date: Sat, 2 Feb 2013 09:58:16 +0100
Subject: [erlang-questions] "Automatic" recompile app from a console
In-Reply-To: <510CD0B3.9010307@gmail.com>
References: <510ADD5A.4060103@jkemp.net> <510CD0B3.9010307@gmail.com>
Message-ID: <4FD6F5AC-7EF5-4C93-8833-5416319FC363@gmail.com>
We actually were not aware of sync and developed our own similar solution.
It simply works by monitoring ~/ebin, ~/etc, ~/src,~/include,~/apps/../ebin,~/apps/.../src,~/apps/.../dtl,~/deps/../ebin
We have a lot of django template files and we put them in dtl folders. They get compiled with erlydtl.
If a .hrl file gets changed, all source files get compiled for that project as well. For instance hrlname.hrl, will cause all sources that start with hrlname_ to get compiled.
Same with base django template files. if file name is projectname_base.dtl, every .dtl file that starts with projectname_ will get compiled.
We use one large repository for all projects and because there are quite a few apps at the moment, we have simple C/C++ programs that use platform specific APIs for file notifications (FSEvents for osx, inotify for linux). They are pretty trivial one file sources that get compiled automatically on erlang startup if they are not compiled yet. Then they are run with open_port and communicate via stdout.
If anyone wants to make use of those C/C++ file notification programs we can gladly open source them.
Sergej
On Feb 2, 2013, at 9:39 AM, Dmitry Klionsky wrote:
> We use modified version of sync https://github.com/ten0s/sync that supports releases, detects new files, and monitors changes in include files (at least it should, don't use this feature often) as far as the next requirements are met:
> 1. Make sync somehow available to your release. Include it into your release or put it in the erlang libs.
> 2. Build the project with debug_info.
> 3. Remove {debug_info, strip} from reltool.config
> 4. Add {excl_archive_filters, [".*"]} to reltool.config
> 5. Start sync:start() before making any changes.
> 6. Disable any growl notifications (optional)
>
> We also edit files in emacs with flymake mode enabled using custom erlang syntax checker for *.erl, *.hrl, *.config files https://github.com/ten0s/syntaxerl
>
> In general our workflow is:
> 1. Build the project with rebar
> $ make
> 2. Start it in the console mode
> $ make console
> 3. Start sync
> > sync:start().
> 4. Now start edit files. Whenever flymake says that the file is OK pretty soon sync will reload it. This workflow works fine until you need to make big changes like adding a child to a supervisor or make a new application. In this case go to point 1 and start over.
>
> Hope this helps.
>
>
> On 02/01/2013 12:08 AM, John Kemp wrote:
>> Hi,
>>
>> I have been writing an application using rebar to build the app. I run the server and open a console. I then change the source code and apparently I need to leave the console, 'make rel' and restart the app and the console.
>>
>> I'm sure there's a better way to do what I'm doing.
>>
>> One project I found is https://github.com/rustyio/sync, but this did not (yet) work for me according to the instructions.
>>
>> How can I have my rebar (or just Erlang) app automatically recompile ('make rel') when one of the source files changes, or run a command from within the console to do this?
>>
>> Cheers,
>>
>> JohnK
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> --
> Best regards,
> Dmitry Klionsky
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From msegalis@REDACTED Sat Feb 2 15:29:54 2013
From: msegalis@REDACTED (Morgan Segalis)
Date: Sat, 2 Feb 2013 15:29:54 +0100
Subject: [erlang-questions] multiple process handling one udp listen socket ?
Message-ID:
Hi everyone,
I'm scratching my head with a particular problem...
I would like to create my own udp relay server.
Right now my udp relay server works fine, but it is only using one process...
[CODE]
start_server() ->
spawn(?MODULE, sl, [80]).
sl(Port) ->
{ok, Socket} = gen_udp:open(Port, [binary]),
inet:setopts(Socket, [{active, true}]),
listen(Socket).
listen(Socket) ->
receive
{udp, _ , Host, Port, <<0>>} ->
io:fwrite("Host: ~p~n", [Host]),
io:fwrite("DistantPort: ~p~n", [Port]),
io:fwrite("server received:~p~n",[Socket]),
io:fwrite("LocalPort: ~p~n", [inet:port(Socket)]),
Message = lists:flatten(io_lib:format("~p\0", [Port])),
Res = gen_udp:send(Socket, Host, Port, Message),
io:fwrite("Sent back: ~p // ~p~n", [Port, Res]),
listen(Socket);
{udp, _, _, _, <<1:8,
Ip1:1/big-unsigned-integer-unit:8,
Ip2:1/big-unsigned-integer-unit:8,
Ip3:1/big-unsigned-integer-unit:8,
Ip4:1/big-unsigned-integer-unit:8,
Port1:1/big-unsigned-integer-unit:8,
Port2:1/big-unsigned-integer-unit:8,
Bin/binary>>} ->
Ip = {Ip1, Ip2, Ip3, Ip4},
Port = Port1 * 256 + Port2,
gen_udp:send(Socket, Ip, Port, Bin),
listen(Socket);
Any ->
listen(Socket)
end.
[/CODE]
I'm worrying that if multiple (hundred, thousand ?) clients are using it, the process will be overwhelmed...
Since right now I'm only listening one port (right now 80), I do not seems to see how to make multiple process to handle the same socket. Since udp is quite different from tcp since it does not need to connect/accept connections.
I would like to know if there is a way to get multiple process to handle the listen socket Even if it means that each process is handling only one client (specific host ?)... The only thing is, that the listen port should be the same for all client...
Thank you for your help,
Morgan.
From sergej.jurecko@REDACTED Sat Feb 2 15:44:13 2013
From: sergej.jurecko@REDACTED (Sergej Jurecko)
Date: Sat, 2 Feb 2013 15:44:13 +0100
Subject: [erlang-questions] multiple process handling one udp listen
socket ?
In-Reply-To:
References:
Message-ID:
You can't listen on multiple processes. Do you really need all communication through a single port? This is generally not how protocols based on UDP work.
If you really have to do it, you have to increase receive buffer for it. inet:setopts(Sock,[{recbuf,SomethingBig}]).
Do not do anything other than receive bytes on that socket/process. Open a new process and socket for processing and reply.
{active,true} is not a good idea on that process. False or once are safer options.
Sergej
On Feb 2, 2013, at 3:29 PM, Morgan Segalis wrote:
> Hi everyone,
>
> I'm scratching my head with a particular problem...
> I would like to create my own udp relay server.
>
> Right now my udp relay server works fine, but it is only using one process...
>
> [CODE]
>
> start_server() ->
> spawn(?MODULE, sl, [80]).
>
> sl(Port) ->
> {ok, Socket} = gen_udp:open(Port, [binary]),
> inet:setopts(Socket, [{active, true}]),
> listen(Socket).
>
> listen(Socket) ->
> receive
> {udp, _ , Host, Port, <<0>>} ->
> io:fwrite("Host: ~p~n", [Host]),
> io:fwrite("DistantPort: ~p~n", [Port]),
> io:fwrite("server received:~p~n",[Socket]),
> io:fwrite("LocalPort: ~p~n", [inet:port(Socket)]),
> Message = lists:flatten(io_lib:format("~p\0", [Port])),
> Res = gen_udp:send(Socket, Host, Port, Message),
> io:fwrite("Sent back: ~p // ~p~n", [Port, Res]),
> listen(Socket);
> {udp, _, _, _, <<1:8,
> Ip1:1/big-unsigned-integer-unit:8,
> Ip2:1/big-unsigned-integer-unit:8,
> Ip3:1/big-unsigned-integer-unit:8,
> Ip4:1/big-unsigned-integer-unit:8,
> Port1:1/big-unsigned-integer-unit:8,
> Port2:1/big-unsigned-integer-unit:8,
> Bin/binary>>} ->
> Ip = {Ip1, Ip2, Ip3, Ip4},
> Port = Port1 * 256 + Port2,
> gen_udp:send(Socket, Ip, Port, Bin),
> listen(Socket);
> Any ->
> listen(Socket)
> end.
>
> [/CODE]
>
> I'm worrying that if multiple (hundred, thousand ?) clients are using it, the process will be overwhelmed...
> Since right now I'm only listening one port (right now 80), I do not seems to see how to make multiple process to handle the same socket. Since udp is quite different from tcp since it does not need to connect/accept connections.
>
> I would like to know if there is a way to get multiple process to handle the listen socket Even if it means that each process is handling only one client (specific host ?)... The only thing is, that the listen port should be the same for all client...
>
> Thank you for your help,
>
> Morgan.
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From msegalis@REDACTED Sat Feb 2 15:56:34 2013
From: msegalis@REDACTED (Morgan Segalis)
Date: Sat, 2 Feb 2013 15:56:34 +0100
Subject: [erlang-questions] multiple process handling one udp listen
socket ?
In-Reply-To:
References:
Message-ID: <9E85F546-7A6D-4069-8388-6F69C63B5197@gmail.com>
Hi Sergej,
Thank you for your answer...
Actually, I would like to listen to port 80 for firewall blocking issue, at least I'm sure that port 80 is not blocked.
Since the issue is for bypassing firewall, unfortunately, creating another socket to communicate with the client won't work (The socket has to be initiated from the client to pass)...
What I'm really worrying about is to handle bandwidth as fast as it can goes (1GB/s) without the thread (process) to be overwhelmed by it.
What if the udp open {active, false} is set ? could I open multiple process with the same socket and wait for data on this process with gen_recv ?
Le 2 f?vr. 2013 ? 15:44, Sergej Jurecko a ?crit :
> You can't listen on multiple processes. Do you really need all communication through a single port? This is generally not how protocols based on UDP work.
> If you really have to do it, you have to increase receive buffer for it. inet:setopts(Sock,[{recbuf,SomethingBig}]).
> Do not do anything other than receive bytes on that socket/process. Open a new process and socket for processing and reply.
> {active,true} is not a good idea on that process. False or once are safer options.
>
> Sergej
>
> On Feb 2, 2013, at 3:29 PM, Morgan Segalis wrote:
>
>> Hi everyone,
>>
>> I'm scratching my head with a particular problem...
>> I would like to create my own udp relay server.
>>
>> Right now my udp relay server works fine, but it is only using one process...
>>
>> [CODE]
>>
>> start_server() ->
>> spawn(?MODULE, sl, [80]).
>>
>> sl(Port) ->
>> {ok, Socket} = gen_udp:open(Port, [binary]),
>> inet:setopts(Socket, [{active, true}]),
>> listen(Socket).
>>
>> listen(Socket) ->
>> receive
>> {udp, _ , Host, Port, <<0>>} ->
>> io:fwrite("Host: ~p~n", [Host]),
>> io:fwrite("DistantPort: ~p~n", [Port]),
>> io:fwrite("server received:~p~n",[Socket]),
>> io:fwrite("LocalPort: ~p~n", [inet:port(Socket)]),
>> Message = lists:flatten(io_lib:format("~p\0", [Port])),
>> Res = gen_udp:send(Socket, Host, Port, Message),
>> io:fwrite("Sent back: ~p // ~p~n", [Port, Res]),
>> listen(Socket);
>> {udp, _, _, _, <<1:8,
>> Ip1:1/big-unsigned-integer-unit:8,
>> Ip2:1/big-unsigned-integer-unit:8,
>> Ip3:1/big-unsigned-integer-unit:8,
>> Ip4:1/big-unsigned-integer-unit:8,
>> Port1:1/big-unsigned-integer-unit:8,
>> Port2:1/big-unsigned-integer-unit:8,
>> Bin/binary>>} ->
>> Ip = {Ip1, Ip2, Ip3, Ip4},
>> Port = Port1 * 256 + Port2,
>> gen_udp:send(Socket, Ip, Port, Bin),
>> listen(Socket);
>> Any ->
>> listen(Socket)
>> end.
>>
>> [/CODE]
>>
>> I'm worrying that if multiple (hundred, thousand ?) clients are using it, the process will be overwhelmed...
>> Since right now I'm only listening one port (right now 80), I do not seems to see how to make multiple process to handle the same socket. Since udp is quite different from tcp since it does not need to connect/accept connections.
>>
>> I would like to know if there is a way to get multiple process to handle the listen socket Even if it means that each process is handling only one client (specific host ?)... The only thing is, that the listen port should be the same for all client...
>>
>> Thank you for your help,
>>
>> Morgan.
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>
From sergej.jurecko@REDACTED Sat Feb 2 16:14:41 2013
From: sergej.jurecko@REDACTED (Sergej Jurecko)
Date: Sat, 2 Feb 2013 16:14:41 +0100
Subject: [erlang-questions] multiple process handling one udp listen
socket ?
In-Reply-To: <9E85F546-7A6D-4069-8388-6F69C63B5197@gmail.com>
References:
<9E85F546-7A6D-4069-8388-6F69C63B5197@gmail.com>
Message-ID: <95DC69D0-C1E8-4BCA-A6E7-C67AEE2BAFF9@gmail.com>
Google "udp punch" if you can make it work with that.
{active,false} and multiple processes calling recv I very much doubt will work. Try it :)
You will definitely not be able to handle 1gbit on 1 socket process. Not even close. If there really is no other option, I would write the program in C, which would then send data to erlang over tcp. The C program would listen, then send the data to erlang over a pool of TCP connections.
Sergej
On Feb 2, 2013, at 3:56 PM, Morgan Segalis wrote:
> Hi Sergej,
>
> Thank you for your answer...
> Actually, I would like to listen to port 80 for firewall blocking issue, at least I'm sure that port 80 is not blocked.
>
> Since the issue is for bypassing firewall, unfortunately, creating another socket to communicate with the client won't work (The socket has to be initiated from the client to pass)...
>
> What I'm really worrying about is to handle bandwidth as fast as it can goes (1GB/s) without the thread (process) to be overwhelmed by it.
>
> What if the udp open {active, false} is set ? could I open multiple process with the same socket and wait for data on this process with gen_recv ?
>
> Le 2 f?vr. 2013 ? 15:44, Sergej Jurecko a ?crit :
>
>> You can't listen on multiple processes. Do you really need all communication through a single port? This is generally not how protocols based on UDP work.
>> If you really have to do it, you have to increase receive buffer for it. inet:setopts(Sock,[{recbuf,SomethingBig}]).
>> Do not do anything other than receive bytes on that socket/process. Open a new process and socket for processing and reply.
>> {active,true} is not a good idea on that process. False or once are safer options.
>>
>> Sergej
>>
>> On Feb 2, 2013, at 3:29 PM, Morgan Segalis wrote:
>>
>>> Hi everyone,
>>>
>>> I'm scratching my head with a particular problem...
>>> I would like to create my own udp relay server.
>>>
>>> Right now my udp relay server works fine, but it is only using one process...
>>>
>>> [CODE]
>>>
>>> start_server() ->
>>> spawn(?MODULE, sl, [80]).
>>>
>>> sl(Port) ->
>>> {ok, Socket} = gen_udp:open(Port, [binary]),
>>> inet:setopts(Socket, [{active, true}]),
>>> listen(Socket).
>>>
>>> listen(Socket) ->
>>> receive
>>> {udp, _ , Host, Port, <<0>>} ->
>>> io:fwrite("Host: ~p~n", [Host]),
>>> io:fwrite("DistantPort: ~p~n", [Port]),
>>> io:fwrite("server received:~p~n",[Socket]),
>>> io:fwrite("LocalPort: ~p~n", [inet:port(Socket)]),
>>> Message = lists:flatten(io_lib:format("~p\0", [Port])),
>>> Res = gen_udp:send(Socket, Host, Port, Message),
>>> io:fwrite("Sent back: ~p // ~p~n", [Port, Res]),
>>> listen(Socket);
>>> {udp, _, _, _, <<1:8,
>>> Ip1:1/big-unsigned-integer-unit:8,
>>> Ip2:1/big-unsigned-integer-unit:8,
>>> Ip3:1/big-unsigned-integer-unit:8,
>>> Ip4:1/big-unsigned-integer-unit:8,
>>> Port1:1/big-unsigned-integer-unit:8,
>>> Port2:1/big-unsigned-integer-unit:8,
>>> Bin/binary>>} ->
>>> Ip = {Ip1, Ip2, Ip3, Ip4},
>>> Port = Port1 * 256 + Port2,
>>> gen_udp:send(Socket, Ip, Port, Bin),
>>> listen(Socket);
>>> Any ->
>>> listen(Socket)
>>> end.
>>>
>>> [/CODE]
>>>
>>> I'm worrying that if multiple (hundred, thousand ?) clients are using it, the process will be overwhelmed...
>>> Since right now I'm only listening one port (right now 80), I do not seems to see how to make multiple process to handle the same socket. Since udp is quite different from tcp since it does not need to connect/accept connections.
>>>
>>> I would like to know if there is a way to get multiple process to handle the listen socket Even if it means that each process is handling only one client (specific host ?)... The only thing is, that the listen port should be the same for all client...
>>>
>>> Thank you for your help,
>>>
>>> Morgan.
>>> _______________________________________________
>>> erlang-questions mailing list
>>> erlang-questions@REDACTED
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
From sigxcpu@REDACTED Sat Feb 2 21:52:04 2013
From: sigxcpu@REDACTED (Alexandru Pirvulescu)
Date: Sat, 2 Feb 2013 22:52:04 +0200
Subject: [erlang-questions] Memory growing
Message-ID:
Hello,
If somebody could help me with an issue, I would be grateful. I'm pulling my hair off trying to figure out why an erlang app keeps growing in memory usage. The erlang:memory() after 3 days shows this:
[{total,325732292},
{processes,54520269},
{processes_used,54492115},
{system,271212023},
{atom,932793},
{atom_used,912937},
{binary,2348080},
{code,8288354},
{ets,487392},
{maximum,398189416}]
The interesting part is "system" section. All other data is fine (processes goes to few MBs during the night as all the started procs are either hibernated - for long running or they die because of inactivity).
There are two issues here:
- "system" keeps growing (around 800MB/week)
- OS (Linux) shows a significantly different amount of memory usage (almost 2x, 610MB resident in this case)
The only case where I've managed to make "system" grow is by calling erlang:monitor() multiple times. It grows with ~13K/call.
Erlang release used is R15B03.
The questions are:
- is there any hidden function to inspect all the active process monitors? (as the single place where I use erlang:monitor looks fine. The spawned kid does its job and dies, so the ref should be garbage collected).
- is there any way to inspect "system" section and find out what it contains? Looking at memory chunks in process map got me nowhere
Thank you,
Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From dmkolesnikov@REDACTED Sat Feb 2 22:01:18 2013
From: dmkolesnikov@REDACTED (Dmitry Kolesnikov)
Date: Sat, 2 Feb 2013 23:01:18 +0200
Subject: [erlang-questions] Memory growing
In-Reply-To:
References:
Message-ID: <76091FD4-255F-48A2-96CF-52432F667CF9@gmail.com>
Hello,
This is extremely hard to answer your question not knowing the application context, what it does, etc.
Just keep in mode that memory report is given in words with is either 4 or 8 byte depends on system config. This is a reason why linux show diff value.
I would start with entop utility and check top processes with high men and high reductions.
https://github.com/mazenharake/entop
Please share those views!
Best Regards, Dmitry
On Feb 2, 2013, at 10:52 PM, Alexandru Pirvulescu wrote:
> Hello,
>
> If somebody could help me with an issue, I would be grateful. I'm pulling my hair off trying to figure out why an erlang app keeps growing in memory usage. The erlang:memory() after 3 days shows this:
>
> [{total,325732292},
> {processes,54520269},
> {processes_used,54492115},
> {system,271212023},
> {atom,932793},
> {atom_used,912937},
> {binary,2348080},
> {code,8288354},
> {ets,487392},
> {maximum,398189416}]
>
> The interesting part is "system" section. All other data is fine (processes goes to few MBs during the night as all the started procs are either hibernated - for long running or they die because of inactivity).
>
> There are two issues here:
> - "system" keeps growing (around 800MB/week)
> - OS (Linux) shows a significantly different amount of memory usage (almost 2x, 610MB resident in this case)
>
> The only case where I've managed to make "system" grow is by calling erlang:monitor() multiple times. It grows with ~13K/call.
>
> Erlang release used is R15B03.
>
> The questions are:
> - is there any hidden function to inspect all the active process monitors? (as the single place where I use erlang:monitor looks fine. The spawned kid does its job and dies, so the ref should be garbage collected).
> - is there any way to inspect "system" section and find out what it contains? Looking at memory chunks in process map got me nowhere
>
> Thank you,
> Alex
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From sigxcpu@REDACTED Sat Feb 2 22:11:21 2013
From: sigxcpu@REDACTED (Alex P)
Date: Sat, 2 Feb 2013 13:11:21 -0800 (PST)
Subject: [erlang-questions] Memory growing
In-Reply-To: <76091FD4-255F-48A2-96CF-52432F667CF9@gmail.com>
References:
<76091FD4-255F-48A2-96CF-52432F667CF9@gmail.com>
Message-ID: <5abf0f0e-b710-4eb3-99cf-4bef23b6153d@googlegroups.com>
Hi Dmitry,
Here is the output of the entop (as you can see, the processes are not the
issue here, "system" section is):
Node: 'agstats@REDACTED' (Connected) (R15B03/5.9.3.1) unix
(linux 3.2.0) CPU:16 SMP +A:0
Time: local time 13:09:10, up for 003:12:35:31, 0ms latency,
Processes: total 334 (RQ 0) at 52918 RpI using 49898.4k (49993.9k allocated)
Memory: Sys 264699.0k, Atom 892.0k/910.9k, Bin 1826.3k, Code 8097.1k, Ets
474.5k
Interval 1000ms, Sorting on "Reductions" (Descending), Retrieved in 12ms
Pid Registered Name Reductions MQueue HSize SSize
HTot
<0.326.0> - 25014751303 0 10946 9 39603
<0.301.0> agstats_amqp_consume 1281607832 0 2584 9 3571
<0.315.0> agstats_dispatcher 472013246 0 17711 9 18321
<0.310.0> - 210373059 0 987 9 1364
<0.293.0> process_killer 197156469 0 1597 9 3194
0.7437.1563> - 144466013 0 75025 9 150050
<0.305.0> - 122348400 0 1597 9 2207
<0.316.0> agstats_snapshotter 101550524 0 2584 9 2961
<0.299.0> agstats_db_mongo 100126516 0 10946 9 39603
<0.331.0> - 78832553 0 610 6 1220
<0.325.0> - 75253366 0 610 9 987
<0.330.0> - 71854078 0 987 9 1597
<0.312.0> - 68821776 0 2584 7 3571
<0.313.0> - 62769588 0 233 9 1220
<0.322.0> - 43514944 0 987 9 1364
.12614.1563> - 24678619 0 46368 9 92736
<0.82.0> timer_server 22905189 0 2584 9 2961
<0.327.0> - 22070516 0 610 9 1220
On Saturday, February 2, 2013 11:01:18 PM UTC+2, Dmitry Kolesnikov wrote:
>
> Hello,
>
> This is extremely hard to answer your question not knowing the application
> context, what it does, etc.
> Just keep in mode that memory report is given in words with is either 4 or
> 8 byte depends on system config. This is a reason why linux show diff
> value.
>
> I would start with entop utility and check top processes with high men and
> high reductions.
> https://github.com/mazenharake/entop
>
> Please share those views!
>
> Best Regards, Dmitry
>
> On Feb 2, 2013, at 10:52 PM, Alexandru Pirvulescu >
> wrote:
>
> Hello,
>
> If somebody could help me with an issue, I would be grateful. I'm pulling
> my hair off trying to figure out why an erlang app keeps growing in memory
> usage. The erlang:memory() after 3 days shows this:
>
> [{total,325732292},
> {processes,54520269},
> {processes_used,54492115},
> * {system,271212023},
> * {atom,932793},
> {atom_used,912937},
> {binary,2348080},
> {code,8288354},
> {ets,487392},
> {maximum,398189416}]
>
> The interesting part is "system" section. All other data is fine
> (processes goes to few MBs during the night as all the started procs are
> either hibernated - for long running or they die because of inactivity).
>
> There are two issues here:
> - "system" keeps growing (around 800MB/week)
> - OS (Linux) shows a significantly different amount of memory usage
> (almost 2x, 610MB resident in this case)
>
> The only case where I've managed to make "system" grow is by calling
> erlang:monitor() multiple times. It grows with ~13K/call.
>
> Erlang release used is R15B03.
>
> The questions are:
> - is there any hidden function to inspect all the active process monitors?
> (as the single place where I use erlang:monitor looks fine. The spawned kid
> does its job and dies, so the ref should be garbage collected).
> - is there any way to inspect "system" section and find out what it
> contains? Looking at memory chunks in process map got me nowhere
>
> Thank you,
> Alex
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-q...@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From pablo.vb80@REDACTED Sat Feb 2 22:29:20 2013
From: pablo.vb80@REDACTED (Pablo Vieytes)
Date: Sat, 2 Feb 2013 22:29:20 +0100
Subject: [erlang-questions] =?windows-1252?q?about_your_answer_to_the_post?=
=?windows-1252?q?_=93_Erlang_Jobs=3F=94?=
Message-ID:
Dear Mr Molinaro,
I hope you find this message well. It is about your answer to the post
?[erlang-questions] Erlang Jobs?? in the erlang mailing list.
> Anthony Molinaro
> Fri Mar 23 19:03:32 CET 2012
>
> OpenX is always looking for Erlang engineers. We have offices in
> Los Angeles, New York, and London. The office in London is small
> and doesn't actually do development, but we might be able to swing
> a development position or two there. If there is anyone interested
> please forward me a resume.
> -Anthony
It is a little bit old but maybe you are still interested in receiving
resumes.
I have been working on job positions programmer, developer and software
engineer since 2007 in. Lately I have specialized in functional and
concurrent programming (Erlang/OTP). The Erlang project I have been
involved, is not in production yet. So I decided to get an "Erlang
Certificate" to prove my Erlang knowledge (Certificate number:
ESL20130118/01).
I also have extensive work experience as software developer with other
technologies. I have been working with a wide range of programming
languages. That includes, from assembler and low-level C for
microcontrollers and embedded system to OOP languages such C++ or Python
between others. I have also work with web technologies as Django, jQuery,
CSS, XHTML? I also enjoy contributing to opensoftware projects in my free
time.
Since I started to work with Erlang, I realized I would like to further my
career in the designing and developing concurrent fault tolerant systems
with high availability. I believe that your company could be a perfect
place to achieve it.
If you find well you can check my attached CV.
In closing I thank you for your time and I hope this message doesn't bother
you.
Best regards.
Pablo Vieytes .
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Pablo Vieytes.pdf
Type: application/pdf
Size: 89863 bytes
Desc: not available
URL:
From pablo.vb80@REDACTED Sun Feb 3 08:57:54 2013
From: pablo.vb80@REDACTED (Pablo Vieytes)
Date: Sun, 3 Feb 2013 08:57:54 +0100
Subject: [erlang-questions]
=?windows-1252?q?about_your_answer_to_the_post?=
=?windows-1252?q?_=93_Erlang_Jobs=3F=94?=
In-Reply-To:
References:
Message-ID:
Hello every body,
I really concerned about what I did. I made a BIG mistake. I wanted to
send a personal message but I sent it to the whole list. I know the erlang
list is not the place for this kind of messages.
I hope you can forgive me.
I am really sorry, this will never happen agian.
please accept my apologies.
2013/2/3 Ulf Angermann
> Hi,
>
> do you live in Essen (NRW)? If so, perhabs we can meet, because i live in
> M?lheim an der Ruhr.
>
> Best Regards,
> Ulf
>
>
> 2013/2/2 Pablo Vieytes
>
>> Dear Mr Molinaro,
>>
>> I hope you find this message well. It is about your answer to the post
>> ?[erlang-questions] Erlang Jobs?? in the erlang mailing list.
>>
>> > Anthony Molinaro
>> > Fri Mar 23 19:03:32 CET 2012
>> >
>> > OpenX is always looking for Erlang engineers. We have offices in
>> > Los Angeles, New York, and London. The office in London is small
>> > and doesn't actually do development, but we might be able to swing
>> > a development position or two there. If there is anyone interested
>> > please forward me a resume.
>>
>> > -Anthony
>>
>> It is a little bit old but maybe you are still interested in receiving
>> resumes.
>>
>> I have been working on job positions programmer, developer and software
>> engineer since 2007 in. Lately I have specialized in functional and
>> concurrent programming (Erlang/OTP). The Erlang project I have been
>> involved, is not in production yet. So I decided to get an "Erlang
>> Certificate" to prove my Erlang knowledge (Certificate number:
>> ESL20130118/01).
>>
>> I also have extensive work experience as software developer with other
>> technologies. I have been working with a wide range of programming
>> languages. That includes, from assembler and low-level C for
>> microcontrollers and embedded system to OOP languages such C++ or Python
>> between others. I have also work with web technologies as Django, jQuery,
>> CSS, XHTML? I also enjoy contributing to opensoftware projects in my free
>> time.
>>
>> Since I started to work with Erlang, I realized I would like to further
>> my career in the designing and developing concurrent fault tolerant systems
>> with high availability. I believe that your company could be a perfect
>> place to achieve it.
>>
>> If you find well you can check my attached CV.
>>
>> In closing I thank you for your time and I hope this message doesn't
>> bother you.
>>
>> Best regards.
>>
>> Pablo Vieytes .
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From anotherworldofworld@REDACTED Sun Feb 3 09:24:40 2013
From: anotherworldofworld@REDACTED (Alex toyer)
Date: Sun, 3 Feb 2013 14:24:40 +0600
Subject: [erlang-questions] [ANN] Ybot-0.3 chat robot released
Message-ID:
Hello Erlangers,
Ybot-0.3 released. Ybot - chat robot Github Hubot inspired written with
erlang/otp. There are many bug fixes and features in new release. There are
http supporting added and irc/xmpp over ssl, gtalk supporting and new
plugins, command history and many many more.
Ybot-0.3 chnagelog:
* New wat plugin
* Irc ssl supporting --> #16
* New irc configuration options: {use_ssl, true | false}
* New irc configuration options: {port, PortNumber :: integer()}
* New check-site plugin added
* hacker_news plugin improved. Added two modes.
* Join to channels with key to irc transport added.
* ruby.rb plugin added. Eval simple ruby expression.
* ip.py plugin added. Return Ybot external ip address.
* stackoverflow search plugin added.
* Dynamic loading plugins.
* Added command history.
* commands_history configuration parameter added.
* historycommandlimit_count configuration parameter added.
* Added http transport.
* Added PASS paraemetr to IRC.
* Irc private messages support added --> # 24
* XMPP-muc private message supporting added.
* XMPP single user chat supporting added.
* XMPP ssl support added.
* GTALK support added.
* New option xmpp port added.
* New option xmpp use_ssl added.
* Transport options validating added.
* Procfile added for Heroku deploying support.
* Added experemental message parser to irc handler --> #23
Pull requests are welcome!
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From alessandro.sivieri@REDACTED Sun Feb 3 17:55:33 2013
From: alessandro.sivieri@REDACTED (Alessandro Sivieri)
Date: Sun, 3 Feb 2013 17:55:33 +0100
Subject: [erlang-questions] Function specs
Message-ID:
Hi all,
I was wondering if there is a way to get the function specs (-spec tag)
from source files (I guess they are not translated into something in the
compiled files).
I would like to create an automatic generator of Web forms for an
application where Erlang modules are installed and their functions executed
(I'm not boring you with the application details), and it would be nice to
get the function parameter types "automatically" from the source, provided
that developers write the correct signature in the tag.
Maybe a parse transform module could be useful?
--
Sivieri Alessandro
alessandro.sivieri@REDACTED
http://sivieri.wordpress.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From erlang@REDACTED Sun Feb 3 18:23:02 2013
From: erlang@REDACTED (Joe Armstrong)
Date: Sun, 3 Feb 2013 18:23:02 +0100
Subject: [erlang-questions] Function specs
In-Reply-To:
References:
Message-ID:
You need to parse the source to get this information - example ...
-module(spec).
-compile(export_all).
test() ->
F =
"/Users/joe/nobackup/installed/otp_src_R15B/lib/stdlib/src/lists.erl",
{ok, L} = epp:parse_file(F, "", ""),
[dump(I) || I <- L].
dump({attribute,_,spec,S} = Form) ->
Str = erl_pp:form(Form),
io:format("~s~n",[Str]);
dump(_) ->
void.
When I ran this I got
-spec append(List1, List2) -> List3
when
is_subtype(List1, [T]),
is_subtype(List2, [T]),
is_subtype(List3, [T]),
is_subtype(T, term()).
...
etc.
epp:parse parses the source. erl_pp pretty prints the forms in the parse
tree.
If you take a look at the forms returned by erl_pp you should get the idea
...
Cheers
/Joe
On Sun, Feb 3, 2013 at 5:55 PM, Alessandro Sivieri <
alessandro.sivieri@REDACTED> wrote:
> Hi all,
>
> I was wondering if there is a way to get the function specs (-spec tag)
> from source files (I guess they are not translated into something in the
> compiled files).
> I would like to create an automatic generator of Web forms for an
> application where Erlang modules are installed and their functions executed
> (I'm not boring you with the application details), and it would be nice to
> get the function parameter types "automatically" from the source, provided
> that developers write the correct signature in the tag.
> Maybe a parse transform module could be useful?
>
> --
> Sivieri Alessandro
> alessandro.sivieri@REDACTED
> http://sivieri.wordpress.com/
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From alessandro.sivieri@REDACTED Sun Feb 3 19:27:43 2013
From: alessandro.sivieri@REDACTED (Alessandro Sivieri)
Date: Sun, 3 Feb 2013 19:27:43 +0100
Subject: [erlang-questions] Function specs
In-Reply-To:
References:
Message-ID:
On Sun, Feb 3, 2013 at 6:23 PM, Joe Armstrong wrote:
> epp:parse parses the source. erl_pp pretty prints the forms in the parse
> tree.
>
> If you take a look at the forms returned by erl_pp you should get the idea
> ...
>
>
Thanks, that's exactly what I was looking for!
--
Sivieri Alessandro
alessandro.sivieri@REDACTED
http://sivieri.wordpress.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From janos.n.hary@REDACTED Sun Feb 3 23:36:35 2013
From: janos.n.hary@REDACTED (Janos Hary)
Date: Sun, 3 Feb 2013 23:36:35 +0100
Subject: [erlang-questions] Lager trace_file filter
Message-ID: <002701ce025e$ecadfd50$c609f7f0$@gmail.com>
Hi All,
Is there a way to specify 'orelse' relation between lager:trace_file
filters?
For example I'd like to allow trace messages coming only from module mod1
and mod2:
lager:trace_file("log/trace.log", [{module, mod1}, {module, mod2}])
but it doesn't work.
Thanks,
Janos
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From andrew@REDACTED Mon Feb 4 06:41:53 2013
From: andrew@REDACTED (Andrew Thompson)
Date: Mon, 4 Feb 2013 00:41:53 -0500
Subject: [erlang-questions] Lager trace_file filter
In-Reply-To: <002701ce025e$ecadfd50$c609f7f0$@gmail.com>
References: <002701ce025e$ecadfd50$c609f7f0$@gmail.com>
Message-ID: <20130204054153.GB869@hijacked.us>
On Sun, Feb 03, 2013 at 11:36:35PM +0100, Janos Hary wrote:
> Is there a way to specify 'orelse' relation between lager:trace_file
> filters?
>
>
>
> For example I'd like to allow trace messages coming only from module mod1
> and mod2:
>
> lager:trace_file("log/trace.log", [{module, mod1}, {module, mod2}])
>
> but it doesn't work.
Unfortunately, there is not. To be fast, trace filters need to be able
to 'fail fast' and discard messages they can not possibly match. Thus, I
decided that 'orelse' expressions would, at least initially, not be
allowed.
I'm open to suggestions on making 'orelse' expressions cheap enough to
test that we can still fail fast when matching messages.
Also, this doesn't implement or, but DeadZen has added some comparator
support to lager tracing, which I hope to be able to integrate to master
soon:
https://github.com/DeadZen/lager/tree/dz-lager-stream
Andrew
From jeremy@REDACTED Mon Feb 4 07:32:43 2013
From: jeremy@REDACTED (Jeremy Ong)
Date: Sun, 3 Feb 2013 22:32:43 -0800
Subject: [erlang-questions] Observer as a web application?
Message-ID:
I am interested in an application like observer that is served through a
browser as opposed to a desktop gui application.
I've found observer very useful for monitoring cluster health, ensuring
there are no netsplits before performing an operation, etc. The only
problem is, it's not very convenient to run observer on production (ssh,
set up a node, X11 forwarding or ssh tunnel, etc).
It would be ideal I think, if observer was a web application that used
websocket or something to send data to the browser for easier monitoring on
a configurable port with configurable authentication.
Two questions:
1. Does something like this already exist?
2. If not, is there any interest in building it?
Cheers,
Jeremy
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From dm.klionsky@REDACTED Mon Feb 4 08:04:22 2013
From: dm.klionsky@REDACTED (Dmitry Klionsky)
Date: Mon, 04 Feb 2013 10:04:22 +0300
Subject: [erlang-questions] Observer as a web application?
In-Reply-To:
References:
Message-ID: <510F5D76.40803@gmail.com>
Maybe something like this:
http://www.metabrew.com/article/bigwig-erlang-webtool-spawnfest
On 02/04/2013 09:32 AM, Jeremy Ong wrote:
> I am interested in an application like observer that is served through
> a browser as opposed to a desktop gui application.
>
> I've found observer very useful for monitoring cluster health,
> ensuring there are no netsplits before performing an operation, etc.
> The only problem is, it's not very convenient to run observer on
> production (ssh, set up a node, X11 forwarding or ssh tunnel, etc).
>
> It would be ideal I think, if observer was a web application that used
> websocket or something to send data to the browser for easier
> monitoring on a configurable port with configurable authentication.
>
> Two questions:
>
> 1. Does something like this already exist?
> 2. If not, is there any interest in building it?
>
> Cheers,
> Jeremy
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
--
Best regards,
Dmitry Klionsky
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From jeremy@REDACTED Mon Feb 4 08:12:12 2013
From: jeremy@REDACTED (Jeremy Ong)
Date: Sun, 3 Feb 2013 23:12:12 -0800
Subject: [erlang-questions] Observer as a web application?
In-Reply-To: <510F5D76.40803@gmail.com>
References:
<510F5D76.40803@gmail.com>
Message-ID:
Bigwig is certainly in the spirit of things but it leverages Appmon so will
not work for newer Erlang versions (appmon has been superseded by observer;
at least, that's what the documentation says).
On Sun, Feb 3, 2013 at 11:04 PM, Dmitry Klionsky wrote:
> Maybe something like this:
> http://www.metabrew.com/article/bigwig-erlang-webtool-spawnfest
>
>
> On 02/04/2013 09:32 AM, Jeremy Ong wrote:
>
> I am interested in an application like observer that is served through a
> browser as opposed to a desktop gui application.
>
> I've found observer very useful for monitoring cluster health, ensuring
> there are no netsplits before performing an operation, etc. The only
> problem is, it's not very convenient to run observer on production (ssh,
> set up a node, X11 forwarding or ssh tunnel, etc).
>
> It would be ideal I think, if observer was a web application that used
> websocket or something to send data to the browser for easier monitoring on
> a configurable port with configurable authentication.
>
> Two questions:
>
> 1. Does something like this already exist?
> 2. If not, is there any interest in building it?
>
> Cheers,
> Jeremy
>
>
> _______________________________________________
> erlang-questions mailing listerlang-questions@REDACTED://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> --
> Best regards,
> Dmitry Klionsky
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From dangud@REDACTED Mon Feb 4 09:01:10 2013
From: dangud@REDACTED (Dan Gudmundsson)
Date: Mon, 4 Feb 2013 09:01:10 +0100
Subject: [erlang-questions] Observer as a web application?
In-Reply-To:
References:
<510F5D76.40803@gmail.com>
Message-ID:
I believe it should still work, I use the appmon backend for observer too,
and moved (in R16) that backend module to runtime_tools where it belongs.
/Dan
On Mon, Feb 4, 2013 at 8:12 AM, Jeremy Ong wrote:
> Bigwig is certainly in the spirit of things but it leverages Appmon so will
> not work for newer Erlang versions (appmon has been superseded by observer;
> at least, that's what the documentation says).
>
>
> On Sun, Feb 3, 2013 at 11:04 PM, Dmitry Klionsky
> wrote:
>>
>> Maybe something like this:
>> http://www.metabrew.com/article/bigwig-erlang-webtool-spawnfest
>>
>>
>> On 02/04/2013 09:32 AM, Jeremy Ong wrote:
>>
>> I am interested in an application like observer that is served through a
>> browser as opposed to a desktop gui application.
>>
>> I've found observer very useful for monitoring cluster health, ensuring
>> there are no netsplits before performing an operation, etc. The only problem
>> is, it's not very convenient to run observer on production (ssh, set up a
>> node, X11 forwarding or ssh tunnel, etc).
>>
>> It would be ideal I think, if observer was a web application that used
>> websocket or something to send data to the browser for easier monitoring on
>> a configurable port with configurable authentication.
>>
>> Two questions:
>>
>> 1. Does something like this already exist?
>> 2. If not, is there any interest in building it?
>>
>> Cheers,
>> Jeremy
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>>
>> --
>> Best regards,
>> Dmitry Klionsky
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
From jeremy@REDACTED Mon Feb 4 09:08:47 2013
From: jeremy@REDACTED (Jeremy Ong)
Date: Mon, 4 Feb 2013 00:08:47 -0800
Subject: [erlang-questions] Observer as a web application?
In-Reply-To:
References:
<510F5D76.40803@gmail.com>
Message-ID:
Ah I see. I had my doubts because it didn't seem like the project has been
in active development (the required OTP version is R14) but I'll give it a
shot.
If I wanted to extract process tree data on my own to parse and display,
would you recommend I use process_info in appmon? There isn't documentation
for it but the implementation is pretty transparent.
On Mon, Feb 4, 2013 at 12:01 AM, Dan Gudmundsson wrote:
> I believe it should still work, I use the appmon backend for observer too,
> and moved (in R16) that backend module to runtime_tools where it belongs.
>
> /Dan
>
> On Mon, Feb 4, 2013 at 8:12 AM, Jeremy Ong wrote:
> > Bigwig is certainly in the spirit of things but it leverages Appmon so
> will
> > not work for newer Erlang versions (appmon has been superseded by
> observer;
> > at least, that's what the documentation says).
> >
> >
> > On Sun, Feb 3, 2013 at 11:04 PM, Dmitry Klionsky
> > wrote:
> >>
> >> Maybe something like this:
> >> http://www.metabrew.com/article/bigwig-erlang-webtool-spawnfest
> >>
> >>
> >> On 02/04/2013 09:32 AM, Jeremy Ong wrote:
> >>
> >> I am interested in an application like observer that is served through a
> >> browser as opposed to a desktop gui application.
> >>
> >> I've found observer very useful for monitoring cluster health, ensuring
> >> there are no netsplits before performing an operation, etc. The only
> problem
> >> is, it's not very convenient to run observer on production (ssh, set up
> a
> >> node, X11 forwarding or ssh tunnel, etc).
> >>
> >> It would be ideal I think, if observer was a web application that used
> >> websocket or something to send data to the browser for easier
> monitoring on
> >> a configurable port with configurable authentication.
> >>
> >> Two questions:
> >>
> >> 1. Does something like this already exist?
> >> 2. If not, is there any interest in building it?
> >>
> >> Cheers,
> >> Jeremy
> >>
> >>
> >> _______________________________________________
> >> erlang-questions mailing list
> >> erlang-questions@REDACTED
> >> http://erlang.org/mailman/listinfo/erlang-questions
> >>
> >>
> >>
> >> --
> >> Best regards,
> >> Dmitry Klionsky
> >
> >
> >
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From andra.dinu@REDACTED Mon Feb 4 13:13:05 2013
From: andra.dinu@REDACTED (Andra Dinu)
Date: Mon, 4 Feb 2013 12:13:05 +0000 (GMT)
Subject: [erlang-questions] Complete programme for Erlang Factory SF Bay 2013
In-Reply-To: <156219662.3351856.1359979740611.JavaMail.root@erlang-solutions.com>
Message-ID: <291522492.3351923.1359979984983.JavaMail.root@erlang-solutions.com>
Hi,
The complete list of speakers for Erlang Factory SF Bay Area 2013 is up, and it?s the best up to date. On 21-22 March 50 speakers from companies such as WhatsApp, Nokia, Ericsson, Rakuten, HP, Microsoft, OpsCode, ESPN, Linden Lab, OpenX, Infoblox, Erlang Solutions and Concurix will showcase tools, libraries and experiences in building massively concurrent distributed systems.
Full programme here: http://www.erlang-factory.com/conference/SFBay2013/speakers
The keynote speakers are Microsoft language expert Erik Meijer and Mnesia creator Claes Wikstr?m. Other speakers include Erlang co-inventor Robert Virding, ?Learn you some Erlang? author Fred Hebert, Cowboy creator Loic Hoguin, Chicago Boss creator Evan Miller, Feuerlabs co-founder Ulf Wiger and Elixir Author Jose Valim. Talks will cover areas such as Big Data, Scalability and Multi-core, and use cases in Gaming, Social Media, Messaging, Web-development, Mobile, Telecoms and Databases. They will evaluate tools such as RabbitMQ, MongooseIM, Ejabberd and compare NoSQL databases such as Couch DB, Riak and LeoFS.
The Conference will take place at the Marines? Memorial Club and Hotel in Union Square. A limited number of rooms is available at a secure rate, so remember to book as soon as possible: http://www.erlang-factory.com/conference/SFBay2013/venue .
See you at the Erlang Factory SF Bay!
--
Andra Dinu
Marketing executive
ERLANG SOLUTIONS LTD
New Loom House
101 Back Church Lane
London, E1 1LU
United Kingdom
Tel +44(0)2076550344
Mob +44(0)7983484387
www.erlang-solutions.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From nico.kruber@REDACTED Mon Feb 4 17:34:32 2013
From: nico.kruber@REDACTED (Nico Kruber)
Date: Mon, 04 Feb 2013 17:34:32 +0100
Subject: [erlang-questions] edoc broken in current master / R16A!
In-Reply-To: <3788796.M1GmZlaJoO@csr-pc40.zib.de>
References: <4159396.DFkII5edO4@csr-pc40.zib.de>
<3788796.M1GmZlaJoO@csr-pc40.zib.de>
Message-ID: <5789034.tP9lXoejRZ@csr-pc40.zib.de>
On Wednesday 30 Jan 2013 15:35:41 you wrote:
> On Wednesday 30 Jan 2013 15:34:26 you wrote:
> > we regularly check that Scalaris builds on master and since the checks of
> > 11 Jan 2013 6am CET, creating the documentation with edoc fails.
> > We don't use packages, although we do put files into sub-folders - anyway,
> > I guess a function_clause should not be returned to the user at any point
> > (see below)
> >
> > svn co http://scalaris.googlecode.com/svn/trunk/ scalaris
> > cd scalaris
> > make doc
> > ------------------------------
> > /home/buildbot/apps/erlang-dev/bin/erl -noshell -run edoc_run application
> > "'scalaris'" \
> >
> > '"."' '[{def, {vsn, "0.5.0+svn"}}, no_packages, {preprocess, true},
> >
> > {includes, ["include", "contrib/yaws/include",
> > "contrib/log4erl/include"]},
> > {sort_functions, false}, {pretty_printer, erl_pp}, {macros,
> > [{tid_not_builtin, true}, {with_export_type_support, true},
> > {have_cthooks_support, true}, {have_callback_support, true}]}]'
> > edoc: edoc terminated abnormally: {function_clause,
> >
> > [{edoc_lib,find_sources_3,
> >
> > [["random_bias.erl",[...]|...],
> >
> > "./src/rrepair",rrepair|...],
> >
> > [{file,...},{...}]},
> >
> > {edoc_lib,find_sources_2,5,[{...}|...]},
> > {edoc_lib,'-find_sources_3/6-lc$^0/1-0-',
> > 5,
> >
> > [...]},
> >
> > {edoc_lib,find_sources_2,5,...},
> > {edoc_lib,find_sources_1,...},
> > {edoc_lib,...},
> > {...}|...]}.
> >
> > make: *** [.make-doc] Error 1
> > ------------------------------
>
> maybe this commit is related
> https://github.com/erlang/otp/commit/beb660aa59a8d9cd7f65b8b91dc5dd9bc74015e
> 0
>
> Nico
I just tested with R16A and the problem is the same
From solomon.wzs@REDACTED Tue Feb 5 03:42:16 2013
From: solomon.wzs@REDACTED (Solomon)
Date: Tue, 5 Feb 2013 10:42:16 +0800
Subject: [erlang-questions] How to see which processes used ets table?
Message-ID:
I checked system info with erlang:memory/1 and found the total amount of
memory allocated for ets tables was about 5GB.
Then I sum the memory size return by ets:i/0 and it was about 600MB.
So which processes used ets table and did not return by ets:i/0?
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From comptekki@REDACTED Tue Feb 5 05:05:55 2013
From: comptekki@REDACTED (Wes James)
Date: Mon, 4 Feb 2013 21:05:55 -0700
Subject: [erlang-questions] stunnel and erlang
Message-ID:
Has anyone used stunnel to send messages between erlang nodes? I have
asked in the past about secure communication between erlang nodes and there
doesn't seem to be a straight forward way to do this. Would stunnel work?
I have successfully set up stunnel to do pop3 on port 110 to gmails ssl
port, but it seems that erlang has more than one port it needs to deal with
(epmd and others).
Thanks,
Wes
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From romain.lenglet@REDACTED Tue Feb 5 05:36:18 2013
From: romain.lenglet@REDACTED (Romain Lenglet)
Date: Mon, 4 Feb 2013 20:36:18 -0800
Subject: [erlang-questions] stunnel and erlang
In-Reply-To:
References:
Message-ID: <920A3E5E-E4C8-49EB-97F2-E9A390E45E34@berabera.info>
Hi Wes,
Have you tried using the "-proto_dist inet_tls" option?
http://www.erlang.org/doc/apps/ssl/ssl_distribution.html
--
Romain Lenglet
On Feb 4, 2013, at 8:05 PM, Wes James wrote:
> Has anyone used stunnel to send messages between erlang nodes? I have asked in the past about secure communication between erlang nodes and there doesn't seem to be a straight forward way to do this. Would stunnel work? I have successfully set up stunnel to do pop3 on port 110 to gmails ssl port, but it seems that erlang has more than one port it needs to deal with (epmd and others).
>
> Thanks,
>
> Wes
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From comptekki@REDACTED Tue Feb 5 06:07:06 2013
From: comptekki@REDACTED (Wes James)
Date: Mon, 4 Feb 2013 22:07:06 -0700
Subject: [erlang-questions] stunnel and erlang
In-Reply-To: <920A3E5E-E4C8-49EB-97F2-E9A390E45E34@berabera.info>
References:
<920A3E5E-E4C8-49EB-97F2-E9A390E45E34@berabera.info>
Message-ID:
No. Nobody mentioned it last time. I'll look into it.
Thanks!
Wes
On Feb 4, 2013 9:36 PM, "Romain Lenglet"
wrote:
> Hi Wes,
> Have you tried using the "-proto_dist inet_tls" option?
> http://www.erlang.org/doc/apps/ssl/ssl_distribution.html
> --
> Romain Lenglet
>
>
> On Feb 4, 2013, at 8:05 PM, Wes James wrote:
>
> > Has anyone used stunnel to send messages between erlang nodes? I have
> asked in the past about secure communication between erlang nodes and there
> doesn't seem to be a straight forward way to do this. Would stunnel work?
> I have successfully set up stunnel to do pop3 on port 110 to gmails ssl
> port, but it seems that erlang has more than one port it needs to deal with
> (epmd and others).
> >
> > Thanks,
> >
> > Wes
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From mjtruog@REDACTED Tue Feb 5 07:57:35 2013
From: mjtruog@REDACTED (Michael Truog)
Date: Mon, 04 Feb 2013 22:57:35 -0800
Subject: [erlang-questions] [ANN] CloudI 1.1.1 Released!
Message-ID: <5110AD5F.9060601@gmail.com>
Download 1.1.1 from http://sourceforge.net/projects/cloudi/files/latest/download
What is CloudI?
CloudI (http://www.cloudi.org/) is meant to be a "universal integrator" using an Erlang core, with its actor model, to pursue efficiency, fault-tolerance and scalability. The CloudI API provides a minimal interface to communicate among actors that are called services or jobs (they are services, ran as if they are jobs, in parallel), so programming language agnostic, database agnostic, and messaging bus agnostic integration can occur. CloudI currently integrates with the programming languages Erlang, C/C++, Java, Python, and Ruby, the databases PostgreSQL, MySQL, couchdb, memcached, and tokyotyrant, the messaging bus ZeroMQ and the internal CloudI messaging. HTTP is also supported for easy integration with cowboy and misultin. If anyone is willing to get involved, don't hesitate to contact me or start looking at the code.
What is CloudI? summary:
(short answer) "An application server that efficiently integrates with many languages, many databases, and many messaging buses in a way that is both scalable and fault-tolerant."
(shorter answer) "A rock-solid transaction processing system for flexible software development."
(shortest answer) "A Cloud at the lowest level."
About the release:
If you have had problems installing CloudI in the past, you should no longer have issues. I have been working through build and install issues on Ubuntu and OSX, but no issues currently remain. If you run into any problems, please don't hesitate to report them (here https://github.com/okeuday/CloudI/issues/new ).
The latest news is below:
* use patterns instead of prefixes for ACL strings
* add the following destination refresh methods:
immediate_furthest, lazy_furthest,
immediate_local, lazy_local,
immediate_remote, and lazy_remote
* build system fixes and documentation fixes for installation
* fix CloudI API uuids to be completely standard v1
* fix external service queueing during initialization
Please mention any problems, issues, or ideas!
Thanks,
Michael
From gustav.simonsson@REDACTED Tue Feb 5 08:51:16 2013
From: gustav.simonsson@REDACTED (Gustav Simonsson)
Date: Tue, 5 Feb 2013 08:51:16 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID:
Note that erlang:memory/1 gives memory in bytes, whereas ets:i/0 gives it
in words. On a 64-bit system 625M words would be 5GB, so the numbers you
get might be correct. Try summing the memory from ets:i/0 up exact and
compare it to erlang:memory(ets).
Cheers,
Gustav Simonsson
On Tue, Feb 5, 2013 at 3:42 AM, Solomon wrote:
> I checked system info with erlang:memory/1 and found the total amount of
> memory allocated for ets tables was about 5GB.
>
> Then I sum the memory size return by ets:i/0 and it was about 600MB.
>
> So which processes used ets table and did not return by ets:i/0?
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From mattevans123@REDACTED Tue Feb 5 15:59:36 2013
From: mattevans123@REDACTED (Matthew Evans)
Date: Tue, 5 Feb 2013 09:59:36 -0500
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References: ,
Message-ID:
Hi,
I don't wish to thread-jack, but I am anyway ;-)
This pertains to a feature I would like to see in Erlang. The ability to set an optional "memory limit" when a process and ETS table is created (and maybe a global optional per-process limit when the VM is started). I've seen a few cases where, due to software bugs, a process size grows and grows; unfortunately as things stand today the result is your entire VM crashing - hopefully leaving you with a crash_dump.
Having such a limit could cause the process to terminate (producing a OOM crash report in erlang.log) and the crashing process could be handled with supervisor rules. Even better you can envisage setting the limits artificially low during testing to catch these types of bugs early on.
Cheers
Matt
Date: Tue, 5 Feb 2013 08:51:16 +0100
From: gustav.simonsson@REDACTED
To: solomon.wzs@REDACTED
CC: erlang-questions@REDACTED
Subject: Re: [erlang-questions] How to see which processes used ets table?
Note that erlang:memory/1 gives memory in bytes, whereas ets:i/0 gives it in words. On a 64-bit system 625M words would be 5GB, so the numbers you get might be correct. Try summing the memory from ets:i/0 up exact and compare it to erlang:memory(ets).
Cheers,
Gustav Simonsson
On Tue, Feb 5, 2013 at 3:42 AM, Solomon wrote:
I checked system info with erlang:memory/1 and found the total amount of memory allocated for ets
tables was about 5GB.
Then I sum the memory size return by ets:i/0 and it was about 600MB.
So which processes used ets table and did not return by ets:i/0?
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From msegalis@REDACTED Tue Feb 5 16:06:49 2013
From: msegalis@REDACTED (Morgan Segalis)
Date: Tue, 5 Feb 2013 16:06:49 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID: <58A4CD5B-F157-434B-8E63-63CAFFF9B4F0@gmail.com>
I have crafted a little function for process monitoring purpose, it might help you, if you're memory issue is process related...
Hope it will help
[CODE]
info() ->
get_info(erlang:processes(), dict:new()).
get_info([], Dict) ->
io:fwrite("Dict: ~p~n", [Dict]);
get_info([P|L], Dict) ->
case erlang:process_info(P, dictionary) of
{dictionary, Info} ->
Initial_call = get_dict('$initial_call', Info),
Ancestor = get_dict('$ancestors', Info),
case dict:find({Initial_call, Ancestor}, Dict) of
{ok, Nb} ->
IncrNb = Nb + 1;
error ->
IncrNb = 1
end,
Dict2 = dict:store({Initial_call, Ancestor}, IncrNb, Dict),
get_info(L, Dict2);
undefined ->
case dict:find(undefined, Dict) of
{ok, Nb} ->
IncrNb = Nb + 1;
error ->
IncrNb = 1
end,
Dict2 = dict:store(undefined, IncrNb, Dict),
get_info(L, Dict2)
end.
[/CODE]
Le 5 f?vr. 2013 ? 03:42, Solomon a ?crit :
> I checked system info with erlang:memory/1 and found the total amount of memory allocated for ets tables was about 5GB.
>
> Then I sum the memory size return by ets:i/0 and it was about 600MB.
>
> So which processes used ets table and did not return by ets:i/0?
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From derekbrown121@REDACTED Tue Feb 5 18:10:25 2013
From: derekbrown121@REDACTED (Derek Brown)
Date: Tue, 5 Feb 2013 12:10:25 -0500
Subject: [erlang-questions] Evening School of Erlang
Message-ID:
I'm curious about the classes described at
https://www.erlang-solutions.com/services/evening-school-erlang. One, any
impressions, and two, any plans for the New York City version, as alluded
to at that page.
Thanks,
Derek
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From derekbrown121@REDACTED Tue Feb 5 18:14:54 2013
From: derekbrown121@REDACTED (Derek Brown)
Date: Tue, 5 Feb 2013 12:14:54 -0500
Subject: [erlang-questions] Evening School of Erlang (with proper link)
Message-ID:
I'm curious about the classes described at
https://www.erlang-solutions.com/services/evening-school-erlang . One, any
impressions, and two, any plans for the New York City version, as alluded
to at that page.
Thanks,
Derek
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From raould@REDACTED Tue Feb 5 18:33:53 2013
From: raould@REDACTED (Raoul Duke)
Date: Tue, 5 Feb 2013 09:33:53 -0800
Subject: [erlang-questions] Evening School of Erlang
In-Reply-To:
References:
Message-ID:
and 3 please do them again in San Jose so i can attend the next time! soon! :-)
From emofine@REDACTED Tue Feb 5 20:45:50 2013
From: emofine@REDACTED (Edwin Fine)
Date: Tue, 05 Feb 2013 14:45:50 -0500
Subject: [erlang-questions] OTP R16A EPMD IPv6 support
In-Reply-To:
References:
Message-ID: <5111616E.6030002@gmail.com>
Although it does not seem to be in the release notes, it appears that
R16 does support epmd using IPv6 addresses, but it is not enabled by
default. To enable it, it seems that you need to export CPPFLAGS=-DEPMD6
before running configure, assuming that the building system provides
inet_pton.
After building R16A, to assign some IPv6 and IPv4-on-IPv6 addresses, I
got this to work:
$ epmd -daemon -address ::FFFF:0.0.0.0,fded:1486:2e44::1:2:1
$ netstat -tnl|grep 4369
tcp6 0 0 ::1:4369 :::* LISTEN
tcp6 0 0 fded:1486:2e44::1::4369 :::* LISTEN
tcp6 0 0 0.0.0.0:4369 :::* LISTEN
It does not look as if the Erlang Solutions build of R16A has the IPv6
epmd support enabled on the Ubuntu 11.04 64-bit package I installed.
My questions are:
1. Did I understand this correctly?
2. Why is EPMD IPv6 support not enabled by default using autoconfig?
3. Is the EPMD IPv6 support intended to be used in this release, or is
it disabled for some reason?
Ed
From bryan@REDACTED Tue Feb 5 21:14:28 2013
From: bryan@REDACTED (Bryan Hughes)
Date: Tue, 05 Feb 2013 12:14:28 -0800
Subject: [erlang-questions] Erlang + Facebook
Message-ID: <51116824.9010108@go-factory.net>
Though some of you might find this interesting if you havent already
seen it...
http://techcrunch.com/2013/02/04/opscode-is-facebooks-answer-for-scaling-its-carl-sagan-size-deployments/
--
Bryan Hughes
*Go Factory*
http://www.go-factory.net
/"Art is never finished, only abandoned. - Leonardo da Vinci"/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From amindfv@REDACTED Tue Feb 5 23:03:40 2013
From: amindfv@REDACTED (amindfv@REDACTED)
Date: Tue, 5 Feb 2013 17:03:40 -0500
Subject: [erlang-questions] Evening School of Erlang
In-Reply-To:
References:
Message-ID: <5AF71FDC-BA16-4055-832A-6B852AB4E714@gmail.com>
San Jose hasn't happened yet - I believe you can still get tickets.
Tom
Sent from my iPhone
On Feb 5, 2013, at 12:33 PM, Raoul Duke wrote:
> and 3 please do them again in San Jose so i can attend the next time! soon! :-)
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
From raould@REDACTED Tue Feb 5 23:04:16 2013
From: raould@REDACTED (Raoul Duke)
Date: Tue, 5 Feb 2013 14:04:16 -0800
Subject: [erlang-questions] Evening School of Erlang
In-Reply-To: <5AF71FDC-BA16-4055-832A-6B852AB4E714@gmail.com>
References:
<5AF71FDC-BA16-4055-832A-6B852AB4E714@gmail.com>
Message-ID:
> San Jose hasn't happened yet - I believe you can still get tickets.
i won't be around for it this feb :-(
From francesco@REDACTED Tue Feb 5 23:54:26 2013
From: francesco@REDACTED (Francesco Cesarini)
Date: Tue, 05 Feb 2013 22:54:26 +0000
Subject: [erlang-questions] Evening School of Erlang
In-Reply-To:
References:
<5AF71FDC-BA16-4055-832A-6B852AB4E714@gmail.com>
Message-ID: <51118DA2.1090103@erlang-solutions.com>
If we get enough attendees, there will be a second round in about 4 - 6
months. It all depends on demand and local companies recruiting for
Erlang developers willing to sponsor and how many of the attendees find
Erlang jobs. San Mateo/Palo Alto might also be an option for you. San
Francisco classes finished last week and a new round of dates will soon
be announced.
In regards to New York, we are looking at the latter half of this year.
Derek - if you are able to help us secure a venue, it would be great!
Other locations currently include Chicago, DC, Boston, Pasadena and
Santa Monica.
Francesco
On 05/02/2013 22:04, Raoul Duke wrote:
>> San Jose hasn't happened yet - I believe you can still get tickets.
> i won't be around for it this feb :-(
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
--
Erlang Solutions Ltd.
http://www.erlang-solutions.com
From robert.virding@REDACTED Wed Feb 6 01:05:19 2013
From: robert.virding@REDACTED (Robert Virding)
Date: Wed, 6 Feb 2013 00:05:19 +0000 (GMT)
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To: <58A4CD5B-F157-434B-8E63-63CAFFF9B4F0@gmail.com>
Message-ID: <51805448.3506909.1360109119321.JavaMail.root@erlang-solutions.com>
You have to be a little careful when doing process_info/1/2 on unknown processes. For example if you are worried about the size of message queues then doing process_info(Pid, messages) is not a good idea as it will copy the whole message queue. As in this case using dictionary as it will also copy the dictionary. Process_info() can be very useful but it is one of those BIFs with which you have to exercise care. As is processes() if you have many processes.
Robert
> From: "Morgan Segalis"
>
> I have crafted a little function for process monitoring purpose, it
> might help you, if you're memory issue is process related...
>
> Hope it will help
>
> [CODE]
> info() ->
> get_info(erlang:processes(), dict:new()).
>
> get_info([], Dict) ->
> io:fwrite("Dict: ~p~n", [Dict]);
> get_info([P|L], Dict) ->
> case erlang:process_info(P, dictionary) of
> {dictionary, Info} ->
> Initial_call = get_dict('$initial_call', Info),
> Ancestor = get_dict('$ancestors', Info),
> case dict:find({Initial_call, Ancestor}, Dict) of
> {ok, Nb} ->
> IncrNb = Nb + 1;
> error ->
> IncrNb = 1
> end,
> Dict2 = dict:store({Initial_call, Ancestor}, IncrNb, Dict),
> get_info(L, Dict2);
> undefined ->
> case dict:find(undefined, Dict) of
> {ok, Nb} ->
> IncrNb = Nb + 1;
> error ->
> IncrNb = 1
> end,
> Dict2 = dict:store(undefined, IncrNb, Dict),
> get_info(L, Dict2)
> end.
> [/CODE]
>
> Le 5 f?vr. 2013 ? 03:42, Solomon a ?crit :
>
> > I checked system info with erlang:memory/1 and found the total
> > amount of memory allocated for ets tables was about 5GB.
> >
> > Then I sum the memory size return by ets:i/0 and it was about
> > 600MB.
> >
> > So which processes used ets table and did not return by ets:i/0?
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
From msegalis@REDACTED Wed Feb 6 01:18:56 2013
From: msegalis@REDACTED (Morgan Segalis)
Date: Wed, 6 Feb 2013 01:18:56 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To: <51805448.3506909.1360109119321.JavaMail.root@erlang-solutions.com>
References: <51805448.3506909.1360109119321.JavaMail.root@erlang-solutions.com>
Message-ID: <0980D531-BC13-4E04-A3DB-3016065EF2EE@gmail.com>
Yeah of course, not to use on a production server, I forgot to mention it.
Le 6 f?vr. 2013 ? 01:05, Robert Virding a ?crit :
> You have to be a little careful when doing process_info/1/2 on unknown processes. For example if you are worried about the size of message queues then doing process_info(Pid, messages) is not a good idea as it will copy the whole message queue. As in this case using dictionary as it will also copy the dictionary. Process_info() can be very useful but it is one of those BIFs with which you have to exercise care. As is processes() if you have many processes.
>
> Robert
>
>> From: "Morgan Segalis"
>>
>> I have crafted a little function for process monitoring purpose, it
>> might help you, if you're memory issue is process related...
>>
>> Hope it will help
>>
>> [CODE]
>> info() ->
>> get_info(erlang:processes(), dict:new()).
>>
>> get_info([], Dict) ->
>> io:fwrite("Dict: ~p~n", [Dict]);
>> get_info([P|L], Dict) ->
>> case erlang:process_info(P, dictionary) of
>> {dictionary, Info} ->
>> Initial_call = get_dict('$initial_call', Info),
>> Ancestor = get_dict('$ancestors', Info),
>> case dict:find({Initial_call, Ancestor}, Dict) of
>> {ok, Nb} ->
>> IncrNb = Nb + 1;
>> error ->
>> IncrNb = 1
>> end,
>> Dict2 = dict:store({Initial_call, Ancestor}, IncrNb, Dict),
>> get_info(L, Dict2);
>> undefined ->
>> case dict:find(undefined, Dict) of
>> {ok, Nb} ->
>> IncrNb = Nb + 1;
>> error ->
>> IncrNb = 1
>> end,
>> Dict2 = dict:store(undefined, IncrNb, Dict),
>> get_info(L, Dict2)
>> end.
>> [/CODE]
>>
>> Le 5 f?vr. 2013 ? 03:42, Solomon a ?crit :
>>
>>> I checked system info with erlang:memory/1 and found the total
>>> amount of memory allocated for ets tables was about 5GB.
>>>
>>> Then I sum the memory size return by ets:i/0 and it was about
>>> 600MB.
>>>
>>> So which processes used ets table and did not return by ets:i/0?
>>> _______________________________________________
>>> erlang-questions mailing list
>>> erlang-questions@REDACTED
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
From rapsey@REDACTED Wed Feb 6 07:55:37 2013
From: rapsey@REDACTED (Rapsey)
Date: Wed, 6 Feb 2013 07:55:37 +0100
Subject: [erlang-questions] [ANN] CloudI 1.1.1 Released!
In-Reply-To: <5110AD5F.9060601@gmail.com>
References: <5110AD5F.9060601@gmail.com>
Message-ID:
In my humble opinion you really need some sort of quickstart or walk
through guide on how to use it. Many people like to learn by examples and
there is nothing of this sort there. I read the faq, the github readme,
this email and I still have no idea how to use it or have any degree of
certainty what exactly it is for.
Sergej
On Tue, Feb 5, 2013 at 7:57 AM, Michael Truog wrote:
> Download 1.1.1 from
> http://sourceforge.net/projects/cloudi/files/latest/download
>
> What is CloudI?
> CloudI (http://www.cloudi.org/) is meant to be a "universal integrator"
> using an Erlang core, with its actor model, to pursue efficiency,
> fault-tolerance and scalability. The CloudI API provides a minimal
> interface to communicate among actors that are called services or jobs
> (they are services, ran as if they are jobs, in parallel), so programming
> language agnostic, database agnostic, and messaging bus agnostic
> integration can occur. CloudI currently integrates with the programming
> languages Erlang, C/C++, Java, Python, and Ruby, the databases PostgreSQL,
> MySQL, couchdb, memcached, and tokyotyrant, the messaging bus ZeroMQ and
> the internal CloudI messaging. HTTP is also supported for easy integration
> with cowboy and misultin. If anyone is willing to get involved, don't
> hesitate to contact me or start looking at the code.
>
> What is CloudI? summary:
> (short answer) "An application server that efficiently integrates with
> many languages, many databases, and many messaging buses in a way that is
> both scalable and fault-tolerant."
> (shorter answer) "A rock-solid transaction processing system for flexible
> software development."
> (shortest answer) "A Cloud at the lowest level."
>
> About the release:
> If you have had problems installing CloudI in the past, you should no
> longer have issues. I have been working through build and install issues
> on Ubuntu and OSX, but no issues currently remain. If you run into any
> problems, please don't hesitate to report them (here
> https://github.com/okeuday/CloudI/issues/new ).
>
> The latest news is below:
> * use patterns instead of prefixes for ACL strings
> * add the following destination refresh methods:
> immediate_furthest, lazy_furthest,
> immediate_local, lazy_local,
> immediate_remote, and lazy_remote
> * build system fixes and documentation fixes for installation
> * fix CloudI API uuids to be completely standard v1
> * fix external service queueing during initialization
>
> Please mention any problems, issues, or ideas!
>
> Thanks,
> Michael
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From mjtruog@REDACTED Wed Feb 6 08:05:14 2013
From: mjtruog@REDACTED (Michael Truog)
Date: Tue, 05 Feb 2013 23:05:14 -0800
Subject: [erlang-questions] [ANN] CloudI 1.1.1 Released!
In-Reply-To:
References: <5110AD5F.9060601@gmail.com>
Message-ID: <511200AA.5020600@gmail.com>
I know there isn't a guickstart or user tutorial yet, and I have been putting that off. The closest thing that currently exists is the tests, which do serve as examples (https://github.com/okeuday/CloudI/tree/master/src/tests), but I understand there should be a user tutorial that provides an explanation and context for creating a service, so that people don't get driven away by too much time spent. I will do that for the next release to make sure that gets done before I add more features/services (you are not the first person to complain about this).
Thanks,
Michael
On 02/05/2013 10:55 PM, Rapsey wrote:
> In my humble opinion you really need some sort of quickstart or walk through guide on how to use it. Many people like to learn by examples and there is nothing of this sort there. I read the faq, the github readme, this email and I still have no idea how to use it or have any degree of certainty what exactly it is for.
>
>
> Sergej
>
> On Tue, Feb 5, 2013 at 7:57 AM, Michael Truog > wrote:
>
> Download 1.1.1 from http://sourceforge.net/projects/cloudi/files/latest/download
>
> What is CloudI?
> CloudI (http://www.cloudi.org/) is meant to be a "universal integrator" using an Erlang core, with its actor model, to pursue efficiency, fault-tolerance and scalability. The CloudI API provides a minimal interface to communicate among actors that are called services or jobs (they are services, ran as if they are jobs, in parallel), so programming language agnostic, database agnostic, and messaging bus agnostic integration can occur. CloudI currently integrates with the programming languages Erlang, C/C++, Java, Python, and Ruby, the databases PostgreSQL, MySQL, couchdb, memcached, and tokyotyrant, the messaging bus ZeroMQ and the internal CloudI messaging. HTTP is also supported for easy integration with cowboy and misultin. If anyone is willing to get involved, don't hesitate to contact me or start looking at the code.
>
> What is CloudI? summary:
> (short answer) "An application server that efficiently integrates with many languages, many databases, and many messaging buses in a way that is both scalable and fault-tolerant."
> (shorter answer) "A rock-solid transaction processing system for flexible software development."
> (shortest answer) "A Cloud at the lowest level."
>
> About the release:
> If you have had problems installing CloudI in the past, you should no longer have issues. I have been working through build and install issues on Ubuntu and OSX, but no issues currently remain. If you run into any problems, please don't hesitate to report them (here https://github.com/okeuday/CloudI/issues/new ).
>
> The latest news is below:
> * use patterns instead of prefixes for ACL strings
> * add the following destination refresh methods:
> immediate_furthest, lazy_furthest,
> immediate_local, lazy_local,
> immediate_remote, and lazy_remote
> * build system fixes and documentation fixes for installation
> * fix CloudI API uuids to be completely standard v1
> * fix external service queueing during initialization
>
> Please mention any problems, issues, or ideas!
>
> Thanks,
> Michael
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From fithis2001@REDACTED Wed Feb 6 15:28:10 2013
From: fithis2001@REDACTED (Vasileios Anagnostopoulos)
Date: Wed, 6 Feb 2013 16:28:10 +0200
Subject: [erlang-questions] Slimmed down version
Message-ID:
Hi,
Erlang/OTP is a big package to download and build. Is there any option to
provide a slimmed down version? Only the bare minimum?
I think that OTP must become more modular and rely on an external package
system.
Regards
Vasileios
--
Dr. Vasileios Anagnostopoulos (MSc,PhD)
Researcher/Developer
ICCS/NTUA
9 Heroon Polytechneiou Str., Zografou
15773 Athens,Greece
T (+30) 2107723404
M (+30) 6936935388
E vanag@REDACTED>www.ntua.gr
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From dronnikov@REDACTED Wed Feb 6 15:30:44 2013
From: dronnikov@REDACTED (Vladimir Dronnikov)
Date: Wed, 6 Feb 2013 18:30:44 +0400
Subject: [erlang-questions] Slimmed down version
In-Reply-To:
References:
Message-ID:
Hi!
Of particular need imho is to make wx* optional, as it pulls X and
supporting libraries in.
--Vladimir
On Wed, Feb 6, 2013 at 6:28 PM, Vasileios Anagnostopoulos <
fithis2001@REDACTED> wrote:
>
> Hi,
>
> Erlang/OTP is a big package to download and build. Is there any option to
> provide a slimmed down version? Only the bare minimum?
> I think that OTP must become more modular and rely on an external package
> system.
>
>
> Regards
> Vasileios
> --
>
> Dr. Vasileios Anagnostopoulos (MSc,PhD)
> Researcher/Developer
> ICCS/NTUA
> 9 Heroon Polytechneiou Str., Zografou
> 15773 Athens,Greece
> T (+30) 2107723404
> M (+30) 6936935388
> E vanag@REDACTED>www.ntua.gr
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From desired.mta@REDACTED Wed Feb 6 16:07:30 2013
From: desired.mta@REDACTED (=?UTF-8?Q?Motiejus_Jak=C5=A1tys?=)
Date: Wed, 6 Feb 2013 15:07:30 +0000
Subject: [erlang-questions] Slimmed down version
In-Reply-To:
References:
Message-ID:
On Wed, Feb 6, 2013 at 2:28 PM, Vasileios Anagnostopoulos
wrote:
>
> Hi,
>
> Erlang/OTP is a big package to download and build. Is there any option to
> provide a slimmed down version? Only the bare minimum?
> I think that OTP must become more modular and rely on an external package
> system.
There is a mechanism for that in debian/ubuntu:
motiejus@REDACTED:~$ apt-get install -s erlang-base
NOTE: This is only a simulation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
erlang-crypto erlang-syntax-tools libsctp1 lksctp-tools
Suggested packages:
erlang-tools erlang erlang-manpages erlang-doc
The following NEW packages will be installed:
erlang-base erlang-crypto erlang-syntax-tools libsctp1 lksctp-tools
0 upgraded, 5 newly installed, 0 to remove and 10 not upgraded.
Inst erlang-base (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Inst erlang-crypto (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Inst erlang-syntax-tools (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Inst libsctp1 (1.0.11+dfsg-2 Ubuntu:12.04/precise [amd64])
Inst lksctp-tools (1.0.11+dfsg-2 Ubuntu:12.04/precise [amd64])
Conf erlang-base (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Conf erlang-crypto (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Conf erlang-syntax-tools (1:14.b.4-dfsg-1ubuntu1 Ubuntu:12.04/precise [amd64])
Conf libsctp1 (1.0.11+dfsg-2 Ubuntu:12.04/precise [amd64])
Conf lksctp-tools (1.0.11+dfsg-2 Ubuntu:12.04/precise [amd64])
which looks quite minimal to me.
--
Motiejus Jak?tys
From magnus@REDACTED Wed Feb 6 18:18:06 2013
From: magnus@REDACTED (Magnus Henoch)
Date: Wed, 06 Feb 2013 17:18:06 +0000
Subject: [erlang-questions] ssl cb_info vs custom socket library
Message-ID:
Hi all,
I'm trying to use the ssl application together with a custom socket
library, using the cb_info option to pass in the module name. However,
at some places the ssl application assumes that the socket is a "real"
socket, and calls inet:setopts on it - though
ssl_connection:workaround_transport_delivery_problems specifically
checks for this and avoids inet:setopts if the transport module is not
gen_tcp.
I realise that cb_info is an undocumented option, so I'd appreciate any
opinions before spending more time on this. Are there any other reasons
why using a different transport callback would not work? Would a patch
fixing such problems be welcome?
Regards,
Magnus
From derekbrown121@REDACTED Wed Feb 6 21:27:16 2013
From: derekbrown121@REDACTED (Derek Brown)
Date: Wed, 6 Feb 2013 15:27:16 -0500
Subject: [erlang-questions] Evening School of Erlang
Message-ID:
Francesco- I'm looking into New York locations. I have the feeling that
you'll have a
lot of attendance interest in NYC.
> Date: Tue, 05 Feb 2013 22:54:26 +0000
> From: Francesco Cesarini
> To: erlang-questions@REDACTED, Monika Jarzyna
>
> Subject: Re: [erlang-questions] Evening School of Erlang
> Message-ID: <51118DA2.1090103@REDACTED>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> If we get enough attendees, there will be a second round in about 4 -
> 6
> months. It all depends on demand and local companies recruiting for
> Erlang developers willing to sponsor and how many of the attendees
> find
> Erlang jobs. San Mateo/Palo Alto might also be an option for you. San
> Francisco classes finished last week and a new round of dates will
> soon
> be announced.
>
> In regards to New York, we are looking at the latter half of this
> year.
> Derek - if you are able to help us secure a venue, it would be great!
> Other locations currently include Chicago, DC, Boston, Pasadena and
> Santa Monica.
>
> Francesco
>
> On 05/02/2013 22:04, Raoul Duke wrote:
> >> San Jose hasn't happened yet - I believe you can still get tickets.
> > i won't be around for it this feb :-(
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
>
> --
> Erlang Solutions Ltd.
> http://www.erlang-solutions.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From ok@REDACTED Wed Feb 6 23:04:44 2013
From: ok@REDACTED (Richard O'Keefe)
Date: Thu, 7 Feb 2013 11:04:44 +1300
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References: ,
Message-ID:
On 6/02/2013, at 3:59 AM, Matthew Evans wrote:
> This pertains to a feature I would like to see in Erlang.
> The ability to set an optional "memory limit" ...
That persuaded me to write a new EEP, which I've just
sent off.
In the future, instead of saying "a feature I would like
to see", you'll be able to say "why isn't EEP XX
implemented yet?" (:-)
From mattevans123@REDACTED Wed Feb 6 23:13:21 2013
From: mattevans123@REDACTED (Matthew Evans)
Date: Wed, 6 Feb 2013 17:13:21 -0500
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References: ,
,
Message-ID:
Awesome ...
Let's hope someone from Ericsson likes the idea. I recall a long time ago Joe Armstrong talking about something similar.
----------------------------------------
> Subject: Re: [erlang-questions] How to see which processes used ets table?
> From: ok@REDACTED
> Date: Thu, 7 Feb 2013 11:04:44 +1300
> CC: gustav.simonsson@REDACTED; solomon.wzs@REDACTED; erlang-questions@REDACTED
> To: mattevans123@REDACTED
>
>
> On 6/02/2013, at 3:59 AM, Matthew Evans wrote:
> > This pertains to a feature I would like to see in Erlang.
> > The ability to set an optional "memory limit" ...
>
> That persuaded me to write a new EEP, which I've just
> sent off.
> In the future, instead of saying "a feature I would like
> to see", you'll be able to say "why isn't EEP XX
> implemented yet?" (:-)
>
>
From wallentin.dahlberg@REDACTED Thu Feb 7 00:09:36 2013
From: wallentin.dahlberg@REDACTED (=?ISO-8859-1?Q?Bj=F6rn=2DEgil_Dahlberg?=)
Date: Thu, 7 Feb 2013 00:09:36 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID:
2013/2/5 Matthew Evans
> Hi,
>
> I don't wish to thread-jack, but I am anyway ;-)
>
> This pertains to a feature I would like to see in Erlang. The ability to
> set an optional "memory limit" when a process and ETS table is created (and
> maybe a global optional per-process limit when the VM is started). I've
> seen a few cases where, due to software bugs, a process size grows and
> grows; unfortunately as things stand today the result is your entire VM
> crashing - hopefully leaving you with a crash_dump.
>
> Having such a limit could cause the process to terminate (producing a OOM
> crash report in erlang.log) and the crashing process could be handled with
> supervisor rules. Even better you can envisage setting the limits
> artificially low during testing to catch these types of bugs early on.
>
Not this again.
This idea is not an uninteresting one. A safeguard against bad flow control
in application design.
We, well I, implemented a "limits" prototype where I could set max heap
sizes on processes. The process would be killed with an exception limit
error if it ever reached its max heap size. It worked fine in most cases
but if I remember correctly we couldn't guard against binary creation fast
enough (without killing performance). I'm pretty sure we could remedy those
problems though, but by then my work queue was reprioritized.
We ultimately decided against it, citing bad application design as exhibit
A and root cause to runaway memory consumption; thus not strictly needed.
=)
I think the biggest advantages of limits is like you say, catching problems
early in design.
However, I think you can simulate some of this already by using a server
process with:
erlang:system_monitor(MonitorPid, [{large_heap, HeapSize}]),
...
receive
{monitor, GcPid, large_heap, _} -> purge_with_fire(GcPid);
...
That might suffice for developing purposes.
If this should be considered again something more extensive then just
"limit heaps on processes and ets" should be considered I think. I would
like a subscriber system on erts where a could subscribe to different part
of the system and handle notifications as I see fit. The trouble here would
be "how fast do I need to handle this?". Do a message suffice or do I need
to wrap the notification in a fun like a callback?
Perhaps it has som validity to do something simple instead.
If a good enough proposal is put forward it will be considered.
// Bj?rn-Egil
>
> Cheers
>
> Matt
>
> ------------------------------
> Date: Tue, 5 Feb 2013 08:51:16 +0100
> From: gustav.simonsson@REDACTED
> To: solomon.wzs@REDACTED
> CC: erlang-questions@REDACTED
> Subject: Re: [erlang-questions] How to see which processes used ets table?
>
>
> Note that erlang:memory/1 gives memory in bytes, whereas ets:i/0 gives it
> in words. On a 64-bit system 625M words would be 5GB, so the numbers you
> get might be correct. Try summing the memory from ets:i/0 up exact and
> compare it to erlang:memory(ets).
>
> Cheers,
> Gustav Simonsson
>
>
> On Tue, Feb 5, 2013 at 3:42 AM, Solomon wrote:
>
> I checked system info with erlang:memory/1 and found the total amount of
> memory allocated for ets tables was about 5GB.
>
> Then I sum the memory size return by ets:i/0 and it was about 600MB.
>
> So which processes used ets table and did not return by ets:i/0?
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> _______________________________________________ erlang-questions mailing
> list erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From comptekki@REDACTED Thu Feb 7 00:17:00 2013
From: comptekki@REDACTED (Wes James)
Date: Wed, 6 Feb 2013 16:17:00 -0700
Subject: [erlang-questions] erlang messaging over ssl - compiling .rel file
during make
Message-ID:
I have erlang working with ssl now per Romain Lenglet's suggestion. Is
there a way to compile the .rel file with the "make" process via erlang cli
(I didn't find a cli util) or do I need to make an escript that does it.
Thanks,
Wes
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From ok@REDACTED Thu Feb 7 02:31:30 2013
From: ok@REDACTED (ok@REDACTED)
Date: Thu, 7 Feb 2013 14:31:30 +1300
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID:
"Bj?rn-Egil Dahlberg" wrote:
> We, well I, implemented a "limits" prototype where I could set max heap
> sizes on processes. The process would be killed with an exception limit
> error if it ever reached its max heap size. [snip]
>
> We ultimately decided against it, citing bad application design as exhibit
> A and root cause to runaway memory consumption; thus not strictly needed.
> =)
That's not why it isn't needed, that's why it IS needed.
> I think the biggest advantages of limits is like you say, catching
> problems early in design.
I'm writing this reply through a pain-in-the-posterior WebMail
system. Why? Because my normal machine is unavailable. Why?
Because (a) my files were arbitrarily moved off my machine onto
NFS some years ago, *despite* my explicit request that my files
never be moved again without consulting me, (b) Mac OS X 10.6.8,
which has served me well with no problems, apparently got one
update too many (said to be to address Java problems) last week
and demanded to be shut down; (c) when it came back, NFS
connection was lost. The technical support people say that the
simplest fix is to destroy my environment and give me 10.7
instead. (I'm using 10.7 now, as a matter of fact, on a loaner
box; Mail does not recognise my old mailbox, my Dock set-up has
been trashed, and so it goes.)
The problem here is that a well designed and tested system that
has worked flawlessly for years can stop working as a result of
some apparently unrelated upgrade.
> However, I think you can simulate some of this already by using a server
> process with:
>
> erlang:system_monitor(MonitorPid, [{large_heap, HeapSize}]),
> ...
> receive
> {monitor, GcPid, large_heap, _} -> purge_with_fire(GcPid);
> ...
>
What's wrong with this approach?
(1) It checks whether *ANY* process gets a heap exceeding the
specified size. But some processes might legitimately
need a large heap, while others might be out of control if
they grow to more than a few kilobytes.
(2) The limit that is checked is "the sum of the sizes of all
memory blocks allocated for all heap generations". But that
is something that is entirely out of the control of an
Erlang programmer. The thing a programmer (or a process)
can be held responsible for (within reason) is the number
of words of memory actually *live*.
(3) *ANY* process can change this; it is not limited to the
process itself (good for protection against accidents) or
its creator (good for protection against malice).
(4) Judging from the description of system_monitor/0, there
can only be ONE system monitor for ALL processes. If
there is a monitor watching for distribution problems
(busy_dist_port) and an unrelated piece of code installs
a monitor for large heaps, the distribution problem monitor
is wiped away.
(5) As noted in the documentation, the monitoring process is not
exempt from monitoring, so you can easily get into a
recursive loop where memory overflow in the monitoring
processes cause messages to be sent to it which cause ...
I could go on. These are not the only flaws I see with this
interface. Let's just say it's on my list of interfaces to
avoid while I still have my sanity.
The only alternative I've been able to think of with the
existing interfaces is to create a watchdog process that
checks process_info(Target, memory) periodically, which is
doable, and which can check for message queue growth as well.
From essen@REDACTED Thu Feb 7 02:50:14 2013
From: essen@REDACTED (=?ISO-8859-1?Q?Lo=EFc_Hoguin?=)
Date: Thu, 07 Feb 2013 02:50:14 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID: <51130856.80304@ninenines.eu>
On 02/07/2013 02:31 AM, ok@REDACTED wrote:
> The only alternative I've been able to think of with the
> existing interfaces is to create a watchdog process that
> checks process_info(Target, memory) periodically, which is
> doable, and which can check for message queue growth as well.
This is probably the least insane approach.
A maximum limit on the memory used by a process could certainly prevent
processes who start using too much because of bugs, but it might also
have the inverse effect of killing legitimate processes. The chances of
this happening increase with the number of updates the code receives, as
you will most likely forget to update it.
There's only one sane approach to make sure a system works as intended
for any size of inputs over any length of time: testing. And more than
that, property based testing. If your system crashes because of memory
issues and you didn't catch it while testing, you might consider writing
some properties and feeding your application bigger chunks of data over
longer periods of time.
--
Lo?c Hoguin
Erlang Cowboy
Nine Nines
http://ninenines.eu
From wallentin.dahlberg@REDACTED Thu Feb 7 03:14:30 2013
From: wallentin.dahlberg@REDACTED (=?ISO-8859-1?Q?Bj=F6rn=2DEgil_Dahlberg?=)
Date: Thu, 7 Feb 2013 03:14:30 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID:
2013/2/7
> "Bj?rn-Egil Dahlberg" wrote:
>
> > We, well I, implemented a "limits" prototype where I could set max heap
> > sizes on processes. The process would be killed with an exception limit
> > error if it ever reached its max heap size. [snip]
> >
> > We ultimately decided against it, citing bad application design as
> exhibit
> > A and root cause to runaway memory consumption; thus not strictly needed.
> > =)
>
> That's not why it isn't needed, that's why it IS needed.
>
The "=)" refers to the somewhat unconvincingly conclusion. Ironi is not
well suited for internet medium.
It's not without truth though. The flow control problem is solved via good
design, but I absolutely agree that limits are a handy tool for developers
and can certainly help developers find those issues.
Developers wants as much rope they can get from a system.
> I think the biggest advantages of limits is like you say, catching
> > problems early in design.
>
>
> The problem here is that a well designed and tested system that
> has worked flawlessly for years can stop working as a result of
> some apparently unrelated upgrade.
>
Well, normally one tests an upgraded system before deployment but I agree
with your point.
> > However, I think you can simulate some of this already by using a server
> > process with:
> >
> > erlang:system_monitor(MonitorPid, [{large_heap, HeapSize}]),
> > ...
> > receive
> > {monitor, GcPid, large_heap, _} -> purge_with_fire(GcPid);
> > ...
> >
>
> What's wrong with this approach?
>
*Bracing for impact*
> (1) It checks whether *ANY* process gets a heap exceeding the
> specified size. But some processes might legitimately
> need a large heap, while others might be out of control if
> they grow to more than a few kilobytes.
>
> (2) The limit that is checked is "the sum of the sizes of all
> memory blocks allocated for all heap generations". But that
> is something that is entirely out of the control of an
> Erlang programmer. The thing a programmer (or a process)
> can be held responsible for (within reason) is the number
> of words of memory actually *live*.
>
> (3) *ANY* process can change this; it is not limited to the
> process itself (good for protection against accidents) or
> its creator (good for protection against malice).
>
> (4) Judging from the description of system_monitor/0, there
> can only be ONE system monitor for ALL processes. If
> there is a monitor watching for distribution problems
> (busy_dist_port) and an unrelated piece of code installs
> a monitor for large heaps, the distribution problem monitor
> is wiped away.
>
> (5) As noted in the documentation, the monitoring process is not
> exempt from monitoring, so you can easily get into a
> recursive loop where memory overflow in the monitoring
> processes cause messages to be sent to it which cause ...
>
This is great!
You have identified several problems that can be fed into a limits proposal
and how it should be solved.
Please note that system_monitor suggestion in this mail was intended as a
"fall-forward" (swedish idiom?). The development case .. but I think you
understood that.
I could go on. These are not the only flaws I see with this
> interface. Let's just say it's on my list of interfaces to
> avoid while I still have my sanity.
>
Haha. =) I will not be as judgmental in my opinion of that interface but it
has some shortcomings, that's for sure.
> The only alternative I've been able to think of with the
> existing interfaces is to create a watchdog process that
> checks process_info(Target, memory) periodically, which is
> doable, and which can check for message queue growth as well.
>
I wouldn't recommend such an approach either. Especially if you want it in
production. You will kill any sort of performance if you do this. Also, if
you implement something within erts that tries to check the *complete* msg
queue (both inner and outer) you will also kill any sort of application
performance.
I think the best approach is the garbage collector still. You have complete
access to the process and can make judgment calls there.
Also, processes is just one type of entity for limits. You have to consider
*all* aspects of the runtime system if you wish to make a limits proposal
that can stop OOM problems.
I'm still not convinced that this should be prioritized over something
else. Runaway memory is, most of the time, bad flow control. Wouldn't it be
better to solve that instead?
// Bj?rn-Egil
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From tuulos@REDACTED Thu Feb 7 08:11:18 2013
From: tuulos@REDACTED (Ville Tuulos)
Date: Wed, 6 Feb 2013 23:11:18 -0800
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID:
On Wed, Feb 6, 2013 at 6:14 PM, Bj?rn-Egil Dahlberg
wrote:
> I'm still not convinced that this should be prioritized over something else.
> Runaway memory is, most of the time, bad flow control. Wouldn't it be better
> to solve that instead?
Here's my data point in support for the limits:
Bad flow control is exactly the reason why the process limits would be
useful for Disco: Disco communicates with an external worker process
over stdin/stdout using standard ports. As far as I know, open_port
doesn't include any mechanism to limit a rogue external process from
flooding the message queue of the Erlang process with tons of messages
in the matter of seconds, which can cause the whole VM to run out of
memory.
This could be fixed either by improving the flow control in open_port
or by limiting the number of messages and/or memory that can be used
by the controlling process.
Instead of trying to fix all possible horror scenarios with flow
control, the per-process limits seems like a more robust solution. It
is pretty much the same reason why OS-level containers such as OpenVZ
and LXC are so extremely useful, even if you don't need to worry about
security.
Ville
From ok@REDACTED Thu Feb 7 09:39:53 2013
From: ok@REDACTED (ok@REDACTED)
Date: Thu, 7 Feb 2013 21:39:53 +1300
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID: <51e1f553bf774403f3b88e79a84a50fc.squirrel@chasm.otago.ac.nz>
"Bj?rn-Egil Dahlberg"
wrote:
>> The problem here is that a well designed and tested system that
>> has worked flawlessly for years can stop working as a result of
>> some apparently unrelated upgrade.
>>
>
> Well, normally one tests an upgraded system before deployment but I agree
> with your point.
One would have surmised that Apple had thoroughly tested their
Java-related patches, but allegedly that's what killed NFS on my
desktop machine. One would think that a payroll system would be
thoroughly tested before abruptly moving 110,000 teachers over to
it, but apparently four separate consultants told the New Zealand
government to go ahead with deployment despite Talent2 telling
them there were 147 known serious bugs.
There's all that "normally" stuff I tell me students to do,
and then there's what happens in the "real" world.
>> The only alternative I've been able to think of with the
>> existing interfaces is to create a watchdog process that
>> checks process_info(Target, memory) periodically, which is
>> doable, and which can check for message queue growth as well.
>>
>
> I wouldn't recommend such an approach either. Especially if you want it in
> production. You will kill any sort of performance if you do this. Also, if
> you implement something within erts that tries to check the *complete* msg
> queue (both inner and outer) you will also kill any sort of application
> performance.
This caught my eye. What are "inner" and "outer"
message queues? One aspect of Erlang implementation I've
never understood is how message queues actually work.
>
> I think the best approach is the garbage collector still.
Well, the EEP I posted today suggests checking memory limits
at garbage collection time.
> Also, processes is just one type of entity for limits.
True. I've received the impression that they are the
most commonly reported kind.
You have to consider
> *all* aspects of the runtime system if you wish to make a limits proposal
> that can stop OOM problems.
That sounds reasonable, but I'm not sure that waiting until
we can guarantee to stop *all* OOM problems is better than
reducing the incidence of *some* OOM problems sooner.
>
> I'm still not convinced that this should be prioritized over something
> else. Runaway memory is, most of the time, bad flow control. Wouldn't it
> be better to solve that instead?
Perhaps I spend too much time reading the Haskell mailing list,
where runaway memory is commoner than in Erlang and has many and
subtle causes. Perhaps I've spent too much time hacking Smalltalk,
where at least in my programs memory gets chewed up by data structures
I didn't even know were being allocated, let alone retained.
It would be *wonderful* to have clearly written advice and
supporting libraries to get flow control right.
It may well be *better* to do that first.
But it won't stop OOM problems.
From attila.r.nohl@REDACTED Thu Feb 7 11:52:10 2013
From: attila.r.nohl@REDACTED (Attila Rajmund Nohl)
Date: Thu, 7 Feb 2013 11:52:10 +0100
Subject: [erlang-questions] How to see which processes used ets table?
In-Reply-To:
References:
Message-ID: