Archive for September, 2007

The development of the IzPack Java installer has not been very active recently. Most of us are quity busy with “real-life” work and duties. On my side it’s quite heavily loaded: lots of research to do for my PhD thesis, teaching starting tomorrow, and so on ;-)

Anyway the next release of IzPack won’t lack changes! Here is what we have in the current revision of the SVN trunk:

  • Added ignore as possible value for failure argument in executables (Dennis Reil)
  • Added Conditional expressions (Dennis Reil)
  • Fixed selection of default language in LanguageSelectionDialog (Dennis Reil)
  • Fixed RegularExpressionValidator (Dennis Reil)
  • Added corrupt volume detection (Dennis Reil)
  • Added file and dir fields in UserInputPanel (Dennis Reil)
  • Modifications to keep original file dates and times in _dist directory and in the installer jar (Ari Voutilainen via Julien Ponge)
  • UserInputPanel: force users to select an existing directory or file (Michael Hagedorn via Julien Ponge)
  • Default path for JDKPathPanel will be got from Windows registry if possible (Klaus Bartz)
  • New Farsi langpack (Parastou Kohvaei via Klaus Bartz)
  • Dynamic control re-rendering (show/hide) on radio and checkbox selection events (Vladimir Ralev)
  • Locale support of Shortcut specification file (Klaus Bartz using a hint of Loic)
  • Enabled distributed pack-definitions (Hans Aikema based on patch by Syed Khadeer)
  • Update of the Liquid and JGoodies look and feel libraries (Julien Ponge).
  • Support for the toned-down Substance look and feel themes (Julien Ponge).
  • Added main frame GUI properties ‘headingForegroundColor’ and ‘headingImageBorderSize’ (Daniel Azarov, Exadel Inc via Vladimir Ralev)
  • Unix shortcuts fixes (Vladimir Ralev)
  • TreePacksPanel, a hierarchical packs selection panel (Vladimir Ralev)
  • HTMLInfoPanel to launch links in external browser on any Windows and Linux (Vladimir Ralev)
  • PacksModel fix (Markus Schlegel via Julien Ponge).
  • Workaround for layout problems in UserInputPanel when clicking previous button (Dennis Reil)
  • Nimbus look and feel support (Julien Ponge)
  • Try to load a 64-bit dll if the 32-bit load fails and 64-bit ShellLink (Vladimir Ralev)
  • File / fileset Os constraints: addition of a JRE version test (e.g., <os jre=”1.5″ />) (Gilles Wiart via Julien Ponge)
  • Hungarian langpack update (Kerekes Balazs via Julien Ponge)
  • InstallGroupPanel: sortable InstallGroups (Markus Schlegel via Julien Ponge)

…and on my side I am still in the process of moving the documentation to reStructured text (Python docutils).

Stay tuned!

Comments 10 Comments »

Comments No Comments »

Attention aux biscuits Néo-Zélandais :-) (via Thierry F.)

Question subsidiaire : ces biscuits vont-il concurrencer le Red Bull ?

Comments No Comments »

I am in charge (with 2 fellow snipers) of a lecture about Advanced Programming. This includes the C++ standard library and we will probably include some stuff regarding dynamic languages (how they work, functional-style features like closures or continuations, and so on). This morning, I had a look at C++ templates metaprogramming.

In fact, not that many people know about C++ templates metaprogramming. It has many funny use-cases, including loops unrolling and performing computations at compile-time rather than at runtime. It is also at the heart of many parts of the STL and libraries such as the Boost ones.

I would not use it for everything as it is quite a tricky way of writing programs. In fact, it either compiles fine, or you most probably get errors and warnings that you just can’t understand at all :-)

Here is an example that I wrote this morning:

#include<iostream>
 
using namespace std;
 
template<int N> struct Fibo
{
  static const unsigned long long
    value = Fibo<N - 1>::value + Fibo<N -2>::value;
};
 
template<> struct Fibo<1>
{
  static const unsigned long long value = 1;
};
 
template<> struct Fibo<0>
{
  static const unsigned long long value = 0;
};
 
template<int N> void unroll_fibo()
{
  unroll_fibo<N - 1>();
  cout << Fibo<N>::value << endl;
}
 
template<> void unroll_fibo<0>()
{
  cout << Fibo<0>::value << endl;
}
 
int main()
{
  unroll_fibo<60L>();
  return 0;
}

It computes the Fibonacci number. In fact when you run it, you will get the Fibonacci numbers from 0 to 60 instantly! It leverages the two techniques mentionned above: loops unrolling and compile-time computations.

By constrast, the following is a more traditional way of computing the Fibonacci numbers… and the execution time is not even comparable (it has not finished after 3 minutes on my G4 processor).

#include <iostream>
 
using namespace std;
 
long long fibo(const long long &n)
{
  if (n == 0L)
  {
    return 0L;
  }
  else if (n == 1L)
  {
    return 1L;
  }
  else
  {
    return fibo(n - 1) + fibo(n - 2);
  }
}
 
void display_fibo(const int &max)
{
  for (int i = 0; i <= max; ++i)
  {
    cout << fibo((long long) i) << endl;
  }
}
 
int main()
{
  display_fibo(60);
  return 0;
}

Funny isn’t it? ;-)

Comments 7 Comments »

J’ai enfin terminé le changement de thème. Je commençais à me lasser sérieusement de l’ancien (iTheme de N-Design Studios) que l’on commence à voir dans trop de blogs Wordpress.

J’ai ainsi jetté mon dévolu sur Mandigo. C’est un thème qui offre de nombreuses options de configuration et dont le code des templates est relativement propre. En effet, j’ai passé un temps fou à parcourir des listes de thèmes … J’en ai essayé un certain nombre (vous avez pu passer dessus dans l’après-midi d’ailleurs :-) ) mais trop souvent le code des templates est assez indigeste. Je passerai aussi sous silence les CSS repompées et adaptées sur des CSS repompées et adaptées et … vous voyez la suite ;-)

La configuration actuelle me semble assez sympa, d’autant plus que la consultation d’un article seul change la configuration (retrait des barres latérales). Et vous, qu’en pensez-vous ?

Comments 2 Comments »