Inviare codice su nopaste da shell: pynopaste

Python source code icon by everaldo.comSu IRC c’è spesso bisogno di usare un servizio di nopaste per evitare di inondare il canale di righe e righe di testo. Spesso c’è bisogno di inviare un file completo sul nopaste, così “ispirandomi a” (leggere: “copiando”) nopaste.pl di dfa ho scritto un programma in python che permette di inviare direttamente a http://rafb.net/nopaste il file, o in alternativa quello che riceve dallo stdin.L’unico vantaggio rispetto al programma di dfa è che questo non ha bisogno di installare librerie varie (per la versione in Perl è necessario installare LWP::UserAgent).

L’uso del programma è estremamente semplice:

pynopaste <content> [description]

Invia il file content, il campo description è opzionale e permette di aggiungere la descrizione da mostrare sul nopaste. L’alternativa è inviare il testo tramite stdin, ad esempio:

for i in *.config ; do echo "========== $i ==========" ; cat $i ; done | pynopaste

Questo codice concatena tutti i file con estensione .config nella cartella corrente e lo invia a pynopaste.

Ecco il codice:

#!/usr/bin/python

# pynopaste.pl -- nopaste files from command line
# Copyright (C) 2007, IppatsuMan < ippatsuman * gmail >
#
# *slightly* (yeah, right...) inspired by a work by Davide
# Angelocola ( http://dfa.slackware.it )
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
# USA.

# usage:
#   pynopaste file [description]
#   pynopaste <stdin>

import os, sys, urllib
from urllib2 import Request, urlopen, URLError, HTTPError

if __name__ == "__main__":

	availableext = {
			('pl', 'pm')         : 'Perl',
			('cpp', 'cc', 'hh')  : 'C++',
			('c', 'h')           : 'C',
			('cs')               : 'C#',
			('pas')              : 'Pascal',
			('bas', 'vb')        : 'Visual Basic',
			('java')             : 'Java',
			('py')               : 'Python',
			('rb')               : 'Ruby',
			('sql')              : 'SQL',
			('php')              : 'PHP'}

	desc = ""
	lang = "Plain Text"

	if len(sys.argv)>1:
		try:
			f = open(sys.argv[1])
			lines = f.readlines()
			vext = ""
			f.close()
			# get the file extension
			fileext = os.path.splitext(sys.argv[1])[1][1:].lower()
			for ext in availableext.keys():
				if fileext in ext:
					try:
						lang = availableext[ext]
					except:
						lang = 'Plain Text'
					break
			if len(sys.argv)>2:
				desc = sys.argv[2]
		except IOError, e:
			print e
	else:
		lines = sys.stdin.readlines()

	if len(desc) == 0:
		for line in lines:
			if len(line)>0:
				desc = line
				break

	req = Request("http://rafb.net/paste/paste.php")
	try:
		username = os.environ["LOGNAME"]
	except:
		username = "Anonymous"

	data = urllib.urlencode({"nick" : username[:30], "text" : "".join(lines), "desc" : desc[:50], "lang" : lang})

	try:
		response = urlopen(req, data)
	except HTTPError, e:
		print "HttpError: "+e.code
	except URLError, e:
		print "URLError: "+e.reason
	else:
		resurl = response.geturl()
		if "toofast" in resurl:
			print "Too fast, send again"
		else:
			print resurl

N.B.: non sono affatto un guru di Python (in effetti lo studiacchio nei ritagli di tempo) e non è affatto detto che questo codice sia il modo migliore per realizzare il programma né tanto che sia privo di bug. Se avete appunti di stile lasciate pure un commento :)

Aggiungere spazio swap “al volo”

HardDisk icon by everaldo.comLo swap è un’area di memoria, tipicamente una partizione dell’hard disk o un file, utilizzata dal sistema operativo per “parcheggiare” dati e processi non in uso in quel momento. Il Memory Manager di Linux tenta per quanto possibile di tenere tutti i processi in RAM, poiché l’accesso al disco è molto più lento di quello alla memoria, e quindi “svegliare” un processo dallo swap è una operazione che porta via molto tempo. Quando la RAM scarseggia ricorre necessariamente allo swap.

