erlangweb-users Mailing List for Erlang Web (Page 5)
                
                Brought to you by:
                
                    etcerlangweb,
                    
                
                    paulgray
                    
                
            
            
        
        
        
    You can subscribe to this list here.
| 2008 | Jan | Feb | Mar | Apr | May | Jun (1) | Jul (2) | Aug (1) | Sep (1) | Oct | Nov (40) | Dec (25) | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 | Jan (7) | Feb (17) | Mar (10) | Apr (3) | May (10) | Jun (2) | Jul (2) | Aug (3) | Sep (12) | Oct (9) | Nov (11) | Dec (7) | 
| 2010 | Jan (3) | Feb (10) | Mar (18) | Apr (20) | May (1) | Jun | Jul (1) | Aug | Sep | Oct | Nov | Dec (1) | 
| 2011 | Jan | Feb | Mar | Apr (8) | May | Jun | Jul | Aug (6) | Sep (1) | Oct | Nov | Dec | 
| 2012 | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep (1) | Oct | Nov | Dec | 
| 
      
      
      From: Bill O. <bi...@th...> - 2009-09-07 00:37:09
      
     | 
| Hi, I am fairly new to erlang and just looking at erlangweb. I have 
successfully reached step 4, but cannot get  the shop_utils.erl to compile.
If I comment out the include and the 2 ?BEFOREs, then it compiles 
without error, which points to the annotation sw.  I am running Fedora 
11 x86_64.
when using ./bin/compile or eptic:reload() I get the following:   Any 
help is greatly appreciated.
Recompile: lib/shop-0.1/src/shop_utils
lib/shop-0.1/src/shop_utils.erl:none: error in parse transform 
'e_annotation': {undef,
                                           [{e_annotation,parse_transform,
                                             [[{attribute,1,file,
                                                
{"lib/shop-0.1/src/shop_utils.erl",
                                                 1}},
                                               
{attribute,1,module,shop_utils},
                                               {attribute,3,export,
                                                [{validate,4}]},
                                               {attribute,1,file,
                                                
{"./lib/eptic-1.3/include/e_annotation.hrl",
                                                 1}},
                                               {attribute,7,file,
                                                
{"lib/shop-0.1/src/shop_utils.erl",
                                                 7}},
                                               {attribute,8,
                                                ew_annotation_before,[]},
                                               {function,9,validate,4,
                                                [{clause,9,
                                                  [{tuple,9,
                                                    [{var,9,'Model'},
                                                     {var,9,'Type'}]},
                                                   {var,9,'Mod'},
                                                   {var,9,'_Fun'},
                                                   {var,9,'_Args'}],
                                                  [],
                                                  [{'case',10,
                                                    {call,10,
                                                     {remote,10,
                                                      
{atom,10,validate_tool},
                                                      
{atom,10,validate_cu}},
                                                     [{var,10,'Model'},
                                                      {var,10,'Type'}]},
                                                    [{clause,11,
                                                      [{tuple,11,
                                                        [{atom,11,ok},
                                                         {var,11,'Item'}]}],
                                                      [],
                                                      [{tuple,12,
                                                        [{atom,12,proceed},
                                                         {cons,12,
                                                          {var,12,'Item'},
                                                          {nil,12}}]}]},
                                                     {clause,13,
                                                      [{tuple,13,
                                                        [{atom,13,error},
                                                         
{var,13,'_Reason'}]}],
                                                      [],
                                                      [{tuple,14,
                                                        [{atom,14,error},
                                                         {tuple,14,
                                                          [{var,14,'Mod'},
                                                           {atom,14,
                                                            validate_error},
                                                           {cons,14,
                                                            {var,14,'Fun'},
                                                            {nil,
                                                             
14}}]}]}]}]}]}]},
                                               {eof,45}],
                                              
[report_errors,report_warnings,
                                               {outdir,"lib/shop-0.1/ebin"},
                                               {i,"lib/shop-0.1/include"},
                                               
debug_info,strict_record_tests,
                                               netload]]},
                                            {compile,
                                             
'-foldl_transform/2-anonymous-2-',
                                             2},
                                            {compile,foldl_transform,2},
                                            {compile,
                                             
'-internal_comp/4-anonymous-1-',2},
                                            {compile,fold_comp,3},
                                            {compile,internal_comp,4},
                                            {compile,internal,3}]}
ok
-- 
Regards,
Bill Ott
Email: Mailto://billott@theotts.org
Website: http://www.theotts.org
 | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-09-02 07:41:49
      
     | 
| Hi, What do you mean by AJAX support? Does it include some helpers for controllers/pre-defined tags (like wpart:drag and wpart:drop)/our own COMET implementation? For now I guess the only support for any JS interaction is a possibility to return JSON to caller. If you are interested in that, please visit http://wiki.erlang-web.org/Eptic/ServerTuples for details. And if you have any suggestions about what should be supported in the first order, please let us know as well. ----- "payam yousefi" <pay...@gm...> wrote: > Hi > We are working on a project with Erlang and we are developing a web > application to monitor our runtime . > I want to know , Is there any plan to provide Ajax support in > erlang-web ? > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > 30-Day > trial. Simplify your report design, integration and deployment - and > focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Erlangweb-users mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlangweb-users > http://www.erlang-web.org/ Best regards, -- Michal Ptaszek www.erlang-consulting.com | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-09-02 07:38:14
      
     | 
