EndTheFed.us

23 02 2009

I have found a gr8 explanation of how FED in the US is operating.





CouchDB – document database

21 02 2009

In the first video I watched over the weekend, Damien Katz, the creator of CouchDB, gives some advices as about when one should use the document database, which CouchDB is. He suggests to look at the real world task that is being computerized. If one would use a number of pieces of paper that are passed around to different people than is a every good indication that document based database will suit the solution well. In addition, if the piece of information is to be taken offline to be edited and later on replicated to the server to reflect the most recent version of the document, CouchDB is something to consider. Katz said that with CouchDB he is trying to bring the Lotus Notes model of document centered database to the open source world. He touches a bit upon Google’s BigTable: he believes that it’s only benefit is scalability and that CouchDB is trying to address different problems. CouchDB allows to create a view of the data whereas BigTable if just “this big key value table store.”

By the way, I also learned that Exchange was suppose to be an MS version of IBM Lotus Notes document database but it did not work out quite that well.

In the 2nd video, the presentation given by Katz at RubyFringe, I did not expect to find the great presentation about doing what you like and enjoying life (reaally something I did not expect). The stuff was good but not much practical info about CouchDB.

While browsing through planet@CouchDB I have found an excellent post about how CouchDB can make all ORM/GORM stuff obsolete. Since CounchDB does not enforce particular schema, my understanding is that all the document that are stored can be quite different i.e. contain different set of attributes. That really makes sense but I am still not sure if this is good – for sure it makes things easier in the beginning. The question that bothers me is how that affects the system once its running. What if we store a number of documents with one set of attributes and then update the view/editor to include some more. Data will be inconsistent and may lead to unpredicted results. It requires some additional checking for the presence/notnull/whatever parameters when working on the view part. If we were to use traditional/relational/schema model It would be required to alter the schema before new version could be up and running. It would be an explicit step to make sure that all the old data is suitable for new view.

Resources
Measuring performance





Apache Proxy for GWT and Alfresco

3 02 2009

Starting with GWT 1.5.3 it is not possible to read data from other servers than local. It makes development a bit tedious since if one was to do a test run of an app it would have to be first compiled (which takes sooo long) and then transferred to the server that all the XMLHttpRequest would be going to. Obviously we need some kind of proxy that will help us to fool the browser. Apache mod proxy fits great. Not to have repeat the same installation and configuration procedure on our all development machines I have created a VMWare vm that contains all the necessary things. Below are the steps that I followed.

  1. Configure NAT interface for VMWare 192.168.100.1/255.255.255.0 (on host machine)
  2. Install Ubuntu server 8.10
  3. Configure /etc/network/interfaces
    # The loopback network interface
    auto lo
    iface lo inet loopback
    # The primary network interface
    auto eth0
    iface eth0 inet static
    address 192.168.100.3
    netmask 255.255.255.0
    gateway 192.168.100.2
  4. sudo apt-get install apache2
  5. Enable http proxy module
    a2enmod proxy_http
  6. Enable virtual hosts
    a2enmod vhost_alias
  7. Allow connections to proxy from all hosts (for convenience) in /etc/apache2/mods-enabled/proxy.conf
    AddDefaultCharset off
    Order deny,allow
    Deny from all
    #Allow from .example.com
    Allow from all
  8. Enable proxy mapping by adding /etc/apache2/sites-enabled/010-proxy:
    <VirtualHost *:80>
        ServerAdmin spam@poland.pl
        ServerName gwtproxy.poland.pl
        ServerAlias gwtproxy
        ErrorLog /var/log/apache2/gwtproxy.poland.pl-error_log
        CustomLog /var/log/apache2/gwtproxy.poland.pl-access_log common
        ProxyPass /pl.poland.cube.Cube http://192.168.100.1:8888/pl.poland.cube.Cube
        ProxyPassReverse /pl.poland.cube.Cube http://192.168.100.1:8888/pl.poland.cube.Cube
        ProxyPass /alfresco http://repo.cube.poland.pl:1030/alfresco
        ProxyPassReverse /alfresco http://repo.cube.poland.pl:1030/alfresco
        DocumentRoot /var/www
    </VirtualHost>
  9. Add to /etc/hosts (on host machine):
    192.168.100.3 gwtproxy gwtproxy.mxts.pl
  10. Edit run configuration in Intellij Idea
    Run configuration in Idea

When run the hosted browser should run app via proxy and it should be possible to read data from http://gwtproxy/alfresco/* which is actually on completely different server.

Sources
Solution on google groups