Cosa succede quando la RAM e lo swap sono utilizzati completamente? Entra in azione l’Out-of-Memory Killer (questo è il comportamento di default, che può essere modificato tramite /proc). Quello che fa l’OOMKiller e’ selezionare un processo che ritiene particolarmente dannoso o inutile e ucciderlo. Questo può essere Apache, il database server, la vostra sessione di vim… non c’è modo di predire dove colpirà la follia omicida del killer. Una possibilità, ovviamente, è quella di disabilitare il maniaco. Un’altra è quella di aumentare al volo lo spazio di swap disponibile. Per fare questo per fortuna non serve aumentare lo spazio della partizione di swap, ma si può indicare al kernel un file da utilizzare come swap. Per farlo è necessario eseguire i seguenti comandi da root. Poiché uso Ubuntu (no, Kubuntu, ma sono search engine friendly), avvio una shell di root eseguendo sudo -s (detesto mettere sudo davanti a tutte le istruzioni), sulle altre distribuzioni eseguite invece su -.

Il primo passo è creare un file della dimensione desiderata da usare come swap. Supponendo di voler creare il file da 512MiB img.swp nella cartella radice /, il comando da eseguire è:

dd if=/dev/zero of=/img.swp bs=1M count=512

dd è un programma molto versatile che consente di copiare dati da un file all’altro. In questo caso lo usiamo per copiare dal device virtuale /dev/zero (if=/dev/zero, if sta per input file) al file /img.swp (of=/img.swp, of sta per output file) 512 blocchi (count=512) da 1MiB (bs=1M).

Il comando successivo serve per formattare il file in modo che sia adeguato a ospitare lo swap:

mkswap /img.swp

Il file di swap non deve contenere “buchi”, e generalmente se il disco è sufficientemente capiente è possibile trovare una sequenza di blocchi contigui per ospitarlo. Si noti che su Windows una classica causa di rallentamenti è la frammentazione del file di swap: un problema in meno per Linux.

Ora bisogna dire al kernel che c’è un nuovo file di swap da utilizzare:

swapon /img.swp

Opzionalmente, se desiderate rendere persistente la decisione, potete “registrarla” modificando il file /etc/fstab:

nano /etc/fstab

aggiungendo la linea

/img.swp none swap sw 0 0

Utilizzate il comando free -m per verificare che il kernel stia effettivamente utilizzando il nuovo spazio swap: il valore nella colonna “total” della riga “Swap” dovrebbe essere aumentato di una quantità pari alla dimensione in megabyte del file di swap che avete aggiunto (nel nostro caso 512). Per disattivare il file di swap eseguite:

swapoff /img.swp

oppure, se avete modificato /etc/fstab, ri-modificatelo cancellando

/img.swp none swap sw 0 0

Eseguire programmi all’avvio di Kubuntu

KMenu icon by Oxygen KDE TeamUna domanda che mi viene fatta relativamente spesso è: come faccio a far avviare un programma automaticamente all’avvio di KDE?

Il metodo che preferisco è, neanche a dirlo, da riga di comando. Per aggiungere un programma, ad esempio /usr/bin/akregator, è sufficiente eseguire:

ln -s /usr/bin/akregator ~/.kde/Autostart

Ovviamente non dovete far altro che sostituire /usr/bin/akregator con il percorso completo all’eseguibile che volete avviare automaticamente. Inoltre qualunque script che metterete in ~/.kde/Autostart verrà eseguito automaticamente dopo il login su KDE.

Per i fobici della riga di comando è disponibile un modulo per kcontrol: per installarlo su Debian e derivate (Kubuntu!) eseguite:

sudo aptitude install kcontrol-autostart

kcontrol autostart moduleIn questo modo in kcontrol sarà disponibile una nuova voce che permetterà di gestire i programmi da avviare automaticamente all’avvio di KDE, subito dopo il login.

Notate che i programmi attivati in questo modo saranno avviati solo e esclusivamente dopo il login e solo per gli utenti nella cui cartella ~/.kde/Autostart è presente il link al programma da avviare. Per aggiungere un programma che si avvii automaticamente per tutti gli utenti è necessario creare uno script in /etc/init.d e aggiungere un link simbolico in /etc/rc[0..6].d, o modificare il file /etc/rc.local. Questa procedura è un po’ più delicata (ma non particolarmente complessa), e ne parlerò eventualmente in un altro post.

Installare facilmente aMSN (con il supporto per i clip audio)

MSN icon by everaldo.comaMSN è un client open source multipiattaforma che supporta il maggior numero di caratteristiche del client originale: emoticon personalizzate, visualizzazione webcam, invio di brevi clip audio, font con antialiasing. Purtroppo molte di queste caratteristiche sono disponibili solo nella versione in via di sviluppo di aMSN, mentre sui repository di (K)Ubuntu si è fermi versione 0.97RC1.