| Hi, We have never had any problems with combining jQuery or Dojo frameworks/toolkits in Erlang Web. The only difference in your controllers would be returning some JSON (see http://wiki.erlang-web.org/Eptic/ServerTuples) instead of e.g. rendering a template. ----- "Elan" <thi...@gm...> wrote: > Hi. > I am very curious about Erlang Web, and I am thinking of installing > an > experimental version on one of my servers. Before I do, however, I > wanted to > ascertain, if there is anything that I must consider regarding Erlang > Web's > AJAX compatibility. I.e. Will I be able to utilize Javascript based > AJAX GUI > frameworks in my Erlang Web based website? > > TIA, > Elan > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > 30-Day > trial. Simplify your report design, integration and deployment - and > focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Erlangweb-users mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlangweb-users > http://www.erlang-web.org/ Best regards, -- Michal Ptaszek www.erlang-consulting.com | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-09-02 07:20:56
      
     | 
| Hi, Erlang Web as a framework does not use any Linux-specific mechanisms (os:cmd or other). Erlang Web as a set of libraries and scripts does: for example all the scripts included in the release are using Linux paths style/Linux commands/etc. If you want to try - run it using cygwin - I think it should work well. And I guess you will be the first person who will do that: if you achieve success - please, share it with the community :) ----- "Elan" <thi...@gm...> wrote: > Hi. > Wiki under Installation -> compile.erl states that there is a startup > script > to make installation easier, and that > "currently only Linux based environments are supported". > > Will Erlang Web run under Windows, and does there exist some resource > that > explains how to install Erlang Web under Windows? > > TIA, > Elan > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > 30-Day > trial. Simplify your report design, integration and deployment - and > focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Erlangweb-users mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlangweb-users > http://www.erlang-web.org/ Best regards, -- Michal Ptaszek www.erlang-consulting.com | 
| 
      
      
      From: Michael M. <erl...@au...> - 2009-09-02 02:37:30
      
     | 
| The configuration I decided to use is lighttpd from http://redmine.lighttpd.net/projects/lighttpd/wiki. I had it running with fossil within about a half hour. I am using Erlang Web for other projects and thought it would be "quick and easy" to get fossil running on it [on our DEV server]. I did not particularly want to run a separate web server for version repositories. But, even with plain yaws I discovered that it behaved improperly with fossil (or vice versa) if I used any but the standard port 80. Which I cannot do for our version control system, I need to run fossil on other-than-port-80. lighttpd is lightweight, was quickly configurable, and plays well with fossil on non-standard ports. And, since it is running on our DEV server, not a big problem to run a separate light-weight web server to serve up the version control repositories (and ticket system and wiki). And it helps keep Erlang Web directories clean for the "real" projects. thanks again, ~Michael On Tue, Sep 01, 2009 at 03:29:25PM -0700, erl...@au... wrote: > Thank you, Michal. > > I am having some small success. I will submit updated information > [and configuration] later when I get things working more suitably. > > ~Michael > > > On Tue, Sep 01, 2009 at 09:47:30AM +0200, Michal Zajda wrote: > > Hi, > > it is just theoretical because I never set up fossil, but I see several > > issues in Your config: > > 1. in yaws.conf place ErlangWeb appmod in a front of rest of them > > 2. place all fossil files in docroot (lets say in docroot/fossil) > > 3. dispatcher should return then {static, "^/fossil", enoent} > > 4. code from docroot should be executed > > In case You would like to have some authorisation (or similar action > > before serving content) : > > 1. write a controller to handle authorisation (lets give it a name > > c_fossil) > > 2. in case of yaws return from controller one of : > > {custom, {page, "/" ++ wpart:fget("__path")}} %% <-- so the > > same place > > or > > {template, "docroot/fossil/some_index.html"} %% <-- so it goes > > via out templating engine > > 3. dispatcher differs here: > > {dynamic, "^/fosill", {c_fossil, read}} > > 4. last but not least: > > 4.1 in case of {template.. } be careful with dispatcher rules and > > docroot (remember that static rules are matched in the first place) > > 4.2 in case of {custom.. } while the rule is dynamic it actually > > returns path /app/fossil/ (because of appmod) so You need to do symlink > > in docroot to the fossil directory. So, it fossil is placed in > > docroot/fossil then we need app/ directory in docroot and inside of > > that link to fossil dir > > {page.. } and 4.2 are not officialy supported ;) but it is good to know > > this is possible > > br > > Michal Z > > > > 2009/9/1 Michael McDaniel <[1]erl...@au...> > > > > Hi, List. > > I want to run *.yaws and *.cgi files via erlang-web. > > Well, actually, I want to be able to serve fossil > > [[2]http://fossil-scm.org] repositories from within > > erlang-web (using yaws as backend), I'm not particularly > > stuck on using *.yaws and *.cgi though that is how I ran > > fossil using yaws alone. > > If I am only running yaws then I can do, e.g. the following > > to display (and work with) a fossil repository : > > /usr/local/etc/yaws/yaws.conf > > ... > > <server localhost> > > port = 80 > > listen = 127.0.0.1 > > docroot = /usr/local/var/yaws/www > > appmods = <cgi-bin, yaws_appmod_cgi> > > </server> > > --- > > /usr/local/var/yaws/www/block_clone.yaws > > <erl> > > out(Arg) -> > > yaws_cgi:call_cgi(Arg, > > "/usr/local/var/yaws/www/cgi-bin/block_clone.cgi"). > > </erl> > > --- > > /usr/local/var/yaws/www/cgi-bin/block_clone.cgi > > #!/usr/local/bin/fossil > > repository: /tmp/cloned_repositories/block_clone.fossil > > -- > > and, when pointing browser at > > [3]http://localhost/block_clone.yaws/ > > I get the fossil index page, and all the links work. > > --- > > and, for Erlang Web, I have tried various combinations > > of, e.g. > > templates/fossil.html > > <?xml version="1.0" encoding="utf-8"?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > > "[4]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > > <html xmlns="[5]http://www.w3.org/1999/xhtml"> > > <head> > > <title>Fossil repositories</title> > > <script src="cgi/foo.cgi" type="text/html"> </script> > > </head> > > </html> > > ^^^^^^^^^^^^^ > > also changed this to "fossil.yaws" > > which calls the cgi file > > The cgi file is executable. The repository is readable. > > The cgi directory is a subdirectory of templates directory. > > So, how can I serve fossil repositories via erlang-web whether > > with *.yaws and cgi or not. Of course, using yaws as the > > backend web server for Erlang Web. > > I tried similar configuration and various combinations > > in dispatch.conf, e.g. {static, "^/fossil$", "fossil.yaws"}. > > but the best I can get is no error and a blank page in > > the browser. > > Please if you have a suggestion (especially one you have > > used successfully) to run *.yaws and *.cgi within > > Erlang Web, please provide it. > > If there is online documentation I have not found it so > > a pointer to docs which may help out would be appreciated > > as well. > > Also, the above is the simplest case of delivering a single > > fossil repository. I actually plan to provide multiple > > repositories (which I have done using yaws only) as described here, > > [6]http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI > > I think I am missing something basic because even a simple > > hello.cgi gives a blank page > > #!/bin/bash > > echo "hello" > > ~Michael > > -------------------------------------------------------------------- > > ---------- > > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > > 30-Day > > trial. Simplify your report design, integration and deployment - and > > focus on > > what you do best, core application coding. Discover what's new with > > Crystal Reports now. [7]http://p.sf.net/sfu/bobj-july > > _______________________________________________ > > Erlangweb-users mailing list > > [8]Erl...@li... > > [9]https://lists.sourceforge.net/lists/listinfo/erlangweb-users > > [10]http://www.erlang-web.org/ > > > > References > > > > 1. mailto:erl...@au... > > 2. http://fossil-scm.org/ > > 3. http://localhost/block_clone.yaws/ > > 4. http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd > > 5. http://www.w3.org/1999/xhtml > > 6. http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI > > 7. http://p.sf.net/sfu/bobj-july > > 8. mailto:Erl...@li... > > 9. https://lists.sourceforge.net/lists/listinfo/erlangweb-users > > 10. http://www.erlang-web.org/ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Erlangweb-users mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlangweb-users > http://www.erlang-web.org/ | 
| 
      
      
      From: Elan <thi...@gm...> - 2009-09-02 00:49:46
      
     | 
