Friday, September 16, 2011

Mes jouets Android

Ouf, ça fait un bout que je n'ai pas updater mon blog. Faut croire qu'il n'y avait pas de neuf dans ma vie technologique. Et bien, voila deux nouveaux jouets que je me suis procurés: une tablette ASUS EEE TF101, et un téléphone portable 'intelligent' Samsung Nexus S. Deux appareils fonctionnant sous OS Android (3.2 pour la tablette, 2.3 pour le téléphone).

Tablette ASUS EEE Tf101

Je peux dire que je suis tomber en amour avec le format, la fonctionnalité et la polyvalence de ce petit gadget.

Applications favorites
  • Perfect Viewer (par Rookie001) - J'utilise cet application pour visualiser mes bandes dessinées, très conviviale et très bonne gestion des répertoires (il faut seulement spécifier le répertoire racine et le tour est joué).
  • Google Sky Map - Pour connaitre sa position dans l'univers.
  • Kids Shape Puzzle Lite - Les enfants s'amusent à faire des casses-têtes. Il est difficile parfois pour moi de reprendre le contrôle de la tablette.
  • Cribbage Pro - Un bon petit jeu pour passer le temps.

Téléphone Samsung Nexus S

Après avoir gouté à Android, je ne me voyais pas sauter à un autre OS, bien que le IPhone est très bien, je voulais rester dans la famille Android. Beaucoup des applications que je roules sur ma tablette fonctionne très bien sur le Nexus.

Application recommandées
  • 3G Watchdog - Pour suivre la consommation de données sur la bande 3G. Possibilité de mettre des alertes si le niveau de consommation est proche de la limite mensuelle.
  • Data Enabler Widget - Dans le même domaine, pour dé/activer la consommation sur la bande 3G à l'aide d'un seul bouton (widget), ceci dans le but d'éviter de passer par les divers menus pour arriver à la même fin.

à suivre...

Wednesday, May 12, 2010

Sonar

