[Lift] Re: A Critique On Lift
jlist9, This is a Lift group, but I have to say I feel the same about Scala. I had to ask for advice here: http://groups.google.com/group/liftweb/browse_thread/thread/a588f997af842f93/60c378bb36d26030 Scala may help me to get my work done for the day. But I don't feel happy with Scala. Scala makes me feel I'm a slave all the day to machines (or Scala itself!). On Oct 22, 2:13 pm, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
You're right, my bad - an old pom was looking at the wrong repo, all happy now. Cheers Jono 2009/10/22 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 10:27 PM, Jonathan Ferguson j...@spiralarm.comwrote: Do we need to update our pom's or should it be code changes only ? You likely only need to make the code change... at least that's been the case for all the projects I've converted. Cheers Jono 2009/10/22 David Pollak feeder.of.the.be...@gmail.com Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: How do I pass information between a Comet Actor and a StatefulSnippet ?
2009/10/22 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 8:46 PM, Jonathan Ferguson j...@spiralarm.comwrote: I have a StatefulSnippet that uses a CometActor to keep users informed when performing a lengthy task, much like the example on the demo site ( http://demo.liftweb.net/longtime). The only difference being I pass the CometActor an identifier so it knows which job to inform the user about. When the task is over I need to display a form to the user, which I would assume would be rendered by the snippet. How does the actor tell the snippet the task is complete ? The Actor has to know about the snippet... you could send the Actor a message with a reference to the snippet and then call a method on the snippet when the Actor is done. Does that do it for you? I don't see how I can I do that. Currently the comet actor is setup in a snippet, see below, how do get a reference to the actor to send it a message ? lift:comet type=WatchDog name={id} span id=statustwd:statusWatch dog status/twd:status/span /lift:comet The id being passed via the name parameter is a reference the job to monitor. I mention this only as I'm not sure if it's bad form or not. I assuming it is trivial and I've thought or coded myself into a corner. Thanks in advance. Jono -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
On Oct 22, 2:02 am, ngocdaothanh ngocdaoth...@gmail.com wrote: jlist9, This is a Lift group, but I have to say I feel the same about Scala. I had to ask for advice here:http://groups.google.com/group/liftweb/browse_thread/thread/a588f997a... Scala may help me to get my work done for the day. But I don't feel happy with Scala. Scala makes me feel I'm a slave all the day to machines (or Scala itself!). If it makes you feel like a slave, why are you using Scala at all then? On Oct 22, 2:13 pm, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Programming is not a simple task, that's why we haven't been replaced by machines. Scala is a _very_ powerful language, and it _is_ a challenge to harness that power in addition to other languagues you have harnessed. However, I do not feel that Scala has much non-explainable complexity, as is the case of javas many-a boilerplate. From what I have seen, much of the barrier of going to Scala is that many people assume that going Java - Scala-y Java | Java-y Scala - Ideomatic Scala is the route to go. But the problem there is that sample Scala code is never Java-y Scala, so beginners get confused from not having learned about first-class functions and their syntax. (from my 2 years of Scala, what I've seen the pitfalls being) On Thu, Oct 22, 2009 at 7:13 AM, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. -- Viktor Klang | A complex system that works is invariably | found to have evolved from a simple system | that worked. - John Gall Blog: klangism.blogspot.com Twttr: viktorklang Code: github.com/viktorklang --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Guys, Im confused - Scala is not Java. This my friends, is a very good thing. You cant expect to start a language and be able to use all the advanced features right away I doubt you were a meta-programming ninja when learning ruby! Getting back on topic, I read the original link and I admit, it made me chuckle somewhat - the author kept referring to so-called rails bashing and then quoted a performance benchmark statement as being rails bashing; it is quite obviously a factual statement rather than anything aggressive. When your a new framework, people want reasons to entertain you and comparing against existing tools is the only way to do this. Regarding his comments on templating - perhaps its a personal preference, but I cant help feeling that he slightly didnt get the full picture as he only appears to have explored crudify rather than the full binding possibilities. Cheers, Tim On 22 Oct 2009, at 07:02, ngocdaothanh wrote: jlist9, This is a Lift group, but I have to say I feel the same about Scala. I had to ask for advice here: http://groups.google.com/group/liftweb/browse_thread/thread/a588f997af842f93/60c378bb36d26030 Scala may help me to get my work done for the day. But I don't feel happy with Scala. Scala makes me feel I'm a slave all the day to machines (or Scala itself!). On Oct 22, 2:13 pm, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
Hi, I've a few question regarding the changes made. - Firstly, with the changes made, how do I have a method which can now accept both scala Actor as well as a CometActor?? Prior to the changes, I had a function def registerActor(act: Actor) which could handle both scala Actor as well as CometActor,; now if I change this to def registerActor(act: GenericActor) it throws compilation error asking to a type to be specified for the GenericActor. What change would you suggest to have my code compile? - Secondly, I also get compilation error for calling scheduleAtFixedRate method on ActorPing. Says no such method. Has this method been deprecated and if so, what is the method I should be calling instead? Thanks, Soumik On Oct 22, 10:35 am, Indrajit Raychaudhuri indraj...@gmail.com wrote: Code change should suffice. pom.xml updates won't be necessary since lift-util has lift-common as dependency and your application (which must be having lift-util as dependency) would resolve the lift-common dependency transitively. Cheers, Indrajit On 22/10/09 10:57 AM, Jonathan Ferguson wrote: Do we need to update our pom's or should it be code changes only ? Cheers Jono 2009/10/22 David Pollak feeder.of.the.be...@gmail.com mailto:feeder.of.the.be...@gmail.com Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: * Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? * Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Because Lift's ad is so good. For example: Lift is the only new framework in the last four years to offer fresh and innovative approaches to web development. It's not just some incremental improvements over the status quo, it redefines the state of the art. If you are a web developer, you should learn Lift. Even if you don't wind up using it everyday, it will change the way you approach web applications. Lift can't be used without Scala. Is there a plan to implement Lift in Clojure, for example? :D On Oct 22, 3:47 pm, TylerWeir tyler.w...@gmail.com wrote: On Oct 22, 2:02 am, ngocdaothanh ngocdaoth...@gmail.com wrote: jlist9, This is a Lift group, but I have to say I feel the same about Scala. I had to ask for advice here:http://groups.google.com/group/liftweb/browse_thread/thread/a588f997a... Scala may help me to get my work done for the day. But I don't feel happy with Scala. Scala makes me feel I'm a slave all the day to machines (or Scala itself!). If it makes you feel like a slave, why are you using Scala at all then? On Oct 22, 2:13 pm, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
+1 Tim Viktor. Many people with this sort of background and Java web frameworks too find difficult to accept that we don't do MVC. Also they find difficult to accepts XML in Scala Snippets. When I presented Scala Lift at Transylvania JUG I got the same concerns ... What? ... markup in Scala code ? ... I realized that snippets are very often misunderstood. They are NOT controllers .. they are simple constructs to allow dynamic markup to be injected in the template. Of course one can abuse anything in any framework but this is besides the point. Scala is not Java as Tim said and Scala + XML makes perfect sense to me. Secondly people argue a lot having data models aware of the representation of the view - such as a Field to know how to render itself in a form etc. Personally I think that dumb objects holding nothing but setter/getters/equals/hashcode just moves you away from the OOP value. Having objects more context aware and hold the knowledge on how to represent themselves makes a lot of sense to me, and in practice I think this proved to be quite valuable. I accept that many people think that MVC is the Holly Grail, but I don't believe that ... and I think most people really using Lift don't believe that either. Br's, Marius On Oct 22, 11:21 am, Timothy Perrett timo...@getintheloop.eu wrote: Guys, Im confused - Scala is not Java. This my friends, is a very good thing. You cant expect to start a language and be able to use all the advanced features right away I doubt you were a meta-programming ninja when learning ruby! Getting back on topic, I read the original link and I admit, it made me chuckle somewhat - the author kept referring to so-called rails bashing and then quoted a performance benchmark statement as being rails bashing; it is quite obviously a factual statement rather than anything aggressive. When your a new framework, people want reasons to entertain you and comparing against existing tools is the only way to do this. Regarding his comments on templating - perhaps its a personal preference, but I cant help feeling that he slightly didnt get the full picture as he only appears to have explored crudify rather than the full binding possibilities. Cheers, Tim On 22 Oct 2009, at 07:02, ngocdaothanh wrote: jlist9, This is a Lift group, but I have to say I feel the same about Scala. I had to ask for advice here: http://groups.google.com/group/liftweb/browse_thread/thread/a588f997a... Scala may help me to get my work done for the day. But I don't feel happy with Scala. Scala makes me feel I'm a slave all the day to machines (or Scala itself!). On Oct 22, 2:13 pm, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In David's book he says After more than two years of coding Scala, ... My brain has finally stopped hurting. This sounds like a very high barrier to entry. I'm just wondering why Scala has to be so complicated. I'm sure a lot of things in Scala have their reasons but at the mean time I also suspect that many of the odd things are there to reduce typing, which is advertised as one of the advantages of this language - conciseness. (I could be very wrong due to my lack of understanding.) If the latter is true, I feel that I'd rather type a little more to make the code easier to read. Just feeling a little frustrated learning Scala. I think it's much easier learning Java. Not much surprise. Not sure if anyone shares my experience (and opinion, if there is one.) On Wed, Oct 21, 2009 at 3:56 PM, Randinn rand...@gmail.com wrote: http://localhost3000.de/2009/10/a-quick-glance-at-lift/ The site above is a blog post from a Rails developer, he had some good and bad things to say about Lift and since I do not know enough to debate with him I thought I'd post it here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Can't add model
David Pollak feeder.of.the.be...@gmail.com writes: On Wed, Oct 21, 2009 at 10:27 PM, Rahul Somasunderam rahul@gmail.comwrote: I followed the guide here: http://liftweb.net/docs/getting_started/mod_master.html I'm unable to add the model ToDo. When I try to add it, I get a compilation failure: Description ResourcePathLocationType not found: value MyTask MyTask.scala/hixcore/src/main/scala/com/hixop/ model Unknown Scala Problem Where do you get the compilation failure? That doesn't seem like the output of Maven. It looks like text from the Eclipse plugin... I guess I'm doing something totally wrong. Can someone please help me on this one? Haven't seen your code so difficult to say :-) But the code in the tutorial doesn't have anything named MyTask. You've probably renamed something and forgot some places /Jeppe --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Fwd: Build failed in Hudson: Lift #1307
Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-testkit-1.1-SNAPSHOT.jar [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-testkit-1.1-SNAPSHOT.jar to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-testkit-1.1-SNAPSHOT-sources.jar to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'snapshot net.liftweb:lift-testkit:1.1-SNAPSHOT' [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT-sources.jar 10K uploaded (lift-testkit-1.1-SNAPSHOT-sources.jar) [INFO] Preparing surefire-report:report-only [INFO] No goals needed for project - skipping [INFO] [site:site] [INFO] Generating Project Team report. [INFO] Generating Issue Tracking report. [INFO] Generating Surefire Report report. [WARNING] Unable to locate Test Source XRef to link to - DISABLED [INFO] Generating Dependency Management report. [INFO] Generating Project Plugins report. [INFO] Generating Continuous Integration report. [INFO] Generating Dependencies report. [INFO] Generating Source Repository report. [INFO] Generating Plugin Management report. [INFO] Generating Mailing Lists report. [INFO] Generating Project Summary report. [INFO] Generating About report. [INFO] Generating ScalaDocs report. Downloading: http://scala-tools.org/repo-snapshots/org/scala-tools/vscaladoc/1.2-SNAPSHOT/vscaladoc-1.2-SNAPSHOT.jar [INFO] load packageLinkDefs from : http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/../vscaladocs-packageLinkDefs.properties [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for overview [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for all-classes (list) [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write index.html [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write doc for each classes [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (org.apache.commons.httpclient, HttpClient, false [INFO] failed to find baseUri for (org.apache.commons.httpclient, HttpClient, false [INFO] failed to find baseUri for
[Lift] Re: **Breaking Changes** **README** **Important**
- Secondly, I also get compilation error for calling scheduleAtFixedRate method on ActorPing. Says no such method. Has this method been deprecated and if so, what is the method I should be calling instead? I have this problem also. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Submitting a form and returning results
Hi, I'm having trouble working out how to do a really simple thing - submit a form and return some results. Imagine a simple page that took a name of a person to search for, and displayed a list of people matching that name. I've put together a dummy example to show you what I've tried : So the view is pretty simple : lift:PeopleSearchSnippet.searchForPeople form=post table tr tdFind People !/td tdpeopleSearch:nameToSearchForValue to search on/peopleSearch:nameToSearchFor/td /tr tr tdnbsp;/td tdpeopleSearch:submitbuttonFind People/ button/peopleSearch:submit/td /tr tr td colspan=2peopleSearch:searchResultsValue to search on/peopleSearch:searchResults/td /tr /table /lift:PeopleSearchSnippet.searchForPeople The snippet is : class PeopleSearchSnippet { def searchForPeople(form: NodeSeq) = { val search = PeopleSearch.create println(\n\n \n--- \n +search) def performSearch(): Unit = search.validate match { case Nil = performSearchOn(search) case xs = S.error(xs); S.mapSnippet (PeopleSearchSnippet.searchForPeople, doBind) } def doBind(form: NodeSeq) = { bind(peopleSearch, form, nameToSearchFor - search.nameToSearchFor.toForm, submit - submit(Search For People, performSearch), searchResults - renderResults(search) ) } doBind(form) } /** * Dummy render method which would render the search results */ def renderResults(search: PeopleSearch) = { // Just make some dummy results if they actually performed a search // If done for real, it would render the results on the search:PeopleSearch object if (search.nameToSearchFor != ) { List(dave smith, jimmy cracked corn, lazy t. bones).foldLeft (List[Elem]())((x, y) = div{y}/div :: x) } else { divNo search done yet/div } } /** * Dummy method that would do a search, save some results to be rendered to the view */ def performSearchOn(search: PeopleSearch) = { println(Searching on +search) // This would populate the results to display if done for real, // so that renderResults() method could render the search results into html search.save } I think I know whats going wrong, but I'm not really sure how to get Lift to do what I'm after. The problem is that when renderResults() is called, the search value (nameToSearchFor) is always empty. But when the submit button is clicked, the performSearchOn method has a populated search value. I think the reason is that performSearch() is bound to the submit action in doBind() - and is executed when a form submit is done - but the searchResults value is bound before that method is actually called - hence its always got empty search values. I guess its because I'm expecting List to be doing something I don't quite understand, based on my experience with MVC frameworks like Spring MVC etc. In my mind, the process is submit form, use object to perform search on, populate the results, render the page, but obviously thats not whats going on. Any help on how to achieve my aim (ie submit a form, render some results) would be most appreciated, Thanks, Ben --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
DPP (and I) recommend just doing schedule and then re-schedule after message recieved. schedule(actor,MyMsg(),3 seconds) in the actor { case MyMsg() = { doMyStuff schedule(this,MyMsg(),3 seconds) } } Makes sense? On Thu, Oct 22, 2009 at 12:37 PM, george geo...@mattandgeorge.com wrote: - Secondly, I also get compilation error for calling scheduleAtFixedRate method on ActorPing. Says no such method. Has this method been deprecated and if so, what is the method I should be calling instead? I have this problem also. -- Viktor Klang | A complex system that works is invariably | found to have evolved from a simple system | that worked. - John Gall Blog: klangism.blogspot.com Twttr: viktorklang Code: github.com/viktorklang --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
Guys, Prior to the changes, I had a function def registerActor(act: Actor) which could handle both scala Actor as well as CometActor,; now if I change this to def registerActor(act: GenericActor) it throws compilation error asking to a type to be specified for the GenericActor. What change would you suggest to have my code compile? Checkout the declaration: trait GenericActor[R] extends TypedActor[Any, R] You need to pass it a type argument to populate R in order for your code to compile. - Secondly, I also get compilation error for calling scheduleAtFixedRate method on ActorPing. Says no such method. Has this method been deprecated and if so, what is the method I should be calling instead? If I remember rightly there was a discussion about this on list not so long ago - looking at the code, scheduleAtFixedRate has been removed. The preferred idiom is to generally have a method that reschedules the actor on every ping. Cheers, Tim --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Fwd: Build failed in Hudson: Lift #1307
Hmm how strange - it builds fine locally? Cheers, Tim On Oct 22, 10:56 am, David Pollak feeder.of.the.be...@gmail.com wrote: Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li ft-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'snapshot net.liftweb:lift-testkit:1.1-SNAPSHOT' [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li ft-testkit-1.1-SNAPSHOT-sources.jar 10K uploaded (lift-testkit-1.1-SNAPSHOT-sources.jar) [INFO] Preparing surefire-report:report-only [INFO] No goals needed for project - skipping [INFO] [site:site] [INFO] Generating Project Team report. [INFO] Generating Issue Tracking report. [INFO] Generating Surefire Report report. [WARNING] Unable to locate Test Source XRef to link to - DISABLED [INFO] Generating Dependency Management report. [INFO] Generating Project Plugins report. [INFO] Generating Continuous Integration report. [INFO] Generating Dependencies report. [INFO] Generating Source Repository report. [INFO] Generating Plugin Management report. [INFO] Generating Mailing Lists report. [INFO] Generating Project Summary report. [INFO] Generating About report. [INFO] Generating ScalaDocs report. Downloading:http://scala-tools.org/repo-snapshots/org/scala-tools/vscaladoc/1.2-S... [INFO] load packageLinkDefs from :http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/../vscaladocs-... [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for overview [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for all-classes (list) [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write index.html [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write doc for each classes [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (org.apache.commons.httpclient, HttpClient, false [INFO] failed to find baseUri for
[Lift] Re: A Critique On Lift
Well said that man! Couldn't agree more with this statement. Cheers, Tim On Oct 22, 9:43 am, Marius marius.dan...@gmail.com wrote: I accept that many people think that MVC is the Holly Grail, but I don't believe that ... and I think most people really using Lift don't believe that either. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
ok so.. object LocalSmtp extends Actor should become object LocalSmtp extends GenericActor[LocalSmtp] ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Newbie question: action beforeSave data
Hi all, this is my first post, but I read you always, so I apologize if it appear so simple. I am tasting this sensational web framework. I'll try to explain using a simple and basic example. Consider a post mapper model with a mappedString object named permalink I'd like to set this db field with something like this (defined in my snippet) pre private def set_permalink(input : String) = { val pattern1 = \s+.r val pattern2 = /[^a-zA-Z0-9_]+/.r pattern1 replaceAllIn(pattern2 replaceAllIn(input.toLowerCase, ), -) } /pre My snippet look like this pre class ArticleSnippet extends StatefulSnippet{ var _permalink = S.param(title).map(_.toString) openOr welcome def add(form: NodeSeq) : NodeSeq = { /** I am in wrong here **/ val article = Article.create.owner(User.currentUser) .created_at(entryDate).permalink(set_permalink(_permalink)) . def doBind(form: NodeSeq) = bind(article, form, title - post.title.toForm, submit - submit(Save, ) ) } } /pre My saved posts always have welcome as value for permalink field. Could anyone give me any suggestion about it? I appreciate a lot this group. Thanks in adavce for your replies. Regards, Wibble --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
override def validations = validPriority _ :: super.validations funny, I had stumbled on exactly the same line of code when beginning. Took me more than a day to understand what's going on. Especially because when you copied code from the PDF version of the Liftbook/Lift getting started guide, it would mess up spaces, so I would keep loooking for a _:: operator. The Scala guys have really pushed it a bit hard on the use of the underscore. At least four different uses: - it for defining anonymous functions like above - default value - matching placeholder whose value is ignored - use for constructing setter method names boolean functions (empty_?) --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
I think this is a bit of a running joke in the scala comunity right now - your right, underscore really does have a number of meanings; I think this will be changed in some future Scala release. Your also forgetting: import some.package._ Cheers, Tim On 22 Oct 2009, at 12:57, tiro wrote: underscore. At least four different uses: - it for defining anonymous functions like above - default value - matching placeholder whose value is ignored - use for constructing setter method names boolean functions (empty_?) --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] New update changed something?
So I was running everything for my program fine last night. Got on this morning, updated scala when compiling and I am getting a lot of: error: not found: value Box error: value map is not a member error: value openOr is not a member of Nothing etc. Was there a big update changing a bunch of these things, or did I change some code to break all of this? I'm pretty sure I haven't made any significant changes. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: New update changed something?
Umm, http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en On Oct 22, 9:55 am, caw1461 caw1...@gmail.com wrote: So I was running everything for my program fine last night. Got on this morning, updated scala when compiling and I am getting a lot of: error: not found: value Box error: value map is not a member error: value openOr is not a member of Nothing etc. Was there a big update changing a bunch of these things, or did I change some code to break all of this? I'm pretty sure I haven't made any significant changes. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Trouble With JPA Book Example
Are you using OpenJDK by any chance? IIRC the YUI compressor doesn't like it. Derek On Wed, Oct 21, 2009 at 6:58 PM, AndyM andrewdm...@gmail.com wrote: Sorry about the spam. I was using 2.75 not 2.7.5.. Feel free to delete the above posts. More errors though. spa builds fine, web does not... INFO] null [INFO] [INFO] Trace java.lang.RuntimeException at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceNumber (JavaScriptCompressor.java:299) at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse (JavaScriptCompressor.java:335) at com.yahoo.platform.yui.compressor.JavaScriptCompressor.init (JavaScriptCompressor.java:532) at net.sf.alchim.mojo.yuicompressor.YuiCompressorMojo.processFile (YuiCompressorMojo.java:178) at net.sf.alchim.mojo.yuicompressor.MojoSupport.processDir (MojoSupport.java:151) at net.sf.alchim.mojo.yuicompressor.MojoSupport.execute (MojoSupport.java:105) at org.apache.maven.plugin.DefaultPluginManager.executeMojo (DefaultPluginManager.java:451) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals (DefaultLifecycleExecuto .. On Oct 21, 8:44 pm, AndyM andrewdm...@gmail.com wrote: That gets me one step closer, thanks, but then I still have problem. The next mvn install that I do gives me the following: 1 required artifact is missing. for artifact: com.foo.jpaweb:spa:jar:1.0-SNAPSHOT Another post had the same problem, said to do mvn install. I tried doing mvn install in the spa directory as well, gives me the same error. So I'm missing the artifcact that I'm trying to build? This doesn't make any sense. Ideas? On Oct 21, 7:48 am, Steve Swing steve.sw...@gmail.com wrote: Does mvn -Dscala.version=2.7.5 install work for you? If so you can define this in pom.xml files to avoid typing on the cmd- line every time you build: properties scala.version2.7.5/scala.version /properties On Oct 20, 8:38 pm, AndyM andrewdm...@gmail.com wrote: Still getting the same issue, with mvn -U archetype:generate \ -DarchetypeRepository=http://scala-tools.org/repo-snapshots\ -DarchetypeGroupId=net.liftweb \ -DarchetypeArtifactId=lift-archetype-jpa-basic \ -DarchetypeVersion=1.1-SNAPSHOT \ -DgroupId=com.foo.jpaweb \ -DartifactId=JPADemo \ -Dversion=1.0-SNAPSHOT On Oct 20, 7:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: For some reason the pom.xml files in the JPA archetypes referred to lift M4 rather than SNAPSHOT. I've pushed a change. Once the build ( http://hudson.scala-tools.org/job/Lift/1298/) is done, try re-executing your mvn command (make sure you do a mvn -U to pull the latest). To the committers - sorry for not going through review board on this one, but it was a clear problem with a clear fix (kind of like pushing a fix to a type-o in documentation) On Tue, Oct 20, 2009 at 4:28 PM, AndyM andrewdm...@gmail.com wrote: I'm having trouble doing an mvn install on the JPA example from the book... mvn archetype:generate \ -DarchetypeRepository=http://scala-tools.org/repo-snapshots\ -DarchetypeGroupId=net.liftweb \ -DarchetypeArtifactId=lift-archetype-jpa-basic \ -DarchetypeVersion=1.1-SNAPSHOT \ -DgroupId=com.foo.jpaweb \ -DartifactId=JPADemo \ -Dversion=1.0-SNAPSHOT cd JPADemo mvn install org.apache.maven.reactor.MavenExecutionException: The POM expression: $ {scala.version} could not be evaluated. Reason: Expression value '$ {scala.version}' references itself in 'com.foo.jpaweb:JPADemo:pom:1.0- SNAPSHOT'. for project com.foo.jpaweb:JPADemo at /home/amast/lift/ bookexample/JPADemo/pom.xml at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:378) [deleted for brevity] at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.project.InvalidProjectModelException: The POM expression: ${scala.version} could not be evaluated. Reason: Expression value '${scala.version}' references itself in 'com.foo.jpaweb:JPADemo:pom:1.0-SNAPSHOT'. for project com.foo.jpaweb:JPADemo at /home/amast/lift/bookexample/JPADemo/pom.xml at org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal (DefaultMavenProjectBuilder.java:882) at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInte rnal (DefaultMavenProjectBuilder.java:506) ... [deleted for brevity] Caused by: org.apache.maven.project.interpolation.ModelInterpolationException: The POM expression: ${scala.version} could not be evaluated. Reason: Expression value
[Lift] Re: Dynamic radio button
I don't quite understand what you're trying to do. Could you give some more details? Are you trying to add more radios to an existing radio button set? On Wed, Oct 21, 2009 at 8:45 PM, sunanda sunanda.pa...@gmail.com wrote: Hi, I need to add radio button dynamically with one of the button checked and I need to invoke ajaxCall onclick of a radio button. How can I do this. Sunanda --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Submitting a form and returning results
Hi ben, def doBind(form: NodeSeq) = { bind(peopleSearch, form, nameToSearchFor - search.nameToSearchFor.toForm, submit - submit(Search For People, performSearch), searchResults - renderResults(search) ) } You’re relying on the order of execution in your call to bind; I think it is safe, can some guru confirm? The only thing I can point out is in renderResults: if (search.nameToSearchFor != ) You should use search.nameToSearchFor.is, but maybe some implicit is already doing that for you. I suppose you’re saving all searches to a database, is that why you’re using a mapped object for PeopleSearch? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Fwd: Build failed in Hudson: Lift #1307
It builds for me locally... On Thu, Oct 22, 2009 at 5:25 AM, Timothy Perrett timo...@getintheloop.euwrote: Hmm how strange - it builds fine locally? Cheers, Tim On Oct 22, 10:56 am, David Pollak feeder.of.the.be...@gmail.com wrote: Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'snapshot net.liftweb:lift-testkit:1.1-SNAPSHOT' [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT-sources.jar 10K uploaded (lift-testkit-1.1-SNAPSHOT-sources.jar) [INFO] Preparing surefire-report:report-only [INFO] No goals needed for project - skipping [INFO] [site:site] [INFO] Generating Project Team report. [INFO] Generating Issue Tracking report. [INFO] Generating Surefire Report report. [WARNING] Unable to locate Test Source XRef to link to - DISABLED [INFO] Generating Dependency Management report. [INFO] Generating Project Plugins report. [INFO] Generating Continuous Integration report. [INFO] Generating Dependencies report. [INFO] Generating Source Repository report. [INFO] Generating Plugin Management report. [INFO] Generating Mailing Lists report. [INFO] Generating Project Summary report. [INFO] Generating About report. [INFO] Generating ScalaDocs report. Downloading: http://scala-tools.org/repo-snapshots/org/scala-tools/vscaladoc/1.2-S... [INFO] load packageLinkDefs from : http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/../vscaladocs-... [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for overview [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for all-classes (list) [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write index.html [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write doc for each classes [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for
[Lift] Re: Fwd: Build failed in Hudson: Lift #1307
This is really odd. The 1.1 ScalaJPA doesn't have a def for getUnitName, that was added in 1.2-SNAPSHOT. The pom for lift-jta is specifying ScalaJPA 1.1, so I wonder if somehow a 1.2-SNAPSHOT jar is getting used instead. I'm going to remove the scalajpa stuff from ~hudson/.m2/repository on lion and see if that fixes it. Derek On Thu, Oct 22, 2009 at 8:47 AM, Derek Chen-Becker dchenbec...@gmail.comwrote: It builds for me locally... On Thu, Oct 22, 2009 at 5:25 AM, Timothy Perrett timo...@getintheloop.euwrote: Hmm how strange - it builds fine locally? Cheers, Tim On Oct 22, 10:56 am, David Pollak feeder.of.the.be...@gmail.com wrote: Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org [INFO] Uploading repository metadata for: 'snapshot net.liftweb:lift-testkit:1.1-SNAPSHOT' [INFO] Retrieving previous build number from hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/lift-testkit-1.1-SNAPSHOT-sources.jar 10K uploaded (lift-testkit-1.1-SNAPSHOT-sources.jar) [INFO] Preparing surefire-report:report-only [INFO] No goals needed for project - skipping [INFO] [site:site] [INFO] Generating Project Team report. [INFO] Generating Issue Tracking report. [INFO] Generating Surefire Report report. [WARNING] Unable to locate Test Source XRef to link to - DISABLED [INFO] Generating Dependency Management report. [INFO] Generating Project Plugins report. [INFO] Generating Continuous Integration report. [INFO] Generating Dependencies report. [INFO] Generating Source Repository report. [INFO] Generating Plugin Management report. [INFO] Generating Mailing Lists report. [INFO] Generating Project Summary report. [INFO] Generating About report. [INFO] Generating ScalaDocs report. Downloading: http://scala-tools.org/repo-snapshots/org/scala-tools/vscaladoc/1.2-S... [INFO] load packageLinkDefs from : http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/../vscaladocs-... [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for overview [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write page for all-classes (list) [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write index.html [WARNING] Oct 22, 2009 2:28:10 AM org.scala_tools.vscaladoc.HtmlRenderer render [WARNING] INFO: write doc for each classes [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for (net.liftweb.common, Box, false [INFO] failed to find baseUri for
[Lift] Re: Newbie question: action beforeSave data
Ok, I am sorry for my previous rubbish I solved the issue using vars in my Snippet and passing them to my Post instance to validate and save. regards, wibble On 22 Ott, 14:26, wibblecp wibbl...@gmail.com wrote: Hi all, this is my first post, but I read you always, so I apologize if it appear so simple. I am tasting this sensational web framework. I'll try to explain using a simple and basic example. Consider a post mapper model with a mappedString object named permalink I'd like to set this db field with something like this (defined in my snippet) pre private def set_permalink(input : String) = { val pattern1 = \s+.r val pattern2 = /[^a-zA-Z0-9_]+/.r pattern1 replaceAllIn(pattern2 replaceAllIn(input.toLowerCase, ), -) } /pre My snippet look like this pre class ArticleSnippet extends StatefulSnippet{ var _permalink = S.param(title).map(_.toString) openOr welcome def add(form: NodeSeq) : NodeSeq = { /** I am in wrong here **/ val article = Article.create.owner(User.currentUser) .created_at(entryDate).permalink(set_permalink(_permalink)) . def doBind(form: NodeSeq) = bind(article, form, title - post.title.toForm, submit - submit(Save, ) ) } } /pre My saved posts always have welcome as value for permalink field. Could anyone give me any suggestion about it? I appreciate a lot this group. Thanks in adavce for your replies. Regards, Wibble --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Fwd: Build failed in Hudson: Lift #1307
Same ocassional failure locally for me too. In fact, it mostly fails unless I am having a lucky day :) I keep getting confused about this and eventually get tempted to disable jta during build. FWIW, I am mostly on Leopard with Maven 2.2.1. Java 1.5 or 1.6 doesn't appear to make any difference. Cheers, Indrajit On 22/10/09 8:24 PM, David Pollak wrote: On Thu, Oct 22, 2009 at 7:47 AM, Derek Chen-Becker dchenbec...@gmail.com mailto:dchenbec...@gmail.com wrote: It builds for me locally... I randomly get that failure locally. On Thu, Oct 22, 2009 at 5:25 AM, Timothy Perrett timo...@getintheloop.eu wrote: Hmm how strange - it builds fine locally? Cheers, Tim On Oct 22, 10:56 am, David Pollak feeder.of.the.be...@gmail.com mailto:feeder.of.the.be...@gmail.com wrote: Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org mailto:ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org http://hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li http://scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li ft-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org http://hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org http://hudson.scala-tools.org [INFO] Uploading repository metadata for: 'snapshot net.liftweb:lift-testkit:1.1-SNAPSHOT' [INFO] Retrieving previous build number from hudson.scala-tools.org http://hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li http://scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li ft-testkit-1.1-SNAPSHOT-sources.jar 10K uploaded (lift-testkit-1.1-SNAPSHOT-sources.jar) [INFO] Preparing surefire-report:report-only [INFO] No goals needed for project - skipping [INFO] [site:site] [INFO] Generating Project Team report. [INFO] Generating Issue Tracking report. [INFO] Generating Surefire Report report. [WARNING] Unable to locate Test Source XRef to link to - DISABLED [INFO] Generating Dependency Management report. [INFO] Generating Project Plugins report. [INFO] Generating Continuous Integration report. [INFO] Generating Dependencies report. [INFO] Generating Source Repository report. [INFO] Generating Plugin Management report. [INFO] Generating Mailing Lists report. [INFO] Generating
[Lift] Re: Fwd: Build failed in Hudson: Lift #1307
Nice find. Never had the patience to dig. Thanks! - Indrajit On 22/10/09 8:38 PM, Derek Chen-Becker wrote: I can verify that the JAR on lion doesn't have the getUnitName def: de...@lion:/home/scalatools/hudson/.m2/repository/org/scala-libs/scalajpa/1.1$ javap -private -classpath scalajpa-1.1.jar org.scala_libs.jpa.ScalaEMFactory Compiled from ScalaEMFactory.scala public interface org.scala_libs.jpa.ScalaEMFactory extends scala.ScalaObject{ public abstract org.scala_libs.jpa.ScalaEntityManager newEM(); public abstract void closeEM(javax.persistence.EntityManager); public abstract javax.persistence.EntityManager openEM(); } Neither does the one on my mirror: dbec...@cpilift:/home/cpilift/www/repo-releases/org/scala-libs/scalajpa/1.1$ javap -private -classpath scalajpa-1.1.jar org.scala_libs.jpa.ScalaEMFactory Compiled from ScalaEMFactory.scala public interface org.scala_libs.jpa.ScalaEMFactory extends scala.ScalaObject{ public abstract org.scala_libs.jpa.ScalaEntityManager newEM(); public abstract void closeEM(javax.persistence.EntityManager); public abstract javax.persistence.EntityManager openEM(); } I have no idea how that def could be sneaking in there. Derek On Thu, Oct 22, 2009 at 8:54 AM, David Pollak feeder.of.the.be...@gmail.com mailto:feeder.of.the.be...@gmail.com wrote: On Thu, Oct 22, 2009 at 7:47 AM, Derek Chen-Becker dchenbec...@gmail.com mailto:dchenbec...@gmail.com wrote: It builds for me locally... I randomly get that failure locally. On Thu, Oct 22, 2009 at 5:25 AM, Timothy Perrett timo...@getintheloop.eu wrote: Hmm how strange - it builds fine locally? Cheers, Tim On Oct 22, 10:56 am, David Pollak feeder.of.the.be...@gmail.com mailto:feeder.of.the.be...@gmail.com wrote: Anyone have a clue as to why the JTA stuff in Lift is unstable on Hudson? -- Forwarded message -- From: ad...@scala-tools.org mailto:ad...@scala-tools.org Date: Thu, Oct 22, 2009 at 2:28 AM Subject: Build failed in Hudson: Lift #1307 See http://hudson.scala-tools.org/job/Lift/1307/changes Changes: [David Pollak] Temporary fix to allow Hudson to complete a build -- [...truncated 6079 lines...] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [HUDSON] Recording test results [INFO] [jar:jar] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] Preparing source:jar [WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation. [INFO] No goals needed for project - skipping [INFO] [source:jar {execution: attach-sources}] [INFO] Building jar: http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... [INFO] [install:install] [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT.jar [INFO] Installing http://hudson.scala-tools.org/job/Lift/ws/lift-testkit/target/lift-te... to /home/scalatools/hudson/.m2/repository/net/liftweb/lift-testkit/1.1-SNAPSHO T/lift-testkit-1.1-SNAPSHOT-sources.jar [INFO] [deploy:deploy] [INFO] Retrieving previous build number from hudson.scala-tools.org http://hudson.scala-tools.org Uploading: file:///home/ scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li http://scala-tools.org/www/repo-snapshots/net/liftweb/lift-testkit/1.1-SNAPSHOT/li ft-testkit-1.1-SNAPSHOT.jar 108K uploaded (lift-testkit-1.1-SNAPSHOT.jar) [INFO] Retrieving previous metadata from hudson.scala-tools.org http://hudson.scala-tools.org [INFO] Uploading repository metadata for: 'artifact net.liftweb:lift-testkit' [INFO] Uploading project information for lift-testkit 1.1-SNAPSHOT [INFO] Retrieving previous metadata from hudson.scala-tools.org http://hudson.scala-tools.org [INFO] Uploading
[Lift] Re: New update changed something?
On Thu, Oct 22, 2009 at 7:03 AM, TylerWeir tyler.w...@gmail.com wrote: Umm, http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en Any way to make this sticky? On Oct 22, 9:55 am, caw1461 caw1...@gmail.com wrote: So I was running everything for my program fine last night. Got on this morning, updated scala when compiling and I am getting a lot of: error: not found: value Box error: value map is not a member error: value openOr is not a member of Nothing etc. Was there a big update changing a bunch of these things, or did I change some code to break all of this? I'm pretty sure I haven't made any significant changes. -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: New update changed something?
Sure, just go to options on the web interface at the top of the thread and as moderator you should see a whole bunch of options. Cheers, Tim On 22 Oct 2009, at 16:22, David Pollak wrote: On Thu, Oct 22, 2009 at 7:03 AM, TylerWeir tyler.w...@gmail.com wrote: Umm, http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en Any way to make this sticky? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Weird request/transaction semantics
Hi, I posted this in another thread, but it may have been lost in the noise (or no one cared :-) Anyway, I have S.addAround(DB.buildLoanWrapper) in boot, which I assumed would wrap each request with a transaction and thus use the same connection for the duration of the request? I've added some logging around newConnection/releaseConnection. I was a little surprised to see that newConnection is called three times for each request? Is this intentional? I can see that a connection is also being made even for static files (such as css). This is not really a problem, but it would be nice to defer acquiring a connection until needed(since I now verify the connection by doing an actual statement on the db server :-) /Jeppe --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Yes. Typically one will only see a couple of Java-y Scala samples in the tutorials to show that you can write Scala the Java way to encourage Java developers to pick up Scala. However, in any real world applications and libraries you'll only see Scala-y Scala and that's where the disconnect is. I thought I could start reading some Scala code after reading a few tutorials and chapters in a Scala book but that wasn't the case. :-) However, I'm starting to see the power of Scala, while my head hurts trying to fit itself to functional thinking and the rich and confusing syntax (to a beginner at least.) On Thu, Oct 22, 2009 at 1:13 AM, Viktor Klang viktor.kl...@gmail.com wrote: But the problem there is that sample Scala code is never Java-y Scala, so beginners get confused from not having learned about first-class functions and their syntax. (from my 2 years of Scala, what I've seen the pitfalls being) --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite angered by gendered nouns. As a native English speaker, a table is an it, not a she (or he.) But fluent French speakers make gendered nouns a normal part of the language, and once skilled can use these subtleties with great skill. My 2 year learning curve for Scala can be summed up in the first 4 (or maybe 5) chapters of Beginning Scala. I sought to present my painful learning curve in 150 pages that could be reasonably consumed by a Java or Ruby or Python coder in a week or two. Yeah, it still takes a fair amount of practice, rehearsal, to be proficient, but if someone had led me down the path that I led my readers down, I think my pain-curve would have been 3-4 months, not two years. Put a different way, the Programming in Scala folks passed a couple of drafts of the first chapters of their book by me early on. I think PinS is a tredmendously awesome work, but I objected strongly to the show imperative first and gently migrate to functional approach they took. I thought it did a significant disservice to their readers. I took the opposite approach in BegSca... the second substantive example covers a broad spectrum of functional programming. So, getting to some of the substance of your post, as Tim pointed out, the _ is a running joke in Scala-land. Yep, it's way overloaded. Every time (and this happened at both Scala Lift Offs) Martin tries to justify the _'s use, people roll their eyes. On the other hand, the example that you gave is one of my proudest moments in Lift. Specifically, I think Mapper is a steaming pile of something. I am really dissatisfied with it (although we followed the same paradigm with Record and I'm unhappy with that as well... mostly from the mutability standpoint). On the other hand, the graceful way that Mapper deals with validators (they are functions and they are declared as a List that can be dynamically generated) is something that I look at and remember it being the first time I really felt like I got the power of Scala. When I developed that paradigm, I genuinely felt like Lift was going to be something different and better. So, I am truly sorry that you and others are struggling with Scala (yeah, everyone other than Martin and Adriaan and a few others struggle with Scala's type system, but most people didn't get General Relativity early on either) and I hope that we can present materials to you in a way that helps minimize the struggle. Thanks for sharing your thoughts and I hope this message has struck the tone I intend it to. David On Wed, Oct 21, 2009 at 10:13 PM, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. Interesting... this is one of the constructs in Lift that I find simple (and almost always have found simple). It's adding a validator to a list of validators. Having validators as functions was an early (while my mind was still mostly Java/Ruby) construct that, when I look at it says, this was something that still works. Mapper's general use of mutability, on the other hand, is something that very much does not work (although the syntactic cost of doing something else is still too high.) I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In this particular case, building an immutable list of of a new element and a prior element and the syntax for turning a method into a function are both very core concepts in Scala (and pretty core in Ruby as well, although the syntax is different). I do not view these as any more advanced than overriding methods in Java. The Scala skills needed to understand and consume most of Lift's APIs should not be part of the advanced piece of Scala. The advanced piece of Scala has to do with the type system and its interaction with OO. You can see the challenges that these advanced pieces of
[Lift] Re: S.deleteCookie broken in M6
File a ticket. It's Harry's tickets day for me today. The more you file, the more that get fixed. On Thu, Oct 22, 2009 at 9:03 AM, harryh har...@gmail.com wrote: S.deleteCookie appears to be broken in M6. I'm using ProtoExtendedSession to keep extended session state, and when I logout (and the ext_id cookie should be deleted), the following header is being sent back to the browser: Set-Cookie: ext_id=SIOKGDA3ZRNV0RC0DWA1J4REBR5JLKVI which does not delete the cookie. The user doesn't stay logged in since the row from the extended session table is deleted, but I'm trying to share logged in state with a legacy system (which I am rewriting) and this is causing me some issues. -harryh -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: S.deleteCookie broken in M6
File a ticket. Done It's Harry's tickets day for me today. The more you file, the more that get fixed. Oh my. That's really quite something there. -harryh --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Weird request/transaction semantics
There are a couple of things happening. First, there are at least 2 distinct times when we initialize the S context during a request handling cycle: - During the rewrite phase (if there's a session cookie) - During the substantive processing phase - If there's a cometactor on the page, S will be initialized twice per comet actor message processing (once during the testing of the message for ability to process and once during the message processing itself) On Thu, Oct 22, 2009 at 8:54 AM, Jeppe Nejsum Madsen je...@ingolfs.dkwrote: Hi, I posted this in another thread, but it may have been lost in the noise (or no one cared :-) Anyway, I have S.addAround(DB.buildLoanWrapper) in boot, which I assumed would wrap each request with a transaction and thus use the same connection for the duration of the request? I've added some logging around newConnection/releaseConnection. I was a little surprised to see that newConnection is called three times for each request? Is this intentional? I can see that a connection is also being made even for static files (such as css). This is not really a problem, but it would be nice to defer acquiring a connection until needed(since I now verify the connection by doing an actual statement on the db server :-) Lemme see what I can do about making it lazy... please open a ticket and I'll try to get to it today. /Jeppe -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: New update changed something?
On Thu, Oct 22, 2009 at 8:29 AM, Timothy Perrett timo...@getintheloop.euwrote: Sure, just go to options on the web interface at the top of the thread and as moderator you should see a whole bunch of options. I'm not seeing a make sticky option. I may be blind or stupid or both. Maybe Tyler can have a look. Cheers, Tim On 22 Oct 2009, at 16:22, David Pollak wrote: On Thu, Oct 22, 2009 at 7:03 AM, TylerWeir tyler.w...@gmail.com wrote: Umm, http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en Any way to make this sticky? -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Cannot build our lift app. Is net.liftweb.util OK?
Hello Lifters, After doing my morning build (mvn -U clean install), I am getting a huge number of errors mostly related to net.liftweb.util (see below). We are building against 1.1-SNAPSHOT. Is anyone else having this problem? Thanks in advance. Dan [INFO] Compiling 113 source files to C:\sandboxes\igo\trunk\baf\target \classes [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:43: error: not found: value Full [WARNING] case _ = Full(DocType.xhtmlStrict) [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\com\enthiosys \buyafeature\lib\PlexusMagic.scala:23: error: Failure is not a member of net.liftweb.util [WARNING] import net.liftweb.util.{Failure = BoxFailure} [WARNING]^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:73: error: not found: value Empty [WARNING] LiftRules.xhtmlValidator = Empty [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:77: error: type mismatch; --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
David, I think your response was well measured and appropriate. The analogy of linguistics is a good one :-) Without wanting to diverge this thread, can I ask why it is your unhappy with Record? Its been fairly fun to use so far and appears to work well. Cheers, Tim On 22 Oct 2009, at 17:04, David Pollak wrote: I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite angered by gendered nouns. As a native English speaker, a table is an it, not a she (or he.) But fluent French speakers make gendered nouns a normal part of the language, and once skilled can use these subtleties with great skill. My 2 year learning curve for Scala can be summed up in the first 4 (or maybe 5) chapters of Beginning Scala. I sought to present my painful learning curve in 150 pages that could be reasonably consumed by a Java or Ruby or Python coder in a week or two. Yeah, it still takes a fair amount of practice, rehearsal, to be proficient, but if someone had led me down the path that I led my readers down, I think my pain-curve would have been 3-4 months, not two years. Put a different way, the Programming in Scala folks passed a couple of drafts of the first chapters of their book by me early on. I think PinS is a tredmendously awesome work, but I objected strongly to the show imperative first and gently migrate to functional approach they took. I thought it did a significant disservice to their readers. I took the opposite approach in BegSca... the second substantive example covers a broad spectrum of functional programming. So, getting to some of the substance of your post, as Tim pointed out, the _ is a running joke in Scala-land. Yep, it's way overloaded. Every time (and this happened at both Scala Lift Offs) Martin tries to justify the _'s use, people roll their eyes. On the other hand, the example that you gave is one of my proudest moments in Lift. Specifically, I think Mapper is a steaming pile of something. I am really dissatisfied with it (although we followed the same paradigm with Record and I'm unhappy with that as well... mostly from the mutability standpoint). On the other hand, the graceful way that Mapper deals with validators (they are functions and they are declared as a List that can be dynamically generated) is something that I look at and remember it being the first time I really felt like I got the power of Scala. When I developed that paradigm, I genuinely felt like Lift was going to be something different and better. So, I am truly sorry that you and others are struggling with Scala (yeah, everyone other than Martin and Adriaan and a few others struggle with Scala's type system, but most people didn't get General Relativity early on either) and I hope that we can present materials to you in a way that helps minimize the struggle. Thanks for sharing your thoughts and I hope this message has struck the tone I intend it to. David On Wed, Oct 21, 2009 at 10:13 PM, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. Interesting... this is one of the constructs in Lift that I find simple (and almost always have found simple). It's adding a validator to a list of validators. Having validators as functions was an early (while my mind was still mostly Java/Ruby) construct that, when I look at it says, this was something that still works. Mapper's general use of mutability, on the other hand, is something that very much does not work (although the syntactic cost of doing something else is still too high.) I understand that you don't have to learn all the tricks/syntax to start coding in Scala but you do have to understand it when you read source code of libraries written by someone with much more advanced language skills. In this particular case, building an immutable list of of a new element and a prior element and
[Lift] Re: Cannot build our lift app. Is net.liftweb.util OK?
I see that there is a similar issue posted against the thread New update changed something?. I will monitor the progress of that thread as well. Dan On Oct 22, 9:16 am, Dano olearydani...@gmail.com wrote: Hello Lifters, After doing my morning build (mvn -U clean install), I am getting a huge number of errors mostly related to net.liftweb.util (see below). We are building against 1.1-SNAPSHOT. Is anyone else having this problem? Thanks in advance. Dan [INFO] Compiling 113 source files to C:\sandboxes\igo\trunk\baf\target \classes [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:43: error: not found: value Full [WARNING] case _ = Full(DocType.xhtmlStrict) [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\com\enthiosys \buyafeature\lib\PlexusMagic.scala:23: error: Failure is not a member of net.liftweb.util [WARNING] import net.liftweb.util.{Failure = BoxFailure} [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:73: error: not found: value Empty [WARNING] LiftRules.xhtmlValidator = Empty [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:77: error: type mismatch; --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Review Request: Enhance Msgs snippet to optionally show all messages
On Thu, Oct 22, 2009 at 12:58 AM, Heiko Seeberger heiko.seeber...@googlemail.com wrote: On 2009-10-21 13:17:36.007575, Marius Danciu wrote: The fix looks correct for this feature, but I'm not convinced that this proposed feature is the right approach. If a page contains both msg and msgs + showall, the message would be duplicated. There is no rule that promotes mutual exclusivity for msg and msgs+showall and if it should or should not exist is also debatable. First I would like to point out that I do have exactly this requirement in an ongoing project to show all messages (related to fields and not related) in the top area of a page. Currently this is not (easily) possible with Msgs and Msg, because you have to know the fields for Msg and Msg will render differently than Msgs (span vs. div). As I have seen this requirement in many recent projects, I believe it is not too unique, hence others could benefit from this enhancement. Second, I do not understand your concerns. As long as noone sets showAll to true, nothing will change in regards how Msg and Msgs are working today, i.e. no messages will be duplicated. If someone deliberately decides to set showAll to true, he will certainly have to deal with the consequences. I agree with this position. The change has common benefits and it's not changing default behavior. (cc'ing the Lift list in case anyone else wants to chime in) - Heiko --- This is an automatically generated e-mail. To reply, visit: http://reviewboard.liftweb.net/r/55/#review135 --- On 2009-10-22 00:57:49.136378, Heiko Seeberger wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviewboard.liftweb.net/r/55/ --- (Updated 2009-10-22 00:57:49.136378) Review request for Derek Chen-Becker, David Pollak, Marius Danciu, Viktor Klang, Charles Munat, Heiko Seeberger, Joni Freeman, Atsuhiko Yamanaka, Jorge Ortiz, Naftoli Gugenheim, Kris Nuttycombe, Indrajit Raychaudhuri, and Alex Boisvert. Summary --- Issue 123: Enhance Msgs snippet to optionally show all messages The Msgs built-in snippet will only display messages NOT related to a particular field. This makes using some of the ProtoUser's templates a tough job, e.g. for editing the user or changing the password, because these will bring up errors with and without relation to fields. This change will add an optional attribute showAll to the Msgs element which lets Msgs display all messages if set to true. This addresses bug 123. http://github.com/dpp/liftweb/issues#issue/123 Diffs - lift/src/main/scala/net/liftweb/builtin/snippet/Msgs.scala ed8ae96 lift/src/main/scala/net/liftweb/http/S.scala a0a8661 Diff: http://reviewboard.liftweb.net/r/55/diff Testing --- Thanks, Heiko -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
On Thu, Oct 22, 2009 at 9:18 AM, Timothy Perrett timo...@getintheloop.euwrote: David, I think your response was well measured and appropriate. The analogy of linguistics is a good one :-) Without wanting to diverge this thread, can I ask why it is your unhappy with Record? Its been fairly fun to use so far and appears to work well. I don't like mutable fields. I don't like manual saving. Dunno... it's hard to articulate... it just feels wrong in my tummy. Also, I want to be clear that I think Marius did a great job of cleaning up some of the problems with Mapper when he did Record... my comments are not a negative to him... there's just something unsatisfying about the whole approach. Bet that was less than helpful. Cheers, Tim On 22 Oct 2009, at 17:04, David Pollak wrote: I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite angered by gendered nouns. As a native English speaker, a table is an it, not a she (or he.) But fluent French speakers make gendered nouns a normal part of the language, and once skilled can use these subtleties with great skill. My 2 year learning curve for Scala can be summed up in the first 4 (or maybe 5) chapters of Beginning Scala. I sought to present my painful learning curve in 150 pages that could be reasonably consumed by a Java or Ruby or Python coder in a week or two. Yeah, it still takes a fair amount of practice, rehearsal, to be proficient, but if someone had led me down the path that I led my readers down, I think my pain-curve would have been 3-4 months, not two years. Put a different way, the Programming in Scala folks passed a couple of drafts of the first chapters of their book by me early on. I think PinS is a tredmendously awesome work, but I objected strongly to the show imperative first and gently migrate to functional approach they took. I thought it did a significant disservice to their readers. I took the opposite approach in BegSca... the second substantive example covers a broad spectrum of functional programming. So, getting to some of the substance of your post, as Tim pointed out, the _ is a running joke in Scala-land. Yep, it's way overloaded. Every time (and this happened at both Scala Lift Offs) Martin tries to justify the _'s use, people roll their eyes. On the other hand, the example that you gave is one of my proudest moments in Lift. Specifically, I think Mapper is a steaming pile of something. I am really dissatisfied with it (although we followed the same paradigm with Record and I'm unhappy with that as well... mostly from the mutability standpoint). On the other hand, the graceful way that Mapper deals with validators (they are functions and they are declared as a List that can be dynamically generated) is something that I look at and remember it being the first time I really felt like I got the power of Scala. When I developed that paradigm, I genuinely felt like Lift was going to be something different and better. So, I am truly sorry that you and others are struggling with Scala (yeah, everyone other than Martin and Adriaan and a few others struggle with Scala's type system, but most people didn't get General Relativity early on either) and I hope that we can present materials to you in a way that helps minimize the struggle. Thanks for sharing your thoughts and I hope this message has struck the tone I intend it to. David On Wed, Oct 21, 2009 at 10:13 PM, jlist9 jli...@gmail.com wrote: override def validations = validPriority _ :: super.validations This is a more of a comment about Scala than one about Lift - this does look cryptic to me. And this is just one of the simpler syntax that confuses people, who are new to the language. And I'm one of them. Interesting... this is one of the constructs in Lift that I find simple (and almost always have found simple). It's adding a validator to a list of validators. Having validators as functions was an early (while my mind was still mostly Java/Ruby) construct that, when I look at it says, this was something that still works. Mapper's general use of mutability, on the other hand, is something that very much does not work (although the syntactic cost of
[Lift] Re: S.deleteCookie broken in M6
On Thu, Oct 22, 2009 at 9:07 AM, harryh har...@gmail.com wrote: File a ticket. Done It's Harry's tickets day for me today. The more you file, the more that get fixed. Oh my. That's really quite something there. And for all of you who want to see what's on my Lift (or ESME) plate: https://www.rememberthemilk.com/home/bearfeeder/10510876/ -harryh -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] One minor exception to the no-RTFM rule
Folks, We've got a solid rule in Lift-land which is we don't respond with RTFM. Why? Because we want to encourage people to ask questions. There's one exception to that rule that I'll make now. If your code suddenly breaks (we do make breaking changes to Lift from time to time), please at least search the project archives for the phrase Breaking Changes. We work hard to make sure the breaking changes are few and far between. We work hard to flag breaking changes long before they happen. Yeah, I know not everyone reads every post on this list, but folks with production apps should spend a little time here. But, before you post Gee my app was compiling yesterday and it's not compiling today, please search for recent posts with the words Breaking Changes in the title. We will flag these. We promise. Thanks, David -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: New update changed something?
Sorry, just saw this, stickied. On Oct 22, 12:14 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Oct 22, 2009 at 8:29 AM, Timothy Perrett timo...@getintheloop.euwrote: Sure, just go to options on the web interface at the top of the thread and as moderator you should see a whole bunch of options. I'm not seeing a make sticky option. I may be blind or stupid or both. Maybe Tyler can have a look. Cheers, Tim On 22 Oct 2009, at 16:22, David Pollak wrote: On Thu, Oct 22, 2009 at 7:03 AM, TylerWeir tyler.w...@gmail.com wrote: Umm,http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en Any way to make this sticky? -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: New update changed something?
On Thu, Oct 22, 2009 at 9:38 AM, TylerWeir tyler.w...@gmail.com wrote: Sorry, just saw this, stickied. TNX On Oct 22, 12:14 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Oct 22, 2009 at 8:29 AM, Timothy Perrett timo...@getintheloop.eu wrote: Sure, just go to options on the web interface at the top of the thread and as moderator you should see a whole bunch of options. I'm not seeing a make sticky option. I may be blind or stupid or both. Maybe Tyler can have a look. Cheers, Tim On 22 Oct 2009, at 16:22, David Pollak wrote: On Thu, Oct 22, 2009 at 7:03 AM, TylerWeir tyler.w...@gmail.com wrote: Umm,http://groups.google.com/group/liftweb/t/824f14038bedf425?hl=en Any way to make this sticky? -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
It would be good to have an example like George's verified as it is not clear how to convert our Actor code. Dan On Oct 22, 4:48 am, george geo...@mattandgeorge.com wrote: ok so.. object LocalSmtp extends Actor should become object LocalSmtp extends GenericActor[LocalSmtp] ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: javascript with an ajaxbutton
I don't think i can pull a small example from here because I'm combining my lack of knowledge in scala, lift, html, jquery, tinyMCE ... you get the idea. The point is that I am trying to create a button that calls a scala function and a javascript function. I am currently trying to use an shtml.ajaxButton, though I don't know if that is the right tool. Button: save1 - SHtml.ajaxButton( Fixed, { () = { println(Fixed scala/lift.); saveClaimStatus(FIXED); //scala function. works as intended JsRaw($.saveT();).cmd); } }) javascript function: function saveT () { document.form[0].submit(); }; In the 42 different ways I have tried to implement this, I can get one or the other to function, but i cannot get both to work. How do I do both functions with one button? Thanks. And I'm sorry if I'm not explaining this correctly, or that it's not making much sense. -Chris On Oct 20, 2:31 pm, Marius marius.dan...@gmail.com wrote: I was hoping to see something minimalistic and isolated so I can quickly try it out. I'm not sure what you do with redirect(/workflow/claims) but from Ajax function you should probably use JsCmd.RedirectTo .. Hopefully I'll have some time this weekend to play with tinyMCE Br's, Marius On Oct 19, 10:57 pm, caw1461 caw1...@gmail.com wrote: edit.html: script type=text/javascript tinyMCE.init({ // General options mode : textareas, theme : advanced, plugins : spellchecker,pagebreak,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template, theme_advanced_buttons1 : styleselect,formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|, hr, bullist,numlist, preview, code, theme_advanced_buttons2 : , theme_advanced_buttons3 : , theme_advanced_buttons4 : , submit_patch : false, theme_advanced_resizing : true }); // The save function that actually works. $.saveFunc = function() { tinyMCE.activeEditor.save() }; function saveT () { console.log(javascriptconsole 1) tinyMCE.activeEditor.save() console.log(javascriptconsole 2) }; $('#fixed').click(function(e){ tinyMCE.activeEditor.save() }); /script editor:text/ br/ !-- NOW WORKS CORRECTLY -- button id=Save onclick=saveT() class=ui-state-default title=Save, only save the html, doesn't mark the claim ready for publishging.Save/button editor:save1/ editor:cancel/ editor:save2/ //*// Workflow.scala: SHtml.ajaxForm( bind(editor, xhtml, text - SHtml.textarea(originalOrEditedFileAsString (selectedClaimWorkQueue.open_!.fileName), s = { println(s) saveClaimHtmlToDB(s) saveClaimHtml(s, selectedClaimWorkQueue.open_!.fileName) S.notice(Submitted.) redirect(/workflow/claims) } , (style, height: 500px; width:97%), (id, mceForm)), save - SHtml.ajaxButton( Save, {() = Log.info(Got a 'save' AJAX call) saveClaimStatus(EDITED) S.notice(Saved.) redirect(/workflow/claims) }, (type, submit),(class, ui-state-default ), (title, Save, only save the html, does not mark the claim ready for publishging.), (id, fixed)), save1 - SHtml.ajaxButton( Fixed, { () = { println(Fixed scala/lift.); saveClaimStatus(FIXED); JsRaw($.saveFunc();).cmd); } }, (class, ui-state-default ), (title, Save and marks the claim ready for publishing.), (id, fixed)), save2 - SHtml.ajaxButton( yes, () = {JsRaw($.saveFunc();).cmd }))) } I'm already importing both of those so that isn't the problem. If I put a % (onclick - saveT()) on the button, it saves the way I want it to, but it does not do any of the println or saveClaimStatus calls. I just want it to do both. On Oct 19, 3:43 pm, Marius marius.dan...@gmail.com wrote: I think with an import net.liftweb.http.js._ import JsCmds._ the compile problem should go away as there is an implicit defined there. But this is not important. Can you send a minimalistic code example that reflects the problem? ... including the template and Scala code. Br's,
[Lift] Re: A Critique On Lift
Right, no one likes mutable anything :-) I kinda wondered why you haven't pushed forward any more with the current record implementation... can one assume that is why - because it didn't feel right? Some of this stuff is going to be fundamental to how we move forward - id love to perhaps discuss something that would be better than what we have already. Even if its just pie in the sky talk... Cheers, Tim On 22 Oct 2009, at 17:22, David Pollak wrote: I don't like mutable fields. I don't like manual saving. Dunno... it's hard to articulate... it just feels wrong in my tummy. Also, I want to be clear that I think Marius did a great job of cleaning up some of the problems with Mapper when he did Record... my comments are not a negative to him... there's just something unsatisfying about the whole approach. Bet that was less than helpful. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
On Thu, Oct 22, 2009 at 9:22 AM, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Oct 22, 2009 at 9:18 AM, Timothy Perrett timo...@getintheloop.euwrote: David, I think your response was well measured and appropriate. The analogy of linguistics is a good one :-) Without wanting to diverge this thread, can I ask why it is your unhappy with Record? Its been fairly fun to use so far and appears to work well. I don't like mutable fields. I don't like manual saving. Dunno... it's hard to articulate... it just feels wrong in my tummy. Also, I want to be clear that I think Marius did a great job of cleaning up some of the problems with Mapper when he did Record... my comments are not a negative to him... there's just something unsatisfying about the whole approach. Bet that was less than helpful. I've worked with an OODBMs systems before, and of course ORM. OODBMs takes care of the manual saving, and could probably take care of the mutable fields too. The problem with OODBMs is that every object has strings attached to it to make the persistence mechanism work. Even the systems that don't require you to inherit a special class have these strings. The problem is that in a web based framework, the tags don't have this string. So you deliver an unattached field to the browser, then have to reattach it later. This is actually uglier then it sounds (or was when I was doing it). It's the de-tached vs attached issues that make things entertaining. However, AJAX/Comet and the other dynamic stuff wasn't around in 2001, and so we may be able to solve some of those issues. Whether we can do that and persist to a RDMS is the real question, and I don't think that will ever be anything but ugly. I hope I'm proven wrong. I think Hibernate and JPA are steps in the right direction. JPA being a half-step back from Hibernate. I think if you could convert the XML to a real DSL, it would be another step. Annotations are a step there. Another step would be to create an object sans-setters and getters of any kind. Just magically deal with the internal object state. Cheers, Tim On 22 Oct 2009, at 17:04, David Pollak wrote: I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite angered by gendered nouns. As a native English speaker, a table is an it, not a she (or he.) But fluent French speakers make gendered nouns a normal part of the language, and once skilled can use these subtleties with great skill. My 2 year learning curve for Scala can be summed up in the first 4 (or maybe 5) chapters of Beginning Scala. I sought to present my painful learning curve in 150 pages that could be reasonably consumed by a Java or Ruby or Python coder in a week or two. Yeah, it still takes a fair amount of practice, rehearsal, to be proficient, but if someone had led me down the path that I led my readers down, I think my pain-curve would have been 3-4 months, not two years. Put a different way, the Programming in Scala folks passed a couple of drafts of the first chapters of their book by me early on. I think PinS is a tredmendously awesome work, but I objected strongly to the show imperative first and gently migrate to functional approach they took. I thought it did a significant disservice to their readers. I took the opposite approach in BegSca... the second substantive example covers a broad spectrum of functional programming. So, getting to some of the substance of your post, as Tim pointed out, the _ is a running joke in Scala-land. Yep, it's way overloaded. Every time (and this happened at both Scala Lift Offs) Martin tries to justify the _'s use, people roll their eyes. On the other hand, the example that you gave is one of my proudest moments in Lift. Specifically, I think Mapper is a steaming pile of something. I am really dissatisfied with it (although we followed the same paradigm with Record and I'm unhappy with that as well... mostly from the mutability standpoint). On the other hand, the graceful way that Mapper deals with validators (they are functions and they are declared as a List that can be dynamically generated) is something that I look at and remember it being the first time I really felt
[Lift] Security Explained
My company is looking for an explanation of how Lift is secure. I recall reading a comment saying that Lift deals well with most of the Top 10 OWASP vulnerabilities (http://www.owasp.org/index.php/ Top_10_2007), but how? Most, not all? Are there strategies that are recommended to deal with the weaknesses? I am very interested in a Wiki post that explains how Lift addresses the top 10 vulnerabilities. (No pressure, but I needed this yesterday.) Please point me to any existing resource/documentation that explains this. Very often, I see points that mention how secure Lift is, and I certainly appreciate the fact that Lift promotes security as a core initiative. I can also see how secure it is compared to other strategies (yeah, you heard me ColdFusion!). Keep up the good work. Does anybody have experience submitting Lift Apps to third party security assessment or vulnerability analysis? Any tips from that experience? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
hi, i take issue with the following: misunderstood. They are NOT controllers .. they are simple constructs to allow dynamic markup to be injected in the template. Of course one can abuse anything in any framework but this is besides the point. my personal take is that if you are a responsible, caring, provider then you will realize that anything can be abused, and you will do your best to (a) reduce the chances for abuse and (b) give clear explanations (documentation) for the raison d'etre, and for the nuances, and for the do-not-do's. sincerely. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
I did a quick check in the lift sources and could not find example or test code for the new LiftActors. Perhaps additions to these areas would help those that are trying to convert their Actor code. Thanks in advance for any help for those still struggling to make the conversion. Dan On Oct 22, 10:00 am, Dano olearydani...@gmail.com wrote: It would be good to have an example like George's verified as it is not clear how to convert our Actor code. Dan On Oct 22, 4:48 am, george geo...@mattandgeorge.com wrote: ok so.. object LocalSmtp extends Actor should become object LocalSmtp extends GenericActor[LocalSmtp] ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Security Explained
On Thu, Oct 22, 2009 at 10:49 AM, aw anth...@whitford.com wrote: My company is looking for an explanation of how Lift is secure. I recall reading a comment saying that Lift deals well with most of the Top 10 OWASP vulnerabilities (http://www.owasp.org/index.php/ Top_10_2007 http://www.owasp.org/index.php/%0ATop_10_2007), but how? Most, not all? Are there strategies that are recommended to deal with the weaknesses? Quickly: 1. Lift is resistant to XSS attacks. By default pages are composed in XML rather than Strings. It takes the developer extra work to insert XSS strings into output rather than having to make sure each String is properly escaped before being cat'ed to the output. 2. Lift is resistant to SQL Injection attacks because mapper and JPA do not compose Strings into SQL statements, but rather bind well typed parameters into prepared statements. So, if you go the normal path, you get SQL injection resistance. If you want to manually craft a String to send as a query, in mapper you have to sign the string with the time, date and a certification that you've reviewed the String for SQL Injection problems. 3. Lift never shells out. You can't cause a file to be executed from a Lift app unless your app manually uses Java's Runtime.execute() call. 4. By default, Lift creates opaque GUIDs to refer to components on the server side (whether that's a function to execute when a form field is submitted, what to do on an Ajax call, etc.) By default, it's easier to use this callback mechanism than advertise a primary key or other sensitive piece of information. Lift also has the KeyObfuscator which will create a session-specific mapping of primary keys to opaque ids. Using KeyObfuscator, you can send JSON objects to the client with stable primary keys that are obfuscated and not usable outside the current session. 5. By default Lift's form fields contain GUIDs that are cryptographically impossible to predict. It's not possible to do CSRF because one does not know the name of form fields (they are not stable) 6. Lift has different production vs. development mode error messages. There's little information that leaks about underlying configurations, even exceptions, in production mode. 7. Lift uses the container's session management (usually JSESSIONID) for session management. As far as I know, Jetty, Tomcat, Glassfish are secure in terms of the way they deal with sessions. Of course, anything that's not over SSL is vulnerable to a cookie stealing attack. 8. Crypto key storage is a container-level issue. See #7 9. See #7 10. Lift's sitemap is the best and most secure integration of UI and page-level access. You can look at the sitemap to determine the access control rules for a given page (it's declarative) and it's enforced long before your page gets accessed. Hope this helps. I am very interested in a Wiki post that explains how Lift addresses the top 10 vulnerabilities. (No pressure, but I needed this yesterday.) Please point me to any existing resource/documentation that explains this. Very often, I see points that mention how secure Lift is, and I certainly appreciate the fact that Lift promotes security as a core initiative. I can also see how secure it is compared to other strategies (yeah, you heard me ColdFusion!). Keep up the good work. Does anybody have experience submitting Lift Apps to third party security assessment or vulnerability analysis? Any tips from that experience? -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] SLF4J Logging for my classes
I am using SLF4J logging, but I am not sure if I am doing it the right way... I have pointed Lift to use SLF4J, and I call the enable routine and have updated dependencies. All of that seems fine. My question is around, how do my classes best use it... For example, I am generally doing something like: import org.slf4j.{Logger, LoggerFactory} class Foo { private val LOGGER = LoggerFactory.getLogger(getClass) ... } Is this what one would expect? Or is there a Lift Way that obsoletes the above? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] **Important** Migration guide Scala Actors - Lift Actors
Folks, I wrote a quick blog piece about migrating from Scala Actors to Lift Actors at http://blog.lostlake.org/index.php?/archives/96-Migrating-from-Scala-Actors-to-Lift-Actors.html I hope this addresses questions that folks on the list have about the affirmative steps they need to take to make the migration. Thanks, David -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Weird request/transaction semantics
On Thu, Oct 22, 2009 at 6:12 PM, David Pollak feeder.of.the.be...@gmail.com wrote: There are a couple of things happening. First, there are at least 2 distinct times when we initialize the S context during a request handling cycle: During the rewrite phase (if there's a session cookie) During the substantive processing phase If there's a cometactor on the page, S will be initialized twice per comet actor message processing (once during the testing of the message for ability to process and once during the message processing itself) One day, I'll have to dig into the request processing cycle :-) But this does seem to be a potential problem lurking: If I need the transaction to span the rewriting processing phase this doesn't seem possible atm (I haven't used cometactor yet). I initially thought there were errors with how db connections are acquired (I could get the same connection on two different requests), but this turned out (I think) to be problems with the connection manager: http://github.com/dpp/liftweb/issues#issue/124 On Thu, Oct 22, 2009 at 8:54 AM, Jeppe Nejsum Madsen je...@ingolfs.dk wrote: Hi, I posted this in another thread, but it may have been lost in the noise (or no one cared :-) Anyway, I have S.addAround(DB.buildLoanWrapper) in boot, which I assumed would wrap each request with a transaction and thus use the same connection for the duration of the request? I've added some logging around newConnection/releaseConnection. I was a little surprised to see that newConnection is called three times for each request? Is this intentional? I can see that a connection is also being made even for static files (such as css). This is not really a problem, but it would be nice to defer acquiring a connection until needed(since I now verify the connection by doing an actual statement on the db server :-) Lemme see what I can do about making it lazy... please open a ticket and I'll try to get to it today. Done. http://github.com/dpp/liftweb/issues/#issue/129 /Jeppe --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Important** Migration guide Scala Actors - Lift Actors
Stickied for now, until we think it's no longer an issue. On Oct 22, 2:57 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, I wrote a quick blog piece about migrating from Scala Actors to Lift Actors athttp://blog.lostlake.org/index.php?/archives/96-Migrating-from-Scala-... I hope this addresses questions that folks on the list have about the affirmative steps they need to take to make the migration. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Weird request/transaction semantics
On Thu, Oct 22, 2009 at 12:06 PM, Jeppe Nejsum Madsen je...@ingolfs.dkwrote: On Thu, Oct 22, 2009 at 6:12 PM, David Pollak feeder.of.the.be...@gmail.com wrote: There are a couple of things happening. First, there are at least 2 distinct times when we initialize the S context during a request handling cycle: During the rewrite phase (if there's a session cookie) During the substantive processing phase If there's a cometactor on the page, S will be initialized twice per comet actor message processing (once during the testing of the message for ability to process and once during the message processing itself) One day, I'll have to dig into the request processing cycle :-) But this does seem to be a potential problem lurking: If I need the transaction to span the rewriting processing phase this doesn't seem possible atm That's correct. It would be terrifically difficult to do this. (I haven't used cometactor yet). This is define behavior. The CometActor is never part of the HTTP request/response cycle. I initially thought there were errors with how db connections are acquired (I could get the same connection on two different requests), but this turned out (I think) to be problems with the connection manager: http://github.com/dpp/liftweb/issues#issue/124 On Thu, Oct 22, 2009 at 8:54 AM, Jeppe Nejsum Madsen je...@ingolfs.dk wrote: Hi, I posted this in another thread, but it may have been lost in the noise (or no one cared :-) Anyway, I have S.addAround(DB.buildLoanWrapper) in boot, which I assumed would wrap each request with a transaction and thus use the same connection for the duration of the request? I've added some logging around newConnection/releaseConnection. I was a little surprised to see that newConnection is called three times for each request? Is this intentional? I can see that a connection is also being made even for static files (such as css). This is not really a problem, but it would be nice to defer acquiring a connection until needed(since I now verify the connection by doing an actual statement on the db server :-) Lemme see what I can do about making it lazy... please open a ticket and I'll try to get to it today. Done. http://github.com/dpp/liftweb/issues/#issue/129 /Jeppe -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: SLF4J Logging for my classes
aw anth...@whitford.com writes: I am using SLF4J logging, but I am not sure if I am doing it the right way... I have pointed Lift to use SLF4J, and I call the enable routine and have updated dependencies. All of that seems fine. My question is around, how do my classes best use it... For example, I am generally doing something like: import org.slf4j.{Logger, LoggerFactory} class Foo { private val LOGGER = LoggerFactory.getLogger(getClass) ... } Is this what one would expect? Or is there a Lift Way that obsoletes the above? I suggest using Lift's Logger (it can be configured to use slf4j, search the archives for details). It has the nice feature that the log message is lazily evaluated, so you don't have to litter your code with if(log.isDebugEnabled) log.debug(...) Also, I create a trait: trait Logging { val log = LogBoot.loggerByName(this.getClass.getName) } This makes it easy to have logging in a class: class myclass extends MyParent with Logging { log.debug(logggin stuff) } /Jeppe --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: How do I pass information between a Comet Actor and a StatefulSnippet ?
On Wed, Oct 21, 2009 at 10:59 PM, Jonathan Ferguson j...@spiralarm.comwrote: 2009/10/22 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 8:46 PM, Jonathan Ferguson j...@spiralarm.comwrote: I have a StatefulSnippet that uses a CometActor to keep users informed when performing a lengthy task, much like the example on the demo site ( http://demo.liftweb.net/longtime). The only difference being I pass the CometActor an identifier so it knows which job to inform the user about. When the task is over I need to display a form to the user, which I would assume would be rendered by the snippet. How does the actor tell the snippet the task is complete ? The Actor has to know about the snippet... you could send the Actor a message with a reference to the snippet and then call a method on the snippet when the Actor is done. Does that do it for you? I don't see how I can I do that. Currently the comet actor is setup in a snippet, see below, how do get a reference to the actor to send it a message ? In the snippet that yields this code: for { session - S.session } session.setupComet(WhatDog, Full(id), HeyDudeIMSoStateful(this)) // send the HeyDudeIMSoStateful message on setup... this can be anything lift:comet type=WatchDog name={id} span id=statustwd:statusWatch dog status/twd:status/span /lift:comet The id being passed via the name parameter is a reference the job to monitor. I mention this only as I'm not sure if it's bad form or not. I assuming it is trivial and I've thought or coded myself into a corner. Thanks in advance. Jono -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
Code for our app now compiles. Needed to replace Actor with LiftActor. Also, needed to define the messageHandler partial function. So, George, I think the answer to your question is: object LocalSmtp extends Actor becomes object LocalSmtp extends LiftActor Dan On Oct 22, 11:19 am, Dano olearydani...@gmail.com wrote: I did a quick check in the lift sources and could not find example or test code for the new LiftActors. Perhaps additions to these areas would help those that are trying to convert their Actor code. Thanks in advance for any help for those still struggling to make the conversion. Dan On Oct 22, 10:00 am, Dano olearydani...@gmail.com wrote: It would be good to have an example like George's verified as it is not clear how to convert our Actor code. Dan On Oct 22, 4:48 am, george geo...@mattandgeorge.com wrote: ok so.. object LocalSmtp extends Actor should become object LocalSmtp extends GenericActor[LocalSmtp] ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Important** Migration guide Scala Actors - Lift Actors
Thanks to David for the migration guide. It is very useful. Victor Klang had raised the issue of rescheduling the actor in the message handling function (see below). I did not see a reference to this in the migration guide. Is it still necessary? Thanks in advance. Dan Text from Victor Klang on breaking change thread: DPP (and I) recommend just doing schedule and then re-schedule after message recieved. schedule(actor,MyMsg(),3 seconds) in the actor { case MyMsg() = { doMyStuff schedule(this,MyMsg(),3 seconds) } } On Oct 22, 12:14 pm, TylerWeir tyler.w...@gmail.com wrote: Stickied for now, until we think it's no longer an issue. On Oct 22, 2:57 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, I wrote a quick blog piece about migrating from Scala Actors to Lift Actors athttp://blog.lostlake.org/index.php?/archives/96-Migrating-from-Scala-... I hope this addresses questions that folks on the list have about the affirmative steps they need to take to make the migration. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: javascript with an ajaxbutton
I'm sorry that I haven't had the time to try it out myself yet. If you want the scala function to be called via an Ajax request and after that the Scala function returns the Javascript that calls your JS function, your code looks correct to me. I used this pattern quite a bit with no problems. So the flow here is: 1. When pressing the button the Ajax request is sent to server 2. On server side Lift executes your scala function which returns a JsCmd 3. Lift returns your JsCmd as a JavaScript code that will be executed by the browser. .. so the order here is Scala function and then JavaScipt function, Now if you want your JavaScript function to be called first and then the Scala function then you have this method in SHtml: /** * Create an Ajax button. When it's pressed, the function is executed * * @param text -- the name/text of the button * @param jsFunc -- the user function that will be executed. This function will receive as last parameter * the function that will actually do the ajax call. Hence the user function can decide when * to make the ajax request. * @param func -- the function to execute when the button is pushed. Return Noop if nothing changes on the browser. * * @return a button to put on your pagejsFunc.params ++ List(AnonFunc (makeAjaxCall(Str(name+=true */ def ajaxButton(text: NodeSeq, jsFunc: Call, func: () = JsCmd, attrs: (String, String)*) jsFunc is any JavaScript function that may receive any number of parameters. Lets say it is defined like: function f(x, y, z) { } When the ajax button is pressed, your function f is called as f(x, y, z, fnc) ... so at the call time your function received another parameter ... a fnc. This is simply a function that you may or may not decide to call in your f function. This fnc encapsulates the actual ajax call. The Call class is defined as: case class Call(function: String, params: JsExp*) extends JsExp inside JE object As an example: ajaxButton(text, Call(myFunc, 10, 20, 30), () = /*return the JavaScript respose as a JsCmd*/) somewhere in your javascript code you have function myFunc(x, y, z, ajaxCall) { // do some computation ajaxFunc(); } Note that I specified the ajaxCall in the JS function but not when specifying the Call instance. That's because Lift generates for you the actual call to myFunc when pressing the ajaxButton This will call your javascript function and then the ajax call, but you also have the control to not make the ajax call at all depending on how you implement you JS function. Hope this helps. Br's, Marius On Oct 22, 8:19 pm, caw1461 caw1...@gmail.com wrote: I don't think i can pull a small example from here because I'm combining my lack of knowledge in scala, lift, html, jquery, tinyMCE ... you get the idea. The point is that I am trying to create a button that calls a scala function and a javascript function. I am currently trying to use an shtml.ajaxButton, though I don't know if that is the right tool. Button: save1 - SHtml.ajaxButton( Fixed, { () = { println(Fixed scala/lift.); saveClaimStatus(FIXED); //scala function. works as intended JsRaw($.saveT();).cmd); } }) javascript function: function saveT () { document.form[0].submit(); }; In the 42 different ways I have tried to implement this, I can get one or the other to function, but i cannot get both to work. How do I do both functions with one button? Thanks. And I'm sorry if I'm not explaining this correctly, or that it's not making much sense. -Chris On Oct 20, 2:31 pm, Marius marius.dan...@gmail.com wrote: I was hoping to see something minimalistic and isolated so I can quickly try it out. I'm not sure what you do with redirect(/workflow/claims) but from Ajax function you should probably use JsCmd.RedirectTo .. Hopefully I'll have some time this weekend to play with tinyMCE Br's, Marius On Oct 19, 10:57 pm, caw1461 caw1...@gmail.com wrote: edit.html: script type=text/javascript tinyMCE.init({ // General options mode : textareas, theme : advanced, plugins : spellchecker,pagebreak,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template, theme_advanced_buttons1 : styleselect,formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|, hr, bullist,numlist, preview, code, theme_advanced_buttons2 : , theme_advanced_buttons3 : , theme_advanced_buttons4 : , submit_patch : false, theme_advanced_resizing : true });
[Lift] Re: **Important** Migration guide Scala Actors - Lift Actors
Just Simple Beautiful ! ... Nice work Dave and Jonas. Br's, Marius On Oct 22, 9:57 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, I wrote a quick blog piece about migrating from Scala Actors to Lift Actors athttp://blog.lostlake.org/index.php?/archives/96-Migrating-from-Scala-... I hope this addresses questions that folks on the list have about the affirmative steps they need to take to make the migration. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Hi David, Appreciate your reply. It's definitely helpful in clearing some of my thoughts, as well as in my process of learning Scala down the road. I also think your book is very well paced and organization of the content is well thought out. Great job! I'd like to explain a little bit where my frustration is coming from (and I don't want to waste people's time reading further for those who aren't interested.) I come from Java and Python background. When learning these two languages I didn't have a problem with the syntax. I think Java's syntax is well defined although verbose, and Python's is clear and concise. There is a small number of operators and data types and it's pretty clear which is for what purpose. Zen of Python says it well: There should be one-- and preferably only one --obvious way to do it. and I think this reflects well in the language design of Python. It's also generally discouraged to use too much black magic when coding in Python so that the code is easier to understand and maintain, although Python, being a powerful dynamic language, is very capable of black magics. These two things helped a lot in my learning of Python. It's a much smaller set of syntax to learn and it can be learned in a very short time, maybe through one or two online tutorials. The rest of it is just libraries, which are very rich in functionality, but the source code is easy to understand, because of the small set of clearly defined elements in the language - syntax and data types, etc.. However, I don't feel the same about Scala. In Scala, I often see multiple ways of doing the same thing, or very similar things, and this is confusing. For example, there are multiple ways of running a program. You can have a script, or an application. To run an application, you can write an object and implement the main method, or you can extend Application class and write the code right in the body of the class. It took me a while to figure out how it works. What's wrong with having only one of them? Python only start as a script and Java only need a main method but either way works. Another example is that in some scenarios ( ) and { } are interchangable in Scala code, although I haven't figured out in what occasions they are, and in what occasions they are not. This puzzles me more because ( ) and { } are the basic elements in a language and the language allows such flexible usage of them. Although I think there should be a good reason for this but it still struck me as odd. In contrast to Python's short list of operators, because operators are actually functions in Scala, it's easy for Scala to have a new operator, or have functions that works like operators. This is a powerful feature and it is good news for people who want to create DSLs. However I think a plethora of operators make code much harder to read before people can make it a habit to convert operators as functions in their mind. To summarize, the more I learn Scala the more I realize how powerful it is. Meanwhile, I think Scala imposes this mind tweaking that people have to go through in learning this language, the difficulty that I didn't feel when I learned Python, or Java, C or C++. I like many of the features provided by Scala but I hope some of the things can be simplified/demystified to make it easier to pick up and use. jlist9 On Thu, Oct 22, 2009 at 9:04 AM, David Pollak feeder.of.the.be...@gmail.com wrote: I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite angered by gendered nouns. As a native English speaker, a table is an it, not a she (or he.) But fluent French speakers make gendered nouns a normal part of the language, and once skilled can use these subtleties with great skill. My 2 year learning curve for Scala can be summed up in the first 4 (or maybe 5) chapters of Beginning Scala. I sought to present my painful learning curve in 150 pages that could be reasonably consumed by a Java or Ruby or Python coder in a week or two. Yeah, it still takes a fair amount of practice, rehearsal, to be proficient, but if someone had led me down the path that I led my readers down, I think my pain-curve would have been 3-4 months, not two years. Put a different way, the Programming in Scala
[Lift] Re: A Critique On Lift
On Thu, Oct 22, 2009 at 1:29 PM, jlist9 jli...@gmail.com wrote: Hi David, Appreciate your reply. It's definitely helpful in clearing some of my thoughts, as well as in my process of learning Scala down the road. I also think your book is very well paced and organization of the content is well thought out. Great job! I'd like to explain a little bit where my frustration is coming from (and I don't want to waste people's time reading further for those who aren't interested.) I come from Java and Python background. When learning these two languages I didn't have a problem with the syntax. I think Java's syntax is well defined although verbose, and Python's is clear and concise. There is a small number of operators and data types and it's pretty clear which is for what purpose. Zen of Python says it well: There should be one-- and preferably only one --obvious way to do it. Except that sometimes, there isn't. In fact for any non-trivial case, there can be multiple ways to do anything. Sorting is an excellent example. There isn't just one way to sort. Which way you do it depends on the data, and your expectations. and I think this reflects well in the language design of Python. It's also generally discouraged to use too much black magic when coding in Python so that the code is easier to understand and maintain, although Python, being a powerful dynamic language, is very capable of black magics. These two things helped a lot in my learning of Python. It's a much smaller set of syntax to learn and it can be learned in a very short time, maybe through one or two online tutorials. The rest of it is just libraries, which are very rich in functionality, but the source code is easy to understand, because of the small set of clearly defined elements in the language - syntax and data types, etc.. However, I don't feel the same about Scala. In Scala, I often see multiple ways of doing the same thing, or very similar things, and this is confusing. Tell me about it If you find Scala confusing, never go look at Perl or Lisp Perl's motto is There is more then one way to do it. For example, there are multiple ways of running a program. You can have a script, or an application. To run an application, you can write an object and implement the main method, or you can extend Application class and write the code right in the body of the class. It took me a while to figure out how it works. What's wrong with having only one of them? Python only start as a script and Java only need a main method but either way works. Each brings it's own strengths and weaknesses to the table. And Java only needs a main isn't true in web development there is no main. There is no main if you write an eclipse plugin, and there is no main if you use a Swing based framework. (note if it's just swing, you do.) Another example is that in some scenarios ( ) and { } are interchangable in Scala code, although I haven't figured out in what occasions they are, and in what occasions they are not. This puzzles me more because ( ) and { } are the basic elements in a language and the language allows such flexible usage of them. Although I think there should be a good reason for this but it still struck me as odd. Wish I could articulate this better. Using the for comprehension as an example... it's the way it gets compiled into code. There is no for loop in Scala. A for comprehension gets boiled down to method calls. The curly braces get converted into an anonymous function. See http://creativekarma.com/ee.php/weblog/comments/the_scala_for_comprehension_from_a_java_perspective/ In contrast to Python's short list of operators, because operators are actually functions in Scala, it's easy for Scala to have a new operator, or have functions that works like operators. This is a powerful feature and it is good news for people who want to create DSLs. However I think a plethora of operators make code much harder to read before people can make it a habit to convert operators as functions in their mind. And too few operators leads to a whole lot of words, which leads to a whole lot of typing, or a whole lot of ctrl-space completions. It's a toss up. The wordy way is definitely noob friendly, while the operator way is more expert friendly. Which do you design a language for? Let me know when that particular religious war dies down please. As someone who slings code for a living the less I type the happier I am. YMMV To summarize, the more I learn Scala the more I realize how powerful it is. Meanwhile, I think Scala imposes this mind tweaking that people have to go through in learning this language, the difficulty that I didn't feel when I learned Python, or Java, C or C++. I like many of the features provided by Scala but I hope some of the things can be simplified/demystified to make it easier to pick up and use. Interestingly, I heard
[Lift] Re: A Critique On Lift
On Thu, Oct 22, 2009 at 1:29 PM, jlist9 jli...@gmail.com wrote: Hi David, Appreciate your reply. It's definitely helpful in clearing some of my thoughts, as well as in my process of learning Scala down the road. I also think your book is very well paced and organization of the content is well thought out. Great job! Thanks! I'd like to explain a little bit where my frustration is coming from (and I don't want to waste people's time reading further for those who aren't interested.) I come from Java and Python background. When learning these two languages I didn't have a problem with the syntax. I think Java's syntax is well defined although verbose, and Python's is clear and concise. There is a small number of operators and data types and it's pretty clear which is for what purpose. Zen of Python says it well: There should be one-- and preferably only one --obvious way to do it. Yeah... that's a big problem for Scala. If Scala were CAL ( http://groups.google.com/group/cal_language) there'd be fewer ways to do stuff. But Scala straddles Function and OO, Java libraries and Scala libraries, etc. Personally (in my library consumer mode), I use very little of Scala. I use List and Map and some XML stuff. I use case classes and pattern matching. I pass functions as parameters just like String and Long. I use Tuples. I think all that stuff is usable. I think it's consumable. Try using less of the language and libraries and see how it suits you. and I think this reflects well in the language design of Python. It's also generally discouraged to use too much black magic when coding in Python so that the code is easier to understand and maintain, although Python, being a powerful dynamic language, is very capable of black magics. These two things helped a lot in my learning of Python. It's a much smaller set of syntax to learn and it can be learned in a very short time, maybe through one or two online tutorials. The rest of it is just libraries, which are very rich in functionality, but the source code is easy to understand, because of the small set of clearly defined elements in the language - syntax and data types, etc.. However, I don't feel the same about Scala. In Scala, I often see multiple ways of doing the same thing, or very similar things, and this is confusing. For example, there are multiple ways of running a program. You can have a script, or an application. To run an application, you can write an object and implement the main method, or you can extend Application class and write the code right in the body of the class. It took me a while to figure out how it works. What's wrong with having only one of them? Python only start as a script and Java only need a main method but either way works. Another example is that in some scenarios ( ) and { } are interchangable in Scala code, although I haven't figured out in what occasions they are, and in what occasions they are not. This puzzles me more because ( ) and { } are the basic elements in a language and the language allows such flexible usage of them. Although I think there should be a good reason for this but it still struck me as odd. In contrast to Python's short list of operators, because operators are actually functions in Scala, it's easy for Scala to have a new operator, or have functions that works like operators. This is a powerful feature and it is good news for people who want to create DSLs. However I think a plethora of operators make code much harder to read before people can make it a habit to convert operators as functions in their mind. To summarize, the more I learn Scala the more I realize how powerful it is. Meanwhile, I think Scala imposes this mind tweaking that people have to go through in learning this language, the difficulty that I didn't feel when I learned Python, or Java, C or C++. I like many of the features provided by Scala but I hope some of the things can be simplified/demystified to make it easier to pick up and use. jlist9 On Thu, Oct 22, 2009 at 9:04 AM, David Pollak feeder.of.the.be...@gmail.com wrote: I've drafted a couple of different versions of a response to this message and they all seem somewhat mean and/or condescending... that is not at all my intent... here's another draft and please read it as acknowledging the challenges you are articulating, but suggesting a different perspective on the issue. Lisp/Scheme/Clojure is syntactically the simplest language around. Yet, when I look at Clojure code, it to a great degree seems complex to me, even though I know it's not. I believe this is because the patterns are different than those I've rehearsed through my journey of asm, Basic, C, ObjC, C++, Java, Ruby, and Scala. Rehearsing a different paradigm is part of making that paradigm part of you. When I studied French in grade school and high school, I was flummoxed and quite
[Lift] catch a URL
Hi list, I'm working on an appengine app, and need to store some user information. I authenticate the user with their google account, and I need to create their local entity only if it's their first time logging in. When a user logs in via google, they are redirected back to your app, to a URL of your choosing. My thought was to catch the request as it comes back and, if it's their first time logging in, create a User entity. My question then is how can I do this without: a) Using a snippet, called from the return landing page and emitting NodeSeq.Empty - hack. b) Using custom dispatch and then redirecting. That may work, but it's an unneeded round trip. Any thoughts? Thanks! PS - will share my app engineified code soon. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Perl's motto is There is more then one way to do it. I remember reading somewhere that part of the the design goal of Perl 6 was to make the language more sane. That says it all. For scripting language, I'd stick to Python, whose syntax feels natural to me, and to stay sane as much as I can. :-) Each brings it's own strengths and weaknesses to the table. True. But the same could be said if you had 10 ways to start a program. You have to balance the downside and the benefit. I personally think The confusion of 2 or 3 ways already out-weights the benefit in this particular case :-) And Java only needs a main isn't true in web development there is no main. There is no main if you write an eclipse plugin, and there is no main if you use a Swing based framework. (note if it's just swing, you do.) In those cases you are not starting a program/process. You are only loading a library - your code being the library, the framework being the entry point of the process. Wish I could articulate this better. Using the for comprehension as an example... it's the way it gets compiled into code. There is no for loop in Scala. A for comprehension gets boiled down to method calls. The curly braces get converted into an anonymous function. See http://creativekarma.com/ee.php/weblog/comments/the_scala_for_comprehension_from_a_java_perspective/ Thanks for the explanation. I'll try to understand it. And too few operators leads to a whole lot of words, which leads to a whole lot of typing, or a whole lot of ctrl-space completions. It's a toss up. The wordy way is definitely noob friendly, while the operator way is more expert friendly. If you are talking about Java, that's true. Python is very concise, though. People say if you are not able to do the same thing in 1/10 LoC in Python as in Java, you are not coding Python right. I think it's exaggerating a little bit but it's close. This is probably partially due to the dynamic nature of Python.. Or, if I may wax metaphorical (and deep into my own opinion)once more... who do you think is the better driver, a NASCAR driver or a Prius driver? Which is more expensive to learn to do? Which is more fun? :) I guess it depends on the goal of driving. NASCAR is definitely more fun but If the goal is to go from point A to B in time, safely and in a environment friendly way, maybe the Prius driver :-) And I think these are Java developers that Scala is also trying to appeal to. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
On Thu, Oct 22, 2009 at 2:27 PM, jlist9 jli...@gmail.com wrote: Perl's motto is There is more then one way to do it. I remember reading somewhere that part of the the design goal of Perl 6 was to make the language more sane. That says it all. For scripting language, I'd stick to Python, whose syntax feels natural to me, and to stay sane as much as I can. :-) Eh. Sanity is overrated :) Each brings it's own strengths and weaknesses to the table. True. But the same could be said if you had 10 ways to start a program. You have to balance the downside and the benefit. I personally think The confusion of 2 or 3 ways already out-weights the benefit in this particular case :-) See my points about noob vs experienced programmer. Also see: http://scala-blogs.org/2008/07/application-trait-considered-harmful.html Also, Application is a trait, so any Object can be an application. See multiple reasons :) And Java only needs a main isn't true in web development there is no main. There is no main if you write an eclipse plugin, and there is no main if you use a Swing based framework. (note if it's just swing, you do.) In those cases you are not starting a program/process. You are only loading a library - your code being the library, the framework being the entry point of the process. Ayup. The application trait is just an entry point in the process... Wish I could articulate this better. Using the for comprehension as an example... it's the way it gets compiled into code. There is no for loop in Scala. A for comprehension gets boiled down to method calls. The curly braces get converted into an anonymous function. See http://creativekarma.com/ee.php/weblog/comments/the_scala_for_comprehension_from_a_java_perspective/ Thanks for the explanation. I'll try to understand it. Good luck. I have it bookmarked so I can re-read it regularly :) Hopefully you're smarter then I am... :) And too few operators leads to a whole lot of words, which leads to a whole lot of typing, or a whole lot of ctrl-space completions. It's a toss up. The wordy way is definitely noob friendly, while the operator way is more expert friendly. If you are talking about Java, that's true. Python is very concise, though. People say if you are not able to do the same thing in 1/10 LoC in Python as in Java, you are not coding Python right. I think it's exaggerating a little bit but it's close. This is probably partially due to the dynamic nature of Python.. Python's lack of operators vs GREP might have been better :) GREP is a far better example of operator conciseness. :) Java has way too much boiler plate code, and way to many code slingers who think the JEE Blueprint Patterns are to be followed dogmatically rather then by need... *SIGH* Or, if I may wax metaphorical (and deep into my own opinion)once more... who do you think is the better driver, a NASCAR driver or a Prius driver? Which is more expensive to learn to do? Which is more fun? :) I guess it depends on the goal of driving. NASCAR is definitely more fun but If the goal is to go from point A to B in time, safely and in a environment friendly way, maybe the Prius driver :-) And I think these are Java developers that Scala is also trying to appeal to. You answered which is more fun, and analyzed the goals of each. How about the which driver is more skilled (ie better)? :) We can even add, who has more understanding of what happens to make the car go? (which of course leads to the question, whose more fuel efficient, the NASCAR driver who knows the shortest way around a turn, and how to draft? or the prius driver? ) :) -- James A Barrows --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Dynamic radio button
Hi Derek, I am displaying the contents of a table in ReadOnly mode as follows. The sample code is given below table tr td bDisplay Name/b/td td{coldef.displayname}/td /tr tr tdbRequire Cookies for Link/b /td td {coldef.requirecookies}/td /tr button onclick={SHtml.ajaxInvoke(getEditMode _)._2}Edit2/ button table onclick of Edit2 button I make it editable by making the coldef.displayname using ajaxText. But the coldef.requirecookies is a raidio button field(which has got two options Yes and No) Hence in editable mode I need to insert two radio buttons (with one button checked based on the value of coldef.requirecookies) . I was able to insert using Shtml.radio But I need to do ajax call on click of the button to modify the value of requirecookies field. Could you please suggest me how to achieve this. Thanks Sunanda On Oct 23, 1:39 am, Derek Chen-Becker dchenbec...@gmail.com wrote: I don't quite understand what you're trying to do. Could you give some more details? Are you trying to add more radios to an existing radio button set? On Wed, Oct 21, 2009 at 8:45 PM, sunanda sunanda.pa...@gmail.com wrote: Hi, I need to add radio button dynamically with one of the button checked and I need to invoke ajaxCall onclick of a radio button. How can I do this. Sunanda- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
Personally I think that Python is great for small simple things, but as soon as you start to scale the lack of statically checked guarantees starts to bite you. The larger and larger you get the more often and more subtle the bites get. Conversely, with a rigorous statically checked language, you can start to use the static checking in your favor. And, the more you understand the nuances of the type system the more and more you can form it to give you even stronger and stronger guarantees. Anecdotally, Haskell (which is perhaps one of the most advanced functional programming languages on the planet, particularly in the type system department) has regular reports in the mailing list from newbies that usually go from wtf to whenever I get the compiler to accept my program, it usually just works in a fairly short time. The syntax of Scala is an interesting and convoluted beast straddling an unusual line between more typical functional programming languages (Haskell, O'Caml, etc) and Java, and overall I think it ends up doing a fairly good job, though it does have its confusing parts. The ability to define operators in particular is a very tricky subject. I find, along with implicits, that I treat it as a power tool that should only be used in cases where it really makes quite alot of sense (used extremely frequently, coming from math concepts, etc). Luckily, it is fairly easy to find out where operators are coming from -- if it looks like an operator, then check to see if it has a : (colon), if it does, the thing on the right is where the operator is defined, so look in its doc. Otherwise, it's the thing on the left that has the operator, so look there. If neither place has the operator, then unfortunately you've just strayed into implicit conversion territory, which is unfortunately tricky to track down in many cases. Sometimes in that situation the scala REPL will help, because it prints out the types of expressions. Coming from a background of knowing Java and Haskell (along with Python and many other languages, not apropos to this discussion) I found the syntax of Scala to initially be inscrutable but I warmed to it after a month or two and now I think it's pretty good. Regarding () and {} BTW, you can replace a single-argument argument list with {}, e.g. def myFunction(a: String): Unit = println(a) myFunction(foobar) myFunction { foobar } The two calls are equivalent. It makes more sense with the latter format with multiple argument lists or DSL-like things. I could write up an example if you're interested, but it might be somewhat involved if you're not familiar with Scala or Lift. Overall, my suggestion would be to stick with it and ask questions. I think it's worth it, and the people here are really helpful. -Ross On Oct 22, 2009, at 5:39 PM, jlist9 wrote: Just want to add to this. web.py is a Python web development framework that I like a lot, for its simplicity. In about 10 lines of code you can have a complete, albeit simple, web application. No XML whatsoever. http://webpy.org/ Hope no one is offended by my mentioning a Python web framework on Lift list. Just want to say that things can be short and simple as well as easy to understand and easy to use. Of course the dynamic languages have their known issues, which is what drives me to Scala and Lift. And too few operators leads to a whole lot of words, which leads to a whole lot of typing, or a whole lot of ctrl-space completions. It's a toss up. The wordy way is definitely noob friendly, while the operator way is more expert friendly. Which do you design a language for? Let me know when that particular religious war dies down please. As someone who slings code for a living the less I type the happier I am. YMMV --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: One minor exception to the no-RTFM rule
Hehe, Yes, I've noticed quite a few of those, you might want to post that on the groups main page. On Oct 23, 3:33 am, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, We've got a solid rule in Lift-land which is we don't respond with RTFM. Why? Because we want to encourage people to ask questions. There's one exception to that rule that I'll make now. If your code suddenly breaks (we do make breaking changes to Lift from time to time), please at least search the project archives for the phrase Breaking Changes. We work hard to make sure the breaking changes are few and far between. We work hard to flag breaking changes long before they happen. Yeah, I know not everyone reads every post on this list, but folks with production apps should spend a little time here. But, before you post Gee my app was compiling yesterday and it's not compiling today, please search for recent posts with the words Breaking Changes in the title. We will flag these. We promise. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: How do I pass information between a Comet Actor and a StatefulSnippet ?
2009/10/23 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 10:59 PM, Jonathan Ferguson j...@spiralarm.comwrote: 2009/10/22 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 8:46 PM, Jonathan Ferguson j...@spiralarm.comwrote: I have a StatefulSnippet that uses a CometActor to keep users informed when performing a lengthy task, much like the example on the demo site ( http://demo.liftweb.net/longtime). The only difference being I pass the CometActor an identifier so it knows which job to inform the user about. When the task is over I need to display a form to the user, which I would assume would be rendered by the snippet. How does the actor tell the snippet the task is complete ? The Actor has to know about the snippet... you could send the Actor a message with a reference to the snippet and then call a method on the snippet when the Actor is done. Does that do it for you? I don't see how I can I do that. Currently the comet actor is setup in a snippet, see below, how do get a reference to the actor to send it a message ? In the snippet that yields this code: for { session - S.session } session.setupComet(WhatDog, Full(id), HeyDudeIMSoStateful(this)) // send the HeyDudeIMSoStateful message on setup... this can be anything Cool, would the correct place to collect the message be in one of the priority functions ? For instance ? override def lowPriority : PartialFunction[Any, Unit] = { case SnippetMessage(wrappedSnippet) = snippet = wrappedSnippet Thanks for the help. Jono lift:comet type=WatchDog name={id} span id=statustwd:statusWatch dog status/twd:status/span /lift:comet The id being passed via the name parameter is a reference the job to monitor. I mention this only as I'm not sure if it's bad form or not. I assuming it is trivial and I've thought or coded myself into a corner. Thanks in advance. Jono -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
Thanks Dan, I will try that. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: How do I pass information between a Comet Actor and a StatefulSnippet ?
On Thu, Oct 22, 2009 at 4:18 PM, Jonathan Ferguson j...@spiralarm.comwrote: 2009/10/23 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 10:59 PM, Jonathan Ferguson j...@spiralarm.comwrote: 2009/10/22 David Pollak feeder.of.the.be...@gmail.com On Wed, Oct 21, 2009 at 8:46 PM, Jonathan Ferguson j...@spiralarm.comwrote: I have a StatefulSnippet that uses a CometActor to keep users informed when performing a lengthy task, much like the example on the demo site ( http://demo.liftweb.net/longtime). The only difference being I pass the CometActor an identifier so it knows which job to inform the user about. When the task is over I need to display a form to the user, which I would assume would be rendered by the snippet. How does the actor tell the snippet the task is complete ? The Actor has to know about the snippet... you could send the Actor a message with a reference to the snippet and then call a method on the snippet when the Actor is done. Does that do it for you? I don't see how I can I do that. Currently the comet actor is setup in a snippet, see below, how do get a reference to the actor to send it a message ? In the snippet that yields this code: for { session - S.session } session.setupComet(WhatDog, Full(id), HeyDudeIMSoStateful(this)) // send the HeyDudeIMSoStateful message on setup... this can be anything Cool, would the correct place to collect the message be in one of the priority functions ? exactly right! For instance ? override def lowPriority : PartialFunction[Any, Unit] = { case SnippetMessage(wrappedSnippet) = snippet = wrappedSnippet Thanks for the help. Jono lift:comet type=WatchDog name={id} span id=statustwd:statusWatch dog status/twd:status/span /lift:comet The id being passed via the name parameter is a reference the job to monitor. I mention this only as I'm not sure if it's bad form or not. I assuming it is trivial and I've thought or coded myself into a corner. Thanks in advance. Jono -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: S.deleteCookie broken in M6
And don't forget goatrodeo, wizard, oh and the CMS. Quite a plate you have there, Makes my working and trying to get my site working look like a pittance. On Oct 23, 3:27 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Oct 22, 2009 at 9:07 AM, harryh har...@gmail.com wrote: File a ticket. Done It's Harry's tickets day for me today. The more you file, the more that get fixed. Oh my. That's really quite something there. And for all of you who want to see what's on my Lift (or ESME) plate:https://www.rememberthemilk.com/home/bearfeeder/10510876/ -harryh -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Security Explained
I've been pondering this for some time, could an actor be used as a cookie, if so would that render the stealing attack mote? 7. Lift uses the container's session management (usually JSESSIONID) for session management. As far as I know, Jetty, Tomcat, Glassfish are secure in terms of the way they deal with sessions. Of course, anything that's not over SSL is vulnerable to a cookie stealing attack. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Security Explained
On Thu, Oct 22, 2009 at 4:54 PM, Randinn rand...@gmail.com wrote: I've been pondering this for some time, could an actor be used as a cookie, No if so would that render the stealing attack mote? 7. Lift uses the container's session management (usually JSESSIONID) for session management. As far as I know, Jetty, Tomcat, Glassfish are secure in terms of the way they deal with sessions. Of course, anything that's not over SSL is vulnerable to a cookie stealing attack. -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
RrttrRrrrtrtrtrrrtrtrtrrttÞ Sent on the Now Network™ from my Sprint® BlackBerry -Original Message- From: ssid j.gat...@googlemail.com Date: Thu, 22 Oct 2009 18:03:25 To: Liftliftweb@googlegroups.com Subject: [Lift] Re: **Breaking Changes** **README** **Important** Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Cannot build our lift app. Is net.liftweb.util OK?
Hi Dano, You need to add import net.liftweb.common._ in your source code. This will import Box and Failure classes. Jean-Luc PS : copy of David's message explaining your problem. Hope it helps ! [...]The two big changes that you'll have to work with are: - *Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package*. [...] Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David 2009/10/22 Dano olearydani...@gmail.com I see that there is a similar issue posted against the thread New update changed something?. I will monitor the progress of that thread as well. Dan On Oct 22, 9:16 am, Dano olearydani...@gmail.com wrote: Hello Lifters, After doing my morning build (mvn -U clean install), I am getting a huge number of errors mostly related to net.liftweb.util (see below). We are building against 1.1-SNAPSHOT. Is anyone else having this problem? Thanks in advance. Dan [INFO] Compiling 113 source files to C:\sandboxes\igo\trunk\baf\target \classes [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:43: error: not found: value Full [WARNING] case _ = Full(DocType.xhtmlStrict) [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\com\enthiosys \buyafeature\lib\PlexusMagic.scala:23: error: Failure is not a member of net.liftweb.util [WARNING] import net.liftweb.util.{Failure = BoxFailure} [WARNING]^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:73: error: not found: value Empty [WARNING] LiftRules.xhtmlValidator = Empty [WARNING] ^ [WARNING] C:\sandboxes\igo\trunk\baf\src\main\scala\bootstrap\liftweb \Boot.scala:77: error: type mismatch; -- Jean-Luc Canela jlcane...@gmail.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
I know this is not the programming languages weblog but I'll still like to chip in a bit.. I love Scala. I know it's confusing, sometimes (more often than not) it makes my head hurts. But the language itself is so expressive. I think it's kinda, well, maybe I'm machoistic, but there's often instances when I run through a hard to understand Scala code and it just struck me how concise the language is. I'm a relatively n00b programmer, probably 5 to 7 years coding and most of them dealing with c, php and all sorts of c spawn in various shallow degree, and at my work I deal with Java, JavaScript and ActionScript. For me, the first impression of Scala is that it far exceeds the awesomeness of JS coding. I think JavaScript is really a very nice scripting language, but there are certain quirks that makes it feel inadequate at times. But Scala eliminates them, and adds in static typing, which is like awesome. And well, far too many underscores. I think a good mature language is poetic, which I find Scala kinda do fit this criteria. When you read through a difficult routine you think wow, this is clever, instead of times when I read C code and go like wow, this is tedious because a big portion of code ends up dealing with lower level problems. I know it's not comparable because the compiler abstracts out stuff, but speaking on a pure philosophical level, I just like it how the language allows you to do clever things. Unlike Java *sigh*. As for lift, I find some things very interesting, and mainly there is a big shift from the traditional php based or Java based frameworks (I worked on Drupal before, while not exactly the same stuff, but). I get the crux of it already, and am moving along and reading code as I go along. The use of snippets as opposed to a monolithic C layer struck me as odd, and xml spewing in snippets does feel a little wrong (oh the darn mvc brainwashing). But overall I like what I see and hope to do something useful with it. Will comment as I move in more. Thanks for the good job guys. I think it's Scala and Lift at this point of time that keeps my computing life exciting. Keep up the good work. regards, CH On Oct 23, 6:06 am, Ross Mellgren dri...@gmail.com wrote: Personally I think that Python is great for small simple things, but as soon as you start to scale the lack of statically checked guarantees starts to bite you. The larger and larger you get the more often and more subtle the bites get. Conversely, with a rigorous statically checked language, you can start to use the static checking in your favor. And, the more you understand the nuances of the type system the more and more you can form it to give you even stronger and stronger guarantees. Anecdotally, Haskell (which is perhaps one of the most advanced functional programming languages on the planet, particularly in the type system department) has regular reports in the mailing list from newbies that usually go from wtf to whenever I get the compiler to accept my program, it usually just works in a fairly short time. The syntax of Scala is an interesting and convoluted beast straddling an unusual line between more typical functional programming languages (Haskell, O'Caml, etc) and Java, and overall I think it ends up doing a fairly good job, though it does have its confusing parts. The ability to define operators in particular is a very tricky subject. I find, along with implicits, that I treat it as a power tool that should only be used in cases where it really makes quite alot of sense (used extremely frequently, coming from math concepts, etc). Luckily, it is fairly easy to find out where operators are coming from -- if it looks like an operator, then check to see if it has a : (colon), if it does, the thing on the right is where the operator is defined, so look in its doc. Otherwise, it's the thing on the left that has the operator, so look there. If neither place has the operator, then unfortunately you've just strayed into implicit conversion territory, which is unfortunately tricky to track down in many cases. Sometimes in that situation the scala REPL will help, because it prints out the types of expressions. Coming from a background of knowing Java and Haskell (along with Python and many other languages, not apropos to this discussion) I found the syntax of Scala to initially be inscrutable but I warmed to it after a month or two and now I think it's pretty good. Regarding () and {} BTW, you can replace a single-argument argument list with {}, e.g. def myFunction(a: String): Unit = println(a) myFunction(foobar) myFunction { foobar } The two calls are equivalent. It makes more sense with the latter format with multiple argument lists or DSL-like things. I could write up an example if you're interested, but it might be somewhat involved if you're not familiar with Scala or Lift. Overall, my suggestion
[Lift] Re: **Breaking Changes** **README** **Important**
On Thu, Oct 22, 2009 at 6:28 PM, Jim Barrows jim.barr...@gmail.com wrote: RrttrRrrrtrtrtrrrtrtrtrrttÞ bless you. Sent on the Now Network™ from my Sprint® BlackBerry -Original Message- From: ssid j.gat...@googlemail.com Date: Thu, 22 Oct 2009 18:03:25 To: Liftliftweb@googlegroups.com Subject: [Lift] Re: **Breaking Changes** **README** **Important** Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
On Thu, Oct 22, 2009 at 6:03 PM, ssid j.gat...@googlemail.com wrote: Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? I was lazy and didn't make that change. I guess I should move the XMPP stuff over. If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
How hard can automatic save be? But how would immutable DAOs work? There was a thread, I think on scala-user, a long time ago discussing it, that pretty much concluded it would be very problematic. David weighed in and said after a long time he concluded that databases represent state. - Timothy Perretttimo...@getintheloop.eu wrote: Right, no one likes mutable anything :-) I kinda wondered why you haven't pushed forward any more with the current record implementation... can one assume that is why - because it didn't feel right? Some of this stuff is going to be fundamental to how we move forward - id love to perhaps discuss something that would be better than what we have already. Even if its just pie in the sky talk... Cheers, Tim On 22 Oct 2009, at 17:22, David Pollak wrote: I don't like mutable fields. I don't like manual saving. Dunno... it's hard to articulate... it just feels wrong in my tummy. Also, I want to be clear that I think Marius did a great job of cleaning up some of the problems with Mapper when he did Record... my comments are not a negative to him... there's just something unsatisfying about the whole approach. Bet that was less than helpful. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: A Critique On Lift
The last use of _, as in empty_?, is not a special scala meaning. As on Java, underscores can be part of an identifier. Scala takes advantage of this to combine letters and symbols in one name. These names, like empty_?, are a Lift convention, as well as ..._! for use-with-care methods. The scala library uses isEmpty. David, is it your original convention?. - tirotim.romb...@googlemail.com wrote: override def validations = validPriority _ :: super.validations funny, I had stumbled on exactly the same line of code when beginning. Took me more than a day to understand what's going on. Especially because when you copied code from the PDF version of the Liftbook/Lift getting started guide, it would mess up spaces, so I would keep loooking for a _:: operator. The Scala guys have really pushed it a bit hard on the use of the underscore. At least four different uses: - it for defining anonymous functions like above - default value - matching placeholder whose value is ignored - use for constructing setter method names boolean functions (empty_?) --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: html not being evalutated
I think another solution is an Unparsed node. When the XML is converted to a string it will be outputed verbatim. - jackjack.wid...@gmail.com wrote: Let's say source.body is ahref=google.comSearch/a. If I put source.body in a span like this - span{source.body}/span source.body will be converted to text and the actual link tags will be displayed. What is the right way to do this? On Oct 21, 9:06 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Tue, Oct 20, 2009 at 10:16 PM, jack jack.wid...@gmail.com wrote: OK, I see why this is happening. the {exp} in the NodeSeq convert exp to a String. So I did by creating a string and then converting it to a NodeSeq at the end. Is there a way to do this without using and intermediary string? I don't know what a source is, but you really, really have to be careful about promoting a String to a NodeSeq. If the String has user-generated content in it, then you've got a cross-site scripting vulnerability waiting to happen. For user-generated content, I suggest using Textile parser built into Lift. In any case, if you don't have a NodeSeq in your data structure, you'll have to parse it into XML before displaying it. On Oct 21, 1:03 am, jack jack.wid...@gmail.com wrote: I have the following method display. source.body has html tags in it but the actual tags are showing instead of being evaluated. e.g. I'm seeing things like 'bHey There/b' instead of 'Hey There' in bold. This method is in a CometActor and is running when the page is rendered. Am I missing something obvious? def display(sources:List[Source]):NodeSeq = { span id=jooptable { for {source - sources} yield trtd{source.body}/td/tr } /table /span } -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
If we are using Actors for non Comet based stuff I assume we are free to leave them as is as long as we don't come asking for support ? I am thinking about moving through switching them over, but I'd like to do it at a leisurely pace. Jono 2009/10/23 David Pollak feeder.of.the.be...@gmail.com On Thu, Oct 22, 2009 at 6:03 PM, ssid j.gat...@googlemail.com wrote: Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? I was lazy and didn't make that change. I guess I should move the XMPP stuff over. If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: **Breaking Changes** **README** **Important**
On Thu, Oct 22, 2009 at 8:54 PM, Jonathan Ferguson j...@spiralarm.comwrote: If we are using Actors for non Comet based stuff I assume we are free to leave them as is as long as we don't come asking for support ? Absolutely. Use the Actor library that best suits your needs. I am thinking about moving through switching them over, but I'd like to do it at a leisurely pace. Jono 2009/10/23 David Pollak feeder.of.the.be...@gmail.com On Thu, Oct 22, 2009 at 6:03 PM, ssid j.gat...@googlemail.com wrote: Hi all, I'm using XMPP in my little LiftApp and tried to migrate my code to the new Lift Actors. Somehow it seems that net.liftweb.xmpp still uses Scala Actors. Is this intentional or about to change? I was lazy and didn't make that change. I guess I should move the XMPP stuff over. If not is it possible that Scala Actors communicate with Lift Actors? At the moment I don't get my project to compile due to some type mismatch errors but that might also be my lack of understanding of the different Actor implementations. Thanks, ssid On 22 Okt., 05:37, David Pollak feeder.of.the.be...@gmail.com wrote: Folks, As the title of this email indicates, there are breaking changes in Lift that just got pushed to master. We've migrated from Scala Actors to Lift Actors and included a series of traits that allow Lift to use its own Actors or Akka Actors (or anything else that implements that interface.) The two big changes that you'll have to work with are: - Box/Full/Empty/Failure was moved from the lift-util/net.liftweb.util package to the lift-common/net.liftweb.common package. The reason for this change is that we're going to make the lift-common package a more generic, non-web related package. It currently contains Box and Actor, but in the future may contain other interfaces that will have concrete implementations outside of Lift. We moved Box there because Box is richer than Scala's Option class and being able to carry Exceptions around in a Box while still being able to map/flatMap/foreach over a Box (these are unavailable for Scala's Either). Some we're going to actively promote using Box as a replacement for Option in all Scala apps. What this means for you is you have to import net.liftweb.common._ in any file that you also import net.liftweb.util.? - Lift no longer support Scala Actors for Comet Actors. The GenericActor API offers pretty much the same client interface to Lift's Actors, so ! and !? work the same way. However, there's no link, self, start or exit methods. Please do an mvn -U clean install on your code and run it against the new code. If you have any Comet-related weirdness, please report it immediately. We're planning M7 in 2 weeks, so we've got lots of time to iron any kinks out of this code. Thanks, David -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---