| Hi. Wiki under Installation -> compile.erl states that there is a startup script to make installation easier, and that "currently only Linux based environments are supported". Will Erlang Web run under Windows, and does there exist some resource that explains how to install Erlang Web under Windows? TIA, Elan | 
| 
      
      
      From: <erl...@au...> - 2009-09-01 22:29:34
      
     | 
|  Thank you, Michal.
 I am having some small success.  I will submit updated information
 [and configuration] later when I get things working more suitably.
~Michael
On Tue, Sep 01, 2009 at 09:47:30AM +0200, Michal Zajda wrote:
>    Hi,
>    it is just theoretical because I never set up fossil, but I see several
>    issues in Your config:
>    1. in yaws.conf place ErlangWeb appmod in a front of rest of them
>    2. place all fossil files in docroot (lets say in docroot/fossil)
>    3. dispatcher should return then {static, "^/fossil", enoent}
>    4. code from docroot should be executed
>    In case You would like to have some authorisation (or similar action
>    before serving content) :
>    1. write a controller to handle authorisation (lets give it a name
>    c_fossil)
>    2. in case of yaws return from controller one of :
>           {custom, {page, "/" ++ wpart:fget("__path")}}  %% <-- so the
>    same place
>        or
>           {template, "docroot/fossil/some_index.html"}   %% <-- so it goes
>    via out templating engine
>    3. dispatcher differs here:
>           {dynamic, "^/fosill", {c_fossil, read}}
>    4. last but not least:
>        4.1 in case of {template.. } be careful with dispatcher rules and
>    docroot (remember that static rules are matched in the first place)
>        4.2 in case of {custom.. } while the rule is dynamic it actually
>    returns path /app/fossil/ (because of appmod) so You need to do symlink
>    in docroot to the fossil directory. So, it fossil is placed in
>    docroot/fossil then we need app/ directory in docroot and inside of
>    that link to fossil dir
>    {page.. } and 4.2 are not officialy supported ;) but it is good to know
>    this is possible
>    br
>    Michal Z
> 
>    2009/9/1 Michael McDaniel <[1]erl...@au...>
> 
>       Hi, List.
>       I want to run *.yaws and *.cgi files via erlang-web.
>       Well, actually, I want to be able to serve fossil
>       [[2]http://fossil-scm.org] repositories from within
>       erlang-web (using yaws as backend), I'm not particularly
>       stuck on using *.yaws and *.cgi though that is how I ran
>       fossil using yaws alone.
>       If I am only running yaws then I can do, e.g. the following
>       to display (and work with) a fossil repository :
>        /usr/local/etc/yaws/yaws.conf
>          ...
>          <server localhost>
>               port    = 80
>               listen  = 127.0.0.1
>               docroot = /usr/local/var/yaws/www
>               appmods = <cgi-bin, yaws_appmod_cgi>
>          </server>
>      ---
>       /usr/local/var/yaws/www/block_clone.yaws
>          <erl>
>            out(Arg) ->
>               yaws_cgi:call_cgi(Arg,
>                  "/usr/local/var/yaws/www/cgi-bin/block_clone.cgi").
>          </erl>
>      ---
>       /usr/local/var/yaws/www/cgi-bin/block_clone.cgi
>         #!/usr/local/bin/fossil
>         repository: /tmp/cloned_repositories/block_clone.fossil
>      --
>       and, when pointing browser at
>        [3]http://localhost/block_clone.yaws/
>       I get the fossil index page, and all the links work.
>      ---
>       and, for Erlang Web, I have tried various combinations
>       of, e.g.
>       templates/fossil.html
>      <?xml version="1.0" encoding="utf-8"?>
>      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>      "[4]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>      <html xmlns="[5]http://www.w3.org/1999/xhtml">
>      <head>
>       <title>Fossil repositories</title>
>       <script src="cgi/foo.cgi" type="text/html"> </script>
>      </head>
>      </html>
>                   ^^^^^^^^^^^^^
>           also changed this to "fossil.yaws"
>           which calls the cgi file
>       The cgi file is executable.  The repository is readable.
>       The cgi directory is a subdirectory of templates directory.
>       So, how can I serve fossil repositories via erlang-web whether
>       with *.yaws and cgi or not.  Of course, using yaws as the
>       backend web server for Erlang Web.
>       I tried similar configuration and various combinations
>       in dispatch.conf, e.g. {static, "^/fossil$", "fossil.yaws"}.
>       but the best I can get is no error and a blank page in
>       the browser.
>       Please if you have a suggestion (especially one you have
>       used successfully) to run *.yaws and *.cgi within
>       Erlang Web, please provide it.
>       If there is online documentation I have not found it so
>       a pointer to docs which may help out would be appreciated
>       as well.
>       Also, the above is the simplest case of delivering a single
>       fossil repository.  I actually plan to provide multiple
>       repositories (which I have done using yaws only) as described here,
>       [6]http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI
>       I think I am missing something basic because even a simple
>       hello.cgi gives a blank page
>       #!/bin/bash
>       echo "hello"
>      ~Michael
>      --------------------------------------------------------------------
>      ----------
>      Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>      30-Day
>      trial. Simplify your report design, integration and deployment - and
>      focus on
>      what you do best, core application coding. Discover what's new with
>      Crystal Reports now.  [7]http://p.sf.net/sfu/bobj-july
>      _______________________________________________
>      Erlangweb-users mailing list
>      [8]Erl...@li...
>      [9]https://lists.sourceforge.net/lists/listinfo/erlangweb-users
>      [10]http://www.erlang-web.org/
> 
> References
> 
>    1. mailto:erl...@au...
>    2. http://fossil-scm.org/
>    3. http://localhost/block_clone.yaws/
>    4. http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
>    5. http://www.w3.org/1999/xhtml
>    6. http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI
>    7. http://p.sf.net/sfu/bobj-july
>    8. mailto:Erl...@li...
>    9. https://lists.sourceforge.net/lists/listinfo/erlangweb-users
>   10. http://www.erlang-web.org/
 | 
| 
      
      
      From: Michal Z. <zaj...@gm...> - 2009-09-01 07:48:09
      
     | 
| Hi,
it is just theoretical because I never set up fossil, but I see several
issues in Your config:
1. in yaws.conf place ErlangWeb appmod in a front of rest of them
2. place all fossil files in docroot (lets say in docroot/fossil)
3. dispatcher should return then {static, "^/fossil", enoent}
4. code from docroot should be executed
In case You would like to have some authorisation (or similar action before
serving content) :
1. write a controller to handle authorisation (lets give it a name c_fossil)
2. in case of yaws return from controller one of :
       {custom, {page, "/" ++ wpart:fget("__path")}}  %% <-- so the same
place
    or
       {template, "docroot/fossil/some_index.html"}   %% <-- so it goes via
out templating engine
3. dispatcher differs here:
       {dynamic, "^/fosill", {c_fossil, read}}
4. last but not least:
    4.1 in case of {template.. } be careful with dispatcher rules and
docroot (remember that static rules are matched in the first place)
    4.2 in case of {custom.. } while the rule is dynamic it actually returns
path /app/fossil/ (because of appmod) so You need to do symlink in docroot
to the fossil directory. So, it fossil is placed in docroot/fossil then we
need app/ directory in docroot and inside of that link to fossil dir
{page.. } and 4.2 are not officialy supported ;) but it is good to know this
is possible
br
Michal Z
2009/9/1 Michael McDaniel <erl...@au...>
>
>  Hi, List.
>
>  I want to run *.yaws and *.cgi files via erlang-web.
>
>  Well, actually, I want to be able to serve fossil
>  [http://fossil-scm.org] repositories from within
>  erlang-web (using yaws as backend), I'm not particularly
>  stuck on using *.yaws and *.cgi though that is how I ran
>  fossil using yaws alone.
>
>
>  If I am only running yaws then I can do, e.g. the following
>  to display (and work with) a fossil repository :
>
>   /usr/local/etc/yaws/yaws.conf
>
>     ...
>
>     <server localhost>
>
>          port    = 80
>          listen  = 127.0.0.1
>          docroot = /usr/local/var/yaws/www
>
>          appmods = <cgi-bin, yaws_appmod_cgi>
>
>     </server>
> ---
>
>  /usr/local/var/yaws/www/block_clone.yaws
>
>
>     <erl>
>
>       out(Arg) ->
>
>          yaws_cgi:call_cgi(Arg,
>             "/usr/local/var/yaws/www/cgi-bin/block_clone.cgi").
>
>     </erl>
>
> ---
>
>  /usr/local/var/yaws/www/cgi-bin/block_clone.cgi
>
>
>    #!/usr/local/bin/fossil
>    repository: /tmp/cloned_repositories/block_clone.fossil
>
> --
>
>
>  and, when pointing browser at
>
>   http://localhost/block_clone.yaws/
>
>  I get the fossil index page, and all the links work.
>
> ---
>
>  and, for Erlang Web, I have tried various combinations
>  of, e.g.
>
>
>  templates/fossil.html
>
>
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml">
>
> <head>
>  <title>Fossil repositories</title>
>
>  <script src="cgi/foo.cgi" type="text/html"> </script>
> </head>
> </html>
>
>
>              ^^^^^^^^^^^^^
>      also changed this to "fossil.yaws"
>      which calls the cgi file
>
>  The cgi file is executable.  The repository is readable.
>  The cgi directory is a subdirectory of templates directory.
>
>
>  So, how can I serve fossil repositories via erlang-web whether
>  with *.yaws and cgi or not.  Of course, using yaws as the
>  backend web server for Erlang Web.
>
>
>
>  I tried similar configuration and various combinations
>  in dispatch.conf, e.g. {static, "^/fossil$", "fossil.yaws"}.
>  but the best I can get is no error and a blank page in
>  the browser.
>
>  Please if you have a suggestion (especially one you have
>  used successfully) to run *.yaws and *.cgi within
>  Erlang Web, please provide it.
>
>  If there is online documentation I have not found it so
>  a pointer to docs which may help out would be appreciated
>  as well.
>
>
>  Also, the above is the simplest case of delivering a single
>  fossil repository.  I actually plan to provide multiple
>  repositories (which I have done using yaws only) as described here,
>  http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI
>
>
>  I think I am missing something basic because even a simple
>  hello.cgi gives a blank page
>
>  #!/bin/bash
>  echo "hello"
>
>
>
> ~Michael
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Erlangweb-users mailing list
> Erl...@li...
> https://lists.sourceforge.net/lists/listinfo/erlangweb-users
> http://www.erlang-web.org/
>
 | 
| 
      
      
      From: Michael M. <erl...@au...> - 2009-09-01 03:30:13
      
     | 
| Hi, List. I want to run *.yaws and *.cgi files via erlang-web. Well, actually, I want to be able to serve fossil [http://fossil-scm.org] repositories from within erlang-web (using yaws as backend), I'm not particularly stuck on using *.yaws and *.cgi though that is how I ran fossil using yaws alone. If I am only running yaws then I can do, e.g. the following to display (and work with) a fossil repository : /usr/local/etc/yaws/yaws.conf ... <server localhost> port = 80 listen = 127.0.0.1 docroot = /usr/local/var/yaws/www appmods = <cgi-bin, yaws_appmod_cgi> </server> --- /usr/local/var/yaws/www/block_clone.yaws <erl> out(Arg) -> yaws_cgi:call_cgi(Arg, "/usr/local/var/yaws/www/cgi-bin/block_clone.cgi"). </erl> --- /usr/local/var/yaws/www/cgi-bin/block_clone.cgi #!/usr/local/bin/fossil repository: /tmp/cloned_repositories/block_clone.fossil -- and, when pointing browser at http://localhost/block_clone.yaws/ I get the fossil index page, and all the links work. --- and, for Erlang Web, I have tried various combinations of, e.g. templates/fossil.html <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Fossil repositories</title> <script src="cgi/foo.cgi" type="text/html"> </script> </head> </html> ^^^^^^^^^^^^^ also changed this to "fossil.yaws" which calls the cgi file The cgi file is executable. The repository is readable. The cgi directory is a subdirectory of templates directory. So, how can I serve fossil repositories via erlang-web whether with *.yaws and cgi or not. Of course, using yaws as the backend web server for Erlang Web. I tried similar configuration and various combinations in dispatch.conf, e.g. {static, "^/fossil$", "fossil.yaws"}. but the best I can get is no error and a blank page in the browser. Please if you have a suggestion (especially one you have used successfully) to run *.yaws and *.cgi within Erlang Web, please provide it. If there is online documentation I have not found it so a pointer to docs which may help out would be appreciated as well. Also, the above is the simplest case of delivering a single fossil repository. I actually plan to provide multiple repositories (which I have done using yaws only) as described here, http://www.fossil-scm.org/index.html/wiki?name=Cookbook#CGI I think I am missing something basic because even a simple hello.cgi gives a blank page #!/bin/bash echo "hello" ~Michael | 
| 
      
      
      From: payam y. <pay...@gm...> - 2009-08-31 06:43:27
      
     | 
| Hi We are working on a project with Erlang and we are developing a web application to monitor our runtime . I want to know , Is there any plan to provide Ajax support in erlang-web ? | 
| 
      
      
      From: Elan <thi...@gm...> - 2009-08-28 21:53:44
      
     | 
| Hi. I am very curious about Erlang Web, and I am thinking of installing an experimental version on one of my servers. Before I do, however, I wanted to ascertain, if there is anything that I must consider regarding Erlang Web's AJAX compatibility. I.e. Will I be able to utilize Javascript based AJAX GUI frameworks in my Erlang Web based website? TIA, Elan | 
| 
      
      
      From: Piotr K. <pi...@er...> - 2009-08-18 10:44:21
      
     | 
| I'm proud to announce that Erlang Web 1.4 RC1 is available for download from: http://bitbucket.org/etc/erlang-web/downloads/erlangweb-1.4rc1.tar.gz. That release brought many new features, including: * EWGI support added * Integrated with ErlyDTL * wpart_valid password check fixed * wpart_comment added * e_hook introduced * wtpl:insert tag implemented * fixed e_component error (application already started) * added support for utf-8 in e_json * twitterl component introduced Wiki pages containing documentation, examples and usage of these enhancements are located at: http://wiki.erlang-web.org/ As always we are looking forward for your comments and contributions. Kind regards, The Erlang Web team. | 
| 
      
      
      From: Piotr K. <pi...@er...> - 2009-07-29 10:52:04
      
     | 
| I'd like to announce that support for Django Template Language engine has been recently added to Erlang Web. It was possible thanks to the existing Erlang implementation of DTL language - ErlyDTL. The project site is available here: http://code.google.com/p/erlydtl/ A wiki page describing running and examples in Erlang Web is located at: http://wiki.erlang-web.org/ErlyDTL We are also considering adding support for wparts into the DTL syntax in the near future. | 
| 
      
      
      From: Piotr K. <pi...@er...> - 2009-07-27 11:40:50
      
     | 
| I've recently added support for the ewgi infrastructure into Erlang Web. Ewgi is a specification to unify interaction between Erlang applications, frameworks and web-servers, as well as the other way around. It was inspired by Python's WSGI: http://www.python.org/dev/peps/pep-0333/ and Ruby's Rack: http://rack.rubyforge.org/. More information on the EWGI itself can be found at: http://github.com/skarab/ewgi/tree/master, whereas a Wiki page describing integration with EWGI from the framework side is located here: http://wiki.erlang-web.org/Eptic/EWGI. Erlang Web's newest sources are available at: http://bitbucket.org/etc/erlang-web/overview/ Piotrek | 
| 
      
      
      From: Michal Z. <mic...@er...> - 2009-06-06 15:33:31
      
     | 
| check out this firefox/firebug extension (it went open-source yesterday) http://code.google.com/intl/pl/speed/page-speed/download.html It aggregates performance data and explicitly prints out improvements. Also finds JS and CSS bugs. quote from doc: * Optimizing caching — keeping your application's data and logic off the network altogether * Minimizing round-trip times — reducing the number of serial request-response cycles * Minimizing request size — reducing upload size * Minimizing payload size — reducing the size of responses, downloads, and cached pages * Optimizing browser rendering — improving the browser's layout of a page -- Michal Zajda Erlang Training and Consulting Ltd http://www.erlang-consulting.com | 
| 
      
      
      From: Magnus H. <ma...@er...> - 2009-06-01 14:50:15
      
     | 
| Xingdong and I just had an interesting battle with Erlang Web that deserves to be documented... :) We have a record, one of whose fields uses a custom wtype that outputs a piece of Javascript to render its control. It worked as long as we only used ASCII text; with Unicode text it would fail, passing UTF-32 to erlang:iolist_size inside e_mod_inets:controller_exec. Obviously something was failing to convert Xmerl's UTF-32 representation to the UTF-8 that the external world uses. After an hour of debugging, we realized that the problem was caused by the <script> tag contents being wrapped in a CDATA section: <script> //<![CDATA[ ...lots of javascript //]]> </script> Because of this, Xmerl's parser would return an xmlText record with type = cdata, and this triggers Erlang Web's special (non)treatment of the text - and it was not translated. Removing the CDATA marker fixed the problem. (Incidentally, this is OK since Erlang Web serves XHTML files as HTML, where the contents of <script> tags are implicitly CDATA.) So consider this a vote to change 'type = cdata' to 'type = erlang_web_passthrough' for the special meaning. That way it stands less chance of interfering with proper usage of XML. :) -- Magnus Henoch, ma...@er... Erlang Training and Consulting http://www.erlang-consulting.com/ | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-05-25 07:56:53
      
     | 
| Hello Everyone! We announce Erlang Web 1.3 which includes many brand new features. In this release we have focused on scalability and distribution issues. Most of the changes were published in 1.3RC1, but some more have been developed since then, and are included in this release. The change log since Release 1.2.1 is: * distribution support * generic annotations added * new automatic form builder implemented * CouchDB support corrected * support for other than integers primary keys added * cross-framework logger introduced * wpart_paginate improvements * Xmerl removed from wtype's handle_call functions * "rewrite" feature in dispatcher rules added * wpart_bool corrected * generator escript implemented * eisdir/enoent under Mac Os are handled properly * reverse dispatching implemented (thanks to Zoltan Lajos Kis) * 501 errors logs contain now URL And the more descriptive change log: * distribution support Erlang Web release 1.3 introduces a new application eptic_fe (after eptic frontend). The new application allows users to distribute their services on a cluster of machines. The new application also provides very fast and convenient cache storage. Please see http://wiki.erlang-web.org/EpticFE for details. * generic annotations added Erlang Web's annotations are a meta-language extension that provides a possibility to define a control flow for each Erlang function. The description of the annotations is available at http://wiki.erlang-web.org/Annotations * new automatic form builder implemented It is now possible to have greater control of how the automatically generated form will look like. The new generator is more flexible, allows building of a form based on the different HTML structures and gives a website designer a lot of freedom in building the CSS document. * CouchDB support corrected Erlang records are now mapped directly to the CouchDB document. Moreover, reading all entries from the selected domain uses CouchDB's views, because they are more efficient. * cross-framework logger introduced e_logger - is a tool for tracing events within the framework - from the earliest phase when the server callback module is being called, through the dispatching phase and dataflow processing parts, to the user-defined controllers. There is also an e_logger_viewer tool for analyzing the flow of control for each request. * wpart_paginate improvements It is now possible to make a list of numbered links to the pages that present subsets of collections. In addition, the 'trim' attribute allows developers to control the length of this list. * redirect feature in dispatcher rules added Dispatcher can now act as an Apache's mod_rewrite. Read more on http://wiki.erlang-web.org/Dispatcher * wpart_bool corrected wpart_bool will now do the same as wpart_multilist (but renders a different HTML widget): http://wiki.erlang-web.org/Wparts/BasicTypes/bool * generator escript implemented New escript - bin/generate.erl - allows users to create skeletons of their modules from the command line. Currently only controller and model generation is supported. The details are available at http://wiki.erlang-web.org/Generators * reverse dispatching implemented The reverse dispatching engine provides an API for constructing URLs based on regular expressions defined for the dispatcher. For your information, the Erlang Web framework is changing daily, existing modules being optimized and new ones being implemented. We still have ideas for enriching the features and making the framework easier to use. We were very encouraged when some of you sent us your code, which has also been included into the latest release. Thank you! Last month we presented the Erlang Web at the Erlang Factory conference in Palo Alto. On 25th - 26th June, we will be presenting the framework at the Erlang Factory in London. The complete documentation is available on the Erlang Web's wiki page: http://wiki.erlang-web.org/ Recently we have also put edocs online: http://wiki.erlang-web.org/Edoc You can get a copy of the framework by cloning the Mercurial repository at bitbucket: http://bitbucket.org/etc/erlang-web/ The tarball containing the 1.3 release is also available for download from: http://www.erlang-web.org/ We look forward to your comments and contributions! Kind regards, Michal and the Erlang Web team -- Michal Ptaszek www.erlang-consulting.com | 
| 
      
      
      From: Zoltan L. K. <ki...@tm...> - 2009-05-21 12:44:54
      
     | 
| Hello,
For your consideration, here is a proof of concept prototype for using 
named routes. It uses the Options field in the route definitions, which 
means it is fully backward compatible with existing dispatch.conf files. 
(the attached e_dispatcher_standalone is functionally the same as the 
e_dispatcher module, but I removed all references to external modules 
for simpler testing)
In the prototype you can define named routes as: (drawing ideas from 
symfony-project's routing)
- patterns in the URL are marked with :name,
- their regexp is given within the options as well as the route's name.
(for now a preprocessor converts routes given in this form back to the 
original regexp format of dispatch.conf files)
{dynamic, "/blog/:user_id/:post_no/read", {blog, read},
       [{route_name, user_post_read},
        {patterns, [
               {user_id, "[a-zA-Z_0-9]+"},
               {post_no, "[0-9]+"}
        ]}
       ]
}.
Dispatching works as expected:
 > e_dispatcher_standalone:dispatch("/blog/zed/108/read").
Dispatcher params: [{post_no,"108"},{user_id,"zed"}]
{blog,read,[]}
Reverse dispatching requires the route name and values for each pattern 
as input:
 > e_dispatcher_standalone:url_for(user_post_read, [{user_id, zed}, 
{post_no, 1}]).
"/blog/zed/1/read"
Missing or superfluous parameters are detected and an error is thrown. 
Furthermore each parameter is matched against its regexp's:
 > e_dispatcher_standalone:url_for(user_post_read, [{user_id, zed@home}, 
{post_no, 1}]).
{error,{invalid_parameter,user_id}}
Additionally it would also be possible to create an url_for/1, taking 
only the list of parameters as an input. This function would return the 
first route to match the given parameters...
Kindest regards,
Zoltan.
Michal Ptaszek wrote:
> Hello,
> There is no such thing as reverse dispatching: the main reason
> for that is there might be many routes that lead to the one controller,
> for example:
> {dynamic, "^/index\.html$", {home, main}}.
> {dynamic, "^/$", {home, main}}.
> {dynamic, "^/home$", {home, main}}.
>
> However, you can still access the URL user entered getting it
> from the process dictionary:
> wpart:fget("__path")
> (note that there is a double underscore character).
>
> ----- "Zoltan Lajos Kis" <ki...@tm...> wrote:
>
>   
>> Hi all,
>>
>> I might be missing a point, but how do I refer to the dynamic routes
>> in 
>> dispatcher.conf from within my content?
>>
>> Taking this example route from the wiki is there a function that does
>>
>> something like the following function?
>>
>> {dynamic, "^/blog/post/(?<post_no>[0-9]+)$", {blog, display_post}}.
>>
>> route:create({blog, display_post}, [{post_no, "23"}])  ->  
>> "/blog/post/23"
>>
>>
>> Kindest regards,
>> Zoltan.
>>     
>
> Best regards,
>   
 | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-05-13 07:48:47
      
     | 
| Hello,
There is no such thing as reverse dispatching: the main reason
for that is there might be many routes that lead to the one controller,
for example:
{dynamic, "^/index\.html$", {home, main}}.
{dynamic, "^/$", {home, main}}.
{dynamic, "^/home$", {home, main}}.
However, you can still access the URL user entered getting it
from the process dictionary:
wpart:fget("__path")
(note that there is a double underscore character).
----- "Zoltan Lajos Kis" <ki...@tm...> wrote:
> Hi all,
> 
> I might be missing a point, but how do I refer to the dynamic routes
> in 
> dispatcher.conf from within my content?
> 
> Taking this example route from the wiki is there a function that does
> 
> something like the following function?
> 
> {dynamic, "^/blog/post/(?<post_no>[0-9]+)$", {blog, display_post}}.
> 
> route:create({blog, display_post}, [{post_no, "23"}])  ->  
> "/blog/post/23"
> 
> 
> Kindest regards,
> Zoltan.
Best regards,
-- 
Michal Ptaszek
www.erlang-consulting.com
 | 
| 
      
      
      From: Zoltan L. K. <ki...@tm...> - 2009-05-13 06:41:35
      
     | 
| Hi all,
I might be missing a point, but how do I refer to the dynamic routes in 
dispatcher.conf from within my content?
Taking this example route from the wiki is there a function that does 
something like the following function?
{dynamic, "^/blog/post/(?<post_no>[0-9]+)$", {blog, display_post}}.
route:create({blog, display_post}, [{post_no, "23"}])  ->   "/blog/post/23"
Kindest regards,
Zoltan.
 | 
| 
      
      
      From: Michael T. <mj...@gm...> - 2009-05-07 02:03:16
      
     | 
| Ulf Wiger wrote: > 2009/5/6 Michal Ptaszek <mic...@er...>: > >> That is a bug indeed. One of our major goals is to plug off >> the xmerl as a template processor (it is slow, heavy and has >> oversized structures): the first step was to remove its dependency >> from the wtype's (the modules responsible for formatting and >> validation). >> > > Just so you know, xmerl will very soon be released in a new version > that is much faster, and also supports a much leaner interface. > > I assume this will happen in R13B-1. > > If you look into xmerl in R13B, you will find some new building > blocks. They are not documented, and the new API is not yet > ready, but preliminary reports indicate that it will be roughly as > fast as erlsom, with the option to use the old interface. > > BR, > Ulf W > Do you know if the new xmerl will be faster than the ejabberd expat interface? Thanks, Michael | 
| 
      
      
      From: Ulf W. <ul...@wi...> - 2009-05-06 15:48:54
      
     | 
| 2009/5/6 Michal Ptaszek <mic...@er...>: > That is a bug indeed. One of our major goals is to plug off > the xmerl as a template processor (it is slow, heavy and has > oversized structures): the first step was to remove its dependency > from the wtype's (the modules responsible for formatting and > validation). Just so you know, xmerl will very soon be released in a new version that is much faster, and also supports a much leaner interface. I assume this will happen in R13B-1. If you look into xmerl in R13B, you will find some new building blocks. They are not documented, and the new API is not yet ready, but preliminary reports indicate that it will be roughly as fast as erlsom, with the option to use the old interface. BR, Ulf W | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-05-06 08:13:32
      
     | 
| That is a bug indeed. One of our major goals is to plug off the xmerl as a template processor (it is slow, heavy and has oversized structures): the first step was to remove its dependency from the wtype's (the modules responsible for formatting and validation). Everything works well as long as wtype returns a plain text (type of the returning structure is 'text', not 'cdata'). Unfortunately, there is only one place where we actually break the convention and change the returning type: wtype_html. As a workaround I have prepared a little patch for wpart_include (the second place where the changes took place is wpart_lookup - it also uses 'format' attribute for changing the display of the data). A quick fix introduces a new attribute to wpart_include (wpart_lookup has it since 1.2.1): 'type'. In case 'type' is set to 'cdata' the data is rendered as it was an HTML part of the document. Otherwise, all characters are printed out (e.g. > is encoded to >). The patch has been commited to the bitbucket's repository (changeset 70bc68ef8b93: http://bitbucket.org/etc/erlang-web/changeset/70bc68ef8b93/) Thank you for pointing out the inconsistency. ----- "Michael McDaniel" <erl...@au...> wrote: > I am happy to be able to contribute. I installed 1.3RC1 on > http://trip.autosys.us and found that a change in > lib/wparts-N/wpart_include.erl causes breakage of stylesheet > includes, e.g. using > > <wpart:include file="templates/trip/style.css" format="html" /> > > causes style information to show up as plain text using 1.3RC1. > Using 1.2.1 and the style information would affect the page > style as desired. > > > Here is the change ... > > > < is from wparts-1.2.1 > > is from wparts-1.3 > > 39c38,39 > < wpartlib:format(#xmlText{value = Tpl}, E); %% STYLIN' > --- > > #xmlText{value = wpartlib:format(Tpl, E)}; %% PLAIN TEXT > > > > I did not make a patch because I do not know why the change was > made. > > Is there some other recommended way of including a stylesheet ? > (for now, I have changed my local code so the includes work) > > > > ~M -- Michal Ptaszek www.erlang-consulting.com | 
| 
      
      
      From: Michael M. <erl...@au...> - 2009-05-05 17:01:14
      
     | 
| I am happy to be able to contribute. I installed 1.3RC1 on http://trip.autosys.us and found that a change in lib/wparts-N/wpart_include.erl causes breakage of stylesheet includes, e.g. using <wpart:include file="templates/trip/style.css" format="html" /> causes style information to show up as plain text using 1.3RC1. Using 1.2.1 and the style information would affect the page style as desired. Here is the change ... < is from wparts-1.2.1 > is from wparts-1.3 39c38,39 < wpartlib:format(#xmlText{value = Tpl}, E); %% STYLIN' --- > #xmlText{value = wpartlib:format(Tpl, E)}; %% PLAIN TEXT I did not make a patch because I do not know why the change was made. Is there some other recommended way of including a stylesheet ? (for now, I have changed my local code so the includes work) ~M On Tue, May 05, 2009 at 11:48:46AM +0100, Michal Ptaszek wrote: > Hello Michael! > > Thank you very much for your patches - they will be included > in the 1.3 final release. > > ----- "Michael McDaniel" <erl...@au...> wrote: > > > Thank you again for Erlang Web. > > > > > > Attached are some patches to convert the remaining deprecated > > regexp library funs to re library funs. > > > > > > I hope you have a good regression test suite. I am not > > running anything that exercises the changes very well. > > Intention, of course, is to not break anything ! Please > > let me know in either case. > > > > > > The patches were made by > > > > $ cp filename.erl filename.erl.orig > > > > $ emacs filename.erl > > > > $ diff -u filename.erl.orig filename.erl > filename.patch > > > > > > (on Ubuntu GNU/Linux 8.04) > > $ uname -a > > Linux delora 2.6.24-24-386 #1 Wed Apr 15 15:13:41 UTC 2009 i686 > > GNU/Linux > > > > > > The attached tgz file should be untarred from your erlang-web > > directory and also contains the *.orig files. Of course, after > > patching and changing back to erlang-web top directory, rerun > > > > $ bin/compile.erl > > > > > > I have not yet tested out the new version and new features. > > The quick start 'Welcome to Erlang Web' works, though it > > probably does not exercise the changes I made. > > > > > > ~Michael > > > > > > > > > > -- > > Michael McDaniel > > Portland, Oregon, USA > > http://autosys.us > > Best regards, > -- > Michal Ptaszek > www.erlang-consulting.com | 
| 
      
      
      From: Michal P. <mic...@er...> - 2009-05-05 10:51:29
      
     | 
| Hello Michael! Thank you very much for your patches - they will be included in the 1.3 final release. ----- "Michael McDaniel" <erl...@au...> wrote: > Thank you again for Erlang Web. > > > Attached are some patches to convert the remaining deprecated > regexp library funs to re library funs. > > > I hope you have a good regression test suite. I am not > running anything that exercises the changes very well. > Intention, of course, is to not break anything ! Please > let me know in either case. > > > The patches were made by > > $ cp filename.erl filename.erl.orig > > $ emacs filename.erl > > $ diff -u filename.erl.orig filename.erl > filename.patch > > > (on Ubuntu GNU/Linux 8.04) > $ uname -a > Linux delora 2.6.24-24-386 #1 Wed Apr 15 15:13:41 UTC 2009 i686 > GNU/Linux > > > The attached tgz file should be untarred from your erlang-web > directory and also contains the *.orig files. Of course, after > patching and changing back to erlang-web top directory, rerun > > $ bin/compile.erl > > > I have not yet tested out the new version and new features. > The quick start 'Welcome to Erlang Web' works, though it > probably does not exercise the changes I made. > > > ~Michael > > > > > -- > Michael McDaniel > Portland, Oregon, USA > http://autosys.us Best regards, -- Michal Ptaszek www.erlang-consulting.com |