1. new in this version
  2. build a web 2.0 app in happstack
  3. why happstack is cool
  4. getting started with happstack
  5. prerequisites
  6. cabal install me
  7. first shot at happstack
  8. url handling
  9. basic HTML inclusion
  10. templates
  11. stringtemplate basics
  12. debugging
  13. form data: get and post
  14. form data: file uploads
  15. cookies
  16. introduction to macid
  17. first steps with macid
  18. scaling with multimaster
  19. using macid safely
  20. macid dummy data
  21. changing the data model
  22. macid stress test
  23. limitations of macid
  24. foreign characters
  25. IxSets
  26. cron jobs
  27. thanks
  28. appendix (floundering in ghci)

Feedback

Got feedback?

I created a happs tutorial feedback thread at happs googlegroup. My preference would be for feedback on happs tutorial to go there, particularly if it fixes a problem or describes things to watch out for.

For what it's worth, here are somthings people have said about happstutorial in blogs, user groups, and private emails.


@tphyahoo Just wanted to thank you for your tutorial. I've used it to successfully create a blog-system (a pet project) in Haskell (http://gisli.hamstur.is/blog/). In the blog itself, which is in Icelandic, I'm going to explain the source code (http://gisli.hamstur.is/src/) to the Icelandic Haskell community (if one exists ;)

I was getting nowhere before finding your tutorial. There was however a slight feeling of set back when I realized that you hadn't written about HAppS-State. To my relief you were further along with the locally installed tutorial than happstutorial.com. Keep up the good work!

Best regards, Gísli (reddit)


Great work, thanks for the tutorials, they were definitely needed!

And the tutorial demo itself is awesome!

dons (reddit)



Thanks for the cool tutorial. I want to learn about HAppS but the
documentation is so poor there is nowhere to start. This is awesome

Justin Bailey

> What happens if your HAppS deployment server experiences a power outage?
> The way I deal with this both these issues with a public-facing happs application is to have a cron job that runs every minute, that will start the happs application if it isn't running.

I would definitely not recommend that solution. (in worst scenario you
get 1 min + session restore downtime).

Maybe you could try running happs in non-daemonizing mode under tools
like svadmin or http://supervisord.org/ , or use simple script like:

#!bash
while [ 1 ]
do
echo $(date) - restart
RUN_HAPPS_IN_NON_DAEMON_MODE
sleep 1 # We do not want to DoS the server
done

If found this solution more reliable than cronjob.

It also has an advantage, because parent app is instantly notified of
children's death.

I also wanted to thank you for great tutorial - as RnD engineer I was
starring at Happs for some time, but lack of happs documentation
resulted in forgetting this project.

Marek Pułczyński