Articles Labelled with “Article”

Installing OPAM 1.1.1 on a CentOS 6.5

I'm in this situation: I need to compile an OCaml program on a CentOS 6.5 server. This is actually quite problematic, because CentOS 6.5 provide out of the box a very old OCaml 3.11.2, released by INRIA in January 2010, more than four years ago.

No problem, OPAM come to the rescue! No. The OPAM team doesn't provide a binary executable compatible with the (actually very old) system libraries present in CentOS.

Ok, step back: OPAM can be compiled from sources (instructions here) so it's just a matter of minutes. Again: nope. To compile OPAM you need at least OCaml 3.12.1, while in CentOS we have only 3.11.2.

Step back: first compile and install OCaml from sources. This time I say no, because the whole point of OPAM is to get an up and running OCaml environment in a few minutes, which is actually true in most cases.

I decide to install OCaml using GODI, the “old” OCaml source distribution, the one everybody used before OPAM was born. So the fastest steps to have an OPAM and OCaml environment on a CentOS server are:

  • download and install GODI;
  • clone the OPAM repository, compile and install it; it will find a “system” compiler provided by GODI;
  • $ opam switch 4.01.0 will recompile a new environment;
  • $ opam switch remove system to delete the “system” environment;
  • $ rm -Rf ~/godi.

No root access is required in this process, I usually install OPAM in ~/opam, and GODI in ~/godi.

There is an irony in all this story: GODI has been the OCaml source distribution for years, and the coming of OPAM, which is actually newer and has some important features missing in GODI, has produced many frictions in the OCaml community, that in the end caused the shut down of GODI.

The moral part here is: embrace the new things, but don't be too impatient in throwing out the window the precious work that, in the end, still works.

In any case, I want to thank both Gerd Stolpmann (author of GODI) and the OPAM team: they gave to the OCaml community a mature, industrial grade, set of tools to use OCaml.

Debugging memory in OCaml: any advice?

Memory consumption chart

A server I just deployed (written in OCaml, of course) seems to eat RAM at breakfast. This is the chart of the RSS field of "ps" in the past 24h (click to enlarge). The program starts with almost 6 Mb and is now reaching 40 Mb, in a linear trend that has nothing good to say.

Any advice on how to debug the memory consumption?

L'Italia nella classifica World Bank

Vi segnalo un articolo molto interessante di The Economist, di cui cito solo uno dei capoversi finali:

«The Italy Mr Berlusconi will hand to his successor ranks 87th in the World Bank’s Ease of Doing Business survey, behind Albania. The bank found it was harder to get an electricity supply than in Sudan. In Transparency International’s latest corruption perceptions index, Italy ranked 67th. Rwanda and several other African countries were cleaner.»

Questa è la classifica originale che certifica che l'Italia è davvero nel Quarto Mondo. È infatti molto interessante scoprire che è più facile fare affari in Ghana che in Italia.

Ringrazio Enrico Colombini per avermi segnalato l'articolo ed essersi andato a cercare il sito doingbusiness.org.

Thanks Mr. Ritchie