Installare la sviluppo non era proprio agevole fino a poco tempo fa, dato che sui repository non erano disponibili le ultime versioni dei pacchetti Tcl e Tk, necessarie per compilare e usare aMSN. Finalmente sui repository per (K)Ubuntu Gutsy Gibbon 7.10 sono comparsi i nuovi pacchetti .deb già compilati, e la cosa è molto più semplice e meno invasiva (per lo meno rispetto ai metodi che si trovano in genere in giro).

Per motivi che ora non mi va di indagare i pacchetti non sono installabili direttamente da apt-get/aptitude/Synaptic/Adept, per cui dovrete scaricarli a mano. Per farlo aprite un terminale e eseguite:

mkdir amsn
cd amsn
wget http://it.archive.ubuntu.com/ubuntu/pool/universe/t/tcl8.5/tcl8.5_0.b2-2_i386.deb
wget http://it.archive.ubuntu.com/ubuntu/pool/universe/t/tcl8.5/tcl8.5-dev_0.b2-2_i386.deb
wget http://it.archive.ubuntu.com/ubuntu/pool/universe/t/tk8.5/tk8.5_0.b2-1_i386.deb
wget http://it.archive.ubuntu.com/ubuntu/pool/universe/t/tk8.5/tk8.5-dev_0.b2-1_i386.deb

Avrete così i pacchetti di base necessari. Questi pacchetti hanno altre dipendenze, che purtroppo dobbiamo installare a mano. Cogliamo l’occasione e installiamo anche altri pacchetti necessari per la compilazione di aMSN. Eseguite:

sudo aptitude install build-essential libx11-dev libxau-dev libxdmcp-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev libjpeg62-dev libpng12-dev

Ora che abbiamo le dipendenze soddisfatte possiamo installare Tcl/Tk 8.5:

sudo dpkg -i tcl8.5_0.b2-2_i386.deb tcl8.5-dev_0.b2-2_i386.deb tk8.5_0.b2-1_i386.deb tk8.5-dev_0.b2-1_i386.deb

Terminata l’installazione procediamo con l’installazione della libreria che permette a aMSN di inviare i suoni (questo passaggio è opzionale):

sudo aptitude install libsnack2

Adesso abbiamo tutto il necessario per procedere con la compilazione. Scaricate l’ultima versione di aMSN e decomprimetela:

wget http://amsn.sourceforge.net/amsn_dev.tar.gz
tar xvf amsn_dev.tar.gz

Entrate nella cartella, configurate i sorgenti e compilateli:

cd msn
./configure
make

Al termine della compilazione, salvo errori, aMSN sarà compilato. Potete verificare che funzioni correttamente eseguendo

./amsn

Se tutto funziona potete chiudere aMSN terminandolo premendo ctrl+c. Passiamo ora renderlo disponibile a tutti gli utenti del sistema. Per farlo eseguite:

cd ..
mv msn amsn
sudo cp -r amsn /opt
sudo ln -s /opt/amsn/amsn /usr/bin/amsn

Adesso tutti gli utenti potranno avviare aMSN eseguendo amsn in un terminale. Opzionalmente potete aggiungere una voce per avviarelo da menu. Per aggiungere automaticamente a tutti gli utenti la voce di menu eseguite questo comando:

cat /opt/amsn/amsn.desktop | sed 's/Icon=amsn\.png/Icon=\/opt\/amsn\/desktop-icons\/128x128\/apps\/amsn\.png/' | sudo tee /usr/share/applications/amsn.desktop

(è un po’ complicato, vi conviene fare copia & incolla per essere sicuri di non sbagliare). In questo modo tutti gli utenti potranno avviare aMSN anche da menu, e aMSN dovrebbe supportare anche l’invio di brevi clip audio tenendo premuto il tasto F2.

Se avete bisogni di chiarimenti scrivete nei commenti.

Reinstallare GRUB

HardDisk icon by everaldo.comPeriodicamente su IRC qualcuno arriva in canale con la necessità di ripristinare GRUB, questo tipicamente in seguito a una reinstallazione di Windows.

Per risolvere il problema bisogna riavviare il sistema con un live CD: il cd di installazione di (K)Ubuntu va benissimo, ma va bene anche Knoppix. Una volta avviato il live CD bisogna aprire un terminale e diventare root eseguendo:

sudo -s

Sulle distribuzioni non basate su Ubuntu usate invece su -. Avrete ora una shell con diritti di root. Eseguite ora:

grub

Si avvierà così la shell di grub, che si presenta come grub> _. Grub è in grado di effettuare semplici ricerche sui filesystem, per cui possiamo dirgli di cercare su quale disco e partizione sono presenti i suoi file di configurazione. Per farlo eseguite:

