Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Manos: web apps for the lazy hacker

Manos: web apps for the lazy hacker

Web development is a world of its own and the old-school hacker within us tends to be mystified by all these Macbook people talking about weird stuff like Rails, RESTful or NodeJS.\r\n\r\nBut have no worries, this talk is for you (who always thought web development wasn't your cup of tea) and it will walk you through the steps of building a web application using Manos, the easy to use, high performance web application framework that stays out of your way and makes your life ridiculously simple.\r\n\r\nForget about MVC, forget about ASP.NET, we are here to bring the fun of hacking into web development.

Jérémie Laval

May 24, 2011
Tweet

More Decks by Jérémie Laval

Other Decks in Technology

Transcript

  1. Manos Web apps for the lazy hacker Jérémie Laval http://blog.neteril.org

    http://twitter.com/jeremie_laval IRC garuma on #manos @ GIMPNet.org
  2. Personal context Manos Taking a tour: Apachaï Closing note Background

    ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic 2 / 23
  3. Personal context Manos Taking a tour: Apachaï Closing note Background

    ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic ¤ <Alarm sound ringing /> 2 / 23
  4. Personal context Manos Taking a tour: Apachaï Closing note Background

    ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic ¤ <Alarm sound ringing /> ¤ Moved on to C# / desktop coding 2 / 23
  5. Personal context Manos Taking a tour: Apachaï Closing note But

    wait, web has gotten better ¤ HTML 5, is that a title? 4 / 23
  6. Personal context Manos Taking a tour: Apachaï Closing note But

    wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend 4 / 23
  7. Personal context Manos Taking a tour: Apachaï Closing note But

    wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend ¤ Javascript, more than animated cursor 4 / 23
  8. Personal context Manos Taking a tour: Apachaï Closing note But

    wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend ¤ Javascript, more than animated cursor What about .NET web application frameworks? 4 / 23
  9. Personal context Manos Taking a tour: Apachaï Closing note Once

    upon a time... Someone was wrong on the Internet 5 / 23
  10. Personal context Manos Taking a tour: Apachaï Closing note They

    created ASP (Hint: VBScript as a default language) 6 / 23
  11. Personal context Manos Taking a tour: Apachaï Closing note Tried

    to fix it ASP <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="true" IncludeStyleBlock="false" Orientation="Horizontal"> <Items> <asp:MenuItem NavigateUrl="/Default.aspx" Text="Home" /> <asp:MenuItem NavigateUrl="/About.aspx" Text="About" /> <asp:MenuItem NavigateUrl="/Students.aspx" Text="Students"> <asp:MenuItem NavigateUrl="/StudentsAdd.aspx" Text="Add Students" /> </asp:MenuItem> </Items> </asp:Menu> 8 / 23
  12. Personal context Manos Taking a tour: Apachaï Closing note Truth

    told It's apparently better today 10 / 23
  13. Personal context Manos Taking a tour: Apachaï Closing note In

    real (hacker) life All too bloated 11 / 23
  14. Personal context Manos Taking a tour: Apachaï Closing note What

    I wanted ¤ KISS (Keep It Simple Stupid) 12 / 23
  15. Personal context Manos Taking a tour: Apachaï Closing note What

    I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way 12 / 23
  16. Personal context Manos Taking a tour: Apachaï Closing note What

    I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff 12 / 23
  17. Personal context Manos Taking a tour: Apachaï Closing note What

    I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff What I really need is a lib that talks HTTP 12 / 23
  18. Personal context Manos Taking a tour: Apachaï Closing note What

    I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff What I really need is a lib that talks HTTP But a bit more sophisticated than HttpListener 12 / 23
  19. Personal context Manos Taking a tour: Apachaï Closing note But

    for real ( Jackson Harper, Manos creator and cartel manager during his free time ) 15 / 23
  20. Personal context Manos Taking a tour: Apachaï Closing note What's

    Manos in the end ¤ Standalone HTTP server 16 / 23
  21. Personal context Manos Taking a tour: Apachaï Closing note What's

    Manos in the end ¤ Standalone HTTP server ¤ Evented IO 16 / 23
  22. Personal context Manos Taking a tour: Apachaï Closing note What's

    Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP 16 / 23
  23. Personal context Manos Taking a tour: Apachaï Closing note What's

    Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP ¤ Not tied to any content/template framework 16 / 23
  24. Personal context Manos Taking a tour: Apachaï Closing note What's

    Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP ¤ Not tied to any content/template framework ¤ Code just with C# and a couple of attributes 16 / 23
  25. Personal context Manos Taking a tour: Apachaï Closing note Bootstraping

    How it all begun $ manos -i apachai initing: apachai $ manos -b COMPILING SOLUTION: '0' '/home/jeremie/mono/manostest/apachai' /usr/local/lib/manos/Manos.dll $ cd apachai $ manos -s Running apachai.apachai on port 8080. 17 / 23
  26. Personal context Manos Taking a tour: Apachaï Closing note Setting

    up handlers Simply getting a root page [Route ("/")] public void Index (IManosContext ctx) { Log.Info ("Woohoo, someone visited our website"); ctx.Response.SendFile (Path.Combine ("Templates", "base.html")); ctx.Response.End (); } 18 / 23
  27. Personal context Manos Taking a tour: Apachaï Closing note Setting

    up handlers Route handling delegated to external modules public Apachai () { Route ("/Content/", (staticContent = new StaticContentModule ("Content"))); Route ("/Pictures/", new PictureContentModule ()); AddPipe (new Manos.Util.AccessLogger ("access.log")); } 19 / 23
  28. Personal context Manos Taking a tour: Apachaï Closing note Giving

    back JSON Nothing special really [Route ("/visits")] public void Visits (IManosContext ctx) { var cookie = ctx.Request.Cookies.Get ("foobar-apachai"); if (string.IsNullOrEmpty (cookie)) { ctx.Response.StatusCode = 404; ctx.Response.End (); } else { var counter = visits[cookie]; ctx.Response.End (string.Format ("{{ \"count\" : {0} }}", counter)); } } 20 / 23
  29. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr 21 / 23
  30. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) 21 / 23
  31. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling 21 / 23
  32. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven 21 / 23
  33. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven ¤ Redis backed 21 / 23
  34. Personal context Manos Taking a tour: Apachaï Closing note What's

    Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven ¤ Redis backed ¤ https://github.com/garuma/apachai 21 / 23
  35. Personal context Manos Taking a tour: Apachaï Closing note Releasing

    season ¤ Manos 0.1.2 released! £ https://github.com/jacksonh/manos/tarball/v0.1.2 23 / 23
  36. Personal context Manos Taking a tour: Apachaï Closing note Releasing

    season ¤ Manos 0.1.2 released! £ https://github.com/jacksonh/manos/tarball/v0.1.2 ¤ Apachaï 1.0 released! £ https://github.com/garuma/apachai/tarball/1.0 23 / 23