How to expose a web application through Apache

I did this a few times in my life, and every time it was painful to reconstruct the necessary toolset and configuration options. So, here it goes. First, enable the proxy support.

~# a2enmod proxy # utility functions
~# a2enmod proxy_http # http forwarding
~# a2enmod proxy_html # html rewriting
~# a2enmod headers # http headers rewriting

Then, assuming that your web application runs on port 3031 on the same host as Apache, and you want to make it available at the /demo url in Apache, write the following in the Apache config:

<IfModule mod_proxy.c>
  <IfModule mod_proxy_http.c>
    <IfModule mod_proxy_html.c>
      <IfModule mod_headers.c>
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all

        ProxyPass  /demo http://localhost:3301
        ProxyPassReverse /demo http://localhost:3301
        <Location "/demo">
            # ask the localhost to return the uncompressed HTML
            RequestHeader   unset   Accept-Encoding
            # Filter Responses through mod_proxy_html
            SetOutputFilter proxy-html
            # convert URLs in CSS and JavaScript as well
            ProxyHTMLExtended On
            # convert URLs in a.hrefs
            ProxyHTMLURLMap ^/ /demo/ R 
            # convert URLs in CSS and JS
            ProxyHTMLURLMap "'/" "'/demo/" 
            # convert URLs in CSS and JS
            ProxyHTMLURLMap "\"/" "\"/demo/" 

[Mission Impossible] Contacter le service des équivalences de la Communauté Française de Belgique

Voici un exemple de l'accessibilité de l'état aux citoyens.

Ce matin, j'ai été sur le site web du Service des équivalences pour l'enseignement secondaire de la Communauté française de Belgique. Après avoir lu les informations sur le site il me restaient une question.

J'ai décidé donc d'appeler le Service au numéro indique sur la page web. Après avoir navigué les menus vocaux dans toutes les directions et avoir attendu une bonne heure, voici la conclusion que j'en tire: il est impossible de contacter l'opérateur du service au téléphone. 

Effectivement, les menus vocaux présentent l'hiérarchie suivante (légèrement simplifiée):

  • Vérifier si le dossier a été reçu.
  • Obtenir des informations sur le dossier déjà introduit.
    • introduire le # du dossier
  • Obtenir un rendez-vous.
    • Aucune réponse pendant une demi-heure d'attente
  • Obtenir les informations générales.
    • Un message invitant à visiter le site web du Service.

Ainsi, il n'y a aucun moyen de joindre la permanence téléphonique.

Je suis retourné vers le site web du Service pour rédiger un courriel avec ma question à l'intention de . Quelle était ma surprise quand, quelques secondes après l'envoi du courriel, j'ai reçu un message d'erreur signalant que mon courriel ne peut pas être envoyé, avec la raison:


Word vs. LaTeX в наукообразных конференциях

Вчера зааплоадил окончательнию версию статьи на конференцию. Отправился домой спать, ночью как раз дедлайн для подачи статей закончился. С утра получаю получаю паническое мыло от организаторов -- мол, так и так, срочно пришлите сорцы для статьи. Ну, я посылаю сорцы, потом думаю — в чём дело? В веб-интерфейсе можно аплоадить всего 2 типа документов: Doc и PDF. Я всё сделал по инструкции. Потом понял: все остальные авторы зааплоадили Doc, вот вам и сорцы готовые. Один я послал PDF.

Кстати, на сайте конференции говорится, что стили для статей нужно брать на сайте LNCS, а там доступны только стили для LaTeX. Как другие авторы умудрились написать в Ворде — не понимаю.

Yet another ideal project management tool

Looking back to my last review of different tools used in project management, I figured out that this review is a a recipe for yet another ideal project management tool.

Such a tool should be useable throughout the whole project lifecycle by providing a common interface for editing mind maps, Gantt charts and bug reports. It shall also be possible to link each of the three types of documents to the technical and business documentation contained in the project wiki. Such a wiki, to be really usable, should allow to export an arbitrary collection of pages into one single Word, RTF or ODF document, while keeping the hierarchical structure of the above mentioned collection.

Easy? Yep. Has anybody done this already? Nope.


Лучшие фото фотосайта на рабочем столе, дубль 3

Продолжаем соревнование с фотосайтом по разработке программы для установки в Gnome фото дня с фотосайта в качестве обоев рабочего стола.

cd /var/photosight && \
FN=`wget -q -O - \
  | iconv -f cp1251 -t utf-8 \
  | sed 's/.*\(http.*jpeg\).*/\1/' \
  | sed 's/top_of_day/large/'  \
  |xargs echo`
ID=`echo $FN |sed 's/.*\/\([0-9]\+\)_large.jpeg/\1/'`
wget -q -N  $FN -O $ID.jpg && \
gconftool-2 -t str --set /desktop/gnome/background/picture_filename /var/photosight/$ID.jpg && \
gconftool-2 -t str --set /desktop/gnome/background/picture_options "centered"
cd ~-

HP 6910p usability review

After a few months of using the HP 6910p notebook, I am ready to share my thoughts on it.

This is the first new notebook I bought for myself. For many years, I favoured custom-built desktop PCs and bought only a few second-hand notebooks for family members. One reason of my despise for new notebooks was the inevitable Microsoft tax. This time, I went against my own principles, because this Vista-equipped notebook was selling for half of its market price. So, I am now an owner of an unused Windows license, and you bet I am not proud of it.

Back to the notebook, this is a 14.1" wide-screen machine, which I believe to be the ideal notebook size. The width is just enough to fit a full-sized keyboard, but it is still quite portable and weights just 2 kg.

The case is well-build and feels very solid, although it occasionnally cracks under the right hand while typing. The notebook has four big rubber legs under the case that are supposed to stabilize it, but they elevate the case over the table so much that it resonates with each keystroke when sitting on a wooden table, so I always put a mousepad or a thin magazine under it.

I have a matte 1280x800 screen, it is ok for programming but the brightness and colours are much worse than those of a 14.1" Dell Vostro 1400 which costs one third of the price of an HP 6910p.

The maximum battery life I could get is 3 hours, which is really a shame for a traveler's notebook. Moreover, HP provides only one battery type for this notebook, so there is no way to improve the battery life by buying a bigger battery.


Programmers learning from philosophers

In a paper entitled "Classes vs. Prototypes: Some Philosophical and Historical Observations" and published in 1996, Antero Taivalsaari draws parallels between the evolution of the philisophy and of the Object-Oriented paradigm in programming.

Indeed, the classification of the world was in the center of interests of philosophers since Plato and Aristote. Taivalsaari argues that the traditional class-based OOP builds upon the principles that have first been described by Plato, while there are more sophisticated approaches to categorization, e.g. the so-called prototype theory, started by Wittgenstein, that lays in the foundations of the prototype-based OOP, like what we find the the modern implementations of the JavaScript language.