find /boot/grub/stage1

Questo comando darà una risposta nella forma (hdX, Y), dove X e Y sono due numeri che identificano l’hard disk e la partizione su quell’hard disk. Supponiamo che il risultato sia (hd0,2). Eseguite allora:

root (hd0,2)
setup (hd0)
quit

(ogni comando è su una riga separata). Fatto questo potete chiudere il terminale e riavviare il sistema. Grub dovrebbe essere di nuovo funzionante.

Problemi con MPlayer e ATI

Aktion icon by everaldo.comCon l’installazione di Kubuntu Gutsy Gibbon 7.10 ho avuto un piccolo problema: all’avvio di MPlayer questo si è rifiutato di partire con il seguente errore:

[VO_XV] It seems there is no Xvideo support for your video card available.
[VO_XV] Run 'xvinfo' to verify its Xv support and read
[VO_XV] DOCS/HTML/en/video.html#xv!
[VO_XV] See 'mplayer -vo help' for other (non-xv) video out drivers.
[VO_XV] Try -vo x11.
Error opening/initializing the selected video_out (-vo) device.

Nel mio caso il colpevole è stato individuato in fglrx, il driver binario per la mia scheda ATI. La soluzione per fortuna è semplice:

sudo aticonfig –overlay-type=Xv

Riavviate (per gli esperti: basta riavviare X) e MPlayer funzionerà tranquillamente. Con le altre versioni di Kubuntu non avevo avuto di questi problemi perché installavo i driver da shell e era un riflesso condizionato eseguire aticonfig.

Nel caso in cui la correzione precedente non funzioni potete sempre costringere MPlayer a usare un altro overlay video, ad esempio gl2. Per farlo aprite con il vostro editor di testo preferito /etc/mplayer/mplayer.conf (ad esempio sudo nano /etc/mplayer/mplayer.conf), cercate la riga vo=xv, sostituitela con vo=gl2 e salvate le modifiche. MPlayer tornerà a funzionare.

Rilasciato KDE 4 RC1 “Calamity” - Installazione su Kubuntu

KDE 4 System Preferences icon by KDE Oxygen TeamLa Release Candidate 1 di KDE 4 è stata da poco rilasciata. Per Release Candidate si intende una versione che, a meno di (inevitabili) bugfix, potrebbe essere effettivamente la versione stabile da rilasciare (cosa che di fatto non accade mai.

Sono già disponibili i pacchetti per installare KDE4 su Kubuntu Gutsy Gibbon 7.10. L’installazione di KDE4 non è adatta ai deboli di cuore e a chi non sappia come rimediare agli eventuali danni, siete avvisati.

Installazione

  • Rimuovete eventuali vecchi pacchetti con sudo aptitude remove kdelibs5
  • Aggiungere deb http://ppa.launchpad.net/tsimpson/ubuntu gutsy main al vostro /etc/apt/sources.list
  • Eseguite sudo aptitude install kdebase-dev-kde4 kdebase-workspace-dev kdebase-runtime kdm-kde4. Questi pacchetti non sono firmati, per cui aptitude vi avviserà del pericolo di installare pacchetti non provenienti da fonti sicure
  • Eseguite sudo cp /usr/lib/kde4/share/kde4/apps/kdm/sessions/kde.desktop /usr/share/xsessions/kde4.desktop
  • Modificate /usr/share/xsessions/kde4.desktop in modo che il suo nome sia “KDE 4″
  • Modficate /usr/lib/kde4/bin/startkde e aggiungetegli all’inizio le righe:
    export LD_LIBRARY_PATH=/usr/lib/kde4/lib
    export KDEDIRS=/usr/lib/kde4
    export PATH=/usr/lib/kde4/bin/:$PATH
    export KDEHOME=~/.kde4

Riavviate X (ctrl+alt+backspace), selezionate KDE 4 tra le sessioni disponibili e buon divertimento.

Boot di Ubuntu Gutsy 7.10 lento

Logo UbuntuIn Ubuntu (Kubuntu, Xubuntu) Gutsy Gibbon 7.10 è presente un bug che rende il boot molto lento. Il bug si manifesta con lo schermo nero all’avvio e un boot molto lento. Un rapido workaround al volo è premere CTRL+ALT+F1 per passare a una console virtuale. Il problema è dato dal fatto che USplash, il programma che si occupa di mostrare l’animazione all’avvio, è configurato male durante il processo di installazione e utilizza una risoluzione errata.

La soluzione è semplice: con il vostro editor di testo preferito aprite da root il file /etc/usplash.conf . Per farlo se usate Kubuntu potete eseguire kdesu kate /etc/usplash.conf, su Ubuntu gksudo gedit /etc/usplash.conf, se siete amanti della linea di comando è sufficiente sudo nano /etc/usplash.conf. Inserite la vostra password di root e avrete davanti il vostro file, che probabilmente sarà come questo:

# Usplash configuration file
xres=1280
yres=1024

Modificatelo in modo che diventi:

# Usplash configuration file
xres=1024
yres=768

Se il vostro computer è particolarmente datato potreste dover usare i valori 800 e 600 o addirittura 640 e 480. Salvate le modifiche e riavviate: adesso dovrebbe comparirvi l’animazione al boot e allo shutdown e non dovrebbero più esserci rallentamenti.

Programmi per console: un giorno senza X

Konsole icon by everaldo.comUn punto di forza di Linux per i “pro” (e per alcuni geek di mia conoscenza - ciau Add :) ) è senza dubbio la possibilità di utilizzare programmi che funzionino da console. Niente mouse, niente clic: solo uno schermo nero che permette di fare praticamente di tutto.

