Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

[tutorial] shoved in another page

This one introduces dispatch, providing a raison d'être for Astaire.
  • Loading branch information...
commit da3d6f4f71e322b441a68be6dce06109605f054b 1 parent 213c0c3
Carl Mäsak authored
338 tutorial/src/page6.svg
@@ -15,9 +15,35 @@
15 15 id="svg2816"
16 16 version="1.1"
17 17 inkscape:version="0.47pre4 r22446"
18   - sodipodi:docname="page3.svg">
  18 + sodipodi:docname="page6.svg">
19 19 <defs
20 20 id="defs2818">
  21 + <marker
  22 + inkscape:stockid="Arrow2Lend"
  23 + orient="auto"
  24 + refY="0.0"
  25 + refX="0.0"
  26 + id="Arrow2Lend"
  27 + style="overflow:visible;">
  28 + <path
  29 + id="path5850"
  30 + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  31 + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  32 + transform="scale(1.1) rotate(180) translate(1,0)" />
  33 + </marker>
  34 + <marker
  35 + inkscape:stockid="Arrow2Mend"
  36 + orient="auto"
  37 + refY="0.0"
  38 + refX="0.0"
  39 + id="Arrow2Mend"
  40 + style="overflow:visible;">
  41 + <path
  42 + id="path5856"
  43 + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  44 + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  45 + transform="scale(0.6) rotate(180) translate(0,0)" />
  46 + </marker>
21 47 <linearGradient
22 48 id="linearGradient12953">
23 49 <stop
@@ -129,6 +155,15 @@
129 155 inkscape:vp_y="0 : 1000 : 0"
130 156 inkscape:vp_x="0 : 372.04724 : 1"
131 157 sodipodi:type="inkscape:persp3d" />
  158 + <linearGradient
  159 + inkscape:collect="always"
  160 + xlink:href="#linearGradient12953"
  161 + id="linearGradient5786"
  162 + gradientUnits="userSpaceOnUse"
  163 + x1="863.43195"
  164 + y1="630.15387"
  165 + x2="863.43195"
  166 + y2="418.08286" />
132 167 </defs>
133 168 <sodipodi:namedview
134 169 id="base"
@@ -138,8 +173,8 @@
138 173 inkscape:pageopacity="0.0"
139 174 inkscape:pageshadow="2"
140 175 inkscape:zoom="0.66015625"
141   - inkscape:cx="545.59542"
142   - inkscape:cy="410.70673"
  176 + inkscape:cx="512"
  177 + inkscape:cy="386.55195"
143 178 inkscape:current-layer="layer1"
144 179 inkscape:document-units="px"
145 180 showgrid="false"
@@ -171,101 +206,234 @@
171 206 x="-9.0887451"
172 207 y="-7.5739746"
173 208 style="fill-opacity:1;fill:url(#linearGradient12852);stroke:none" />
174   - <g
175   - id="g12970"
176   - transform="matrix(0.95578549,-0.29406479,0.29406479,0.95578549,-97.788651,10.091858)">
177   - <path
178   - id="rect12951"
179   - d="m 757.40625,418.09375 0,212.0625 181.4375,0 30.625,-30.625 0,-181.4375 -212.0625,0 z"
180   - style="fill:url(#linearGradient13365);fill-opacity:1;stroke:#12101e;stroke-opacity:1" />
181   - <path
182   - sodipodi:nodetypes="ccc"
183   - id="path12966"
184   - d="m 939.24001,629.88705 0.11336,-30.34315 29.83716,0"
185   - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
186   - </g>
187 209 <text
188 210 xml:space="preserve"
189   - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
190   - x="677.87207"
191   - y="444.87195"
192   - id="text12976"
193   - transform="matrix(0.95578549,-0.29406479,0.29406479,0.95578549,0,0)"><tspan
194   - id="tspan13341"
  211 + style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  212 + x="442.7478"
  213 + y="99.976334"
  214 + id="text13367"><tspan
195 215 sodipodi:role="line"
196   - x="677.87207"
197   - y="444.87195">&quot;Wait, where'd</tspan><tspan
198   - id="tspan9074"
  216 + x="442.7478"
  217 + y="99.976334"
  218 + id="tspan13371">Dispatch</tspan></text>
  219 + <text
  220 + id="text4859"
  221 + y="365.06509"
  222 + x="356.3511"
  223 + style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  224 + xml:space="preserve"><tspan
  225 + id="tspan4861"
  226 + y="365.06509"
  227 + x="356.3511"
  228 + sodipodi:role="line">request</tspan><tspan
  229 + y="410.06509"
  230 + x="356.3511"
