gps

The Global Positioning System (GPS) is a space-based satellite navigation system that provides location and time information in all weather conditions, anywhere on or near the Earth where there is an unobstructed line of sight to four or more GPS satellites. [read more at http://en.wikipedia.org/wiki/Global_Positioning_System]

  • apache_maven

    Doxygen phpDocumentator phpunit-logo teamcity512 maven4php

    Maven for PHP uses the power of Maven for building, reporting on and creating documentations of PHP projects. It adapts the Maven build lifecycle to the PHP world while fully supporting PHP 4 and PHP 5. PHP for Maven uses PHPUnitfor unit testing and doxygenfor creating the api documentation.
    Use a PHP library project to create a library that can be used by other PHP libraries or PHP web projects. Use a PHP web project to create a standalone web project.

    So I quickly describe what I did install on my root server (OpenSuse 11.X)

    My Objectives: being able to build all my Joomla! component using best agile development practices

    “Specific tools and techniques such as continuous integration, automated or xUnit test, pair programming, test driven development, design patterns, domain-driven design, code refactoring and other techniques are often used to improve quality and enhance project agility.”

    Maven

    While not needed as TeamCity has an integrated Maven engine, I would like to use an external MAVEN version, in order to have the latest version and living dangerously on the edge!

    So I download

    # wgethttp://apache.mirror.testserver.li/maven/binaries/apache-maven-2.1.0-bin.tar.gz

    And unpack

    # tar xvf apache-maven-2.1.0-bin.tar.gz

    Since I would like to avoid having a version number in my configuration build path, I create a symlink

    # ln -s apache-maven-2.1.0 maven

    I just now tell TeamCity to use my own Maven version, by specifying the Maven Home Path

    teamcity.maven4php 

    phpDocumentor

    phpDocumentor is an open source documentation generator written in PHP. It automatically parses PHP source code and produces readable API and source code documentation in a variety of formats. phpDocumentor generates documentation based on PHPDoc-formatted comments and the structure of the source code itself. It supports documentation of both object-oriented and procedural code. phpDocumentor can create documentation in HTML, PDF, CHM or Docbook formats.

    Can be installed using PEAR, simply run

    # pear upgrade PhpDocumentor
    downloading PhpDocumentor-1.4.2.tgz...
    Starting to download PhpDocumentor-1.4.2.tgz (2,421,028 bytes)
    ..............................................................................done: 2,421,028 bytes
    upgrade ok: channel://pear.php.net/PhpDocumentor-1.4.2

    PHPUnit

    PHPUnit is a unit testing framework for the PHP programming language. Created by Sebastian Bergmann, PHPUnit is one of the xUnit family of frameworks that originated with Kent Beck's SUnit.

    Can be installed using PEAR, simply run

    # pear upgrade PHPunit

    DOxygen

    Doxygen is a documentation generator for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D. It runs on most Unix-like systems, including Mac OS X, as well as on Windows. The first version of Doxygen borrowed some code of an old version of DOC++; later, the Doxygen code was rewritten by Dimitri van Heesch. from www.doxygen.org

    # zypper se doxy
    Lese installierte Pakete...

    S | Name       | Zusammenfassung                                    | Typ 
    --+------------+----------------------------------------------------+------
      | doxygen    | Automated C, C++, and Java Documentation Generator | Paket
      | doxywizard | Graphical User Interface for Doxygen               | Paket

    # zypper in doxygen

    Herunterladen von Paket doxygen-1.5.5-17.1.x86_64 (1/1), 2,3 M (6,2 M installiert)
    Lade herunter: doxygen-1.5.5-17.1.x86_64.rpm [fertig] 
    Installiere: doxygen-1.5.5-17.1 [fertig]

    Artifactory

    Prepare Artifactory by adding new Maven for PHP repositories

    At http://maven.waltercedric.com/artifactory/webapp/repositoryconfig.html

    As Admin user (you cant go to that links without being an admin!), add 2 new repositories

    teamcity.maven4php.artifactory

    In Maven settings.xml

    In order to use Artifactory at his best (proxy and caching of remote repositories), I have a Maven settings.xml that contains ONLY

    # vi /home/teamcity/.m2/settings.xml

    <activeProfiles>
      <activeProfile>cedric-profile</activeProfile>
    </activeProfiles>

    <profiles>
       <profile>
            <id>cedric-profile</id>
            <activation>
            <activeByDefault>true</activeByDefault>
            </activation>
    <repositories>
        <repository>
            <id>central</id>
            <url>http://maven.waltercedric.com/artifactory/repo/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>snapshots</id>
            <url>http://maven.waltercedric.com/artifactory/repo/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>http://maven.waltercedric.com/artifactory/plugins-releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>snapshots</id>
            <url>http://maven.waltercedric.com/artifactory/plugins-snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
        </profile>
      </profiles>
    </settings>

    Attention: Artifactory WIKI tell to use http://maven.waltercedric.com/artifactory/plugins-releases and not http://maven.waltercedric.com/artifactory/plugins-releases/ on my HOST with mod_proxy it made an error 404 If I do not add a slash at the end. Try with your host before, you will gain a lot of time by checking if the URL is valid!

    Note that http://url:port/artifactory/repo/ is a virtual repositories that proxy all external repositories

     

    Eclipse

    Use SolarJoomla (hopefully to be distributed this week) to have a running Eclipse, PDT, Maven 4 PHP environment, Mylyn, TeamCity in no time

    Lets build!

    First I create a new Maven Project with Archetype “Maven for PHP” “PHP5 libraries”

    In TeamCity I did create a new project “Joomla 15 components plugins and modules” and a new Build “MyGuestbook”.

    teamcity.maven4php.myguestbook

    The first build failed with

    [INFO] PHP Warning: require_once(PHPUnit/TextUI/TestRunner.php): failed to open stream: Operation not permitted

    This is because of my PHP security restrictions, I only allow file to be opened from /home/teamcity/

    So I just add

    /home/teamcity/TeamCity/buildAgent/ to my open_basedirin my php.ini

    ; open_basedir, if set, limits all file operations to the defined directory
    ; and below.  This directive makes most sense if used in a per-directory
    ; or per-virtualhost web server configuration file. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    open_basedir = /srv/www/vhosts:/tmp:/home/teamcity/TeamCity/buildAgent/

    To be continued

    So long an empty PHP project is building successfully, tomorrow I will try to make a REAL Joomla! component build there!

    As soon as It works, and all my Joomla! components are running in TeamCity, I will try to achieve the same goal in Bamboo, why? because it is simply . . .fun!

    Links

  • Apache foundation is using Hudson for continuous build (and also JBOSS)

    Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron.
    Among those things, current Hudson focuses on the following two jobs:

    1. Building/testing software projects continuously, just like CruiseControl or DamageControl.
      In a nutshell, Hudson provides an easy-to-use so-called continuous integration system,
      making it easier for developers to integrate changes to the project, and making it easier
      for users to obtain a fresh build. The automated, continuous build increases the productivity.
    2. Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those
      that are run on a remote machine. For example, with cron, all you receive is regular e-mails that
      capture the output, and it is up to you to look at them diligently and notice when it broke.
      Hudson keeps those outputs and makes it easy for you to notice when something is wrong.

    This is a public build and test server for various Apache Projects.

     


     

    An Eclipse plugin is also available the online WIKI is HERE

    If you are shopping for a build server, and you are not on a budget, I can recommend you the
    excellent Team City from JetBrains. Maven integration is also good, but wont probably never reach the level
    of Hudson as it is made by Apache and tailored for their frameworks needs.

  • apache_maven

    Maven is a software tool for Java project management and build automation created by Jason van Zyl in 2002. It is similar in functionality to the Apache Ant tool (and to a lesser extent, PHP's PEAR and Perl's CPAN), but has a simpler build configuration model, based on an XML format. Maven is hosted by the Apache Software Foundation, where it was formerly part of the Jakarta Project.

    Maven uses a construct known as a Project Object Model (POM) to describe the software project
    being built, its dependencies on other external modules and components, and the build order.
    It comes with pre-defined targets for performing certain well defined tasks such as compilation
    of code and its packaging.

    A key feature of Maven is that it is network-ready.The core engine can dynamically download
    plug-ins from a repository
    , the same repository that provides access to many versions of different
    Open Source Java projects, from Apache and other organizations and developers. This repository
    and its reorganized successor, the Maven 2 repository, strives to be the de facto distribution
    mechanism for Java applications, but its adoption has been slow. Mavenprovides built in support
    not just for retrieving files from this repository, but to upload artifacts at the end of the build.
    A local cache of downloaded artifacts acts as the primary means of synchronizing the output of
    projects on a local system.

    Mavenis based on a plugin-based architecture that allows it to make use of any application
    controllable through standard input. Theoretically, this would allow anyone to write plugins to
    interface with build tools (compilers, unit test tools, etc.) for any other language.
    from WikiPedia

  • atlassian.bamboo.logo My Bamboo continuous integration server is now fully functional and available at&160; http://bamboo.waltercedric.com/

    &160;

    &160;

    &160;

    Remember Atlassian is providing free license for Open Source Projects:

    Atlassian supports and believes in the Open Source movement -Bamboo utilizes a number of good Open Source components, and Atlassian developers are committers on a large number of Open Source projects.

    To give back to the open source community (and hopefully improve the quality of those projects!),Bamboo is free for any Open Source project to use.

    There are a few requirements for an Open Source license, the main ones being:

    • Established code base
    • Publicly available project website
    • Using an approved open source license
    • YourBamboo instance will be publicly accessible

    My objective is to make Joomla! and all my projects also running in Bamboo (not only in TeamCity as the limit of 20 builds will be rapidly reached)

    Visit it by clicking on the picture

    Very quick Bamboo install how to

    Install a fresh Tomcat 6 runtime,

    Move the war into the ROOT web context of tomcat

    Choose free port for HTTP, AJP, and Tomcat server port&160; in conf/server.xml

    <Server port="8050" shutdown="SHUTDOWN">
    
    <Connector port="8051" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"
               enableLookup="false"         
               useBodyEncodingForURI="true" 
    
    <Connector port="8030" protocol="AJP/1.3" redirectPort="8443" />

    Copy mysqldriver.jar into /lib

    Configure the data source into server.xml

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
            <Resource name="jdbc/BambooDS" auth="Container" type="javax.sql.DataSource"
                username="user"
                password="pwd"
                driverClassName="com.mysql.jdbc.Driver"            
                url="jdbc:mysql://localhost/schema?autoReconnect=true"            
                maxActive="20"
                validationQuery="select 1" />

    Edit /etc/apache/worker.properties

    worker.list=ajp13, teamcity, jira, bamboo
    worker.bamboo.port=8030
    worker.bamboo.host=localhost
    worker.bamboo.type=ajp13

    &160;

    Create a vhost.conf in the subdomains

    # vi /srv/www/vhosts/waltercedric.com/subdomains/bamboo/conf/vhost.conf

    ServerName bamboo.waltercedric.com
    
    ProxyPass /  ajp://bamboo.waltercedric.com:8030/
    <Proxy *>
       Order Allow,Deny
       Allow from all
    </Proxy>
    
    <Directory />
      Options FollowSymLinks
      AllowOverride None
    </Directory>

    To tell plesk to include an overridden vhost.conf, run

    # /usr/local/psa/admin/sbin/websrvmng

    Restart Apache2

    rcapache2 restart

  • Tomshardware has an interesting articles for all XBOX modder which prefer having an original Network attached Storage instead of a game machine.

    With the arrival of the Xbox360, there will soon be a buyer's market for its older sibling. Kevin Herring shows how to give an Xbox a new lease on life as a full-featured NAS.


    {mosgoogle}

  • apache_maven

     cargo-banner-left
    A ready to use example on how you can deploy your web application to a Tomcat 6 container using Maven Cargo. Cargo is a thin wrapper that allows you to manipulate Java EE containers in a standard way. 

    Cargo provides the following Tools and APIs:

    • A Java API to start/stop/configure Java Containers and deploy modules into them.
    • A Java API to parse/create/merge Java EE Modules
    • Ant tasks, Maven 1, Maven 2 plugins.
    • Intellij IDEA and Netbeans plugins are in the sandbox.

    First you have to decide if your tomcat server run locally or remotely as this influence the way you’ll configure your pom.xml

    Below is an example of a standard architecture

    |---MyApplication
    |           |- ear       (ear)
    |           |- service (jar)
    |           |- client    (jar)
    |           |- web      (war)
    |           |- integration (jar)

    The most interesting Maven module, which will be the subject of this article, and the next one is describing how to automate the deployment of a war to Tomcat and later on running integration tests using Selenium.

    'Integration testing'  is the activity of software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before system testing. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing. [WikiPedia]

    Deploying to Tomcat running locally

    Locally mean running on your development machine, at localhost 8080 or on any other port. Maven has the concept of a 'phase' which can be thought of a collection of goals. Hence here we are specifying that during the
    ’pre-integration-test’ phase first deploy the web app to the container specific folder and then start the container. Both 'deployer-deploy' and 'start' are cargo specific goals. The code below is already ready for integration testing!

    <!—Example of Configuration –>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <configuration>
                    <wait>true</wait>
                    <container>
                        <containerId>tomcat6x</containerId>
                        <type>installed</type>
                        <home>${catalina.home}</home>
                    </container>
                    <configuration>
                        <type>existing</type> 
                        <home>${catalina.home}</home>
                    <properties>
                            <cargo.tomcat.manager.url>https://yourhost/manager</cargo.tomcat.manager.url>
                            <cargo.remote.username>ManagerAdminLogin</cargo.remote.username>
                            <cargo.remote.password>ManagerAdminPassword</cargo.remote.password>
                        </properties>
                    </configuration>
                    <deployer>
                        <type>installed</type>
                        <deployables>
                            <deployable>
                                <groupId>com.waltercedric</groupId>
                                <artifactId>myapplication-web</artifactId>
                                <type>war</type>
                            </deployable>
                        </deployables>
                    </deployer>
                </configuration>
                <executions>
                    <execution>
                        <id>start-container</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>deployer-deploy</goal>
                            <!--  Only local containers can be started 
                            <goal>start</goal>
                            -->
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-container</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>deployer-undeploy</goal>
                            <!--  Only local containers can be started 
                            <goal>stop</goal>
                            -->
                        </goals>
                    </execution>
                    <execution>
                        <id>verify-deploy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>deployer-deploy</goal>
                        </goals>
                    </execution> 
                    <execution>
                        <id>clean-undeploy</id>
                        <phase>pre-clean</phase>
                        <goals>
                            <goal>deployer-undeploy</goal>
                            <!--  Only local containers can be started 
                            <goal>stop</goal>
                            -->
                        </goals>
                    </execution> 
    
                </executions>
            </plugin>
        </plugins>
    </build>

    Deploying to Tomcat running remotely

    The code slightly change:

    • You can NOT start and stop Tomcat running remotely, only deploy and un deploy your web application
    • ‘installed’ is replaced by ‘remote’
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <configuration>
                    <wait>true</wait>
                    <container>
                        <containerId>tomcat6x</containerId>
                        <type>remote</type>
                    </container>
                    <configuration>
                        <type>remote</type> 
                        <properties>
                            <cargo.tomcat.manager.url>https://yourhost/manager</cargo.tomcat.manager.url>
                            <cargo.remote.username>ManagerAdminLogin</cargo.remote.username>
                            <cargo.remote.password>ManagerAdminPassword</cargo.remote.password>
                        </properties>
                    </configuration>
                    <deployer>
                        <type>installed</type>
                        <deployables>
                            <deployable>
                                <groupId>com.waltercedric</groupId>
                                <artifactId>myapplication-web</artifactId>
                                <type>war</type>
                            </deployable>
                        </deployables>
                    </deployer>
                </configuration>
                <executions>
                    <execution>
                        <id>start-container</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>deployer-deploy</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-container</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>deployer-undeploy</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify-deploy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>deployer-deploy</goal>
                        </goals>
                    </execution> 
                    <execution>
                        <id>clean-undeploy</id>
                        <phase>pre-clean</phase>
                        <goals>
                            <goal>deployer-undeploy</goal>
                        </goals>
                    </execution> 
                </executions>
            </plugin>
        </plugins>
    </build>

    If you don’t want to let cargo deploy your web application artefact under the default name myapplication-web-0.0.1.SNAPSHOT.war, you can add the following to the deployable section of cargo

    <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <configuration>
            <deployer>
                <deployables>
                    <deployable>
                        <properties>
                            <context>mywebapp</context>
                        </properties>
                    </deployable>
                </deployables>
            </deployer>
        </configuration>
    </plugin>

    So you’ll be able to access your web application with http://localhost/mywebapp instead of http://localhost/myapplication-web-0.0.1.SNAPSHOT

    From now on, any phase higher than ’pre-integration-test’ will trigger the deployment to your web application to any tomcat, jboss or weblogic container. As a reminder, here are the major phase of Maven, You can put many of them just separate by a space in run as - goals

    • validate - validate the project is correct and all necessary information is available
    • generate-sources - generate any source code for inclusion in compilation
    • process-sources - process the source code, for example to filter any values
    • generate-resources - generate resources for inclusion in the package
    • process-resources - copy and process the resources into the destination directory, ready for packaging
    • compile - compile the source code of the project
    • process-classes - post-process the generated files from compilation, for example to do byte code enhancement on Java classes
    • generate-test-sources - generate any test source code for inclusion in compilation
    • process-test-sources - process the test source code, for example to filter any values
    • generate-test-resources - create resources for testing
    • process-test-resources - copy and process the resources into the test destination directory
    • test-compile - compile the test source code into the test destination directory
    • test - run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed
    • prepare-package - perform any operations necessary to prepare a package before the actual packaging.
    • package - take the compiled code and package it in its distributable format, such as a JAR
    • pre-integration-test - perform actions required before integration tests are executed. This may involve things such as setting up the required environment
    • integration-test - process and deploy the package if necessary into an environment where integration tests can be run
    • post-integration-test - perform actions required after integration tests have been executed. This may including cleaning up the environment
    • verify - run any checks to verify the package is valid and meets quality criteria
    • install - install the package into the local repository, for use as a dependency in other projects locally
    • deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects

    I recommend you also to use:

    • Maven profiles (triggered by environment, Linux, Windows, DEV, TEST, PROD)
    • Key value pair for sensitive data (login, password)
    • Key value pair for contextual data (URL’s of management console)

    All of these data can be saved in your Maven settings.xml or given by system variables at build time.

  • agile.development

     

    Starting from now on, I will deliver all my latest (unstable) extensions versions through  my continuous build server. All request or bugs discovery that are requested in my forums and solved will lead to a new build that you will be able to download a lot faster than before.

    Thanks to Maven for PHP, I can now commit, 60 seconds later, unit test run and  the result is a direct download for my extensions snapshots.

     

     

     

     

     

     

    Here is an example with the module mod_related_thumb_items

    Head to http://teamcity.waltercedric.com/teamcity/guestLogin.html?guest=1

    Locate the module or component you are interested in:

    HowTODownloadLatest

    Click on the latest build, must be  Success

    HowTODownloadLatest.01  

    If this build is a direct answer to a support request in my forums, or solve an issue, You should be able to see in changes the commit description, and even which file have been changed after and before the commit.

    http://teamcity.waltercedric.com/teamcity/viewLog.html?buildId=217&buildTypeId=bt3&tab=buildChangesDiv

    HowTODownloadLatest.05

    But Hey! you want to download this latest build now, go to artifact

    HowTODownloadLatest.02

    Staying  on the edge by using RSS

    You can monitor any build by using the RSS icon in your browser toolbar, or example with this module, it would be

    http://teamcity.waltercedric.com/guestAuth/feed.html?buildTypeId=bt20&itemsType=builds&userKey=guest

    This way of downloading the latest extensions do not replace the page http://www.waltercedric.com/joomla-releases-mainmenu-269.html where there is there only stable versions.

    The next step is to make the maven phase “site” work (I have issue with phpdocumentor not found), this will create automatically a internet site in one of my sub-domains ad hide this complexity.

  • compilation of the famous dilbert.com about Blockchain and Bitcoin

    dilber and blockchain 12 dilber and blockchain 11

     

  • clip_image001

  • 2016-07-27_14-04-20

    Official Resources

    Flight Skills and Post Production Series

  • An example driven presentation on how we leverage custom Docker containers (maven, npm, oc client) to handle build dependencies on local workstations, provide clean Jenkins slaves, run tests inside orchestrated deployments or run tests inside OpenShift projects. By Matthias Bertschy from sicpa.

    Slides

    Recorded by me at Docker Meetup group 5 Oct. 2016

  • Resources such as JavaScript and CSS files can be compressed before being sent to the browser, improving network efficiencies and application load time in certain case. If you are not using Apache with mod_deflate or nginx in front of your web application, you may need to implement resources compression yourself….

    Wait! don’t start writing your own filter to compress files like CSS, html, txt, javascript it is way more difficult than you think to properly handle http response headers and do proper handling of mime type and caching. In one sentence don’t start reinventing the wheel: use ehcache for example.

    Ehcache is an open source, standards-based cache used to boost performance, offload the database and simplify scalability. Ehcache is robust, proven and full-featured and this has made it the most widely-used Java-based cache. It can scale from in-process with one or more nodes through to a mixed in-process/out-of-process configuration with terabyte-sized caches. For applications needing a coherent distributed cache, Ehcache uses the open source Terracotta Sever Array.

    in the pom.xml of your project add the following dependency to ehcache-web

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-web</artifactId>
        <version>2.0.4</version>
    </dependency>

    in your web.xml, add a filter and configure it properly

    <filter>
     <filter-name>CompressionFilter</filter-name>
     <filter-class>net.sf.ehcache.constructs.web.filter.GzipFilter</filter-class>
    </filter>
    <filter-mapping>
     <filter-name>CompressionFilter</filter-name>
     <url-pattern>*.css</url-pattern>
    </filter-mapping>
    <filter-mapping>
     <filter-name>CompressionFilter</filter-name>
     <url-pattern>*.html</url-pattern>
    </filter-mapping>
    <filter-mapping>
     <filter-name>CompressionFilter</filter-name>
     <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
     <filter-name>CompressionFilter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>

    Read more at EhCache Web Caching page.

    As a bonus, I provide you also below the configuration for the famous challenger HTTP server nginx

     ##
     # Gzip Settings
     ##
     gzip  on;
     gzip_http_version 1.1;
     gzip_vary on;
     gzip_comp_level 6;
     gzip_proxied any;
     gzip_types text/plain text/css application/json application/x-javascript \
    text/xml application/xml application/xml+rss text/javascript \
    application/javascript text/x-js; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    &160;

    or for the number one HTTP server Apache using mod deflate /etc/apache2/conf.d/deflate.conf

    <Location />
    # Insert filter
    SetOutputFilter DEFLATE
    
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE text/html
    
    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    
    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    
    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    # Don't compress images
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    
    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary
    </Location>
  • robogeo.generate.google.map.jpg

    There is a trend on the camera market, people want now to tag their photo, not only by adding sound (micro can be found now on point and shot consumer camera), or letting the camera add EXIF embeded data ( Exchangeable Image File Format) into each pictures.
    Consumer always want more!, and with the arrival of Google Maps on the market, some years ago, It has not taken much time till users decide to add geoposition (with a GPS) to their pictures. While this feature can be found on some high end camera model (camera body > $10000, as an option it is quite pricey too), TomTom, Garmin and other consumer GPS are now able to provide a cheap and ready to go alternative.  A data logger is a device able to record periodically  latidutes, longitudes, altitude, date and time while yyou are on the road. It is now possible with some tools to merge pictures and files produced by GPS ad save new meta informations in EXIF data.

    Click Here for a live example

    Why use a data logger?

    • What itinerary did I travel yesterday?
    • When did I start driving today?
    • How long did It take to go from A to B and C in between?
    • Which is the current altitude and speed?
    • How can I remind precise positions?
    • When exactly I traveled there? 

    Combined with your favorite DSLR or point and shot camera

    • You take pictures but now can't remember the exact place of some of the  photos
    • With a software, you can then match the coordinates with the picture and you  like to see your pictures on a map. (Google map, Google Earth)

    Dedicated data logger

    Sony has started to sell a small device (Sony GPS-CS1KA), it cost $105 and do not use the latest SIRFstar III chipset, so don't expect much of it, old GPS chipsets are known to be slower to find satellites, have lower sensivity, do not work also well in city.
    Anyway here are the main characteristics:
    Sony.GPS-CS1KA

    • Keep track of your digital photos with satellite precision
    • Holds approximately 360 hours (31MB) of data
    • Records a location log every 15 seconds
    • Simple operation; no need for complex set up or connection, one button, two lights
    • Compatible with most digital still cameras; compliance with EXIF 2.1 or later
    • Small
    • 12-channel GPS with no screen.
    • The included software detects the unit and imports the GPS data. Another module detects attached cameras/MSD and imports the data
    Or you may want to buy a better dedicated data logger, Royaltek, Evermore, Gisteq or Globalsat are selling small device.

    Amod AGL3080 GPS Data Logger (SiRF III, Driverless, 128MB, Push to Log) (Windows and Mac Image Software included)
    EverMore GT-900BT Bluetooth Data Logger (SiRF III, Driverless, 120,000 Waypoints, Photo Software Included) (Your Choice of Free Mount)
    GlobalSat BT-335 Bluetooth Data Logger (SiRF III, Download via Bluetooth) (Your Choice of Free Mount) (Free Ground Shipping)
    Royaltek RBT-2300 Bluetooth Data Logger GPS (SiRF III GSC3f/LP, WAAS, 650,000 Waypoints) (Your Choice of Free Mount)
    Amod AGL3080 GPS Data Logger SiRF III, Driverless, 128MB, Push to Log EverMore GT-900BT Bluetooth Data Logger (SiRF III, Driverless, 120,000 Waypoints, Photo Software Included) GlobalSat BT-335 Bluetooth Data Logger SiRF III, Download via Bluetooth Royaltek RBT-2300 Bluetooth Data Logger GPS SiRF III GSC3f/LP, WAAS, 650,000 Waypoints
    Royaltek RGM-3800 GPS Data Logger (SiRF III GSC3f/LP, WAAS, 650,000 Waypoints)
    Qstarz BT-Q1000 Bluetooth Data Logger GPS Receiver (51 ch, Auto On/Off, WAAS, Bluetooth, USB, Push to Log, 100,000 Waypoints) (Your Choice of Free Mount)
    EverMore GT-600 Image Tracker
    i-Blue 747 Bluetooth Data Logger GPS Receiver (Auto On/Off, 32 ch, WAAS, Bluetooth, USB, Push to Log, 16Mb Memory with Google Integration) (Your Choice of Free Mount)
    Royaltek RGM-3800 GPS Data Logger SiRF III GSC3f/LP, WAAS, 650,000 Waypoints starz BT-Q1000 Bluetooth Data Logger GPS Receiver 51 ch, Auto On/Off, WAAS, Bluetooth, USB, Push to Log, 100,000 Waypoints EverMore GT-600 Image Tracker i-Blue 747 Bluetooth Data Logger GPS Receiver Auto On/Off, 32 ch, WAAS, Bluetooth, USB, Push to Log, 16Mb Memory with Google Integration
    GiSTEQ Bluetooth PhotoTrackr for Digital Camera (Bluetooth GPS Receiver and Photo Tracking Software Included) (Your Choice of Free Mount)
    GiSTEQ PhotoTrackr for Digital Camera (GPS Receiver and Photo Tracking Software Included)
    i.Trek Z1 BT Data Logger GPS Receiver (Solar, MTK 32 Ch, WAAS, Auto On/Off, Bluetooth, USB, Data Logger with Google Earth Integration) (Free GpsGate Utility) (Your Choice of Free Mount)
    RoyalTek BlueGPS Mini Mobile Data-logger RBT-1100 for Windows, Pocket PC and Palm (Output to Google Earth) (Your Choice of Free Mount)
    GiSTEQ Bluetooth PhotoTrackr for Digital Camera  GiSTEQ PhotoTrackr for Digital Camera  i.Trek Z1 BT Data Logger GPS Receiver Solar, MTK 32 Ch, WAAS, Auto On/Off, Bluetooth, USB, Data Logger with Google Earth Integration i-Blue 757 Pro Solar BT Data Logger GPS Receiver 
    Wintec WBT-201 Bluetooth Data Logger GPS Receiver (Auto on/off, WAAS, Bluetooth, USB, Push to Log, Google Earth Integration with Photo) (Your Choice of Free Mount)
    i-Blue 757 Pro Solar BT Data Logger GPS Receiver (Your Choice of Free Mount)
    GlobalSat DG-100 GPS Data Logger (SiRF III, USB, Push to Log, Google Earth Integration)
     
    Wintec WBT-201 Bluetooth Data Logger GPS Receiver Auto on/off, WAAS, Bluetooth, USB, Push to Log, Google Earth Integration with Photo RoyalTek BlueGPS Mini Mobile Data-logger RBT-1100 for Windows, Pocket PC and Palm Output to Google Earth
    GlobalSat DG-100 GPS Data Logger SiRF III, USB, Push to Log, Google Earth Integration
     

    Price range are from $50 to $200, depending on brand, size, memory (number of points saved), chipset, number of chanels (ability to use more satellites at the sam time equal to more precision and sensivity) and export functionnality.

    Tom Tom Software data logger

    If by chance, you have a Tom Tom and are ready to take it in your holiday, look no further: Event_logger is the software you are looking for!
    Installation is straightforward, just dump all files to your SD CARD, and start your Tom Tom, as default the logging start. A text file (Event_Logger.txt) let you configure the software

    "Event_Logger is a tracking and logging application enhancingTom Tom GO. It can log Tom Tom GO events to Itinerary files that are managed by Tom Tom GO like any other native Itinerary created through the ordinary user interface; besides, Event_Logger can produce standard GPX XML files where events are represented as way points and the whole route is logged through a sequence of track points obtained by querying Tom Tom GO for location information at short periodical intervals";  from Event_Logger introduction

    On the plus side:
    • Work as expected.
    • Complete documentation.
    • Files are saved in directory /itn and use a standard file format (GPX)
    • Google map viewer in Internet Explorer (drag and drop file)
    • A Tom Tom will also show you the right way :-)
    Some issues:
    • Tom Tom battery lifetime, very limited especially if you are in a 8 hours trip, do not forget to set the Tom Tom contrast to the minimum
    • a XSL (transformation language) render the file directly in Internet Explorer but NOT in firefox as an activeX support is required to view the MAP.
    Example of GPX file

    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    <?xml-stylesheet href="gpx.xsl" type="text/xsl"?>
    <gpx
     version="1.0" creator="Event_Logger 7.1 - http://web.tiscali.it/macri/Event_Logger"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0"
     xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
     <name>END Thursday 15 November 2007 22:43:42</name>
     <desc>(Waypoints are missing in this track)</desc>
     <author>amacri</author><email>This email address is being protected from spambots. You need JavaScript enabled to view it.</email>
     <url>http://web.tiscali.it/macri/Event_Logger</url><urlname>Event_Logger 7.1</urlname>
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    <?xml-stylesheet href="gpx.xsl" type="text/xsl"?>
    <gpx  version="1.0" creator="Event_Logger '"$VERSION"' - http://web.tiscali.it/macri/Event_Logger"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0"
     xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
    <trk><name>Thursday 15 November 2007 21:37:01</name><cmt>Started</cmt><desc>Gablerstrasse 40-41, Zürich</desc><trkseg>
    <trkpt lat="42.35860" lon="6.52764"><ele>450.0</ele><time>2007-11-15T19:37:01Z</time><course>0.0</course><speed>0.0</speed><fix>3d</fix>
    <sat>3</sat><hdop>2.3</hdop></trkpt>
    <trkpt lat="47.35859" lon="6.52767"><ele>450.0</ele><time>2007-11-15T19:37:08Z</time><course>62.0</course><speed>0.0</speed><fix>3d</fix>
    <sat>3</sat><hdop>2.3</hdop></trkpt>
    <trkpt lat="42.35859" lon="6.52769"><ele>450.0</ele><time>2007-11-15T19:37:11Z</time><course>62.0</course><speed>0.0</speed><fix>3d</fix>
    <sat>3</sat><hdop>2.3</hdop></trkpt>
    <trkpt lat="42.35858" lon="8.52770"><ele>450.0</ele><time>2007-11-15T19:37:15Z</time><course>62.0</course><speed>0.0</speed><fix>3d</fix>
    <sat>3</sat><hdop>2.3</hdop></trkpt>
    <trkpt lat="42.35861" lon="8.52750"><ele>450.0</ele><time>2007-11-15T19:37:21Z</time><course>62.0</course><speed>0.56</speed><fix>3d</fix>
    <sat>3</sat><hdop>2.3</hdop></trkpt>
    <trkpt lat="42.35848" lon="8.52719"><time>2007-11-15T19:37:27Z</time><course>339.0</course><speed>4.72</speed><fix>none</fix></trkpt>
    </gpx></trkseg></trk></gpx>


    Garmin data logger

    Garmin is able to create NMEA (The ASCII data stream received from navigation equipment (such as GPS receivers) conforming to the NMEA 0182 Version 2.0 specification.) file out the box, you do not have to install anything and can jump to next to "Viewing your trip"

    Using a data logger with your camera/camcorder

    They are all  quite easy to use,  start both device and check that the time are more or less in sync, so that both date and time are very near together. That's all! We just need now to use a software to mix pictures, video and GPX/NMEA file together.

    Viewing your trip

    Basically what you need to find is a GPX viewer. there is a lot available online (use Google :-)), here are some I've used

    Geo tagging your pictures/video

    Sony picture motion browser tag automatically pictures and video, but this tool is checking prior to installation that you have a genuine sony camera/camcorder.The next tool I've found is named: RoboGeo

    RoboGeo ($35) has a very easy to use step by step menu n the left side of the main windows. The most interesting functionnality for me is the ability to create Google Map web pages with icons that show where each picture was taken. When these icons are clicked, additional info about the picture is displayed along with the option of viewing the full size image. It is really worth the money.
    robogeo.step1.gif robogeo.step2.gif robogeo.step3.gif

    And the Map you'll get in Google Map with the above GPX file (the demo version of RoboGeo add random coordinate as long as it is not registered, that's why some point are in the lake of Zürich). When these icons are clicked, additional info about the picture is displayed along with the option of viewing the full size image.
    robogeo.generate.google.map.jpg

    GPSTagr site which allows people with a GPS Track log in GPX format to upload their log, authorize the application site to modify their images, search for images with relevant timestamps, manually exclude images from geotagging - then process the net list of your flickr images against the GPX track log. Picasa (Free) let your tag picture one at a time, it open Google Earth and wait for You to click on the map. Not very useful if you have many pictures and a GPX file for matching them. It is still avery good tools for viewing and organizing thousands of pictures.

    RedHen  is a free download that synchronizes the  GPS log files with just about any digital camera's standard EXIF datafile. RedHen can drop icons onto a Google Earth map-  Make sure you save the new "Spatial Media" folder in the "My Places" folder so your images are available next time you open Google Earth.


  • Apple TV  is a set-top box manufactured by Apple. The Apple TV name and start of online sales was announced by Steve Jobs during the keynote speech at the 2007 Macworld Expo in San Francisco on January 9, 2007. The Apple TV is enabled to stream digital content from any computer running Mac OS X or Microsoft Windows running iTunes onto an enhanced-definition or high-definition widescreen television.
    Offical Site Apple TV
     

  • apache_maven

    This issue has turn me upside down a long time. In fact in the official Google Group http://groups.google.de/group/maven-for-php/ I was not the only one to have this issue.

    I did try the following, and it is always good to check first

    • Checking PHP version,
    • Starting Maven with -X for having more debug information
    • Testing it in Eclipse + M2Eclipse on windows, was working there,
    • Comparing calculated PHP include path on Windows and Linux: they were identical in this case

    Only my Linux box was not working. . .(http://teamcity.waltercedric.com)

    After that I did materialize the eclipse project of maven-php-plugin and even built a custom version that I’ve deployed without any effort to my Artifactory (http://maven.waltercedric.com)

    And what is the solution?

    it my server configuration and paranoia :-)

    open your php.ini, ideally the right one, don’t put your server at risks: You may have many under Linux, especially if you use plesk or cpanel 

    • cli at /etc/php5/cli/php.ini
    • apache2, /etc/php5/apache2/php.ini
    • fastcgi at /etc/php5/fastcgi/php.ini

    location most of the time

    /etc/php5/cli/php.ini

    and add the directory where your build server make a checkout...

    ; open_basedir, if set, limits all file operations to the defined directory
    ; and below.  This directive makes most sense if used in a per-directory
    ; or per-virtualhost web server configuration file. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    open_basedir = /www/vhosts:/tmp:/xxxx/yyyy/

    Next step is to put Joomla! 1.6 and all their PHPUnit tests a run along with Selenium. May also need to  patch Maven for PHP to better support Tests reporting like Surefire.

  • funny.manager

  • apache_maven

    Packt publishing has offered me to make a review of two of their new books (Thanks to them). I should receive free samples for review beginning of next week. Since it is two of my favorite subjects (Maven and Joomla!® ), I think it may also interest you. A review will follow in some days.

    ApacheMaven2EffectiveImplementation  

    Build and Manage Applications with Maven, Continuum, and Archiva

    • Install Apache Maven and follow the sample application to build up your project as quickly as possible
    • Test your applications to ensure maximum stability using Maven's inbuilt tools
    • Use Maven's report and checking tools to ensure the health of your projects
    • Explore Apache Continuum which will help you to ensure the health of your source code
    • Improve your team builds with the powerful combination of Maven, Archiva and Continuum
    • Install and run the repository manager Apache Archiva
    •  

     

    Joomla!1.5DevelopmentCookbook

    Joomla!® 1.5 Development Cookbook 

    • Make your extensions extensible, add extensions points to allow third parties to customize your extension
    • Create international extensions by enabling multilingual capabilities
    • Build more than just HTML pages - create PDF documents, Atom Feeds, and more!
    • Improve the user experience by adding Ajax
    • Create Atom and RSS feeds to keep users up-to-date
    • Utilize the power of Subversion to maintain your source code
    • Execute database queries and handle returned data in order to access and modify your data
    • Dynamically extend your database tables using JParameter to make your extensions more flexible
    • Keep your gremlins at bay by handling errors the Joomla! way
    • Work with the file system, interrogate existing files and folders and store data in the file system
    • Take control of your workflows by using www.JoomlaCode.org to manage your Joomla! projects
  • eclipse&160;

    A very little trick that allow you to quickly run any operation involving a DOS command on an Eclipse project. Go to the external launcher, and create a new configuration.

    This trick may be useful for running your Maven set of command without any dependencies to M2Eclipse.

    &160;

    &160;

    Location:&160; {ENV_VAR:COMSPEC}
    Working Directory: {project_loc}

    eclipse.open.command.line

    {ENV_VAR}

    Returns the value of an environment variable. An environment variable name must be specified as an argument.

    command.line.prompt

  • apache_maven

    We had serious performance problems with MAVEN in our environment. It seems to be a recurrent problem
    for MAVEN... anyway I did came through the following changes...the 2.0.9.db1 Maven2 patch make really
    Maven fly!

    General settings to speed up Maven:

    • More memory for Maven process, change the launcher of eclipse to set MAVEN_OPTS like this:
      -DMAVEN_OPTS="-Xms64m –Xmx128m"
    • Use the latest version of Maven, but be careful of regressions! the latest as for today is 2.0.9
    • There is a patch available for Maven 2.0.9, which speed up build by 40%. It is just simply day and
      night! try it, you'll love it! Basically Don Brown alter MAVEN2 2.0.9 to

    General settings to speed up Eclipse:

    1. Use javaw.exe to start eclipse and not java.exe (more for console base program with a lot of feedback),
      while javaw.exe is more for graphical environment.
    2. Aggressive JIT and double core processors should use:  
       -XX:-UseParallelGC -XX:+AggressiveOpts -XX:-UseConcMarkSweepGC -XX:+UseFastAccessorMethods
    3. Give more memory, MORE MEMORY for eclipse, on a 4GB machine, these are my settings: 
      -Xms768m -Xmx1024m -XX:MaxPermSize=256m
    4. Reduce the number of warning reported by eclipse per compilation unit (class), default is 100, reduce it to 10.
      It help nobody to see a workspace slowing down because of too many warning logging.
      Remove the warnings instead ;-)
    5. SVN console with subversive is too verbose as default, go to eclipse preferences - Team – SVN - Console.
      Logging SVN errors should be enough.
    6. Use a Defragmenter! NTFS fragment fast with so many small files in workspace, every 2 week is a good practice.
    7. I am using Java 1.6u10 (BETA!) and have experience no crash till now,
      being on the edge can be costly in time through. Maven forking should benefit from the reduce java kernel
      size and bootstrap time