diff options
Diffstat (limited to 'archives/extend/2014-May')
-rw-r--r-- | archives/extend/2014-May/000383.html | 71 | ||||
-rw-r--r-- | archives/extend/2014-May/000384.html | 105 | ||||
-rw-r--r-- | archives/extend/2014-May/000385.html | 71 | ||||
-rw-r--r-- | archives/extend/2014-May/000386.html | 134 | ||||
-rw-r--r-- | archives/extend/2014-May/000387.html | 83 | ||||
-rw-r--r-- | archives/extend/2014-May/000388.html | 180 | ||||
-rw-r--r-- | archives/extend/2014-May/000389.html | 80 | ||||
-rw-r--r-- | archives/extend/2014-May/author.html | 82 | ||||
-rw-r--r-- | archives/extend/2014-May/date.html | 82 | ||||
-rw-r--r-- | archives/extend/2014-May/index.html | 95 | ||||
-rw-r--r-- | archives/extend/2014-May/subject.html | 82 | ||||
-rw-r--r-- | archives/extend/2014-May/thread.html | 95 |
12 files changed, 1160 insertions, 0 deletions
diff --git a/archives/extend/2014-May/000383.html b/archives/extend/2014-May/000383.html new file mode 100644 index 00000000..c2ca464b --- /dev/null +++ b/archives/extend/2014-May/000383.html @@ -0,0 +1,71 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] Gracefully stop Ranch + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20Gracefully%20stop%20Ranch&In-Reply-To=%3C001b01cf676e%24c2ec8e20%2448c5aa60%24%40gmail.com%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + + <LINK REL="Next" HREF="000384.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] Gracefully stop Ranch</H1> + <B>Janos Hary</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20Gracefully%20stop%20Ranch&In-Reply-To=%3C001b01cf676e%24c2ec8e20%2448c5aa60%24%40gmail.com%3E" + TITLE="[99s-extend] Gracefully stop Ranch">janos.n.hary at gmail.com + </A><BR> + <I>Sun May 4 09:59:21 CEST 2014</I> + <P><UL> + + <LI>Next message: <A HREF="000384.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#383">[ date ]</a> + <a href="thread.html#383">[ thread ]</a> + <a href="subject.html#383">[ subject ]</a> + <a href="author.html#383">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>All! + +I implemented a protocol as a ranch_protocol. It handles long running +sessions. At some point I'd like to stop my server accepting new +connections, but allow all open sessions to finish. Then I need to know when +all the open sessions (if any) finished. + +What would be the correct strategy to implement this? + +Thanks, +Janos + + +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + + <LI>Next message: <A HREF="000384.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#383">[ date ]</a> + <a href="thread.html#383">[ thread ]</a> + <a href="subject.html#383">[ subject ]</a> + <a href="author.html#383">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000384.html b/archives/extend/2014-May/000384.html new file mode 100644 index 00000000..ae3cd3f3 --- /dev/null +++ b/archives/extend/2014-May/000384.html @@ -0,0 +1,105 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] REST responses + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3CCA%2BdV7cR9M-5dq2kYJgowrodDbCEQ0aAnkZKyQmw07hmAJXmc%3DA%40mail.gmail.com%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000383.html"> + <LINK REL="Next" HREF="000386.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] REST responses</H1> + <B>Paulo F. Oliveira</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3CCA%2BdV7cR9M-5dq2kYJgowrodDbCEQ0aAnkZKyQmw07hmAJXmc%3DA%40mail.gmail.com%3E" + TITLE="[99s-extend] REST responses">paulo.ferraz.oliveira at gmail.com + </A><BR> + <I>Tue May 20 18:27:58 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A></li> + <LI>Next message: <A HREF="000386.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#384">[ date ]</a> + <a href="thread.html#384">[ thread ]</a> + <a href="subject.html#384">[ subject ]</a> + <a href="author.html#384">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>Hello. + +First of all, thanks for the great work you've done with cowboy. I've been +using it with a fait amount of success and I'm a fairly new Erlang +developer. I'm mainly interested in the REST "interface" of the application +and its way of doing RESTful things, and I like the way you did it (what +with all the content_types_provided, service_available, etc. functions). +I've tested the way the system reacted to the different Accept, +Content-Type, etc. headers and always got very well-opinionated responses +(406, 415, ...). + +A couple of questions remain though (I'm sorry if they've been asked +already but I've searched the web for answers and read the available docs +and couldn't find them): + +1. is it expected that, if I use cowboy_req:reply/2 in a GET handler +(coming from content_types_provided), the onresponse/4 hook be called +twice? I guess one is due to the reply and the other one due to the +workflow of the request, but is there a way to prevent the second execution? + +2. if I want to JSON-parse ALL my requests should I a) use the onrequest/1 +hook or b) do this on a per-request basis? Because I'd like to reply with a +400 ASAP but keep going if the JSON validates (I'm going to use JSON-schema +for validating input); and, if possible, have the JSON-parsed body stored +somewhere for future manipulation. + +3. I haven't seen examples that made use of the State (from the function +returns). When should I use this instead of the Request metadata? I'd like +to be able to set a generic error state for a request (either in meta ou +State) and that have a "standard" error response be created at a later time +(in a unique function, for example - e.g. onresponse/4). + +4. is there anything like a catch-all exception handler? I'd like to catch +exceptions that occur anywhere so I could log them and analyze them at a +later moment. + +I'm probably abusing the onresponse/onrequest hooks already, so your +answers should help me clarify this. + +Thanks. + +- Paulo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: <<A HREF="http://lists.ninenines.eu/archives/extend/attachments/20140520/cf7632e9/attachment.html">http://lists.ninenines.eu/archives/extend/attachments/20140520/cf7632e9/attachment.html</A>> +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A></li> + <LI>Next message: <A HREF="000386.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#384">[ date ]</a> + <a href="thread.html#384">[ thread ]</a> + <a href="subject.html#384">[ subject ]</a> + <a href="author.html#384">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000385.html b/archives/extend/2014-May/000385.html new file mode 100644 index 00000000..d59d7aea --- /dev/null +++ b/archives/extend/2014-May/000385.html @@ -0,0 +1,71 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] 202 for POST or PUT + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20202%20for%20POST%20or%20PUT&In-Reply-To=%3CCA%2BdV7cRUn3oQ34DaZbPaY3TcfEJUO4iq8Gk6sJuLqzGGA4MT8g%40mail.gmail.com%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000389.html"> + <LINK REL="Next" HREF="000387.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] 202 for POST or PUT</H1> + <B>Paulo F. Oliveira</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20202%20for%20POST%20or%20PUT&In-Reply-To=%3CCA%2BdV7cRUn3oQ34DaZbPaY3TcfEJUO4iq8Gk6sJuLqzGGA4MT8g%40mail.gmail.com%3E" + TITLE="[99s-extend] 202 for POST or PUT">paulo.ferraz.oliveira at gmail.com + </A><BR> + <I>Tue May 20 20:32:10 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000389.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#385">[ date ]</a> + <a href="thread.html#385">[ thread ]</a> + <a href="subject.html#385">[ subject ]</a> + <a href="author.html#385">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>Hi. + +Do you think it should be possible to generate a 202 for a POST or a PUT? +Is it something that will be implemented in a future version? + +Many thanks. + +- Paulo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: <<A HREF="http://lists.ninenines.eu/archives/extend/attachments/20140520/699b72b3/attachment.html">http://lists.ninenines.eu/archives/extend/attachments/20140520/699b72b3/attachment.html</A>> +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000389.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#385">[ date ]</a> + <a href="thread.html#385">[ thread ]</a> + <a href="subject.html#385">[ subject ]</a> + <a href="author.html#385">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000386.html b/archives/extend/2014-May/000386.html new file mode 100644 index 00000000..6435f3b5 --- /dev/null +++ b/archives/extend/2014-May/000386.html @@ -0,0 +1,134 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] REST responses + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3C537BA2EA.5080108%40ninenines.eu%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000384.html"> + <LINK REL="Next" HREF="000388.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] REST responses</H1> + <B>Loïc Hoguin</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3C537BA2EA.5080108%40ninenines.eu%3E" + TITLE="[99s-extend] REST responses">essen at ninenines.eu + </A><BR> + <I>Tue May 20 20:46:02 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000384.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000388.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#386">[ date ]</a> + <a href="thread.html#386">[ thread ]</a> + <a href="subject.html#386">[ subject ]</a> + <a href="author.html#386">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>Hi, + +On 05/20/2014 06:27 PM, Paulo F. Oliveira wrote: +><i> Hello. +</I>><i> +</I>><i> First of all, thanks for the great work you've done with cowboy. I've +</I>><i> been using it with a fait amount of success and I'm a fairly new Erlang +</I>><i> developer. I'm mainly interested in the REST "interface" of the +</I>><i> application and its way of doing RESTful things, and I like the way you +</I>><i> did it (what with all the content_types_provided, service_available, +</I>><i> etc. functions). I've tested the way the system reacted to the different +</I>><i> Accept, Content-Type, etc. headers and always got very well-opinionated +</I>><i> responses (406, 415, ...). +</I>><i> +</I>><i> A couple of questions remain though (I'm sorry if they've been asked +</I>><i> already but I've searched the web for answers and read the available +</I>><i> docs and couldn't find them): +</I>><i> +</I>><i> 1. is it expected that, if I use cowboy_req:reply/2 in a GET handler +</I>><i> (coming from content_types_provided), the onresponse/4 hook be called +</I>><i> twice? I guess one is due to the reply and the other one due to the +</I>><i> workflow of the request, but is there a way to prevent the second execution? +</I> +If you reply from a callback you must call {halt, Req, State} to stop +processing. + +><i> 2. if I want to JSON-parse ALL my requests should I a) use the +</I>><i> onrequest/1 hook or b) do this on a per-request basis? Because I'd like +</I>><i> to reply with a 400 ASAP but keep going if the JSON validates (I'm going +</I>><i> to use JSON-schema for validating input); and, if possible, have the +</I>><i> JSON-parsed body stored somewhere for future manipulation. +</I> +It makes little sense to do it before the accept callback you define. +Not only because you will duplicate content-type checks and whatnot, but +also because you don't actually win anything from doing this. If you are +using JSON, then JSON processing will take infinitely more resources +than the REST code. + +><i> 3. I haven't seen examples that made use of the State (from the function +</I>><i> returns). When should I use this instead of the Request metadata? I'd +</I>><i> like to be able to set a generic error state for a request (either in +</I>><i> meta ou State) and that have a "standard" error response be created at a +</I>><i> later time (in a unique function, for example - e.g. onresponse/4). +</I> +State is for the functions within the current module. Look at +cowboy_static for an example. + +><i> 4. is there anything like a catch-all exception handler? I'd like to +</I>><i> catch exceptions that occur anywhere so I could log them and analyze +</I>><i> them at a later moment. +</I> +You can add your own error_logger handler, or use something like lager. +All errors end up sending a message to error_logger. + +><i> I'm probably abusing the onresponse/onrequest hooks already, so your +</I>><i> answers should help me clarify this. +</I> +Sounds like it! + +><i> Thanks. +</I>><i> +</I>><i> - Paulo +</I>><i> +</I>><i> +</I>><i> _______________________________________________ +</I>><i> Extend mailing list +</I>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">Extend at lists.ninenines.eu</A> +</I>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">https://lists.ninenines.eu/listinfo/extend</A> +</I>><i> +</I> +-- +Loïc Hoguin +<A HREF="http://ninenines.eu">http://ninenines.eu</A> + +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000384.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000388.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#386">[ date ]</a> + <a href="thread.html#386">[ thread ]</a> + <a href="subject.html#386">[ subject ]</a> + <a href="author.html#386">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000387.html b/archives/extend/2014-May/000387.html new file mode 100644 index 00000000..493740d2 --- /dev/null +++ b/archives/extend/2014-May/000387.html @@ -0,0 +1,83 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] 202 for POST or PUT + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20202%20for%20POST%20or%20PUT&In-Reply-To=%3C537BA334.7080607%40ninenines.eu%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000385.html"> + + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] 202 for POST or PUT</H1> + <B>Loïc Hoguin</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20202%20for%20POST%20or%20PUT&In-Reply-To=%3C537BA334.7080607%40ninenines.eu%3E" + TITLE="[99s-extend] 202 for POST or PUT">essen at ninenines.eu + </A><BR> + <I>Tue May 20 20:47:16 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A></li> + + <LI> <B>Messages sorted by:</B> + <a href="date.html#387">[ date ]</a> + <a href="thread.html#387">[ thread ]</a> + <a href="subject.html#387">[ subject ]</a> + <a href="author.html#387">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>202 is only well defined for the DELETE method so there's no plan to add +something for other methods at this point. You can of course reply +directly if needed. + +On 05/20/2014 08:32 PM, Paulo F. Oliveira wrote: +><i> Hi. +</I>><i> +</I>><i> Do you think it should be possible to generate a 202 for a POST or a +</I>><i> PUT? Is it something that will be implemented in a future version? +</I>><i> +</I>><i> Many thanks. +</I>><i> +</I>><i> - Paulo +</I>><i> +</I>><i> +</I>><i> _______________________________________________ +</I>><i> Extend mailing list +</I>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">Extend at lists.ninenines.eu</A> +</I>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">https://lists.ninenines.eu/listinfo/extend</A> +</I>><i> +</I> +-- +Loïc Hoguin +<A HREF="http://ninenines.eu">http://ninenines.eu</A> + +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A></li> + + <LI> <B>Messages sorted by:</B> + <a href="date.html#387">[ date ]</a> + <a href="thread.html#387">[ thread ]</a> + <a href="subject.html#387">[ subject ]</a> + <a href="author.html#387">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000388.html b/archives/extend/2014-May/000388.html new file mode 100644 index 00000000..0c28ba4d --- /dev/null +++ b/archives/extend/2014-May/000388.html @@ -0,0 +1,180 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] REST responses + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3CCA%2BdV7cTrbQd-widnjH5CjsYum%3DASwax7VxtAUn_9BVONp2MMuA%40mail.gmail.com%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000386.html"> + <LINK REL="Next" HREF="000389.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] REST responses</H1> + <B>Paulo F. Oliveira</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3CCA%2BdV7cTrbQd-widnjH5CjsYum%3DASwax7VxtAUn_9BVONp2MMuA%40mail.gmail.com%3E" + TITLE="[99s-extend] REST responses">paulo.ferraz.oliveira at gmail.com + </A><BR> + <I>Tue May 20 23:41:15 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000386.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000389.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#388">[ date ]</a> + <a href="thread.html#388">[ thread ]</a> + <a href="subject.html#388">[ subject ]</a> + <a href="author.html#388">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>Hi, Loïc. + +Thanks for having taken the time to reply. In some of my questions I think +I didn't explain myself correctly so I'll give it another go. + + +On 20 May 2014 19:46, Loïc Hoguin <<A HREF="https://lists.ninenines.eu/listinfo/extend">essen at ninenines.eu</A>> wrote: + +><i> Hi, +</I>><i> +</I>><i> +</I>><i> On 05/20/2014 06:27 PM, Paulo F. Oliveira wrote: +</I>><i> +</I>>><i> Hello. +</I>>><i> +</I>>><i> First of all, thanks for the great work you've done with cowboy. I've +</I>>><i> been using it with a fait amount of success and I'm a fairly new Erlang +</I>>><i> developer. I'm mainly interested in the REST "interface" of the +</I>>><i> application and its way of doing RESTful things, and I like the way you +</I>>><i> did it (what with all the content_types_provided, service_available, +</I>>><i> etc. functions). I've tested the way the system reacted to the different +</I>>><i> Accept, Content-Type, etc. headers and always got very well-opinionated +</I>>><i> responses (406, 415, ...). +</I>>><i> +</I>>><i> A couple of questions remain though (I'm sorry if they've been asked +</I>>><i> already but I've searched the web for answers and read the available +</I>>><i> docs and couldn't find them): +</I>>><i> +</I>>><i> 1. is it expected that, if I use cowboy_req:reply/2 in a GET handler +</I>>><i> (coming from content_types_provided), the onresponse/4 hook be called +</I>>><i> twice? I guess one is due to the reply and the other one due to the +</I>>><i> workflow of the request, but is there a way to prevent the second +</I>>><i> execution? +</I>>><i> +</I>><i> +</I>><i> If you reply from a callback you must call {halt, Req, State} to stop +</I>><i> processing. +</I> + +Got it! + + +><i> 2. if I want to JSON-parse ALL my requests should I a) use the +</I>>><i> onrequest/1 hook or b) do this on a per-request basis? Because I'd like +</I>>><i> to reply with a 400 ASAP but keep going if the JSON validates (I'm going +</I>>><i> to use JSON-schema for validating input); and, if possible, have the +</I>>><i> JSON-parsed body stored somewhere for future manipulation. +</I>>><i> +</I>><i> +</I>><i> It makes little sense to do it before the accept callback you define. Not +</I>><i> only because you will duplicate content-type checks and whatnot, but also +</I>><i> because you don't actually win anything from doing this. If you are using +</I>><i> JSON, then JSON processing will take infinitely more resources than the +</I>><i> REST code. +</I> + +OK, I'll probably stick with a "helper" function that'll do this for me and +reply in case there are validation errors. +I only found the flow diagrams for the requests today after I had sent this +message, and they helped a lot. + + +><i> 3. I haven't seen examples that made use of the State (from the function +</I>>><i> returns). When should I use this instead of the Request metadata? I'd +</I>>><i> like to be able to set a generic error state for a request (either in +</I>>><i> meta ou State) and that have a "standard" error response be created at a +</I>>><i> later time (in a unique function, for example - e.g. onresponse/4). +</I>>><i> +</I>><i> +</I>><i> State is for the functions within the current module. Look at +</I>><i> cowboy_static for an example. +</I> + +State allows me to, well, keep state, for a request "travelling" through +functions, right, and I can change it whenever I want just before returning +from a function that is executed prior to another one (the only function +for which this doesn't seem to make since is the last one cowboy calls +before actually replying to the client)? At the same time, so does the +request meta, from what I understood from the manual. So what is the +difference between one and the other and when would you recommend one or +the other. + +4. is there anything like a catch-all exception handler? I'd like to +>><i> catch exceptions that occur anywhere so I could log them and analyze +</I>>><i> them at a later moment. +</I>>><i> +</I>><i> +</I>><i> You can add your own error_logger handler, or use something like lager. +</I>><i> All errors end up sending a message to error_logger. +</I> + +I'll do this, thanks. + + +><i> I'm probably abusing the onresponse/onrequest hooks already, so your +</I>>><i> answers should help me clarify this. +</I>>><i> +</I>><i> +</I>><i> Sounds like it! +</I>><i> +</I>><i> Thanks. +</I>>><i> +</I>>><i> - Paulo +</I>>><i> +</I>>><i> +</I>>><i> _______________________________________________ +</I>>><i> Extend mailing list +</I>>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">Extend at lists.ninenines.eu</A> +</I>>><i> <A HREF="https://lists.ninenines.eu/listinfo/extend">https://lists.ninenines.eu/listinfo/extend</A> +</I>>><i> +</I>>><i> +</I>><i> -- +</I>><i> Loïc Hoguin +</I>><i> <A HREF="http://ninenines.eu">http://ninenines.eu</A> +</I>><i> +</I> +Thanks. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: <<A HREF="http://lists.ninenines.eu/archives/extend/attachments/20140520/32454f85/attachment.html">http://lists.ninenines.eu/archives/extend/attachments/20140520/32454f85/attachment.html</A>> +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000386.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000389.html">[99s-extend] REST responses +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#388">[ date ]</a> + <a href="thread.html#388">[ thread ]</a> + <a href="subject.html#388">[ subject ]</a> + <a href="author.html#388">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/000389.html b/archives/extend/2014-May/000389.html new file mode 100644 index 00000000..2f1f44c7 --- /dev/null +++ b/archives/extend/2014-May/000389.html @@ -0,0 +1,80 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <TITLE> [99s-extend] REST responses + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3C537BCE95.1090100%40ninenines.eu%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <style type="text/css"> + pre { + white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */ + } + </style> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="000388.html"> + <LINK REL="Next" HREF="000385.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[99s-extend] REST responses</H1> + <B>Loïc Hoguin</B> + <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20REST%20responses&In-Reply-To=%3C537BCE95.1090100%40ninenines.eu%3E" + TITLE="[99s-extend] REST responses">essen at ninenines.eu + </A><BR> + <I>Tue May 20 23:52:21 CEST 2014</I> + <P><UL> + <LI>Previous message: <A HREF="000388.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#389">[ date ]</a> + <a href="thread.html#389">[ thread ]</a> + <a href="subject.html#389">[ subject ]</a> + <a href="author.html#389">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>><i> State allows me to, well, keep state, for a request "travelling" through +</I>><i> functions, right, and I can change it whenever I want just before +</I>><i> returning from a function that is executed prior to another one (the +</I>><i> only function for which this doesn't seem to make since is the last one +</I>><i> cowboy calls before actually replying to the client)? At the same time, +</I>><i> so does the request meta, from what I understood from the manual. So +</I>><i> what is the difference between one and the other and when would you +</I>><i> recommend one or the other. +</I> +They have different purposes. Meta values are additional information +about the request. You're not supposed to set them except in special +circumstances, either because you have your own custom protocol like +cowboy_rest, or because there's no other way to pass state forward. + +Don't think about it, always use State. + +-- +Loïc Hoguin +<A HREF="http://ninenines.eu">http://ninenines.eu</A> + +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="000388.html">[99s-extend] REST responses +</A></li> + <LI>Next message: <A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#389">[ date ]</a> + <a href="thread.html#389">[ thread ]</a> + <a href="subject.html#389">[ subject ]</a> + <a href="author.html#389">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend +mailing list</a><br> +</body></html> diff --git a/archives/extend/2014-May/author.html b/archives/extend/2014-May/author.html new file mode 100644 index 00000000..04dd96e0 --- /dev/null +++ b/archives/extend/2014-May/author.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <title>The Extend May 2014 Archive by author</title> + <META NAME="robots" CONTENT="noindex,follow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <a name="start"></A> + <h1>May 2014 Archives by author</h1> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + <a href="subject.html#start">[ subject ]</a> + + <a href="date.html#start">[ date ]</a> + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p><b>Starting:</b> <i>Sun May 4 09:59:21 CEST 2014</i><br> + <b>Ending:</b> <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Messages:</b> 7<p> + <ul> + +<LI><A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A><A NAME="383"> </A> +<I>Janos Hary +</I> + +<LI><A HREF="000386.html">[99s-extend] REST responses +</A><A NAME="386"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A><A NAME="387"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000389.html">[99s-extend] REST responses +</A><A NAME="389"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000384.html">[99s-extend] REST responses +</A><A NAME="384"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A><A NAME="385"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000388.html">[99s-extend] REST responses +</A><A NAME="388"> </A> +<I>Paulo F. Oliveira +</I> + + </ul> + <p> + <a name="end"><b>Last message date:</b></a> + <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Archived on:</b> <i>Wed May 28 18:41:47 CEST 2014</i> + <p> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + <a href="subject.html#start">[ subject ]</a> + + <a href="date.html#start">[ date ]</a> + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p> + <hr> + <i>This archive was generated by + Pipermail 0.09 (Mailman edition).</i> + </BODY> +</HTML> + diff --git a/archives/extend/2014-May/date.html b/archives/extend/2014-May/date.html new file mode 100644 index 00000000..be72a5b3 --- /dev/null +++ b/archives/extend/2014-May/date.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <title>The Extend May 2014 Archive by date</title> + <META NAME="robots" CONTENT="noindex,follow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <a name="start"></A> + <h1>May 2014 Archives by date</h1> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p><b>Starting:</b> <i>Sun May 4 09:59:21 CEST 2014</i><br> + <b>Ending:</b> <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Messages:</b> 7<p> + <ul> + +<LI><A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A><A NAME="383"> </A> +<I>Janos Hary +</I> + +<LI><A HREF="000384.html">[99s-extend] REST responses +</A><A NAME="384"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A><A NAME="385"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000386.html">[99s-extend] REST responses +</A><A NAME="386"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A><A NAME="387"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000388.html">[99s-extend] REST responses +</A><A NAME="388"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000389.html">[99s-extend] REST responses +</A><A NAME="389"> </A> +<I>Loïc Hoguin +</I> + + </ul> + <p> + <a name="end"><b>Last message date:</b></a> + <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Archived on:</b> <i>Wed May 28 18:41:47 CEST 2014</i> + <p> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p> + <hr> + <i>This archive was generated by + Pipermail 0.09 (Mailman edition).</i> + </BODY> +</HTML> + diff --git a/archives/extend/2014-May/index.html b/archives/extend/2014-May/index.html new file mode 100644 index 00000000..6a0d295f --- /dev/null +++ b/archives/extend/2014-May/index.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <title>The Extend May 2014 Archive by thread</title> + <META NAME="robots" CONTENT="noindex,follow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <a name="start"></A> + <h1>May 2014 Archives by thread</h1> + <ul> + <li> <b>Messages sorted by:</b> + + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p><b>Starting:</b> <i>Sun May 4 09:59:21 CEST 2014</i><br> + <b>Ending:</b> <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Messages:</b> 7<p> + <ul> + +<!--0 01399190361.383- --> +<LI><A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A><A NAME="383"> </A> +<I>Janos Hary +</I> + +<!--0 01400603278.384- --> +<LI><A HREF="000384.html">[99s-extend] REST responses +</A><A NAME="384"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--1 01400603278.384-01400611562.386- --> +<LI><A HREF="000386.html">[99s-extend] REST responses +</A><A NAME="386"> </A> +<I>Loïc Hoguin +</I> + +<!--1 01400603278.384-01400622075.388- --> +<LI><A HREF="000388.html">[99s-extend] REST responses +</A><A NAME="388"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--2 01400603278.384-01400622075.388-01400622741.389- --> +<LI><A HREF="000389.html">[99s-extend] REST responses +</A><A NAME="389"> </A> +<I>Loïc Hoguin +</I> + +</UL> +</UL> +<!--0 01400610730.385- --> +<LI><A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A><A NAME="385"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--1 01400610730.385-01400611636.387- --> +<LI><A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A><A NAME="387"> </A> +<I>Loïc Hoguin +</I> + +</UL> + </ul> + <p> + <a name="end"><b>Last message date:</b></a> + <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Archived on:</b> <i>Wed May 28 18:41:47 CEST 2014</i> + <p> + <ul> + <li> <b>Messages sorted by:</b> + + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p> + <hr> + <i>This archive was generated by + Pipermail 0.09 (Mailman edition).</i> + </BODY> +</HTML> + diff --git a/archives/extend/2014-May/subject.html b/archives/extend/2014-May/subject.html new file mode 100644 index 00000000..0ce85257 --- /dev/null +++ b/archives/extend/2014-May/subject.html @@ -0,0 +1,82 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <title>The Extend May 2014 Archive by subject</title> + <META NAME="robots" CONTENT="noindex,follow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <a name="start"></A> + <h1>May 2014 Archives by subject</h1> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p><b>Starting:</b> <i>Sun May 4 09:59:21 CEST 2014</i><br> + <b>Ending:</b> <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Messages:</b> 7<p> + <ul> + +<LI><A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A><A NAME="385"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A><A NAME="387"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A><A NAME="383"> </A> +<I>Janos Hary +</I> + +<LI><A HREF="000384.html">[99s-extend] REST responses +</A><A NAME="384"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000386.html">[99s-extend] REST responses +</A><A NAME="386"> </A> +<I>Loïc Hoguin +</I> + +<LI><A HREF="000388.html">[99s-extend] REST responses +</A><A NAME="388"> </A> +<I>Paulo F. Oliveira +</I> + +<LI><A HREF="000389.html">[99s-extend] REST responses +</A><A NAME="389"> </A> +<I>Loïc Hoguin +</I> + + </ul> + <p> + <a name="end"><b>Last message date:</b></a> + <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Archived on:</b> <i>Wed May 28 18:41:47 CEST 2014</i> + <p> + <ul> + <li> <b>Messages sorted by:</b> + <a href="thread.html#start">[ thread ]</a> + + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p> + <hr> + <i>This archive was generated by + Pipermail 0.09 (Mailman edition).</i> + </BODY> +</HTML> + diff --git a/archives/extend/2014-May/thread.html b/archives/extend/2014-May/thread.html new file mode 100644 index 00000000..6a0d295f --- /dev/null +++ b/archives/extend/2014-May/thread.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + <HEAD> + <title>The Extend May 2014 Archive by thread</title> + <META NAME="robots" CONTENT="noindex,follow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <a name="start"></A> + <h1>May 2014 Archives by thread</h1> + <ul> + <li> <b>Messages sorted by:</b> + + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p><b>Starting:</b> <i>Sun May 4 09:59:21 CEST 2014</i><br> + <b>Ending:</b> <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Messages:</b> 7<p> + <ul> + +<!--0 01399190361.383- --> +<LI><A HREF="000383.html">[99s-extend] Gracefully stop Ranch +</A><A NAME="383"> </A> +<I>Janos Hary +</I> + +<!--0 01400603278.384- --> +<LI><A HREF="000384.html">[99s-extend] REST responses +</A><A NAME="384"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--1 01400603278.384-01400611562.386- --> +<LI><A HREF="000386.html">[99s-extend] REST responses +</A><A NAME="386"> </A> +<I>Loïc Hoguin +</I> + +<!--1 01400603278.384-01400622075.388- --> +<LI><A HREF="000388.html">[99s-extend] REST responses +</A><A NAME="388"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--2 01400603278.384-01400622075.388-01400622741.389- --> +<LI><A HREF="000389.html">[99s-extend] REST responses +</A><A NAME="389"> </A> +<I>Loïc Hoguin +</I> + +</UL> +</UL> +<!--0 01400610730.385- --> +<LI><A HREF="000385.html">[99s-extend] 202 for POST or PUT +</A><A NAME="385"> </A> +<I>Paulo F. Oliveira +</I> + +<UL> +<!--1 01400610730.385-01400611636.387- --> +<LI><A HREF="000387.html">[99s-extend] 202 for POST or PUT +</A><A NAME="387"> </A> +<I>Loïc Hoguin +</I> + +</UL> + </ul> + <p> + <a name="end"><b>Last message date:</b></a> + <i>Tue May 20 23:52:21 CEST 2014</i><br> + <b>Archived on:</b> <i>Wed May 28 18:41:47 CEST 2014</i> + <p> + <ul> + <li> <b>Messages sorted by:</b> + + <a href="subject.html#start">[ subject ]</a> + <a href="author.html#start">[ author ]</a> + <a href="date.html#start">[ date ]</a> + <li><b><a href="https://lists.ninenines.eu/listinfo/extend">More info on this list... + </a></b></li> + </ul> + <p> + <hr> + <i>This archive was generated by + Pipermail 0.09 (Mailman edition).</i> + </BODY> +</HTML> + |