199 231 sodipodi:role="line"
200   - x="677.87207"
201   - y="469.87195">Web::Request and</tspan><tspan
202   - id="tspan9076"
  232 + id="tspan4865">comes in</tspan></text>
  233 + <path
  234 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  235 + d="m 453.84637,383.99296 83.31361,0"
  236 + id="path4869" />
  237 + <path
  238 + id="path4871"
  239 + d="m 537.15998,384.00001 83.31361,0"
  240 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  241 + <path
  242 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  243 + d="m 537.15998,233.27811 83.31361,0"
  244 + id="path4873" />
  245 + <path
  246 + id="path4875"
  247 + d="m 537.15998,534.7219 83.31361,0"
  248 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  249 + <path
  250 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  251 + d="m 537.65139,232.86624 0,302.32269"
  252 + id="path4877"
  253 + sodipodi:nodetypes="cc" />
  254 + <text
  255 + xml:space="preserve"
  256 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  257 + x="550.79309"
  258 + y="210.5562"
  259 + id="text4879"><tspan
203 260 sodipodi:role="line"
204   - x="677.87207"
205   - y="494.87195">Web::Response go?&quot;</tspan><tspan
206   - id="tspan9078"
  261 + id="tspan4881"
  262 + x="550.79309"
  263 + y="210.5562">/foo</tspan></text>
  264 + <text
  265 + id="text4883"
  266 + y="362.03549"
  267 + x="550.79309"
  268 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  269 + xml:space="preserve"><tspan
  270 + y="362.03549"
  271 + x="550.79309"
  272 + id="tspan4885"
  273 + sodipodi:role="line">/bar</tspan></text>
  274 + <text
  275 + xml:space="preserve"
  276 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  277 + x="550.79309"
  278 + y="515.0296"
  279 + id="text4887"><tspan
  280 + sodipodi:role="line"
  281 + id="tspan4889"
  282 + x="550.79309"
  283 + y="515.0296">/baz</tspan></text>
  284 + <text
  285 + xml:space="preserve"
  286 + style="font-size:25.52161789px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  287 + x="721.25018"
  288 + y="208.18526"
  289 + id="text4891"><tspan
  290 + sodipodi:role="line"
  291 + x="721.25018"
  292 + y="208.18526"
  293 + id="tspan4893">request</tspan><tspan
  294 + id="tspan4895"
207 295 sodipodi:role="line"
208   - x="677.87207"
209   - y="519.87195">you might ask. Well,</tspan><tspan
210   - id="tspan9080"
  296 + x="721.25018"
  297 + y="240.08728">handler</tspan><tspan
211 298 sodipodi:role="line"
212   - x="677.87207"
213   - y="544.87195">Astaire uses them</tspan><tspan
214   - id="tspan9082"
  299 + x="721.25018"
  300 + y="273.52612"
  301 + id="tspan4897">for <tspan
  302 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  303 + id="tspan4899">foo</tspan></tspan></text>
  304 + <text
  305 + id="text4901"
  306 + y="359.6907"
  307 + x="721.25018"
  308 + style="font-size:25.52161789px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  309 + xml:space="preserve"><tspan
  310 + id="tspan4903"
  311 + y="359.6907"
  312 + x="721.25018"
  313 + sodipodi:role="line">request</tspan><tspan
  314 + y="391.59271"
  315 + x="721.25018"
215 316 sodipodi:role="line"
216   - x="677.87207"
217   - y="569.87195">internally.</tspan></text>
  317 + id="tspan4905">handler</tspan><tspan
  318 + id="tspan4907"
  319 + y="425.03156"
  320 + x="721.25018"
  321 + sodipodi:role="line">for <tspan
  322 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  323 + id="tspan5699">bar</tspan></tspan></text>
218 324 <text
219 325 xml:space="preserve"
220   - style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
221   - x="309.98404"
222   - y="99.976334"
223   - id="text13367"><tspan
  326 + style="font-size:25.52161789px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  327 + x="721.25018"
  328 + y="510.41254"
  329 + id="text4911"><tspan