Sonar (http://www.sonarsource.org/).

A code reviewer when no one have the time to do it.

Thursday, September 3, 2009

Windows "Send To" menu annoyance

I hate it when I open a menu (for example, I want to create a folder, I right click and I choose Create Folder), and it froze for 15 seconds when I move the cursor over the "Send to" sub menu.

I don't use this sub menu and the following action will remove it.

To remove this sub menu:
  • Open the registry editor: regedt32 (in command line)
  • Go to "HKEY_CLASSES_ROOT/AllFilesystemObjects/shellex/ContextMenuHandlers/Send To"
  • Double click the "default value" field on the right column.
  • Delete the text value.
  • Exit the registry editor.
No more "Send To" option.

Francois

Tuesday, August 4, 2009

Maven 'HOT' plugins

Here is the list of my favorite plugins for Maven:

FindBugs: This plugin help find a lot of bug in a Java code.

<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<threshold>Low</threshold>
<effort>Default</effort>
<excludeFilterFile>findbugs-excludes.xml</excludeFilterFile>
<relaxed>false</relaxed>
</configuration>
</plugin>
...

Cobertura: This plugin is very useful for checking the code coverage of the unit tests.

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties>
<property>
<name>net.sourceforge.cobertura.datafile</name>
<value>target/cobertura/cobertura.ser</value>
</property>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<instrumentation>
<ignores>
<ignore>com.example.boringcode.*</ignore>
</ignores>
<excludes>
<exclude>com/example/dullcode/**/*.class</exclude>
<exclude>com/example/**/*Test.class</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
...
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.3</version>
</plugin>
...

JavaDoc: Generates the Javadoc for both code and test code.

<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>

Source XRef: HTML based, cross-reference version of Java source code.

TagList: Report on various tags found in the code.

Simply do: mvn clean site and look into the target/site directory for the reports generated by these plugins.

In a other blog, I will talk about Hudson integration.

François

Monday, August 3, 2009

VirtualBox for testing software configuration

We all know that we can use VirtualBox to test software using a specific environment, but what I like about VirtualBox is the possibility to test a complex software configuration without messing with my current installation. For example, I wanted to have a SVN server (in fact it can be anything from Hudson build server to a small program to install just to try it), and even on following instruction it is hard to set the thing correctly the first time. With a virtual installation I can test and find the correct configuration. And when everything is correct, I reproduce the steps on my installation.

After some time, if I want to try something else with my SVN server, I can try on virtual installation before messing in my active and precious installation.

An other thing is to try a new version of a software that you have installed. For example: you have Hudson server, and a new version of the server is released, you can try the new version without damaging your actual server. Just use a virtual installation using your version of server and try to upgrade it. If you use special pluging, you can try them to see if they continue to work. It is not easy to backtrack an installation, this is why you can sacrifice a virtual installation.

François

Wednesday, July 29, 2009

Simple software documentation iteration

After working for some time (10 years +) in the software development, I found it hard to kept good documentation about the software being wrote. In the company where I work we put in place a simple documentation iteration. The iteration has implication over all the layers of development, from customers to developers, SQA, software designer, etc..

Iteration #1 - User stories
In this iteration, we document what the customer need in the software. This part is very important, and it must be very clear for both parties. Usually, it must be verified by one of the senior programmer. When both parties agree on the user stories, it should not change afterwards (unless there some problems or better way to solve some of the user stories), this is more or less the contract between you (the company) and the customer.

Iteration #2 - FDS - Functional Design Specification
In this iteration, we design the UI (if needed) with all the error messages, the flow of data, the user interaction, the component interaction and architecture, the valid parameters, the input/output. In short, anything that the user will see or use, and anything that will help the user to use and comprehend the software. All this are based on iteration #1 - User Stories. When something wrong (or good (by example a better way to process data)) is found at this point, it is important to notify the customer for modifying some of the user stories (this should not happen often, something the process to make change in the user stories can be long).

Some of the acceptances tests can be defined at this point (see #7 and #8 - Acceptances tests).

Iteration #3 - DDS - Detailed Design Specification
In this iteration, we design the structure of the code, the classes (or modules) to be created, the sequence diagrams, anything that will help the developers. The DDS is based on the FDS. Like the FDS, if there something that may change the FDS is found in the DDS, then the FDS must be changed, and hopefully without changing the user stories.

Iteration #4 - Code
In this iteration, we code :-) based on the DDS. The code should reflect the DDS, for example, if in the DDS there is some reference to a module called Orange, then in the code this module should be named Orange and not Banana. It should be easy to navigate in the code after reading the DDS. The DDS come handy in the future (1 year later for example) for reference about the code which may be forgotten by the developers.

Iteration #5 - Unit tests
The unit tests validate the code done in #4 - Code. These are simple tests done at the class level. Usage of mock object is the norm.

Iteration #6 - Integration tests
These tests are more complicated tests, they test the interaction between the classes, or between the components. They validate the DDS.

Iteration #7 and #8 - Acceptance tests
These tests are using the software created, in a controlled environment. They are using real data. They validate the FDS (so all the UI interactions, the result for each operation, etc.). Sometime these tests are explained in a SDT - Software Development Tests document. It can be useful for the SQA teams to help them design their own tests.

There is also customer testing but it is not something that you can document. Unless the customer is very friendly with your company.

Software Documentation Iteration Diagram


For each iteration there is a BIG arrow and a small arrow; if each iteration is done properly and professionally then the small arrow is used less. Using the small arrow is time consuming and must be avoided if possible.

The double arrows represent the relationship between the test part and the documentation part.

François

Sunday, July 26, 2009

Free Open Source Tools that I use

I'm working on Linux and Windows (XP, Vista), and through the years I began to use tools that are free and that work on both operating system.

Here a partial list of these softwares:

TrueCrypt - On-the-fly encryption. This tool is the easy to use. I use it on my USB sticks for my sensitive information.

VLC - Media Player. This media player is easy to use and work on multiple operating system (Windows, Mac, Linux, etc).

KeePass - Password storage. I like this tool, easy to use, I keep two set of keys, one for the very sensitive stuff (credit cards, banks, etc), and an other one for all my daily user accounts (example: Sun network, this blog, everything that I need to sign up for having access to stuff).

OpenOffice
- Text editing and more. What to say? Each new release bring this software suite to a new step closer to Microsoft Office. I don't say it is perfect, Microsoft is a more integrated suite (Outlook, SharePoint, etc.), but if you don't need these components, OpenOffice is very good at editing text and it is free.

GIMP - Image editing. Very mature image editing software.

François