Monthly Archives: November 2007

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 :)

Update 03/05/2009: aggiornati i link del programma originale di dfa.

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.

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.

*Ubuntu potrebbe (?) rompere il tuo hard disk

HardDisk icon by everaldo.comC’è stata una piccola tempesta nei vari blog/siti 2.0/del.icio.us/newswine (…) relativo alla supposizione che *ubuntu possa portare a un logoramento prematuro degli hard disk.

Tutto è partito da un post di linux-hero (opportunamente amplificato da digg.com) che faceva riferimento al bug #104535 di Ubuntu: il riassunto del bug è che quando viene collegato alla batteria Ubuntu attiverebbe delle impostazioni che portano a un continuo arresto e riavvio dell’hard disk, cosa che da una parte aumenta l’autonomia del sistema, dall’altra causa uno stress meccanico che può accorciare la vita utile dell’hard disk.

Inizialmente il caos ha regnato e tutti hanno iniziato a incolpare Ubuntu della rottura del proprio hard disk. In realtà le cose sono un po’ più complicate di così (come ha segnalato Matthew Garrett — sviluppatore per Debian e lead developer per Ubuntu). Per sapere se il fantomatico bug vi affligge eseguendo il comando:

grep ENABLE_LAPTOP_MODE /etc/default/acpi-support

se vi viene restituito “false” allora non correte alcun pericolo.

laptop_mode è una variabile con cui si comunica al kernel Linux che si intendono attivare alcuni comportamenti che portano a un “miglioramento” del comportamento del sistema sui laptop (ad esempio bufferizzando le scritture su disco e scrivendole a burst, diminuendo così gli accessi all’hd e allungando conseguentemente la durata della batteria).

Tale variabile si può impostare modificando il file /etc/default/acpi-support . Il problema nasce dal fatto che quando viene alimentato dalla batteria, Ubuntu esegue il file /etc/acpi/power.sh , che contiene tra le altre cose il codice:

function laptop_mode_enable {...$HDPARM -S $SPINDOWN_TIME /dev/$drive 2>/dev/null

$HDPARM -B 1 /dev/$drive 2>/dev/null

}

Se vengono avviati, questi comandi cambiano le impostazioni del risparmio energetico dell’hard disk. Il primo comando riduce il tempo di spindown, cioè il tempo che deve passare dall’ultimo accesso prima che l’hard disk smetta di ruotare. Il valore di default, che si può leggere nel file /etc/default/acpi-support , è di appena 12 secondi. Questo continuo fermarsi e ripartire causa stress meccanico all’hard disk, accorciandone la vita utile. Il secondo comando invece imposta la politica di ACPI per l’hard disk al valore più aggressivo (eseguite man hdparm per ulteriori informazioni).

Ma questa funzione viene richiamata solo da un’altra funzione:

if [ x$ENABLE_LAPTOP_MODE = xtrue ]; then
    (sleep 5 && laptop_mode_enable)&
fi

Questo vuol dire che se la variabile ENABLE_LAPTOP_MODE allora verrà richiamata la funzione laptop_mode_enable riportata sopra. Di default, come si può controllare sempre nel file /etc/default/acpi-support , tale variabile è impostata a false, per cui l’odiatissimo codice che corrode gli hard disk non verrà abilitato.

Questo vuol dire che di default Ubuntu non modifica le impostazioni di risparmio energetico, e coloro che hanno osservato un aumento del valore di load_cycle_count (visualizzabile con sudo smartctl -A /dev/sda dove sda potrebbe cambiare e essere hda, hdb,… o sdb, sdc…) sono “vittime” delle impostazioni aggressive per il risparmio energetico impostate nel bios o nel firmware presente sui laptop. Ubuntu, di default, non modifica alcunché per questo aspetto.

Come osserva Matthew Garret, si potrebbe affermare che Ubuntu dovrebbe forzare politiche che non portino all’usura dell’hardware, ma del resto si suppone che il produttore del portatile ne sappia più degli sviluppatori di Linux su cosa quell’hardware possa o non possa fare.

Convertire un file video da .mov a .avi

Oggi avevo bisogno di convertire su Linux un filmato dal formato di Apple Quicktime (.mov) in un file .avi. Se avete il pacchetto mencoder installato (in genere è installato insieme a mplayer), il comando da eseguire è:

mencoder originale.mov -ovc lavc -lavcopts 'vcodec=mpeg4:vbitrate=1000:vhq:vqmin=2:autoaspect' -ffourcc DX50 -oac mp3lame -lameopts 'vbr=0:br=128' -o codificato.avi

Gli apici attorno alle opzioni servono perché altrimenti la bash trova irritanti gli “=” sulla riga di comando.
Un po’ di pazienza e il filmato sarà in formato .avi con traccia video in MPEG4 e traccia audio in MP3. Nel caso in cui il comando mencoder non sia presente, potete installarlo su Ubuntu e derivate con sudo aptitude install mencoder (credo che anche su Debian il nome del pacchetto sia lo stesso).

Il caso delle eMail a 500 miglia

Riporto questo meraviglioso articolo tratto da NetworkWorld:

The Case of the 500-mile Email
Submitted by Miles Baska on Sat, 06/09/2007 – 4:34pm.

I got this story a few years ago, but it looks like it originated some years before that. I haven’t traced it back, but it’s still a pretty good story, and seems plausible. You be the judge, and let me know what you think in the “comments”.


Here’s a problem that *sounded* impossible… I almost regret posting the story to a wide audience, because it makes a great tale over drinks at a conference. :-) The story is slightly altered in order to protect the guilty, elide over irrelevant and boring details, and generally make the whole thing more entertaining.I was working in a job running the campus email system some years ago when I got a call from the chairman of the statistics department.”We’re having a problem sending email out of the department.”"What’s the problem?” I asked.

“We can’t send mail more than 500 miles,” the chairman explained.

I choked on my latte. “Come again?”

“We can’t send mail farther than 500 miles from here,” he repeated. A little bit more, actually. Call it 520 miles. But “no farther.”
Continue reading