224 330 sodipodi:role="line"
225   - x="309.98404"
226   - y="99.976334"
227   - id="tspan13371">Easy dispatch with Astaire</tspan></text>
  331 + x="721.25018"
  332 + y="510.41254"
  333 + id="tspan4913">request</tspan><tspan
  334 + id="tspan4915"
  335 + sodipodi:role="line"
  336 + x="721.25018"
  337 + y="542.31458">handler</tspan><tspan
  338 + sodipodi:role="line"
  339 + x="721.25018"
  340 + y="575.75342"
  341 + id="tspan4917">for <tspan
  342 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
  343 + id="tspan5701">baz</tspan></tspan></text>
  344 + <rect
  345 + style="fill:none;stroke:#000000;stroke-opacity:1"
  346 + id="rect4921"
  347 + width="107.55029"
  348 + height="124.21301"
  349 + x="667.43219"
  350 + y="171.1716"
  351 + ry="15.14793" />
228 352 <g
229   - id="g9040"
230   - transform="translate(254.48521,67.40828)">
231   - <path
232   - style="fill:#31445b;fill-opacity:1;stroke:none"
233   - id="rect3222-7"
234   - d="m 60.04233,141.32972 0,259.43025 c 0.0168,50.03089 40.43514,90.68841 90.375,91.09375 l 304.56993,0 0,-259.43024 c -0.0169,-50.0309 -40.4664,-90.68843 -90.4062,-91.09375 l -304.53873,0 z" />
  353 + id="g5773"
  354 + transform="matrix(0.98787339,0.1552616,-0.1552616,0.98787339,92.93249,-21.576878)">
  355 + <g
  356 + transform="matrix(0.99999992,3.9768072e-4,-3.9768072e-4,0.99999992,-678.63426,59.674347)"
  357 + id="g12970">
  358 + <path
  359 + style="fill:url(#linearGradient5786);fill-opacity:1;stroke:#12101e;stroke-opacity:1"
  360 + d="m 757.40625,418.09375 0,212.0625 181.4375,0 30.625,-30.625 0,-181.4375 -212.0625,0 z"
  361 + id="rect12951" />
  362 + <path
  363 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  364 + d="m 939.24001,629.88705 0.11336,-30.34315 29.83716,0"
  365 + id="path12966"
  366 + sodipodi:nodetypes="ccc" />
  367 + </g>
235 368 <text
236   - style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans Mono;-inkscape-font-specification:Bitstream Vera Sans Mono"
237   - xml:space="preserve"
238   - id="text2511"
239   - y="225.85735"
240   - x="124.48354"><tspan
241   - id="tspan2515"
242   - y="225.85735"
243   - x="124.48354"><tspan
244   - style="fill:#e3ba35;fill-opacity:1"
245   - id="tspan3836">use</tspan> v6;</tspan><tspan
246   - id="tspan2527"
247   - y="265.85733"
248   - x="124.48354"><tspan
249   - style="fill:#e3ba35;fill-opacity:1"
250   - id="tspan3838">use</tspan> Astaire;</tspan><tspan
251   - id="tspan2529"
252   - y="305.85733"
253   - x="124.48354" /><tspan
254   - id="tspan2517"
255   - y="345.85733"
256   - x="124.48354">get <tspan
257   - style="fill:#459036;fill-opacity:1"
258   - id="tspan3832">'/hi'</tspan> =&gt; {</tspan><tspan
259   - style="fill:#459036;fill-opacity:1"
260   - id="tspan2519"
261   - y="385.85733"
262   - x="124.48354"> &quot;OH HAI&quot;</tspan><tspan
263   - id="tspan2521"
264   - y="425.85733"
265   - x="124.48354">}</tspan><tspan
266   - id="tspan2523"
267   - y="465.85733"
268   - x="124.48354" /></text>
  369 + id="text5737"
  370 + y="514.20496"
  371 + x="86.176765"
  372 + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
  373 + xml:space="preserve"><tspan
  374 + y="514.20496"
  375 + x="86.176765"
  376 + id="tspan5739"
  377 + sodipodi:role="line">Dispatching on the</tspan><tspan
  378 + id="tspan5741"
  379 + y="539.20496"
  380 + x="86.176765"
  381 + sodipodi:role="line">URI of the request</tspan><tspan
  382 + id="tspan5745"
  383 + y="564.20496"
  384 + x="86.176765"
  385 + sodipodi:role="line">is a common thing to</tspan><tspan
  386 + id="tspan5747"
  387 + y="589.20496"
  388 + x="86.176765"
  389 + sodipodi:role="line">do in a web app,</tspan><tspan
  390 + id="tspan5749"
  391 + y="614.20496"
  392 + x="86.176765"
  393 + sodipodi:role="line">simply because web</tspan><tspan
  394 + id="tspan5751"
  395 + y="639.20496"
  396 + x="86.176765"
  397 + sodipodi:role="line">apps tend to do more</tspan><tspan
  398 + id="tspan5771"
  399 + y="664.20496"
  400 + x="86.176765"
  401 + sodipodi:role="line">than one thing.</tspan></text>
