Vasya Novikov
2015-01-20 11:31:39 UTC
I recently thought my hobby project may be worth introducing to the
mailing list, so here it is:
https://github.com/vn971/roboCup
Interesting things about the project:
* it's Lift-based :)
* it uses an embedded jetty instead of the "system-wide tomcat" stuff.
It uses `sbt-assembly` to produce the self-contained jar. (Note that one
can still output war-s compatible with tomcat by marking the jetty
dependency as "provided".)
* it uses `spray-revolver` instead of the `xsbt-web-plugin` to do the
fast-reload cycle. This way SBT never gets "PermGen out of space". It
takes about 1-2 seconds to do a full server-restart cycle after source
change.
* it has a correct configuration of `sbt-native-packager` plugin, suited
for Liftweb. So, one can produce "*.deb" and "*.rpm" files. I switched
to manual scripts and jar-s anyway, they seemed much more simpler. But
if you want to experiment with "sbt-native-packager", you can.
* it uses two lint-er settings and "scalariform" to keep the project a
little better maintained. More precisely, I used "-lint:" scalac options
and the `wartremover` plugin.
* the project uses both "akka" and "liftweb" actors.
It's quite known thought that these actor systems work transparently by
the `!` method, and my project is not an exception to this. If you still
want to be even more convinced, here's the exact line. We're sending a
message from an akka actor to a lift actor here:
https://github.com/vn971/roboCup/blob/5c73ad2aaf0aed4571b892f05587618c59389058/src/main/scala/ru/ya/vn91/robotour/RegistrationCore.scala#L52
* initialization of the embedded jetty server can be seen here:
https://github.com/vn971/roboCup/blob/5c73ad2aaf0aed4571b892f05587618c59389058/src/main/scala/bootstrap/liftweb/Start.scala
The project goal and contents are probably much less interesting. It's
about a game that isn't exactly popular, and you cannot even play the
game on this server because it only integrates with another server (not
mine, not FOSS).
So, it's rather a collection of interesting & working solutions that can
be taken as an example.
Hope it may be interesting, have fun.:)
--
Vasya Novikov
--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
---
You received this message because you are subscribed to the Google Groups "Lift" group.
To unsubscribe from this group and stop receiving emails from it, send an email to liftweb+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
mailing list, so here it is:
https://github.com/vn971/roboCup
Interesting things about the project:
* it's Lift-based :)
* it uses an embedded jetty instead of the "system-wide tomcat" stuff.
It uses `sbt-assembly` to produce the self-contained jar. (Note that one
can still output war-s compatible with tomcat by marking the jetty
dependency as "provided".)
* it uses `spray-revolver` instead of the `xsbt-web-plugin` to do the
fast-reload cycle. This way SBT never gets "PermGen out of space". It
takes about 1-2 seconds to do a full server-restart cycle after source
change.
* it has a correct configuration of `sbt-native-packager` plugin, suited
for Liftweb. So, one can produce "*.deb" and "*.rpm" files. I switched
to manual scripts and jar-s anyway, they seemed much more simpler. But
if you want to experiment with "sbt-native-packager", you can.
* it uses two lint-er settings and "scalariform" to keep the project a
little better maintained. More precisely, I used "-lint:" scalac options
and the `wartremover` plugin.
* the project uses both "akka" and "liftweb" actors.
It's quite known thought that these actor systems work transparently by
the `!` method, and my project is not an exception to this. If you still
want to be even more convinced, here's the exact line. We're sending a
message from an akka actor to a lift actor here:
https://github.com/vn971/roboCup/blob/5c73ad2aaf0aed4571b892f05587618c59389058/src/main/scala/ru/ya/vn91/robotour/RegistrationCore.scala#L52
* initialization of the embedded jetty server can be seen here:
https://github.com/vn971/roboCup/blob/5c73ad2aaf0aed4571b892f05587618c59389058/src/main/scala/bootstrap/liftweb/Start.scala
The project goal and contents are probably much less interesting. It's
about a game that isn't exactly popular, and you cannot even play the
game on this server because it only integrates with another server (not
mine, not FOSS).
So, it's rather a collection of interesting & working solutions that can
be taken as an example.
Hope it may be interesting, have fun.:)
--
Vasya Novikov
--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
---
You received this message because you are subscribed to the Google Groups "Lift" group.
To unsubscribe from this group and stop receiving emails from it, send an email to liftweb+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.