giovedì 31 gennaio 2013

Sysadmin panics: mailto /dev/null

Uno dei grossi vantaggi delle e-mail e' che fondamentalmente se ne possono mandare una grande quantita' in poco tempo e con poco sforzo.
Ecco quindi che molti server e servizi sono configurati per mandare delle e-mail di notifica ai propri sysadmin per avvisarli di qualcosa che non va (il sysadmin e' solitamente pigro e usa il principio "nessuna nuova, buona nuova" che impone di leggere avvisi solo per cose che realmente non funzionano!). Ma se le disperate richieste di attenzione da parte di un server lasciato solo al proprio destino non vengono considerate dal  sysadmin, cosa succede? Il server solitamente e' piu' educato del sysadmin e manda nuovamente una mail al suo owner sperando in un po' di compagnia e comprensione.

Ho conosciuto un sysadmin che, fiero e spavaldo, affermava di cestinare tutte le e-mail dei suoi server perche' ne riceveva troppe. Ah, se mi avesse dato retta e avesse configurato i server per mandare le informazioni solo quando necessario, forse si sarebbe accorto delle oltre 1000 e-mail spedite in meno di 24 ore dai suoi sistemi. E si badi, non e' solo un problema di "mark all, delete" nella inbox del sysadmin: se un server invia grosse quantita' di e-mail in poco tempo viene facilmente catalogato come spammer e si corre il rischio di vedere cestinato future comunicazioni inviate a terzi. E se poi ci passa un week-end di mezzo, la possibilita' di essere marcati come spammer diventa rapidamente una certezza.

domenica 27 gennaio 2013

Linux & C. dove sei? (2)

Avevo gia' commentato la latitanza della rivista Linux & C., che l'anno scorso ha pubblicato solo due numeri della interessante rivista. Con l'anno nuovo i buoni propositi mancano: nessun nuovo numero in vista, notizie vecchie di mesi (l'ultimo post e' di Novembre e l'ultimo tweet e' di 159 giorni fa')...

sabato 26 gennaio 2013

Emacs and complex commands help

If you want to know what a command does the C-h k is the right tool to use. But what if you want to find out what a complex command can include as completion? As an example consider M-g g (goto-line): in this case the command is complex and the prefix is M-g. If you want to see what commands are tied to M-g something you can do:

M-g C-h

and this works for many of the complex commands.

venerdì 25 gennaio 2013

Emacs Dataflex Mode

I have already written something about my idea of implementing an Emacs major mode to help the development of Dataflex applications.
In the last evenings I've worked on such idea and now the Dataflex mode is something concrete that is available for download from one of my GitHub repositories.

First of all, please consider that I'm no more a Dataflex developer, so I don't use this mode in day-by-day workflow, and therefore bug fixing
could take time. Second, I've written this mode to mainly get more experience in Emacs Lisp programming, and since this is my first major mode at all, it could contain several errors. As in the best Open Source tradition, help and comments are welcome!

So what does the Dataflex mode provides? The first thing is syntax highlighting: as shown by the following picture keywords are now
expressed using the Emacs font-locks, as well as parts of the masks (in particular the fields and mask delimiters). Of course the mode line of Emacs is updated to reflect the usage of the Dataflex mode for recognized files (usually .frm).
Then a few utility commands are builtin in the mode:

- C-c C-t provides the transpose of a single MOVE instruction or a whole group. The idea is that often you have to write a lot of statements like the following:

MOVE archive.field TO mask.field

and the opposite statement in order to save back the field from the mask to the archive as in:

MOVE mask.field TO archive.field

The transposition of the statement automatically converts the former in the latter and viceversa, so that it is possible to copy, paste and transpose an instruction without having to type any character. The
function can work on a single line or a whole region.

- C-c C-i indents the code. Well, there is not a defined way of indenting Dataflex code, so this function simply searches for a BEGIN/END like block and indents it recursively. It can operate on the whole buffer or on the specified section.

- M-; as for all the other programming modes, this allows for the definition of comments.

- C-c C-j jumps to a label. Often you read a piece of code that contains either a GOUSB or a GOTO instruction followed by a label. If the label is far in the code, but is in the same buffer, this command splits the current
window and jump to the label definition, so that the result is a quick  consultancy of the routine.



In order to install the mode into your Emacs download the lisp file into a suitable path, for instance into ~/.emacs.d and insert the following lines into your .emacs configuration file:

;; Dataflex mode
(add-to-list 
    'load-path "/path/to/the/directory/that/contains/the/lisp/file" )
(require 'dataflex-mode)

Please note that the mode automatically associates itself to files ending in .frm or .mac. The mode provides an hook called dataflex-mode-hook so that it is possible to customize further the mode behavior.

Finally, I posted a message on the DataAccess Forums about the mode.

www.gnu.org, KDE & OpenOffice

Oggi mi sono imbattuto nel sito della GNU e una immagine che riporto di seguito mi ha lasciato perplesso: l'immagine mostra un sistema operativo Gnu/Linux in esecuzione, nulla di strano se non fosse che l'applicazione
in esecuzione e' OpenOffice e il desktop manager e' KDE. Ebbene OpenOffice, dopo i vari passaggi di mano, e' ora un prodotto della Apache Software Foundation ed e' soggetto alla Apache License, non alla GNU! KDE e' invece il desktop manager che ha causato la nascita di Gnome, o meglio, i problemi di licenza di KDE hanno fatto si' che Gnome vedesse la luce e fosse sponsorizzato da GNU.
Insomma, c'e' un po' di incoerenza sul sito della GNU!

UPDATE: grazie al commento di Luca si può affermare che il desktop non è KDE bensì LXDE, quindi in effetti c'è meno incoerenza di quella che sembra  a prima vista!

Emacs & Org font-locks

A simple trick to make the Org buffer looking more clear:

'(org-done ((t (:foreground "PaleGreen" :weight normal :strike-through t))))
'(org-headline-done ((((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon" :strike-through t))))

will make your done items in the Org buffer strike-thru so that at first it is much more clear to decide on what to focus.