Today Unix, or some other operating system deeply inspired by Unix, is pervasive: servers, embedded devices (notably Android, but it's only one) and the “revolutionary” Mac OSX is itself an incarnation of the ideas and works of Dennis Ritchie.

Dennis Ritchie worked on Unix more than 40 years ago, and my questions is: what will we use in forty years? Probably something Dennis Ritchie was working some months ago.

Thanks Mr. Ritchie.

Discorso di Pericle

Questo discorso è stato scritto da Pericle 2400 anni fa ed impressiona quanto sia attuale, sembra scritto la settimana scorsa.

Si vede che in 2400 anni non abbiamo imparato la lezione di civiltà che Pericle e forse tutti gli Ateniesi avevano capito nel quinto secolo avanti Cristo.

Qui di seguito la trascrizione per chi non può vedere l'interpretazione di Paolo Rossi.

Qui ad Atene noi facciamo così.

Qui il nostro governo favorisce i molti invece dei pochi: e per questo viene chiamato democrazia.

Qui ad Atene noi facciamo così.

Le leggi qui assicurano una giustizia uguale per tutti nelle loro dispute private, ma noi non ignoriamo mai i meriti dell’eccellenza.

Quando un cittadino si distingue, allora esso sarà, a preferenza di altri, chiamato a servire lo Stato, ma non come un atto di privilegio, come una ricompensa al merito, e la povertà non costituisce un impedimento.

Qui ad Atene noi facciamo così.

La libertà di cui godiamo si estende anche alla vita quotidiana; noi non siamo sospettosi l’uno dell’altro e non infastidiamo mai il nostro prossimo se al nostro prossimo piace vivere a modo suo. Noi siamo liberi, liberi di vivere proprio come ci piace e tuttavia siamo sempre pronti a fronteggiare qualsiasi pericolo.

Un cittadino ateniese non trascura i pubblici affari quando attende alle proprie faccende private, ma soprattutto non si occupa dei pubblici affari per risolvere le sue questioni private.

Qui ad Atene noi facciamo così.

Ci è stato insegnato di rispettare i magistrati, e ci è stato insegnato anche di rispettare le leggi e di non dimenticare mai che dobbiamo proteggere coloro che ricevono offesa.

E ci è stato anche insegnato di rispettare quelle leggi non scritte che risiedono nell’universale sentimento di ciò che è giusto e di ciò che è di buon senso.

Qui ad Atene noi facciamo così.

Un uomo che non si interessa allo Stato noi non lo consideriamo innocuo, ma inutile; e benché in pochi siano in grado di dare vita ad una politica, beh tutti qui ad Atene siamo in grado di giudicarla. Noi non consideriamo la discussione come un ostacolo sulla via della democrazia. Noi crediamo che la felicità sia il frutto della libertà, ma la libertà sia solo il frutto del valore.

Insomma, io proclamo che Atene è la scuola dell’Ellade e che ogni ateniese cresce sviluppando in sé una felice versatilità, la fiducia in se stesso, la prontezza a fronteggiare qualsiasi situazione ed è per questo che la nostra città è aperta al mondo e noi non cacciamo mai uno straniero.

Qui ad Atene noi facciamo così.

C'è di che meditare.

Orgoglio

Una volta tanto c'è da sentirsi orgogliosi di essere Italiani. In questo momento, in cui sto scrivendo, la quasi totalità delle principali testate giornalistiche di tutto il mondo sta battendo la notizia che oggi, 13 Febbraio 2011, quasi un milione di donne sono scese in piazza per manifestare contro il presidente del Consiglio dei Ministri e la sua politica sessista.

È molto raro che una manifestazione di piazza pacifica e non organizzata da partiti politici in Italia riceva tanta attenzione. Di seguito una breve carrellata, tanto per farsi un'idea. Sono tutte home page di grossi network, cliccate per ingrandire le immagini.

BBC News World Edition

BBC News World Edition


Financial Times

Financial Times


Aljazeera

Aljazeera


Le Monde

Le Monde


The New York Times

The New York Times


The Sunday Morning Herald

The Sunday Morning Herald

Mi hanno personalmente colpito due aspetti: l'enorme afflusso di persone e la totale assenza di bandiere di partiti politici, associazioni politicizzate (leggi: sindacati) o altro. Solo donne che scendono in piazza perché non sopportano più la situazione attuale. Per una volta saltiamo alla ribalta per qualcosa di positivo, non per la mafia, il debito pubblico, l'inettitudine della nostra pietosa classe dirigente.

Altro aspetto fondamentale è che al centro di questa manifestazione ci sono le donne. L'hanno organizzata loro, il tema è quello del rispetto della donna, il colore della manifestazione è il rosa. Io non ricordo altri eventi del genere, forse bisogna tornare indietro al femminismo, ma non ero ancora nato.

Dopo Algeria ed Egitto ci si chiede quale sarà il prossimo paese del Mediterraneo a cacciare il proprio dittatore. E se fosse l'Italia?

Installing OCaml Batteries

In this post I want to help OCaml newcomers to install Batteries. The task is trivial under Linux, while it's a bit tricky under Windows, because OCaml still lacks a self-contained Windows installer.

My assumption is that the reader is a coder, so I will not explain everything… Let's start with the easy part: Linux.

Linux

The installation of OCaml + Batteries under a Debian/Ubuntu system couldn't be easier, thanks the the hard work of the Debian OCaml Task Force. So open a terminal and type:

$ sudo aptitude install ocaml-batteries-included

That's all for Debian/Ubuntu. I don't know how Fedora works, but I think it's easy to install Batteries using YUM, something like:

$ yum install ocaml-batteries-included

If a RPM package for Batteries wasn't available, you could still install OCaml, Camomile (the Unicode library), and compile Batteries from sources, as described below for the Windows OS.

Windows

As said, this OS still lacks a self contained installer which is in progress, at least for installing OCaml. Since many OCaml versions are available for Windows, with different pros and cons, I had to decide which one to use, and I decided to follow the simplest path to reach the goal of installing all the stuff we need. The Cygwin port is by far the simplest way.

  1. Download Cygwin setup and double click the executable. In Windows Vista/7 (I made my test on a Windows 7 64bit box) you will be required to allow the program to be run a couple of times, as usual ;-) …
  2. when the list of available packages appears, select: each and every package containing "caml" (see the screenshot below), and also make, m4, libncurses-devel, git, wget and rlwrap;
    Necessary Cygwin packages
  3. open the Cygwin shell;
  4. download the Findlib library, version 1.2.6:
    $ wget https://download.camlcity.org/download/findlib-1.2.6.tar.gz
    
  5. unpack, compile and install Findlib:
    $ tar -xpzf findlib-1.2.6.tar.gz
    $ cd findlib-1.2.6/
    $ ./configure
    $ make
    $ make install
    
  6. download, unpack, compile and install Camomile 0.8.1:
    $ wget https://prdownloads.sourceforge.net/camomile/camomile-0.8.1.tar.bz2
    $ tar -xpjf camomile-0.8.1.tar.bz2
    $ cd camomile-0.8.1/
    $ ./configure
    $ make
    $ make install
    
  7. the last step is to download compile and install Batteries itself. I wasn't able to compile the latest stable release (1.2.2), for an obscure preprocessor error, but using the latest GIT branch everything went smoothly. So here are the steps:
    $ git clone git://github.com/ocaml-batteries-team/batteries-included.git
    $ cd batteries-included/
    $ make camomile82
    $ make all doc
    $ make install install-doc
    

