Your SlideShare is downloading. ×
Manos: web apps for the lazy hacker
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Manos: web apps for the lazy hacker

738
views

Published on

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. …

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.

But 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.

Forget about MVC, forget about ASP.NET, we are here to bring the fun of hacking into web development.

Published in: Technology, Design

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
738
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Manos Web apps for the lazy hacker Jérémie Laval http://blog.neteril.org http://twitter.com/jeremie_lavalIRC garuma on #manos @ GIMPNet.org
  • 2. Personal context Manos Taking a tour: Apachaï Closing noteBackground 2 / 23
  • 3. Personal context Manos Taking a tour: Apachaï Closing noteBackground¤ Doing HTML pages when I was young 2 / 23
  • 4. Personal context Manos Taking a tour: Apachaï Closing noteBackground¤ Doing HTML pages when I was young¤ Sprinkled ugly PHP to make it dynamic 2 / 23
  • 5. Personal context Manos Taking a tour: Apachaï Closing noteBackground¤ Doing HTML pages when I was young¤ Sprinkled ugly PHP to make it dynamic¤ <Alarm sound ringing /> 2 / 23
  • 6. Personal context Manos Taking a tour: Apachaï Closing noteBackground¤ 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
  • 7. Personal context Manos Taking a tour: Apachaï Closing noteBackground Disclaimer 3 / 23
  • 8. Personal context Manos Taking a tour: Apachaï Closing noteBut wait, web has gotten better 4 / 23
  • 9. Personal context Manos Taking a tour: Apachaï Closing noteBut wait, web has gotten better¤ HTML 5, is that a title? 4 / 23
  • 10. Personal context Manos Taking a tour: Apachaï Closing noteBut wait, web has gotten better¤ HTML 5, is that a title?¤ CSS 3, non-designer best friend 4 / 23
  • 11. Personal context Manos Taking a tour: Apachaï Closing noteBut wait, web has gotten better¤ HTML 5, is that a title?¤ CSS 3, non-designer best friend¤ Javascript, more than animated cursor 4 / 23
  • 12. Personal context Manos Taking a tour: Apachaï Closing noteBut 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
  • 13. Personal context Manos Taking a tour: Apachaï Closing noteOnce upon a time... Someone was wrong on the Internet 5 / 23
  • 14. Personal context Manos Taking a tour: Apachaï Closing noteThey created 6 / 23
  • 15. Personal context Manos Taking a tour: Apachaï Closing noteThey created ASP 6 / 23
  • 16. Personal context Manos Taking a tour: Apachaï Closing noteThey created ASP (Hint: VBScript as a default language) 6 / 23
  • 17. Personal context Manos Taking a tour: Apachaï Closing noteHmmm...7 / 23
  • 18. Personal context Manos Taking a tour: Apachaï Closing noteTried 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
  • 19. Personal context Manos Taking a tour: Apachaï Closing noteHmmm...9 / 23
  • 20. Personal context Manos Taking a tour: Apachaï Closing noteTruth told Its apparently better today 10 / 23
  • 21. Personal context Manos Taking a tour: Apachaï Closing noteIn real (hacker) life All too bloated 11 / 23
  • 22. Personal context Manos Taking a tour: Apachaï Closing noteWhat I wanted12 / 23
  • 23. Personal context Manos Taking a tour: Apachaï Closing noteWhat I wanted¤ KISS (Keep It Simple Stupid) 12 / 23
  • 24. Personal context Manos Taking a tour: Apachaï Closing noteWhat I wanted¤ KISS (Keep It Simple Stupid)¤ Let me code my way 12 / 23
  • 25. Personal context Manos Taking a tour: Apachaï Closing noteWhat I wanted¤ KISS (Keep It Simple Stupid)¤ Let me code my way¤ Integrate with existing stuff 12 / 23
  • 26. Personal context Manos Taking a tour: Apachaï Closing noteWhat 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
  • 27. Personal context Manos Taking a tour: Apachaï Closing noteWhat 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
  • 28. Personal context Manos Taking a tour: Apachaï Closing noteBut have no fear A hero came13 / 23
  • 29. Personal context Manos Taking a tour: Apachaï Closing noteOften pictured as14 / 23
  • 30. Personal context Manos Taking a tour: Apachaï Closing noteBut for real ( Jackson Harper, Manos creator and cartel manager during his free time ) 15 / 23
  • 31. Personal context Manos Taking a tour: Apachaï Closing noteWhats Manos in the end16 / 23
  • 32. Personal context Manos Taking a tour: Apachaï Closing noteWhats Manos in the end¤ Standalone HTTP server16 / 23
  • 33. Personal context Manos Taking a tour: Apachaï Closing noteWhats Manos in the end¤ Standalone HTTP server¤ Evented IO16 / 23
  • 34. Personal context Manos Taking a tour: Apachaï Closing noteWhats Manos in the end¤ Standalone HTTP server¤ Evented IO¤ Parse and produce plain old HTTP16 / 23
  • 35. Personal context Manos Taking a tour: Apachaï Closing noteWhats Manos in the end¤ Standalone HTTP server¤ Evented IO¤ Parse and produce plain old HTTP¤ Not tied to any content/template framework16 / 23
  • 36. Personal context Manos Taking a tour: Apachaï Closing noteWhats 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 attributes16 / 23
  • 37. Personal context Manos Taking a tour: Apachaï Closing noteBootstraping 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
  • 38. Personal context Manos Taking a tour: Apachaï Closing noteSetting 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
  • 39. Personal context Manos Taking a tour: Apachaï Closing noteSetting 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
  • 40. Personal context Manos Taking a tour: Apachaï Closing noteGiving 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
  • 41. Personal context Manos Taking a tour: Apachaï Closing noteWhats Apachaï Picture uploading for the rest of us http://apch.fr21 / 23
  • 42. Personal context Manos Taking a tour: Apachaï Closing noteWhats Apachaï Picture uploading for the rest of us http://apch.fr¤ Leverage TrollStation (Twitter) and Pinta (Effects)21 / 23
  • 43. Personal context Manos Taking a tour: Apachaï Closing noteWhats Apachaï Picture uploading for the rest of us http://apch.fr¤ Leverage TrollStation (Twitter) and Pinta (Effects)¤ TagLib# for metadata handling21 / 23
  • 44. Personal context Manos Taking a tour: Apachaï Closing noteWhats Apachaï Picture uploading for the rest of us http://apch.fr¤ Leverage TrollStation (Twitter) and Pinta (Effects)¤ TagLib# for metadata handling¤ JSON and AJAX driven21 / 23
  • 45. Personal context Manos Taking a tour: Apachaï Closing noteWhats 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 backed21 / 23
  • 46. Personal context Manos Taking a tour: Apachaï Closing noteWhats 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/apachai21 / 23
  • 47. Personal context Manos Taking a tour: Apachaï Closing noteFuture driven processing22 / 23
  • 48. Personal context Manos Taking a tour: Apachaï Closing noteReleasing season¤ Manos 0.1.2 released! £ https://github.com/jacksonh/manos/tarball/v0.1.223 / 23
  • 49. Personal context Manos Taking a tour: Apachaï Closing noteReleasing 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.023 / 23