[erlang-questions] Webmachine Binary Request Strings

Andrew Berman rexxe98@REDACTED
Mon Dec 19 23:05:23 CET 2011


Awesome!

On Mon, Dec 19, 2011 at 2:02 PM, Loïc Hoguin <essen@REDACTED> wrote:

> Working on this:
>  https://github.com/extend/**bullet <https://github.com/extend/bullet>
>
> Needs more work on the JS side (perhaps taking from socket.io-like
> projects later on) and documentation, but it works pretty well and is in
> production already.
>
> It's a bit different as it builds something upon websocket's design, it's
> more of an "always connected" websocket.
>
>
> On 12/19/2011 10:57 PM, Andrew Berman wrote:
>
>> A bit off topic, but have you ever considered adding support for
>> something like Socket.IO (adding a TCP handler to support their
>> JavaScript)?  I think it's going to be a while before WebSockets is
>> going to be able to be used across the web and I think Socket.IO is a
>> great bridge until that time comes.
>>
>> On Mon, Dec 19, 2011 at 1:39 PM, Loïc Hoguin <essen@REDACTED
>> <mailto:essen@REDACTED>> wrote:
>>
>>    You can check out my implementation here for Cowboy:
>>    https://github.com/extend/__**cowboy/blob/master/src/cowboy_**
>> __http_rest.erl<https://github.com/extend/__cowboy/blob/master/src/cowboy___http_rest.erl>
>>
>>    <https://github.com/extend/**cowboy/blob/master/src/cowboy_**
>> http_rest.erl<https://github.com/extend/cowboy/blob/master/src/cowboy_http_rest.erl>
>> >
>>
>>    Clean straightforward code was one of the big goals of this work. It
>>    has few differences with Webmachine, but people have been converting
>>    resources from Webmachine to Cowboy without much pain. And Cowboy
>>    already had a dispatcher so it was really just a matter of writing
>>    the decision code.
>>
>>    Of course I'm open to any comment you may have about it, good or bad.
>>
>>
>>    On 12/19/2011 10:34 PM, Andrew Berman wrote:
>>
>>        Ah, yes, I agree we would need a SimpleBridgeBinary and then go the
>>        opposite way if a web server doesn't support binary
>>        (binary_to_list).  I
>>        don't think that would be too difficult to implement.  The
>>        Webmachine
>>        decision core is the more difficult part   but not too difficult
>>        as it
>>        has been implemented in many other languages which might make the
>>        decisioning a bit easier to follow.
>>
>>        On Mon, Dec 19, 2011 at 1:27 PM, Loïc Hoguin
>>        <essen@REDACTED <mailto:essen@REDACTED>
>>        <mailto:essen@REDACTED <mailto:essen@REDACTED>>> wrote:
>>
>>            SimpleBridge is nice, but it doesn't solve the OP's issue,
>>        which is
>>            that all the lists are being converted to binary when
>>        encoding into
>>            JSON, so he wants a binary webmachine to avoid converting
>>        from lists
>>            to binary all the time. I believe the implementation added
>>        to Cowboy
>>            recently does what the OP needs. On the other hand it's
>>        definitely
>>            tied to Cowboy and that should be taken into consideration when
>>            deciding what to use. It's also still considered experimental,
>>            although I've had good reports so far.
>>
>>            Now if there was a SimpleBinaryBridge project it could be more
>>            suitable for his purpose, but afaik only Cowboy is full
>>        binary so
>>            far (only accepting (io)lists as output data). And of course
>>        adding
>>            Cowboy to SimpleBridge would just be a binary_to_list fest
>>        and would
>>            remove half the advantages of using that server so it's a
>>        bit of a
>>            dead end there.
>>
>>
>>            On 12/19/2011 10:16 PM, Andrew Berman wrote:
>>
>>                There was talk on one of the mailing lists about using
>>        something
>>                like
>>                SimpleBridge
>>        (https://github.com/nitrogen/_**___simple_bridge<https://github.com/nitrogen/____simple_bridge>
>>        <https://github.com/nitrogen/_**_simple_bridge<https://github.com/nitrogen/__simple_bridge>
>> >
>>
>>        <https://github.com/nitrogen/_**_simple_bridge<https://github.com/nitrogen/__simple_bridge>
>>        <https://github.com/nitrogen/**simple_bridge<https://github.com/nitrogen/simple_bridge>>>)
>> so that the use
>>
>>                of a web server could be independent of Webmachine's logic,
>>                which IMO is
>>                the best solution.  I don't think anyone did anything
>>        about it,
>>                but for
>>                some reason, SimpleBridge has Webmachine support, which
>>        doesn't make
>>                sense logically to me since Webmachine is a toolkit and
>>        not a
>>                web server.
>>
>>                I use Webmachine and love what it does for me, but the code
>>                seems overly
>>                complicated with a heavy reliance on Mochiweb and uses
>>        parameterized
>>                modules (an unsupported feature of Erlang), so I would
>>        actually
>>                be more
>>                inclined to start a new project which is influenced by
>>                Webmachine but
>>                corrects all the issues with it and makes it a bit more
>>        flexible and
>>                modern (would love for Webmachine to support PATCH for
>>        example and
>>                something like Socket.IO).  I'd be happy to help out
>>        with such a
>>                project
>>                if anyone is interested in starting one.
>>
>>                --Andrew
>>
>>                On Mon, Dec 19, 2011 at 12:24 PM, Tristan Sloughter
>>        <tristan.sloughter@REDACTED <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>
>> >
>>        <mailto:tristan.sloughter@REDACTED**ail.com <http://gmail.com>
>>        <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>
>> >>
>>        <mailto:tristan.sloughter@
>>        <mailto:tristan.sloughter@>__g**m__ail.com <http://gm__ail.com> <
>> http://gmail.com>
>>
>>
>>        <mailto:tristan.sloughter@REDACTED**ail.com <http://gmail.com>
>>        <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>>>>>
>> wrote:
>>
>>                    Interesting. Sucks that webmachine is so tied to
>>        mochi and
>>                mochi so
>>                    tied to lists, haha. But I'll give this a look.
>>
>>                    Tristan
>>
>>
>>                    On Mon, Dec 19, 2011 at 1:50 PM, Magnus Klaar
>>        <magnus.klaar@REDACTED <mailto:magnus.klaar@REDACTED**>
>>        <mailto:magnus.klaar@REDACTED <mailto:magnus.klaar@REDACTED**
>> >__>
>>        <mailto:magnus.klaar@REDACTED <mailto:magnus.klaar@REDACTED**>
>>
>>        <mailto:magnus.klaar@REDACTED
>>        <mailto:magnus.klaar@REDACTED**>__>__>> wrote:
>>
>>                        Hi!
>>
>>                        Cowboy currently includes an experimental
>>        webmachine-like
>>                        interface. The first commit of this module should
>>                explain some
>>                        of the key differences from webmachine. If i
>>        remember the
>>                        history of this module the intial estimate for
>>        the time
>>                needed
>>                        to decouple webmachine from mochiweb _and_ refactor
>>                webmachine
>>                        to support both binaries and lists everywhere was
>>                greater than
>>                        the time needed to just add the difference
>>        between the
>>                two to
>>                        cowboy.
>>
>>        https://github.com/extend/____**cowboy/commit/____**
>> aab1587a4b3d8f0c3d92a208322752**____7d51109980<https://github.com/extend/____cowboy/commit/____aab1587a4b3d8f0c3d92a208322752____7d51109980>
>>        <https://github.com/extend/__**cowboy/commit/__**
>> aab1587a4b3d8f0c3d92a208322752**__7d51109980<https://github.com/extend/__cowboy/commit/__aab1587a4b3d8f0c3d92a208322752__7d51109980>
>> >
>>
>>
>>        <https://github.com/extend/__**cowboy/commit/__**
>> aab1587a4b3d8f0c3d92a208322752**__7d51109980<https://github.com/extend/__cowboy/commit/__aab1587a4b3d8f0c3d92a208322752__7d51109980>
>>        <https://github.com/extend/**cowboy/commit/**
>> aab1587a4b3d8f0c3d92a208322752**7d51109980<https://github.com/extend/cowboy/commit/aab1587a4b3d8f0c3d92a2083227527d51109980>
>> >>
>>
>>                        If you're interested in a
>>
>>                        MVH Magnus
>>
>>                        On Mon, Dec 19, 2011 at 6:40 PM, Tristan Sloughter
>>        <tristan.sloughter@REDACTED
>>        <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>
>> >
>>        <mailto:tristan.sloughter@REDACTED**ail.com <http://gmail.com>
>>        <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>
>> >>
>>        <mailto:tristan.sloughter@
>>        <mailto:tristan.sloughter@>__g**m__ail.com <http://gm__ail.com> <
>> http://gmail.com>
>>
>>
>>        <mailto:tristan.sloughter@REDACTED**ail.com <http://gmail.com>
>>        <mailto:tristan.sloughter@**gmail.com<tristan.sloughter@REDACTED>>>>>
>> wrote:
>>
>>                            This may be better on a Webmachine questions
>>        list. But I
>>                            thought I'd ask here first since it may be
>>        that someone
>>                            working on one of the other Erlang web
>>        servers, besides
>>                            Mochiweb, has worked on moving Webmachine to
>> use
>>                that server.
>>
>>                            The reason I say that is, Webmachine
>>        currently relies on
>>                            Mochiweb which passes lists instead of binary
>>                strings for
>>                            requests. While the req_body of a request is
>>        given as a
>>                            binary the path_info and query string is
>>        dealt with as
>>                            lists. While I would think there could be a
>>                performance hit
>>                            due to this my main reason to ask for
>>        alternatives
>>                is that
>>                            dealing with JSON representations on the
>>        backend require
>>                            converting the lists to binaries for processing
>>                every time.
>>
>>                            There has been
>>        https://github.com/mochi/____**mochiweb/pull/38<https://github.com/mochi/____mochiweb/pull/38>
>>        <https://github.com/mochi/__**mochiweb/pull/38<https://github.com/mochi/__mochiweb/pull/38>
>> >
>>
>>
>>        <https://github.com/mochi/__**mochiweb/pull/38<https://github.com/mochi/__mochiweb/pull/38>
>>        <https://github.com/mochi/**mochiweb/pull/38<https://github.com/mochi/mochiweb/pull/38>>>
>> but
>>                            its clear at the end of the discussion its not
>> a
>>                change that
>>                            will be happening to mochiweb anytime soon.
>>
>>                            So is there work on Webmachine backed by
>>        Cowboy or
>>                another
>>                            Erlang web server?
>>
>>                            Thanks,
>>                            Tristan
>>
>>
>>          ______________________________**_____________________
>>
>>
>>                            erlang-questions mailing list
>>        erlang-questions@REDACTED <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >
>>        <mailto:erlang-questions@REDACTED**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >>
>>        <mailto:erlang-questions@
>>        <mailto:erlang-questions@>__er**l__ang.org <http://erl__ang.org> <
>> http://erlang.org>
>>        <mailto:erlang-questions@REDACTED**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >>>
>>
>>        http://erlang.org/mailman/____**listinfo/erlang-questions<http://erlang.org/mailman/____listinfo/erlang-questions>
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>> >
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>>        <http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>> >>
>>
>>
>>
>>
>>                    ______________________________**_____________________
>>
>>
>>                    erlang-questions mailing list
>>        erlang-questions@REDACTED <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >
>>        <mailto:erlang-questions@REDACTED**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >>
>>        <mailto:erlang-questions@
>>        <mailto:erlang-questions@>__er**l__ang.org <http://erl__ang.org> <
>> http://erlang.org>
>>        <mailto:erlang-questions@REDACTED**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >>>
>>
>>        http://erlang.org/mailman/____**listinfo/erlang-questions<http://erlang.org/mailman/____listinfo/erlang-questions>
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>> >
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>>        <http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>> >>
>>
>>
>>
>>
>>                ______________________________**_____________________
>>
>>
>>                erlang-questions mailing list
>>        erlang-questions@REDACTED <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >
>>        <mailto:erlang-questions@REDACTED**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<erlang-questions@REDACTED>
>> >>
>>        http://erlang.org/mailman/____**listinfo/erlang-questions<http://erlang.org/mailman/____listinfo/erlang-questions>
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>> >
>>
>>
>>        <http://erlang.org/mailman/__**listinfo/erlang-questions<http://erlang.org/mailman/__listinfo/erlang-questions>
>>        <http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>> >>
>>
>>
>>
>>            --
>>            Loďc Hoguin
>>            Dev:Extend
>>
>>
>>
>>
>>    --
>>    Loïc Hoguin
>>    Dev:Extend
>>
>>
>>
>
> --
> Loïc Hoguin
> Dev:Extend
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111219/a7a4a51a/attachment.htm>


More information about the erlang-questions mailing list