Parsing XKB files with antlr
antlr (well, antlr3) is an amazing tool that replaces lex/flex, yacc/bison.
One would use antlr3 if they want to deal with Domain-Specific Languages (DSL), an example of which are the text configuration files.
In our case, we use antlr3 to parse some of the XKB configuration files, those found in /etc/X11/xkb/symbols/??.
Our aim is to be able to easily read and write those configuration files. Of course, once we have them read, we do all sorts of processing.
The stable version of antlr3 is 3.0.1, which happened to give lots of internal errors. It has not been very useful, so I tried a few times the latest beta version 3.1b, and eventually managed to get it to work. If I am not mistaken, 3.1 stable should be announced in a few days.
When using antlr, you have the choice of several target languages, such as Java, C, C++ and Python. I am using the Python target, and the latest version that is available from the antlr3 repository.
Here is the tree of the gb layout file,
tree = (SECTION (MAPTYPE (MAPOPTIONS partial default alphanumeric_keys xkb_symbols) (MAPNAME "basic")) (MAPMATERIAL (TOKEN_INCLUDE "latin") (TOKEN_NAME Group1 (VALUE "United Kingdom")) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 quotedbl twosuperior oneeighth)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior sterling)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign onequarter)) (TOKEN_KEY (KEYCODEX AC11) (KEYSYMS apostrophe at dead_circumflex dead_caron)) (TOKEN_KEY (KEYCODEX TLDE) (KEYSYMS grave notsign bar bar)) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign asciitilde dead_grave dead_breve)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar bar brokenbar)) (TOKEN_INCLUDE "level3(ralt_switch_multikey)"))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME "intl")) (MAPMATERIAL (TOKEN_INCLUDE "latin") (TOKEN_NAME Group1 (VALUE "United Kingdom - International (with dead keys)")) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 dead_diaeresis twosuperior onehalf)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior onethird)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign onequarter)) (TOKEN_KEY (KEYCODEX AE06) (KEYSYMS 6 dead_circumflex NoSymbol onesixth)) (TOKEN_KEY (KEYCODEX AC11) (KEYSYMS dead_acute at apostrophe bar)) (TOKEN_KEY (KEYCODEX TLDE) (KEYSYMS dead_grave notsign bar bar)) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign dead_tilde bar bar)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar bar bar)) (TOKEN_INCLUDE "level3(ralt_switch)"))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME "dvorak")) (MAPMATERIAL (TOKEN_INCLUDE "us(dvorak)") (TOKEN_NAME Group1 (VALUE "United Kingdom - Dvorak")) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign asciitilde)) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 quotedbl twosuperior NoSymbol)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior NoSymbol)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign NoSymbol)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar)) (TOKEN_KEY (KEYCODEX AD01) (KEYSYMS apostrophe at)))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME "mac")) (MAPMATERIAL (TOKEN_INCLUDE "latin") (TOKEN_NAME Group1 (VALUE "United Kingdom - Macintosh")) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 at EuroSign)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling numbersign)) (TOKEN_INCLUDE "level3(ralt_switch)")))
When traversing the tree, we can then pretty-print the layout at wish:
partial default alphanumeric_keys xkb_symbols "basic" {
name[Group1] = "United Kingdom";
include "latin"
include "level3(ralt_switch_multikey)"
key <AE02> = { [ 2 , quotedbl , twosuperior , oneeighth ] };
key <AE03> = { [ 3 , sterling , threesuperior , sterling ] };
key <AE04> = { [ 4 , dollar , EuroSign , onequarter ] };
key <AC11> = { [ apostrophe , at , dead_circumflex , dead_caron ] };
key <TLDE> = { [ grave , notsign , bar , bar ] };
key <BKSL> = { [ numbersign , asciitilde , dead_grave , dead_breve ] };
key <LSGT> = { [ backslash , bar , bar , brokenbar ] };
};
... snip ...
The code is currently hosted at code.google.com (keyboardlayouteditor) and I intend to move it shortly to FDO.
Using Anjuta in Ubuntu 8.04 to develop a GNOME C++ application (gtkmm)
You can install Anjuta 2.4.1 from the Synaptic package manager. You also need to install a few development packages. I do not know if there is a nice meta-package such as build-essential (used to install compilers et al), so I'll just ask you to install the packages by hand. A more elegant way would be very much appreciated to see in the comments.
$ sudo apt-get install build-essential libgtkmm-2.4-dev autogen automake libtool intltool libglademm-2.4-dev
That is the order of installation when you go trial by error inside Anjuta to compile a project. Each package draws in several other packages. Also, if you have the Ubuntu 8.04 DVD in your drive, most of these packages will be installed in a jiffy. We have the Greek localisation enabled, so bear with us. Thanks to Giannis Katsampiris for completing the recent update of the Anjuta 2.4 localisation.