269 402 </g>
  403 + <rect
  404 + ry="15.14793"
  405 + y="322.67703"
  406 + x="667.43219"
  407 + height="124.21301"
  408 + width="107.55029"
  409 + id="rect5820"
  410 + style="fill:none;stroke:#000000;stroke-opacity:1" />
  411 + <rect
  412 + style="fill:none;stroke:#000000;stroke-opacity:1"
  413 + id="rect5822"
  414 + width="107.55029"
  415 + height="124.21301"
  416 + x="667.43219"
  417 + y="473.39886"
  418 + ry="15.14793" />
  419 + <path
  420 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
  421 + d="m 671.05325,115.12426 c -47.30948,19.01192 -57.37377,28.62278 -72.71005,63.6213"
  422 + id="path5824"
  423 + sodipodi:nodetypes="cc" />
  424 + <text
  425 + xml:space="preserve"
  426 + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  427 + x="724.07104"
  428 + y="107.55029"
  429 + id="text6462"><tspan
  430 + sodipodi:role="line"
  431 + id="tspan6464"
  432 + x="724.07104"
  433 + y="107.55029">&quot;path&quot; part</tspan><tspan
  434 + sodipodi:role="line"
  435 + x="724.07104"
  436 + y="132.55029"
  437 + id="tspan6466">of the URI</tspan></text>