Del resto è innato nella storia di Linux: tutto deve essere possibile eseguendo comandi - KDE, GNOME, FluxBox e tutti gli altri sono venuti anni se non decenni dopo /bin/sh.

X icon by Oxygen KDE Project.Rovistando nei repository è sorprendente quanto software utilizzabile da console esista. Di certo non sono user friendly, ma una volta presa la mano sono più rapidi e leggeri delle controparti grafiche e cliccose. Non avranno effetti stupefacenti, ma fanno il loro lavoro e in genere lo fanno piuttosto bene. Ho deciso quindi, ispirato da un paio di post di altri blog, di elencare alcuni dei programmi più conosciuti (o anche meno) per console. Di fatto in caso di emergenza quasi tutto si può fare anche da una poverissima riga di comando.

Quasi tutti i software qui riportati si possono installare su (K)Ubuntu tramite aptitude/Synaptic/Adept o qualunque altra interfaccia usiate per scaricare i software dai repository, selezionando il pacchetto avente lo stesso nome del programma che desiderate installare. Le poche eccezioni a questa regola sono opportunamente evidenziate nel post.

Web browser (Elinks)

ElinksCi sono parecchi browser testuali in giro, il più vecchio dei quali è Lynx, nato nel 1992. Nel 1999 è stato rilasciato Links, e da un suo fork è nato ELinks. Elinks è probabilmente il più flessibile e accessoriato tra i “concorrenti”: supporta i frame e le tabelle, può essere reso alquanto colorato e supporta addirittura il mouse (la mente vacilla di fronte a cotanta tecnologia). Inoltre se avete una casella di posta elettronica su gmail, questa offre una versione senza javascript che funziona perfettamente in ELinks. Per i casi di emergenza ELinks può rivelarsi alquanto utile.

Posta elettronica (Mutt)

MuttMutt è uno storico client per la posta elettronica nato nel 1995. L’ultima release stabile mentre scrivo è stata rilasciata il 1° Novembre - nonostante l’età la comunità e lo sviluppo di Mutt continuano a essere molto attivi. Mutt supporta SMTP, IMAP, POP3 e con una patch persino NNTP. I suoi schemi di colore sono completamente personalizzabili così come anche le scorciatoie da tastiera. Può addirittura usare automaticamente configurazioni diverse in base al mittente dell’email, alla cartella corrente o altro ancora.

Gestione file (mc)

Midnight CommanderI veramente vecchi riconosceranno subito dallo screenshot che Midnight Commander (per gli amici mc) è un clone del vecchissimo Norton Commander, anno 1986. mc è un gestore di file molto potente: permette ovviamente di spostare o rinominare file, ma ha anche la peculiarità di permettere di rinominare gruppi di file contemporaneamente utilizzando le espressioni regolari, può funzionare da client FTP, supporta la navigazione all’interno dei pacchetti RPM e molto altro.

Chat

MSN/Yahoo!/AIM/ICQ (TMSNC/CenterIM/Finch)

