Skip to content
Browse files

Expanded more of the sections out. I'll expand the JPA section a bit …

…tomorrow hopefully.
  • Loading branch information...
1 parent b30fff1 commit 63c477caedcb825ed6b325fdf3935974bc1d6695 Derek Chen-Becker committed Sep 18, 2008
Showing with 75 additions and 10 deletions.
  1. +75 −10 book.txt
View
85 book.txt
@@ -24,7 +24,11 @@ installing Java (if required), installing Maven2, and then downloading
and running the HelloLift project zip. Of those three, I think
installing Maven is probably the most complex - Derek
-So you see 2 distinct Sections: Generalized info and intro, and getting into and building an app? Sounds good to me. -Tyler
+So you see 2 distinct Sections: Generalized info and intro, and
+getting into and building an app? Sounds good to me. -Tyler
+
+Next question is how much should assume about Scala knowledge? - Derek
+
--------------------
====== Intro Section ======
@@ -115,7 +119,8 @@ So you see 2 distinct Sections: Generalized info and intro, and getting into and
* Additional attributes
* If
* Unless
- * etc
+ * Test
+ * Title
* Templates
* Static xml that may embed or surround other templates, and may embed snippets (reference tag list)
* well-formed XML
@@ -143,25 +148,85 @@ So you see 2 distinct Sections: Generalized info and intro, and getting into and
... This may be Mapper, or it may be Record
6. AJAX and COMET
-- The Spreadsheet example is good, but potentially too complex for an illustrative example
-- The Clock is nice and nice, so maybe the Clock and the simple Chat service
+ * What is COMET?
+ * Method for async updates pushed *from server to client*
+ * Connection is kept open
+ * Streaming
+ * Long polling
+ * Scalability issues
+ * Using COMET in Lift
+ * CometActor
+ * Mine Jorge's blog post: http://scala-blogs.org/2007/12/dynamic-web-applications-with-lift-and.html
+ * Go through Dynamic chat room example
+ * What is AJAX?
+ * Method for async updates pulled from the client without a full page reload
+ * Relies heavily on javascript and XML
+ * Javascript client-side events (button push, timer, etc) trigger requests "behind the scenes"
+ * Web 2.0 built on this
+ * Using AJAX in Lift
+ * Allows you to bind Javascript events (AJAX) to form elements, links, etc
+ * Go through example HelloDarwin AJAX example
7. Deployment
-- Ask the list what they are deploying with
- - Jetty, resin, tomcat, whatever
+ - Ask the list what they are deploying with. Generally it shouldn't
+ be an issue where they deploy since Lift is essentially
+ self-contained. We can go into specifics for special cases, I
+ suppose
+
+ * Basic deployment via Jetty
+ * Brief overview of Jetty
+ * Capabilities
+ * Configuration
+ * SSL
+ * How jetty is configured in maven for testing
+ * Changing the default port (8080)
+ * Tips and tricks
+ * Deployment in Tomcat
+ * Packaging options (pom dependency scope)
+ * Deployment in JBoss
+ * Deployment in GlassFish
====== Advanced Topics ======
-8. Detailed request/response handling info
- - Track a request lifecycle
+8. Detailed request/response handling info (should cover how Actors are used, too)
+ 1. Request hits LiftFilter
+ 2. LiftFilter executes each item in LiftRules.early. This would allow you to do advance processing of the HttpRequest
+ 3. Rewrites occur per the LiftRules.rewriteTable (set up via LiftRules.addRewriteBefore/After)
+ 4. LiftFilter determines whether the request should be handled by Lift or if it should be chained. If the processing fails it's automatically chained
+ 5. Processing takes place via the LiftFilter's internal LiftServlet instance
+ 6. If Lift is running in Jetty, any continuations are invoked (explain a little about Jetty continuations here...). If continuation exists and returns a response, return
+ 7. LiftServlet checks LiftRules.statelessDispatchTable and returns if matched (what is this for?)
+ 8. LiftServlet checks LiftRules.dispatchTable (set up via LiftRules.addDispatchBefore/After) and if dispatches match it dispatches there and returns the result
+ * detail dispatch handling
+ 9. LiftServlet then checks to see if the request starts with LiftRules.cometPath (default "comet_request") and if so, handles the request as a COMET request
+ * detail COMET handling path
+ 10. LiftServlet then checks to see if the request starts with LiftRules.ajaxPath (default "ajax_request") and if so, handles the request as an AJAX request
+ * detail AJAX handling
+ 11. If nothing else has occurred, do normal template processing at this point
+ 1. Lookup template based on path
+ 2. Process template recursively (surround, include, etc)
+ * Additional topics
+ * S.addAround and LoanWrapper
+ * How S.attr works in conjunction with XML attributes on snippets, etc and with Rewriting
9. URL Rewriting
- * Why and how?
+ * What is URL rewriting
+ * Using LiftRules.addRewriteBefore.After
+ * What constitutes a rewrite function?
+ * Using the params Map to pass parts of the path back into your code via S.param
* Example: user-friendly URLs
10. JSON handling
- * this is getting used more often so this is important
+ * What is JSON?
+ * Technically, just a data format for Javascript (http://www.json.org/)
+ * Used as an RPC transfer format
+ * Well-suited to AJAX because it's essentially javascript
+ * How does Lift support JSON?
+ * JsonHandler allows simple wrapping and processing of JSON (AJAX) forms
+ * JsonCmd allows matching of submitted JSON
+ * Go through example JSON/AJAX submission form. Maybe it would be best to make
+ it an extension of one of the other examples?
11. JsCommands
* Integrated javascript handling without hard-coding it in templates

0 comments on commit 63c477c

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