270 438 </g>
271 439 </svg>
271 tutorial/src/page7.svg
... ... @@ -0,0 +1,271 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
  3 +
  4 +<svg
  5 + xmlns:dc="http://purl.org/dc/elements/1.1/"
  6 + xmlns:cc="http://creativecommons.org/ns#"
  7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  8 + xmlns:svg="http://www.w3.org/2000/svg"
  9 + xmlns="http://www.w3.org/2000/svg"
  10 + xmlns:xlink="http://www.w3.org/1999/xlink"
  11 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  13 + width="1024px"
  14 + height="768px"
  15 + id="svg2816"
  16 + version="1.1"
  17 + inkscape:version="0.47pre4 r22446"
  18 + sodipodi:docname="page3.svg">
  19 + <defs
  20 + id="defs2818">
  21 + <linearGradient
  22 + id="linearGradient12953">
  23 + <stop
  24 + style="stop-color:#fbf73d;stop-opacity:1;"
  25 + offset="0"
  26 + id="stop12955" />
  27 + <stop
  28 + style="stop-color:#f7fdad;stop-opacity:1;"
  29 + offset="1"
  30 + id="stop12957" />
  31 + </linearGradient>
  32 + <linearGradient
  33 + id="linearGradient12846">
  34 + <stop
  35 + style="stop-color:#ffffff;stop-opacity:1;"
  36 + offset="0"
  37 + id="stop12848" />
  38 + <stop
  39 + style="stop-color:#c08c80;stop-opacity:1;"
  40 + offset="1"
  41 + id="stop12850" />
  42 + </linearGradient>
  43 + <inkscape:perspective
  44 + sodipodi:type="inkscape:persp3d"
  45 + inkscape:vp_x="0 : 384 : 1"
  46 + inkscape:vp_y="0 : 1000 : 0"
  47 + inkscape:vp_z="1024 : 384 : 1"
  48 + inkscape:persp3d-origin="512 : 256 : 1"
  49 + id="perspective2824" />
  50 + <font
  51 + horiz-adv-x="2048"
  52 + id="EmbeddedFont_1">
  53 + <font-face
  54 + id="font-face6562"
  55 + descent="582"
  56 + ascent="1958"
  57 + units-per-em="2048"
  58 + font-family="Nimbus Sans L embedded" />
  59 + <missing-glyph
  60 + id="missing-glyph6564"
  61 + horiz-adv-x="2048">
  62 + <path
  63 + id="path6566"
  64 + d="M 0,2048 L 2047,2048 2047,1 0,1 0,2048 Z"
  65 + style="fill:none;stroke:black;stroke-width:33" />
  66 + </missing-glyph>
  67 + <glyph
  68 + id="glyph6568"
  69 + horiz-adv-x="1350"
  70 + unicode="M">
  71 + <path
  72 + id="path6570"
  73 + d="M 958,0 L 1378,1251 1378,0 1559,0 1559,1493 1294,1493 860,193 418,1493 154,1493 154,0 334,0 334,1251 758,0 958,0 Z" />
  74 + </glyph>
  75 + <glyph
  76 + id="glyph6572"
  77 + horiz-adv-x="1166"
  78 + unicode="T">
  79 + <path
  80 + id="path6574"
  81 + d="M 725,1325 L 1214,1325 1214,1493 43,1493 43,1325 535,1325 535,0 725,0 725,1325 Z" />
  82 + </glyph>
  83 + </font>
  84 + <inkscape:perspective
  85 + id="perspective10232"
  86 + inkscape:persp3d-origin="13970 : 7196.6667 : 1"
  87 + inkscape:vp_z="27940 : 10795 : 1"
  88 + inkscape:vp_y="0 : 1000 : 0"
  89 + inkscape:vp_x="0 : 10795 : 1"
  90 + sodipodi:type="inkscape:persp3d" />
  91 + <linearGradient
  92 + inkscape:collect="always"
  93 + xlink:href="#linearGradient12846"
  94 + id="linearGradient12852"
  95 + x1="512"
  96 + y1="-7.5739746"
  97 + x2="512"
  98 + y2="775.57397"
  99 + gradientUnits="userSpaceOnUse" />
  100 + <linearGradient
  101 + inkscape:collect="always"
  102 + xlink:href="#linearGradient12953"
  103 + id="linearGradient12959"
  104 + x1="863.43195"
  105 + y1="630.15387"
  106 + x2="863.43195"
  107 + y2="418.08286"
  108 + gradientUnits="userSpaceOnUse" />
  109 + <inkscape:perspective
  110 + id="perspective5775"
  111 + inkscape:persp3d-origin="526.18109 : 248.03149 : 1"
  112 + inkscape:vp_z="1052.3622 : 372.04724 : 1"
  113 + inkscape:vp_y="0 : 1000 : 0"
  114 + inkscape:vp_x="0 : 372.04724 : 1"
  115 + sodipodi:type="inkscape:persp3d" />
  116 + <linearGradient
  117 + inkscape:collect="always"
  118 + xlink:href="#linearGradient12953"
  119 + id="linearGradient13365"
  120 + gradientUnits="userSpaceOnUse"
  121 + x1="863.43195"
  122 + y1="630.15387"
  123 + x2="863.43195"
  124 + y2="418.08286" />
  125 + <inkscape:perspective
  126 + id="perspective9009"
  127 + inkscape:persp3d-origin="526.18109 : 248.03149 : 1"
  128 + inkscape:vp_z="1052.3622 : 372.04724 : 1"
  129 + inkscape:vp_y="0 : 1000 : 0"
  130 + inkscape:vp_x="0 : 372.04724 : 1"
  131 + sodipodi:type="inkscape:persp3d" />
  132 + </defs>
  133 + <sodipodi:namedview
  134 + id="base"
  135 + pagecolor="#ffffff"
  136 + bordercolor="#666666"
  137 + borderopacity="1.0"
  138 + inkscape:pageopacity="0.0"
  139 + inkscape:pageshadow="2"
  140 + inkscape:zoom="0.66015625"
  141 + inkscape:cx="545.59542"
  142 + inkscape:cy="410.70673"
  143 + inkscape:current-layer="layer1"
  144 + inkscape:document-units="px"
  145 + showgrid="false"
  146 + inkscape:window-width="904"
  147 + inkscape:window-height="755"
  148 + inkscape:window-x="165"
  149 + inkscape:window-y="138"
  150 + inkscape:window-maximized="0" />
  151 + <metadata
  152 + id="metadata2821">
  153 + <rdf:RDF>
  154 + <cc:Work
  155 + rdf:about="">
  156 + <dc:format>image/svg+xml</dc:format>
  157 + <dc:type
  158 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  159 + <dc:title></dc:title>
  160 + </cc:Work>
  161 + </rdf:RDF>
  162 + </metadata>
  163 + <g
  164 + id="layer1"
  165 + inkscape:label="Layer 1"
  166 + inkscape:groupmode="layer">
  167 + <rect
  168 + id="rect12072"
  169 + width="1042.1775"
  170 + height="783.14795"
  171 + x="-9.0887451"
  172 + y="-7.5739746"
  173 + style="fill-opacity:1;fill:url(#linearGradient12852);stroke:none" />
  174 + <g
  175 + id="g12970"
  176 + transform="matrix(0.95578549,-0.29406479,0.29406479,0.95578549,-97.788651,10.091858)">
  177 + <path
  178 + id="rect12951"
  179 + d="m 757.40625,418.09375 0,212.0625 181.4375,0 30.625,-30.625 0,-181.4375 -212.0625,0 z"
  180 + style="fill:url(#linearGradient13365);fill-opacity:1;stroke:#12101e;stroke-opacity:1" />
  181 + <path
  182 + sodipodi:nodetypes="ccc"
  183 + id="path12966"
  184 + d="m 939.24001,629.88705 0.11336,-30.34315 29.83716,0"
  185 + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  186 + </g>
  187 + <text
  188 + xml:space="preserve"
  189 + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
  190 + x="677.87207"
  191 + y="444.87195"
  192 + id="text12976"
  193 + transform="matrix(0.95578549,-0.29406479,0.29406479,0.95578549,0,0)"><tspan
  194 + id="tspan13341"
  195 + sodipodi:role="line"
  196 + x="677.87207"
  197 + y="444.87195">&quot;Wait, where'd</tspan><tspan
  198 + id="tspan9074"
  199 + sodipodi:role="line"
  200 + x="677.87207"
  201 + y="469.87195">Web::Request and</tspan><tspan
  202 + id="tspan9076"
  203 + sodipodi:role="line"
  204 + x="677.87207"
  205 + y="494.87195">Web::Response go?&quot;</tspan><tspan
  206 + id="tspan9078"
  207 + sodipodi:role="line"
  208 + x="677.87207"
  209 + y="519.87195">you might ask. Well,</tspan><tspan
  210 + id="tspan9080"
  211 + sodipodi:role="line"
  212 + x="677.87207"
  213 + y="544.87195">Astaire uses them</tspan><tspan
  214 + id="tspan9082"
  215 + sodipodi:role="line"
  216 + x="677.87207"
  217 + y="569.87195">internally.</tspan></text>
  218 + <text
  219 + xml:space="preserve"
  220 + style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Optima;-inkscape-font-specification:Optima"
  221 + x="309.98404"
  222 + y="99.976334"
  223 + id="text13367"><tspan
  224 + sodipodi:role="line"
  225 + x="309.98404"
  226 + y="99.976334"
  227 + id="tspan13371">Easy dispatch with Astaire</tspan></text>
  228 + <g
  229 + id="g9040"
  230 + transform="translate(254.48521,67.40828)">
  231 + <path
  232 + style="fill:#31445b;fill-opacity:1;stroke:none"
  233 + id="rect3222-7"
  234 + d="m 60.04233,141.32972 0,259.43025 c 0.0168,50.03089 40.43514,90.68841 90.375,91.09375 l 304.56993,0 0,-259.43024 c -0.0169,-50.0309 -40.4664,-90.68843 -90.4062,-91.09375 l -304.53873,0 z" />
  235 + <text
  236 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans Mono;-inkscape-font-specification:Bitstream Vera Sans Mono"
  237 + xml:space="preserve"
  238 + id="text2511"
  239 + y="225.85735"
  240 + x="124.48354"><tspan
  241 + id="tspan2515"
  242 + y="225.85735"
  243 + x="124.48354"><tspan
  244 + style="fill:#e3ba35;fill-opacity:1"
  245 + id="tspan3836">use</tspan> v6;</tspan><tspan
  246 + id="tspan2527"
  247 + y="265.85733"
  248 + x="124.48354"><tspan
  249 + style="fill:#e3ba35;fill-opacity:1"
  250 + id="tspan3838">use</tspan> Astaire;</tspan><tspan
  251 + id="tspan2529"
  252 + y="305.85733"
  253 + x="124.48354" /><tspan
  254 + id="tspan2517"
  255 + y="345.85733"
  256 + x="124.48354">get <tspan
  257 + style="fill:#459036;fill-opacity:1"
  258 + id="tspan3832">'/hi'</tspan> =&gt; {</tspan><tspan
  259 + style="fill:#459036;fill-opacity:1"
  260 + id="tspan2519"
  261 + y="385.85733"
  262 + x="124.48354"> &quot;OH HAI&quot;</tspan><tspan
  263 + id="tspan2521"
  264 + y="425.85733"
  265 + x="124.48354">}</tspan><tspan
  266 + id="tspan2523"
  267 + y="465.85733"
  268 + x="124.48354" /></text>
  269 + </g>
  270 + </g>
  271 +</svg>
BIN  tutorial/win.pdf
Binary file not shown

0 comments on commit da3d6f4

Please sign in to comment.
Something went wrong with that request. Please try again.