tmsncLe scelte qui si dividono: se siete davvero minimalisti e vi interessa solo MSN Messenger (probabilmente il client di chat più utilizzato in Italia) TMSNC è il client che fa per voi. In meno di 50KiB (a cui andrebbero sommati i 2.8 MiB delle libssl0.9.8 che però probabilmente già avete installato) contiene un client per MSN completo e sufficientemente intuitivo. Il progetto TMSNC è stato fermato dal suo programmatore principale, per cui non aspettatevi bugfix o nuove versioni di questo programma. Il cuore del suo codice confluirà nel programma Fama IM, che però è ancora troppo poco maturo per poter essere utilizzato in pianta stabile.CenterIM
Una possibile alternativa è CenterIM. Nato come fork di CenterICQ, questo client testuale supporta connessioni multiple contemporanee con più account anche con protocolli diversi. In particolare supporta ICQ2000, Yahoo!, AIM, MSN Messenger e Jabber/XMPP. Dovendo supportare più tipi di chat inevitabilmente non permette di utilizzare le feature caratteristiche di ogni protocollo.

Un’ulteriore possibilità è Finch. Finch è una interfaccia testuale a libpurple, la stessa libreria utilizzata da Pidgin, e questo gli permette di supportare un’enormità di protocolli differenti in un’unica interfaccia (AIM, ICQ, Jabber/XMPP, MSN Messenger, Yahoo!, Bonjour, Gadu-Gadu, IRC, Novell GroupWise Messenger, QQ, Lotus SameTime, SILC, SIMPLE, MySpaceIM e Zephyr). D’altro canto questo vuol dire che è costretto a portarsi dietro una serie di dipendenze piuttosto pesanti, per cui potrebbe non essere la scelta migliore se l’obiettivo è quello di esser quanto più leggeri possibile.

IRC (Irssi)

irssiEssendo una rete storicamente piena di geek e nerd, esistono moltissimi client testuali per IRC, ma il principe è sicuramente Irssi.

La possibilità di modificarlo tramite scripting perl, l’autologging, il rilevamento dei copia & incolla, la funzionalità proxy e molto altro lo rendono un client estremamente popolare (almeno nella nicchia di utenti che preferiscono l’interfaccia testuale), e ha feature che lo rendono molto appetibile agli smanettoni e probabilmente comparabile in alcuni campi a client più blasonati come XChat o KVIrc.

RSS (Newsbeuter)

Non sono un particolare fan dei feed RSS: ne seguo giusto una ventina, che potrebbero sembrare tanti, ma in realtà sono molto selezionati e non sputano fuori cinquanta notizie ogni ora. Un “aggregatore” di RSS però è per molti uno strumento immancabile. Nel caso delle versioni testuali la parte del leone la fa in genere Raggle, un buon lettore di RSS con molte features, il cui unico, grosso neo è che l’ultima release stabile risale a Dicembre 2005 e da allora il progetto sembra abbandonato.
newsbeuterUn’alternativa molto accattivante è Newsbeuter. È altamente personalizzabile, e supporta anche un meccanismo di plug in che permette, ad esempio, di aggiungere automaticamente un articolo del feed ai propri preferiti su del.icio.us. Può utilizzare opzionalmente elinks come motore di rendering, dispone di un sistema di memorizzazione dei preferiti, può importare l’elenco dei feed da leggere via OPML e è in grado di sincronizzarsi con un eventuale account su bloglines.com (e non è escluso che in futuro supporti anche Google Reader).

Visualizzare immagini (zgv)

Per quanto possa sembrare completamente demente, è possibile visualizzare le immagini su Linux senza utilizzare alcun server X. Il barbatrucco è possibile grazie a un programma che si chiama zgv e a un pizzico di magia di nome SVGAlib. Non allego alcun screenshot dato che l’interfaccia di zgv si riduce all’immagine mostrata a schermo. In realtà zgv permette anche di navigare le cartelle per caricare l’immagine scelta mostrando prima le anteprime. Supporta i più comuni formati grafici (gif, bmp, jpg, png, tif e così via), permette di fare slideshow e altro ancora.

Nel caso in cui sia disponibile un server X e si desideri semplicemente mostrare l’immagine a schermo senza avviare gwenview o chi per lui, è possibile utilizzare display , un semplice programma compreso nel pacchetto imagemagick. display non fa altro che aprire una finestra che mostra l’immagine desiderata.

Visualizzare video (MPlayer)

MPlayer con le aalibAncora più strana è l’idea di guardare video senza utilizzare X. Ma grazie a un pizzico di magia di nome fbdev, MPlayer è in grado di mostrare i video in una comunissima console. Per usarlo in questa modalità è sufficiente avviare mplayer con lo switch -vo fbdev o -vo fbdev2. Non posso assicurare nulla sulle performance in questa modalità, dato che il device /dev/fb0 non è presente sul mio Kubuntu e non ho voglia di scoprire cosa fare per crearlo.