Once Anjuta is installed, you are presented with the Anjuta main window.
We then click on File/New/Project (Αρχείο/Νέο/1. Έργο),
We click on Forward here.
There are many many project types. We wade through and we pick to use C++ and GTKMM (C++ bindings for GTK+). We could pick any other variation; GTKMM was a request from the Ubuntu-gr mailing list.
We then fill in some contact details.
There is an option to specify at this stage external packages. We opt not to specify them now.
Once you click Apply (Εφαρμογή) - the button with the green tick, Anjuta will create an initial dummy package (actually a hello world application), and will run automatically the equivalent of ./configure for you.
Now, this is the final screen, when you start working. Here you would click on Κατασκευή/Κατασκευή έργου (Build/Build Project), so that the project gets compiled.
Then, you would click on Κατασκευή/Εκτέλεση προγράμματος... (Build/Run program...) to run the program!
Here is shows that we have located the source file (main.cc), and we see main().
It takes about 3 second to compile a program with g++ (at least on my system). Therefore, the dead time between (a) Let's compile it and (b) Oh, I am running my program!, is under 5 seconds, which is good.
OpenVistA information system for hospitals and medical care
It is quite common to expect the availability of free and open-source software for common needs, such as an operating system and an office suite. What is the situation when your needs are much more advanced? Such as, when you are looking for an information system for a hospital?
Luckily, there is such a software package for an information system for hospital needs, called OpenVistA. OpenVistA comes from VistA, a public-funded medical system for the United States Department of Veterans Affairs. Due to the source of the funding, the source code of the medical system has been available with a liberal license, and gave birth to OpenVistA.
An interesting issue with OpenVistA is that the backend is written with the MUMPS programming language. This programming language is quite old with syntax dissimilar to modern languages. However, MUMPS has become popular in medical care systems and especially VistA. There are people that criticize the programming language; it is important to understand that a big piece of software working well has much more weight over the language preferences. In addition, the front-end is what the end-user uses, and in our case it is written with modern programming languages.

Traditionally, the major front-end of OpenVistA was written in Delphi. Quite recently, a new front-end has been written, in Mono. Thanks to Mono, the front-end is cross-platform and supports i18n (the front-end can be translated in many written languages).
You can try out OpenVistA straight away by downloading the OpenVistA VMWare appliance (image file that contains an installation of an operating system, configured and ready to use). The specific VMWare appliance is based on Xubuntu.
Software for hospitals is quite expensive, and is a lucrative business for software houses. However, when one takes into account that in many countries hospitals are public-funded, it is easy to understand how important it is to use free and open-source software in this case. Sadly, in many cases, hospitals make ad-hoc agreements for such software, resulting to inefficient use of public funds.
Παρωχημένα πράγματα
παρωχημένος -η -ο [paroiménos] E3 : που ανήκει στο παρελθόν: O ιστορικός μελετά παρωχημένες εποχές. || (γραμμ.) Παρωχημένη λέξη / έκφραση. Παρωχημένη σημασία / χρήση μιας λέξης, που υπήρχε παλαιότερα. || (γραμμ.) ~ χρόνος, συντελεσμένος. [λόγ. < αρχ. παρῳχημένος (γραμμ.: ελνστ. σημ.)]
Πηγή: http://www.komvos.edu.gr/dictionaries/dictonline/DictOnLineTri.htm
Υπάρχει συζήτηση στη λίστα i18ngr για το αν είναι κατάλληλη η λέξη παρωχημένος για τη μετάφραση του όρου deprecated (π.χ. the use of the abort3() system call is deprecated).
Στην Πληροφορική, ο όρος deprecated έχει την έννοια της σταδιακής απόσυρσης ενός χαρακτηριστικού σε λογισμικό. Δηλαδή η λειτουργία είνα διαθέσιμη τώρα, ωστόσο στο μέλλον δεν θα είναι διαθέσιμη πια.
In computer software standards and documentation, deprecation is the gradual phasing-out of a software or programming language feature.
Η λέξη παρωχημένος τείνει να έχει αρνητικό connotation και σε μερικές καταστάσεις έχει χρήση ως βρισιά.
Ποιος είναι ο πιο κατάλληλος όρος για τη μετάφραση του deprecated;
Είσαι προγραμματιστής;
Το Google διοργανώνει Διαγωνισμό Πληροφορικής αυτό το μήνα, το Google Code Jam Europe. Ο διαγωνισμός διεξάγεται μέσω Διαδικτύου μέσα από μια ενδιαφέρουσα πλατφόρμα. Γραφτείτε τώρα και έχετε τη δυνατότητα να δοκιμάσετε την πλατφόρμα με προβλήματα-δείγματα.
Only four of the 48 best computer programmers in the world are Americans, at least according to a computer-programming competition run by TopCoder. Poland had 11 of the final 48, and Russia had 8. Wall Street Journal columnist Lee Gomes asks whether this is more evidence of a sad decline in American education and competitiveness: 'Surprisingly, the Eastern Europeans don't seem to think so. Poland's Krzysztof Duleba, 22, explained that in countries like his own, there are so few economic opportunities for students that competitions like these are their one chance to participate in the global economy. Some of the Eastern Europeans even seemed slightly embarrassed by their over-representation, saying it isn't evidence of any superior schooling or talent so much as an indicator of how much they have to prove.'
Πηγή: The Wall Street Journal
Υπάρχουν άραγε οικονομικές ευκαιρίες στην Ελλάδα;
Σύνδεσμοι – Τεχνολογίες Web και Wikipedia/Leonariso
Μέχρι να βγει κάποιο λειτουργικό πρόγραμμα που να διατηρεί στο διαδίκτυο πληροφορίες προφίλ, καταγράφω τα παρακάτω:
Το Experiments in Web Programming περιγράφει αναλυτικά τη δημιουργία σελίδων HTML με τεχνολογίες CSS, DOM κτλ. Όμορφα πράγματα.
Ο Leonariso γράφει στο Wikipedia. Ο πηγαίος κώδικας του Wikipedia βρίσκεται στο MediaWiki development.