Testing the installation

Before starting to play with the library and the toplevel (the OCaml REPL is called toplevel) let's put into action a couple of helpers.

  1. The OCaml toplevel doesn't support readline. To get this feature back we add an alias to .bashrc. This works in both Linux and Windows:
    alias ocaml='rlwrap -H /home/paolo/.ocaml_history -D 2 -i -s 10000 ocaml'
    
    restart the terminal or load another bash;
  2. we need to load Batteries in the toplevel. This is not strictly necessary, but it helps a lot and the Batteries ASCII logo is wonderful :-). All we need is to create a file named .ocamlinit in the home directory. Open your favorite editor and put this phrases in ~/.ocamlinit:
    let interactive = !Sys.interactive;;
    Sys.interactive := false;; (*Pretend to be in non-interactive mode*)
    #use "topfind";;
    Sys.interactive := interactive;; (*Return to regular interactive mode*)
    
    Toploop.use_silently 
                 Format.err_formatter (Filename.concat (Findlib.package_directory 
                 "batteries") "battop.ml");;
    

If everything went well you can now type ocaml and something like this should appear:

$ ocaml
        Objective Caml version 3.11.2

      _________________________
    [| +   | |   Batteries   - |
     |_____|_|_________________|
      _________________________
     | -  Type '#help;;' | | + |]
     |___________________|_|___|


Loading syntax extensions...
	Camlp4 Parsing version 3.11.2

Conclusions

This (rather boring) post has been devoted to the installation details of Batteries under Windows, where it presents some difficulties for newbies. Next time we will start on exploring the library with simple examples to exploit its strength.

Copyright © 2004–2019 by .
Creative Commons License Content on this site is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.

RSS Feed. Valid XHTML 1.1. This blog is written in Objective Caml. Design based on the work of Rodrigo Galindez.