Un’alternativa(?) è avviare mplayer con lo switch -vo aa oppure -vo caca. In questo modo MPlayer convertirà ogni frame in una sua rappresentazione “equivalente” con caratteri ASCII e la mostrerà sullo schermo. Con la seconda variante è possibile avere una rozza sostituzione dei colori.

Musica (MOC/cplay)

L’offerta di player per MP3 e simili è sorprendentemente varia. Le due scelte più popolari sono MOC e cplay. MOC farà sentire a casa chi utilizza Midnight Commander per gestire i file, dato che l’interfaccia di utilizzo è molto simile. MOC supporta anche lo streaming da internet (Icecast e Shoutcast) e presto supporterà anche last.fm.

cplay offre funzionalità simili, permette di ascoltare le canzoni di una playlist in ordine oppure in modo casuale, include una funzionalità di ricerca per trovare le canzoni in un certo sottoalbero del filesystem.

Editing testo (Vim/Emacs)

vimLinux ha a disposizione un arsenale enorme di editor di testo più o meno raffinati. I giganti della situazione sono però senza dubbio Emacs e Vim. Tra gli utenti dell’uno o dell’altro si scatenano periodicamente guerre di religione. Usare l’uno o l’altro in realtà probabilmente dipende da quale ci si trova a usare per primo e si decide di approfondirne lo conoscenza.

Entrambi gli editor sono estendibili (Emacs tramite Emacs Lisp e Vim usando Python, Ruby, Tcl, Perl e altri linguaggi) e hanno varie librerie che li trasformano, ad esempio, in IDE che permettono l’editing, la compilazione e il debugging di programmi. Supportano il syntax highlighting, l’autocompletamento, possono interfacciarsi a motori di correzione ortografica e così via.

In effetti sono entrambi così flessibili da avere plug in che li utilizzano in modo completamente deviato: ci sono client IRC, si può giocare a Tetris, a Sudoku, avviare sessioni psicoanalitiche con ELIZA e molto altro. Una battuta comune su Emacs è che sarebbe un buon sistema operativo se solo avesse un buon editor di testo.

Distrazioni a parte è importante capire che Emacs e Vim sono editor di testo e non word processor: si focalizzano sul contenuto e non sull’aspetto dei documenti. Usandoli in accoppiata con LaTeX si possono usare come editor WYSIWYM (What You See Is What You Mean: quello che vedi è quello che intendi, filosofia contrapposta a quella WYSIWYG What You See Is What You Get quello che vedi è quello che otterrai).

Entrambi gli editor hanno controparti per il mondo grafico, rispettivamente XEmacs e gVim.

L’enormità di funzioni messe a disposizione dai due editor, che qui non ho neanche scalfito in superficie, li rendono estremamente potenti ma anche molto complessi. La curva di apprendimento è piuttosto ripida, ma lo studio necessario viene ripagato in entrambi i casi con un aumento della produttività e con la capacità di automatizzare facilmente processi noiosi e che portano via del tempo.

A causa della complessità dei due programmi è importante iniziare con una buona guida che ne spieghi almeno l’utilizzo di base. Vim mette a disposizione il programma vimtutor, ma sono facilmente utilizzabili in rete molti altri tutorial tra il serio e il faceto. Stessa cosa vale per Emacs.

N.B.: io uso Vim, ma non ve ne farò una colpa se utilizzerete Emacs ;)

P2P

BitTorrent (rTorrent)

rTorrentI torrent sono un ottimo mezzo per condividere file di grosse dimensioni, e un buon client per BitTorrent fa sempre comodo. Uno dei più utilizzati è rTorrent (screenshot al lato dal sito ufficiale di rTorrent). rTorrent vanta l’utilizzo di una libreria molto performante, supporta la crittazione del protocollo e può essere controllato oltre che tramite l’interfaccia ncurses via XML-RPC over SCGI o via FastCGI. Dalla versione 0.7 di rTorrent è supportato anche il protocollo PXE (Peer eXchangE) per mantenere vivi i download anche in caso di momentanea assenza del tracker.

eDonkey/Kad (aMule)

aMule cmdL’altra faccia del P2P è la rete eDonkey in parallelo alla rete Kadmelia: le due reti a cui si collegano client come eMule o aMule. E proprio aMule può essere utilizzato anche in ambiente puramente testuale. Per farlo è necessario modificare il file amule.conf , individuare la riga AcceptExternalConnections e impostarla a 1 (AcceptExternalConnections=1) e inserire l’hash md5 della password che si desidera usare alla destra di ECPassword=. Per ottenere l’hash della password si può eseguire echo -n pwd | md5sum, dove “pwd” va sostituito con la password che si vuole utilizzare per controllare aMule. Effettuate queste modifiche si deve avviare amule eseguendo amuled -f: in questo modo partirà solo il demone di aMule che si occupa del download senza GUI. Ora si può eseguire amulecmd, che si connetterà all’istanza di amuled e permetterà di controllarlo tramite un’interfaccia a riga di comando personalizzata.

Altri programmi utili

Riporto in ordine esclusivamente alfabetico un altro po’ di programmi utili o curiosi da utilizzare esclusivamente dall’interfaccia testuale:

  • antiword: trasforma un documento di Microsoft Word in uno stream di puro testo comodamente leggibile da console.
  • cmatrix: uno “screensaver” che ricorda la famosa animazione di Matrix.
  • oleo: un foglio di calcolo testuale particolarmente amichevole per chi utilizza Emacs.
  • pdftotext: trasforma un documento pdf in testo - fa parte del progetto Xpdf, ma su *Ubuntu fa parte del pacchetto poppler-utils.
  • tpp: utility per effettuare presentazioni alla PowerPoint in formato esclusivamente testuale.

Direi che è tutto. Ricordatevi che potete gestire più programmi testuali contemporaneamente usando Screen (wiki), dtach (wiki) o Twin (wiki). Salutate X :)

Mac vs. DOS

Copertina “Bustina di Minerva”Riporto qui una deliziosa Bustina di Minerva di Umberto Eco, datata 1994.

Non si è mai riflettuto abbastanza sulla nuova lotta di religione che sta sotterraneamente modificando il mondo contemporaneo.

l fatto è che ormai il mondo si divide tra utenti del computer Macintosh e utenti dei computer compatibili col sistema operativo Ms-Dos. È mia profonda persuasione che il Macintosh sia cattolico e il Dos protestante. Anzi, il Macintosh è cattolico controriformista, e risente della “ratio studiorum” dei gesuiti. È festoso, amichevole, conciliante, dice al fedele come deve procedere passo per passo per raggiungere - se non il regno dei cieli - il momento della stampa finale del documento. È catechistico, l’essenza della rivelazione è risolta in formule compensibili e in icone sontuose. Tutti hanno diritto alla salvezza.

Il Dos è protestante, addirittura calvinista. Prevede una libera interpretazione delle scritture, chiede decisioni personali e sofferte, impone una ermeneutica sottile, dà per scontato che la salvezza non è alla portata di tutti. Per far funzionare il sistema si richiedono atti personali di interpretazione del programma: lontano dalla comunità barocca dei festanti, l’utente è chiuso nella solitudine del proprio rovello interiore.

Si si obbietterà che, col passaggio a Windows (n.d.IppatsuMan: 3.1), l’universo Dos si è avvicinato alla tolleranza controriformistica del Macintosh. È vero: Windows rappresenta uno scisma di tipo anglicano, grandi cerimoni nella cattedrale, ma possibilità di subitanei ritorni al Dos per modificare un sacco di cose in base a bizzarre decisioni: in fin dei conti si può conferire il sacerdozio anche alle donne e ai gay.

Naturalmente cattolicesimo e protestantesimo dei due sistemi non hanno nulla a che fare con le posizioni culturali e religiose degli utenti. Ho scoperto un giorno che il severo e tormentato Fortini usa il Macintosh, cose da non credere. Però c’è da chiedersi se alla lontana, con il tempo e con le nespole, l’uso di un sistema piuttosto che l’altro non porti anche a profonde modificazioni interiori. Davvero si può usare il Dos e tifare per la Vandea? E inoltre: Céline avrebbe scritto con Word, Word Perfect o Wordstar? Cartesio avrebbe programmato in Pascal?

È il linguaggio macchina, che decide al di sotto del destino di entrambi i sistemi o ambienti che dir si voglia? Eh, quello è veterotestamentario, talmudico e cabalistico. Ahi, sempre la lobby ebraica…

1994

Questa bustina è di sei anni fa. Nel frattempo le cose sono cambiate. I vari releases hanno portato Windows 95 e 98 a diventare decisamente cattolico-tridentini, insieme a Mac. La fiaccola del protestantesimo è passata nella mani di Linux. Ma l’opposizione rimane valida. (1999)

Prendetela per la meravigliosa chicca informatico-storico-teologico-letteraria che è. Per chi volesse comprare il libro: Eco, Umberto “La Bustina di Minerva” Milano, Bompiani 2000.