Pagine

venerdì 19 dicembre 2008

Bash, script e comandi da shell su linux

Premessa

Chi ha già utilizzato un computer e si avvicina a Linux per la prima volta, prova un terrore atavico verso la riga di comando ovvero la possibilità di manovrare il computer tramite comandi scritti e non con un click del mouse. Questo avviene perchè si pensa a linux come un sistema rigido e poco supportato dalla grafica e non c'è nulla di più sbagliato come si può vedere nel filmato di seguito. L'obbiezione più ricorrente è: "Ma se devo digitare comandi per fare questa o quella cosa invece di fare doppio click.... questo sistema non fa per me...".


Il completo rifiuto di alcuni sistemi operativi di questo strumento fa perdere molte potenzialità all'utente il quale non immagina nemmeno di poter fare alcune operazioni semplici ma che ai suoi occhi rasentano l'impossibile per la mancanza di strumenti grafici. Lo spegnimento del computer automatico ad una determinata ora, il backup o l'invio di una mail al verificarsi di un determinato evento in automatico... Tutte operazioni estremamente semplici ma che diventano altrettanto complesse
con un sistema a finestre in maniera automatizzata. Il costo da pagare per godere di questa flessibilità e potenza nella gestione della propria macchina è conoscere un minimo di concetti di programmazione (sapere come funziona un if-else o un ciclo for)...

I sistemi a finestre nascondono questa possibilità.

Linux, al contrario, sebbene abbia ottimi gestori di finestre, sfrutta molto la possibilità di scrivere comandi da riga di comando. La riga di comando viene anche chiamata shell e ciascun comando viene interpretato da un interprete che se reputa corretto, lo esegue.
E' anche possibile riunire uno o più comandi all'interno di uno "script".
Uno script è un file di testo che può essere lanciato dall'utente o ad un determinato orario.
Quest'ultima funzionalità è estremamente utile perchè permette di programmare azioni di manutenzione della macchina o di controllo su un server in maniere estremamente semplice.

Con uno script è possibile spegnere il computer ad una determinata ora, fare il backup del sistema e spedirlo via ftp su un disco remoto, aggiornare la rubrica con l'ultima versione disponibile e mille altre cose.

Su linux ci sono due modi per accedere alla riga di comando. La prima è uscire dalla modalità grafica premendo la combinazione di tasti CTRL+ALT+F1. In questo modo ci si troverà in un ambiente completamente testuale nel quale è possibile digitare i propri comandi e dal quale si
può tornare all'ambiente grafico con CTRL+ALT+F7; il secondo metodo consiste nell'aprire una finestra detta shell. Questa si trova, solitamente nel menù iniziale sotto la voce "terminale".

Le shell

Come detto in precedenza, esistono diversi interpreti. Quando si apre una shell e si digita un comando si può decidere l'interprete che si vuole utilizzare.
Scegliere un interprete o un altro decreta il modo di inserire i comandi.
Tra gli interpreti più conosciuti troviamo:
  • bash (Bourne Again Shell) Ideata dalla Free Software
    Foundation come shell di pubblico dominio è la più utilizzata su linux ed in ambienti accademici.
  • csh (C shell), Scritta all'universita' di
    Berkley, California. Come indica il nome, il suo linguaggio di
    programmazione è molto simile al C.
  • sh (Bourne Shell) E' la shell originale di UNIX,
    scritta da Steve Bourn presso i Bell Labs. Essa è disponibile su tutti i sistemi
    UNIX ma non possiede le agevolazioni interattive fornite da shell piu'
    recenti come C e Korn. La Bourne shell fornisce un semplice linguaggio
    per la sua programmazione.
  • ksh (Korne Shell) E' stata scritta da David Korn presso i
    Bell labs. E' la shell di default nei sistemi UNIX attuali. Fornisce
    le stesse prestazioni della C e TC shell unitamente a un linguaggio di
    programmazione simile a quello della Bourne shell.
Dato che senza ombra di dubbio, la bash è la più utilizzate nei sistemi linux e per questo futuro riferimento per i miei post.

lunedì 15 dicembre 2008

Impostazioni documento Lyx e Latex

Dopo aver visto cosa è LyX e come si installa sia su Linux sia su Windows in un mio precedente post, andiamo ad analizzare le impostazioni di un documento LyX.
Prima di procedere con la stesura di un testo in LyX, è bene assicurarsi che le impostazioni principali del documento corrispondano alle nostre esigenze. In realtà nessuno vieta di iniziare a scrivere come se fossimo in Word ed ottenere già un ottimo risultato. Tuttavia, come detto in precedenza, LyX ragiona in maniera differente ad un editor tradizionale e per questo è bene avere qualche accortezza aggiuntiva.
In prima battuta bisognerà impostare almeno il tipo di documento che si intende creare. Tutto il resto può essere modificato in un secondo momento ma in questa sede si vogliono dare gli strumenti per configurare al meglio il documento.

Classe del documento


Come accennato nel paragrafo precedente, la prima cosa da fare è impostare il tipo di documento che si vuole produrre.
Mentre in Writer/Word si inizia a scrivere su una pagina vuota con formato A4 sull'angolo in alto a sinistra, LyX/Latex parte dal presupposto che non tutti i documenti sono uguali. Se voglio iniziare a scrivere una lettera, ad esempio, dovrò iniziare a scrivere l'intestazione della ditta per la quale lavoro e per fare questo devo essere in alto a destra; se devo scrivere l'indirizzo su una busta, la pagina non dovrà avere formato A4 ma uno apposito. Tutti questi accorgimenti vanno sotto il nome di classe del documento. Esistono innumerevoli classi ma le più utili sono senza ombra di dubbio:
  • letter Permette di scrivere una lettera; non avrà stili di caratteri quali, ad esempio, i "Capitoli" ma ne conterrà altri quali "Data" o "Indirizzo"...
  • article E' la classe di default. Questa classe permette di scrivere testi medio lunghi. Utile per articoli o recensioni.
  • book Questa classe è utilissima per coloro che devono scrivere libri ma anche manuali che contengano Capitoli e Sezioni
  • curriculum vitae Il nome della classe parla da solo

Struttura testo



La struttura del testo contiene tre impostazioni interessanti.
La prima è la separazione dei paragrafi. Ogni volta che si schiaccia il pulsante INVIO, infatti, LyX/Latex ritengono che si stia iniziando un nuovo paragrafo. Di default viene data una piccola identazione (spazio orizzontale) verso destra alla prima riga del paragrafo in modo che risulti rientrata. Si può cambiare questa impostazione e sostiuirla con uno spazio verticale che divida nettamente un paragrafo dall'altro.
La seconda è l'interlinea. Con questo termine si intende lo spazio tra una riga ed un'altra. Può essere singola, doppia o personalizzata. In questo ultimo caso si scriverà la distanza desiderata.
Infinte si può spuntare il flag "Documento su due colonne" per ottenere un documento che si disponga su due colonne.

Struttura pagina



La struttura pagina contiene due importanti ed interessanti opzioni. La prima è il formato della pagina. Nel caso classico si imposti l'A4 che sono i fogli utilizzati dalla maggior parte delle stampanti. Di default, infatti, potrebbe esserci un'altra impostazione. La seconda riguarda lo stile della pagina che definisce lo stile delle intestazioni e del piè di pagina.

Lingua

Impostare la lingua ha una connotazione differente dall'analoga impostazione su Writer/Word. In questi due programmi, infatti, la lingua è importante per il controllo ortografico. Su LyX, al contrario, è importante anche per un altro sostanziale motivo. Molte scritte, infatti, sono inserite in modo automatico. La parola "CAPITOLO" che precede il numero del capitolo, la scritta "SOMMARIO" o "BIBLIOGRAFIA"... In tal caso, a seconda della lingua impostata, i nomi appariranno di conseguenza.

Preambolo latex


E' sicuramente la parte più complessa ma anche più interessante che permette gradi di personalizzazione enorme. Questa videata rispecchia il preambolo di un documento LateX. E' usata per modificare l'aspetto del documento in maniera più o meno sostanziale. Permette piccole personalizzazioni, come inserire una riga a fondo pagina che divida il testo dal piè pagina o modificare la scritta "CAPITOLO" con "CAP" fino a stravolgere l'impostazione del layout del documento.
In questa finestra viene presentata una semplice casella di testo vuota che si aspetta comandi latex. Senza ombra di dubbio ci vuole un po' di dimestichezza e parecchie ricerche per poter scrivere in questa casella ma, in questo forum, si cercherà di dare alcuni spunti di riflessione interessanti al riguardo.

venerdì 12 dicembre 2008

Lyx, Latex e MikTeX

Come detto in un mio precedente post, in occasione della tesi sto imparando a conoscere un programma per la creazione testi davvero notevole chiamato LyX.

Cosa è Lyx?


LyX è un programma estremamente semplice da utilizzare che permette di gestire testi semplici quali lettere o brevi relazioni ma anche e soprattutto testi estremamente complessi quali relazioni di tipo scientifico/matematiche o libri.
Lyx presenta una interfaccia notevolmente inuitiva, capace di soddisfare le esigenze di qualsiasi tipo senza la presenza di miriadi di menù e sottomenù ma con una organizzazione delle icone razionale e ben studiata; tutto è posizionato in modo chiaro e le icone sono "parlanti".
Questo programma, però, paragonato ad altri editor di testo avanzati quali OpenOffice Writer o Microsoft Word si differenzia moltissimo per filosofia di approccio al testo. Citando diverse guide (che si possono trovare con facilità su internet) possiamo affermare che mentre i primi due sono di tipo WYSIWYG (What You See Is What You Get), Lyx è del tipo WYSIWYM (What You See Is What You Mean).
La differenza è sostanziale: utilizzando Writer o Word, oltre a concentrarci sul contenuto del nostro testo, dobbiamo concentrarci sullo stile dei caratteri, su come posizionare le figure nel testo, su quali parole mettere in grassetto e quali no, su come inserire una tabella nel flusso delle pagine, dove impostare le interruzioni di pagina e mille altre sottigliezze di tipo stilistico. Questo processo mentale va sotto il nome di WYSIWYG ovvero quello che vedi è quello che ottieni.
Lyx, al contrario, aderisce alla filosofia del WYSIWYM che permette di soffermarci esclusivamente sul testo. L'impaginazione sarà demandata ad un secondo momento durante la compilazione in maniera del tutto trasparente per l'utente (basta cliccare un pulsante) utilizzando un motore esterno, LateX.
In questo modo il programma svincola l'utente dal preoccuparsi del layout permettendogli di concentrarsi soltanto sul testo e soprattutto permette una estrema coerenza dei documenti generati dal punto di vista del layout; in altre parole i documenti saranno impaginati tutti nel medesimo modo evitando di generare documenti differenti di volta in volta dal punto di vista dell'aspetto; comportamento estremamente deprecabile soprattutto in ambito aziendale.

LateX

Come accennato nel paragrafo precedente, LateX è un motore per la creazione di layout di testi scritti. Esso viene invocato per "compilare" il testo una volta terminato e produce documenti PDF o DVI. Questo è un grosso vantaggio, soprattutto se si producono PDF perchè è un formato portabile ed universalmente riconosciuto. Esso sfrutta i comandi impartiti dall'utente e crea un documento ben formattato, facilmente leggibile e fruibile. E' un programma estremamente maturo, nato nel 1994. Originariamente l'unico modo per scrivere documenti in LateX era armarsi di pazienza ed imparare quasi programmare. Per questo motivo, quindi, la sua diffusione è stata "relegata" a nicchie piuttosto ridotte di utenza quasi esclusivamente di tipo scientifico. Questo motore, infatti, è particolarmente adatto nel momento in cui si vogliano gestire testi molto lunghi ma soprattutto con molte formule matematiche complesse perchè riesce a riprodurle con facilità e precisione. Oggi, invece, la creazione di programmi quali LyX che offrono una interfaccia grafica a latex, sono di stimolo e funzionano da catalizzatori verso questo ottimo strumento.

Installazione

Sia LyX sia LateX sono programmi multipiattaforma: questo vuol dire che è possibile installarli sia se si utilizza linux sia se si utilizza windows o machintosh.

Su linux, prendendo come riferimento la distribuzione debian, basterà digitare:

# sudo apt-get install lyx latex
per avere a disposizione sia il programma di videoscrittura che quello di rendering.

Se si utilizza windows, invece, è necessario scaricare LyX (da questa pagina) e latex tramite il pacchetto MikTeX (da questa pagina) ed installarli.
A breve saranno disponibili approfondimenti nei prossimi post sull'argomento.

giovedì 11 dicembre 2008

Cheatsheet

Il cheatsheet è un documento nel quale sono scritti comandi, sintassi ma soprattutto i trucchi di un linguaggio di programmazione specifico o un programma in generale. L'altro giorno, facendo qualche ricerca su Google mi sono imbattuto in una bella lista che vi ripropongo in questo post. Se volete l'elenco completo potete cliccare qui o in maniera più ordinata a questo link.
Ho fatto una cernita dei cheatsheet più interessanti per me ed ecco una breve sintesi qui di seguito:

  • apache cheatsheet. Apache è il può famoso web server che ci sia in circolazione.
  • htaccess cheatsheet. Htaccess è un file che si mette in una directory apache per inibire alcuni comportamenti o obbligarne degli altri all'utente che si appresta a navigare sulla cartella specifica.
  • ascii character codes table: assolutamente da avere, associa ad ogni lettera o simbolo il proprio codice ascii
  • character entity reference in HTML: è un elenco di come creare lettere accentate, simboli particolari (come > o <) in maniera corretta con standard W3C su file HTML
  • CSS: imperdibile foglio che riassume le caratteristiche di un Cascading Style Sheet anche detto foglio di stile
  • CVS: CVS è un metodo che si avvale della tecnologia client/server per il mantenimento del codice software. Utilissimo quando si è gli unici programmatori, diventa indispensabile se si lavora in team
  • python 101 cheatsheet e reference python: due reference del linguaggio di programmazione python
  • django, reference comandi : è un framework scritto in python che permette un rapido e veloce sviluppo di applicazioni o semplici pagine web in python
  • SQL: Structured Query Language, un linguaggio semplicissimo ma altrettanto potente che serve per interrogare database, inserire, eliminare record. E' lo standard della programmazione su un database.
  • perl Regular Expression: Espressioni regolari in linguaggio di programmazione Perl
  • perl Quick Reference: Un veloce riferimento a Perl
  • linux shortcut: comandi e scorciatoie in linux
  • list ports: i servizi di un server sono in ascolto su porte diverse. Ecco un elenco dei più famosi.
  • vim essential e vim scheda rapida e vim commands: vim è un editor di testo potentissimo. Indispensabile ambiente linux/unix, utilissimo su qualsiasi sistema operativo si utilizzi.
  • blogger : un cheatsheet per blogger

venerdì 5 dicembre 2008

SSH Client e Server

Premessa

OpenSSH è un protocollo sicuro e criptato che permette di collegarci da un pc (assumendo il ruolo di client) ad una macchina remota (denominata server). Il server ci fornirà una risposta richiedendo una userid e password di accesso. Una volta passato il controllo ci inverà una shell nella quale eseguire comandi sulla macchina remota.
Il protocollo, quindi, mette in comunicazione il client (anche detto host) con il server tramite una shell.

Scenario lavorativo

Il classico scenario possibile è la necessità di amministrare uno o più server con la comodità di non doverci alzare dalla propria postazione lavorativa.
Supponiamo che nella azienda in cui lavoro siano attivi diversi servizi (per esempio di database (es mysql ) o proxy (es squid) o webserver (es apache)) in esecuzione su una o più macchine diverse presenti in sala macchine. Supponiamo, inoltre, di dover amministrare tali servizi e le macchine sulle quali girano. Ci toccherà, ogni volta che c'è un problema o aggiornamento, alzarci dalla nostra scrivania ed andare davanti alla macchina per effettuare le dovute modifiche. Tramite ssh, invece, possiamo lavorare dalla nostra postazione direttamente sul server come se ci fossimo davanti.
Analogamente tramite il protocollo sftp integrato in ssh è possibile copiare dei files sul server interessato in maniera del tutto sicura e trasparente.

Scenario casalingo

Un altro possibile scenario è la necessità, quando ci si trova sul posto di lavoro, di poter accedere al proprio computer casalingo che, in questa configurazione, lavorerà come server.
Questo può essere necessario (è il motivo per cui uso ssh quotidianamente) per trasferire files a/da il proprio PC (magari per effettuare dei backup dei propri files) oppure per lanciare o stoppare servizi o ancora per modificare i file da scaricare con emule ;-)

La soluzione: ssh

Per risolvere questo problema è possibile ottenere una shell remota dal server e lavorare su una finestra del proprio PC (come in figura) come se si fosse davanti al server. Il collegamento, ci tengo a ribadirlo, viaggia su protocollo sicuro e quindi nulla potrà essere carpito da persone con cattive intenzioni.
In questo scenario bisogna aver installato ssh server sul server e ssh client sul host.

Se si utilizza debian o ubuntu, per installare il server e client si può procedere come segue:

# sudo apt-get install openssh-server openssh-client

Una volta avviato il server ssh, si può passare al proprio PC.
Se si usa linux basta avviare una shell e digitare:

# ssh nomeutente@nomeserver


oppure

# ssh nomeutente@ipserver


nel caso in cui non ci sia un DNS attivo.

Se si utilizza windows, al contrario, si può usare come client il programma putty.
Putty è un programmino opensource che può essere usato per connessioni ssh su un server che supporta questo protocollo.

mercoledì 3 dicembre 2008

Mailx e blat, mail via shell su Linux e Windows

Premessa
Spesso, nella amministrazione di un computer, un servizio o un sito, può essere utile avere a disposizione un metodo che permetta di spedire una o più mail tramite shell.

Scenario
Gli scenari possibili sono veramente moltissimi e variegati. Giusto a titolo di esempio mi permetto di enunciare alcune mie esigenze:
  • Effettui il backup dei documenti presenti su una o più macchine e fai l'upload di tali backup su un server via ftp tutti i giorni: vuoi ricevere una mail che ti confermi l'avvenuta esecuzione della operazione
  • Hai un database Mysql su un server; ogni settimana fai un controllo che gli utenti si siano loggati negli ultimi 7 giorni: vuoi che una mail ti restituisca il report con i nominativi per poter chiamare coloro che non hanno effettuato il login
  • Hai un server con risorse limitate; ogni giorno effettui alcuni controlli e vuoi ricevere via mail un report esaustivo
Soluzione su linux
Coloro che usano linux possono utilizzare il pacchetto mailx.
Si controlli, quindi, che sia installato.
A questo punto si può decidere di utilizzare mailx in maniera interattiva o automatica.
Nel primo caso, poco utile per gli scenari disegnati prima, posso digitare via shell:

mail qualcuno@daqualcheparte.com


L'output che si riceve è una serie di richieste che chiedono l'oggetto, il corpo del testo ed eventuali destinatari in cc.
Alla fine del testo del corpo del messaggio si può inserire un punto su una riga vuota che comunica a mailx che si è terminato il messaggio.
Si segua l'esempio di sotto:

Subject: Ciao!
Ciao,
come stai?
Spero tutto bene
.
cc: qualcunaltro@altrove.it

L'utilizzo interessante di questo software, però, è la
possibilità di utilizzarlo in maniera automatica in modo da poterlo includere in uno script.
In tal caso, il medesimo risultato si ottiene creando un file di testo ed inserendo il corpo del messaggio; successivamente basterà digitare, su shell:

mail -c qualcunaltro@altrove.it -s "Ciao!" qualcuno@daqualcheparte.com <>

Ovviamente, il testo con messaggio può contenere i report di cui si parlava prima.


Soluzione su windows
Esistono molti programmi su windows che effettuano l'invio di mail via consolle.
Tra questi mi sono trovato particolarmente bene con Blat.
Dopo aver installato il programma si può vedere la pagina di help.
In particolare per mandare una mail in modo automatico si può procedere come segue:

blat file_allegato -to qualcuno@dovesitrova.it

NB: bisogna assicurarsi, prima, che blat.exe sia nel percorso degli eseguibili.
Se così non è, al posto di "blat" sarà necessario digitare "C:\percorsoesatto\blat.exe"

sabato 1 novembre 2008

Leggere e creare immagini ISO su linux o windows

Premessa
Lo scambio di file in rete è ormai un dato di fatto. Tra i formati più utilizzati ci sono il RAR lo ZIP ed le ISO.
Tutti questi formati sono degli archivi ovvero una sorta di raccoglitore che può contenere, dentro di sè, anche migliaia di files e cartelle. Questo è senza ombra di dubbio un vantaggio soprattutto in fase di trasferimento tra un PC e un altro.
I primi due formati hanno il vantaggio di essere compressi e quindi la loro grandezza non sarà pari alla dimensione complessiva degli oggetti che contengono bensì da 1 a 100 volte più piccoli.
Le ISO, al contrario, hanno la peculiarità di essere pronte per la masterizzazione. I file ISO, infatti, si chiamano immagini e con un programma di masterizzazione tipo Brasero, si può trasferire velocemente il loro contenuto su un CD o un DVD.
Per fare la stessa cosa con il contenuto di un file compresso, al contrario, è necessario prima decomprimerlo e poi masterizzare gli oggetti contenuti tramite un programma di masterizzazione.

Problema
La necessità che si incontra in questo scenario è il poter accedere al contenuto delle ISO senza doverle masterizzare.
In altre parole, avendo una immagine sul proprio disco posso voler aprire o eseguire uno o più file al suo interno senza doverlo prima mettere su un supporto fisico.

Soluzione per Linux
Se utilizzate linux, non c'è bisogno di scaricare ulteriori software: il sistema operativo, infatti permette nativamente il "montaggio" di una ISO su una cartella del file system.
Per fare ciò, supponendo che esista la cartella /mnt/floppy si può aprire un terminale, acquisire i privilegi di root (o se si usa ubuntu anteporre al successivo comando la dicitura sudo) e poi:
mount -t iso9660 -o loop immagine.iso /mnt/floppy

Analogamente, se voglio creare una immagine ISO con i file contenuti su un CD ROM o una penna usb, basta digitare il seguente comando (può essere necessario acquisire i privilegi di root o, in ubuntu, anteporre al successivo comando la dicitura sudo):
dd if=/dev/cdrom of=/path_destinazione/immagine.iso bs=32k

Se al contrario i file che voglio inserire nella ISO si trovano in una directory basta digitare (può essere necessario acquisire i privilegi di root o, in ubuntu, anteporre al successivo comando la dicitura sudo):
mkisofs -RJ -o immagine.iso /directory_con_files/


Soluzione per Windows
Gli utilizzatori di Microsoft Windows, al contrario, per la natura limitata del sistema operativo necessitano di programmi appositi. Esistono programmi a pagamento come Alcohol 120% che personalmente utilizzo con soddisfazione: esso crea un CD ROM virtuale sul quale visualizza il contenuto della ISO. In altre parole l'utente vedrà all'interno di risorse del computer una periferica in più (ad esempio E:) sulla quale, indicando ad Alcohol 120% di "montare" l'immagine, potrà utilizzare tutti i files contenuti in essa.
Con il medesimo programma si possono creare delle immagini ISO indicando i files o cartelle che si desidera.
Se si vogliono utilizzare programmi free, al contrario, consiglio Virtual Clone Drive. Il programma crea uno o più lettori (fino ad 8) in grado di supportare i più diffusi formati di immagine (quali Bin, Iso, Ccd). L’utilizzo del software è molto semplice, poiché viene automaticamente associato alle estensioni supportate: sarà sufficiente un doppio click su un file che Virtual CloneDrive possa leggere e “montare” sulla propria periferica virtuale per avviarlo e utilizzarlo come se aveste realmente masterizzato l’immagine.

lunedì 27 ottobre 2008

Feed RSS questo sconosciuto

Lo scenario
Di tanto in tanto ti colleghi ad un sito che fornisce notizie tipo La Stampa o il Sole 24 Ore per leggere le ultime novità, oppure al sito di un fornitore per visualizzare le novità sui prodotti che compri o semplicemente a questo blog per vedere se ho scritto un nuovo post.
Altro possibile scenario: sei il manutentore della intranet aziendale e ogni giorno devi inserire nuove circolari, manuali o moduli e successivamente inviare la mail a tutti i dipendenti del gruppo o a singoli gruppi/individui per informarli che il nuovo documento è disponibile.

Il problema
Il problema che si incontra nel primo scenario è che periodicamente bisogna collegarsi al sito di interesse per controllare se ci sono novità.
Il meccanismo già tedioso di per sè, risulta spesso sconfortante: nei siti che si controlla quotidianamente spesso scartiamo il 70% delle notizie perchè poco interessanti mentre nei siti che controlliamo di tanto in tanto rischiamo di collegarci e non trovare nulla di nuovo perdendo tempo e dimenticandoci dopo vari tentativi andati a vuoto persino di collegarci periodicamente.
Nel secondo scenario, invece, dobbiamo associare al caricamento del documento sulla intranet l'invio di una mail a decine se non centinaia di colleghi con il rischio di sbagliare qualcosa nella ripetitività del gesto e, comunque, perdendo un sacco di tempo.

La soluzione
Il metodo per risolvere entrambi i problemi è l'RSS. In questo modo basta iscriverci al feed RSS del sito tramite un client RSS o fare iscrivere il collega al feed della intranet.
Per fare ciò è necessario che il sito o l'intranet gestisca la creazione di feed e noi dobbiamo iscriverci tramite un client web o un programma stile RSS OWL.
Per l'utente è tutto estremamente trasparente perchè avrà un programma (che bisogna installargli) stile client di posta elettronica come l'immagine qui a fianco dove vedrà apparire una sorta di mail.

Filosofia "push" e "pull"
La filosofia che sta alle spalle di questo ragionamento è estremamente simile alla posta elettronica.
Nella posta c'è un mittente che scrive una mail, la spedisce ad un destinatario e costui tramite un client la scarica sul proprio computer per leggerla. Questo meccanismo si chiama pull (tirare) perchè l'utente scarica, quindi prende, l'informazione dal server.
Nei feed RSS, il mittente è il sito stesso che, nel momento in cui l'amministratore crea un contenuto qualsiasi (l'inserimento di una immagine, di un documento, una notizia...) genera una voce nel feed che viene spinta verso il client RSS installato nel PC dell'utente. Questo meccanismo viene chiamato push (spingere) perchè il contenuto viene recapitato all'utente senza che lui debba fare nulla se non l'iscrizione iniziale.
Una bella comodità!

Aggregatore di notizie
Il client di cui abbiamo parlato fino ad ora si chiama aggregatore di notizie.
Ne esistono principalmente di due tipi: una categoria è costituita di programmi da installare sul proprio PC, un'altra è costituita da siti.
Nel primo caso posso citare RSSOwl che funziona sia su win sia su linux, Sage, Liferea solo per linux.
Per quanto riguarda i client su web ve ne sono a migliaia; personalmente mi trovo benissimo con l'aggregatore di google: Google Reader: l'unico problema è che bisogna avere un account google per potervi accedere.

Cosa è RSS
Oggi RSS è lo standard de facto per l'esportazione di contenuti Web.

I principali siti di informazione, i quotidiani online, i fornitori di contenuti, i blog più popolari: tutti sembrano aver adottato il formato RSS. Gli utenti possono oggi accedere a migliaia di feed RSS: alcuni siti (directory) raccolgono i riferimenti agli innumerevoli feed RSS disponibili sul Web.

RSS (acronimo di RDF Site Summary ed anche di Really Simple Syndication) è uno dei più popolari formati per la distribuzione di contenuti Web; è basato su XML, da cui ha ereditato la semplicità, l'estensibilità e la flessibilità.


Conclusioni
Gli RSS sono una tecnologia aperta utilissima, estremamente facile da usare, solida ed utile.
Molti utenti ancora non la conoscono o non l'hanno mai usata, a mio avviso per l'acronimo un po' ostico.
Personalmente lo utilizzo con moltissimi siti e la faccio usare ai miei colleghi per le notizie ed i documenti della intranet.

martedì 21 ottobre 2008

Dyndns: cosa è e come funziona

La premessa
Lo scenario che può proporsi è questo: hai un PC a casa con una linea ADSL flat.
Vuoi utilizzare questo PC per poterci archiviare i tuoi documenti da recuperare ovunque ti trovi o scambiare file con gli amici (magari molto grandi, dell'ordine dei Gigabyte) o ancora semplicemente utilizzarlo come sistema di backup dall'ufficio o creare un sito web sperimentale con qualche piattaforma di gestione siti o blog...

Il problema
Il problema che si incontra è che ogni macchina facente parte di una rete (ed il nostro PC non fa eccezione anche se non ci siamo mai accorti di questo) ha un indirizzo (detto indirizzo IP) e questo cambia dinamicamente ad ogni sua accensione/riavvio o ogni volta che il provider lo decide.
L'indirizzo IP è un insieme di 4 numeri separati da un punto (es. 192.168.0.11) che identifica un PC o un server all'interno di una rete, sia essa locale (per esempio in un ufficio o azienda) o internet.
Solo conoscendo questo indirizzo possiamo raggiungere i servizi offerti da una macchina.
Certo, nessuno per raggiungere un sito o il proprio motore di ricerca preferito, digita un indirizzo IP ma semplicemente un URL (es. http://www.google.it).
Tale richiesta va ad un server detto server DNS che "trasforma" l'URL in indirizzo IP.
In tal modo noi umani possiamo ricordarci l'URL (molto più semplice da tenere in mente di un insieme di numeri) ed il PC può lavorare più facilmente con i numeri anzichè con le lettere.

Questo ci fa capire che per raggiungere un PC da internet dobbiamo conoscere il suo URL (se questo è registrato su un server DNS) oppure il tuo indirizzo IP.
Per questo motivo non possiamo sapere come "contattare" la nostra macchina da internet perchè non abbiamo un URL associato e l'indirizzo IP cambia dinamicamente.

La soluzione
Se ciò che ho scritto fino ad ora è chiaro, il lettore potrebbe pensare che basta associare l'IP della propria macchina ad un URL comunicando la nostra scelta ad un server DNS.
Purtroppo anche qui c'è un intoppo: il server DNS si aspetta un indirizzo IP statico (cioè che non cambia nel tempo) e non dinamico come nel nostro caso.

Ci sono però dei servizi sul web che risolvono questo problema.
Personalmente utilizzo con soddisfazione DynDNS .

Come funziona DynDNS?
Dyndns si aspetta una registrazione da parte nostra (dobbiamo dirgli che indirizzo vogliamo dare alla nostra macchina. Nel mio caso http://vittoriozuccala.homelinux.net) e l'installazione di un piccolo programmino sul nostro PC (detto client) che gli comunichi a intervalli regolari il proprio ip, assegnatogli dal provider.
Il client si può scaricare direttamente dal sito di dyndns oppure, se si usa un router casalingo, molti di essi ne hanno già uno integrato nel proprio software.

I passi da seguire, quindi, sono:
1) Iscrizione a DynDNS con scelta del dominio esempio miodominio.dyndns.org
2) Configurazione del client sul pc, o sul router (solitamenet chiede login, password e nome del dominio scelto)
3) Configurate firewall e router (se ne avete uno) in modo tale da poter raggiungere effettivamente il vostro pc (in altre parole è necessario che se arriva la richiesta al router, questo la reindirizzi alla macchina interna)!

A questo punto tutto è pronto.
Il nostro PC è raggiungibile da internet.
Ovviamente l'URL è raggiungibile solo se il PC è acceso (se cliccate l'URL della mia macchina scritto sopra non è detto che sia sempre raggiungibile).

Conclusioni
Dyndns
è un ottimo servizio ma una piccola nota di controindicazione riguarda la sicurezza.
Da questo momento la vostra macchina è raggiungibile da chiunque, non solo da voi e per questo motivo dovete seguire alcuni passaggi inerenti la sicurezza. Ad esempio:

  • Installare meno servizi possibili. Se non necessitate di un server web o di posta, non installateli.
  • Possibilmente utilizzate una macchina isolata.
  • Usate password complicate
  • Tenete spenta la macchina se non vi serve (per esempio se nel weekend andate al mare...)
  • Se potete usate un sistema operativo serio (linux sarebbe ottimo. NetBSD sarebbe il massimo)
Seguirà un altro articolo più specifico per la configurazione del router e l'inscrizione a DynDNS.

martedì 14 ottobre 2008

LyX, Latex e Tesi di Laurea

Ebbene si, anche io sono arrivato alla tesi...
Dopo una prima fase di lunghi colloqui con professori ed assistenti segue la raccolta del materiale e prove in laboratorio ma alla fine arriva il giorno fatidico: il giorno nel quale si pensa a buttare giù qualche riga.
Così... giusto per iniziare ad organizzare le idee...

Ho preso in considerazione prodotti come Microsoft Word (scartato perchè secondo me non è fatto per gestire testi lunghi) e OpenOffice (scartato per la gioventù del progetto).

Alla fine, rovistando nel web sono approdato a LyX. Il logo di questo programma fa pensare a qualcosa di poco... affidabile ma i pareri che ho letto in rete sono tutti estremamente positivi e per questo motivo mi è venuta voglia di continuare ad utilizzarlo.
L'approccio che questo software dona ai propri utenti è decisamente differente dai sopra menzionati e la cosa mi ha affascinato.
La filosofia che domina il programma è WYSIWYM (what you see is what you mean) e non WYSIWYG (what you see is what you get); ciò vuol dire che ciò che si visualizza non è proprio cosa si ottiene bensì ciò che si intende...

Questa affermazione che può sembrare criptica è il punto di forza di LyX.
In altre parole una volta creato il testo sarà LyX ad impaginarlo opportunamente e se qualcosa non ci piace nella larghezza dei margini, intestazioni o altro, si può sempre modificarlo in un secondo momento.

E' un approccio decisamente differente da quello che i normali editor di testi ci hanno abituati ma devo dire decisamente potente e funzionale una volta che si è presa confidenza con questo strumento.
La cosa che mi ha maggiormente colpito è la comunità che vi sta alle spalle: estremamente dinamica e disponibile (frequento la mailing list da ormai un mese) ti invoglia a provare questo software senza troppe remore.
Anche la documentazione (in inglese ed italiano) è davvero molto nutrita..

Per quanto riguarda il programma in sé, la funzionalità che mi ha maggiormente colpito è la facilità di scrivere formule matematiche.
Esso, inoltre, permette una veloce esportazione del proprio elaborato in formato PDF.

Prima di terminare questo post vorrei dare un piccolo consiglio a chi, dopo aver letto queste righe, fosse tentato di provarlo.
LyX si basa su un impaginatore denominato LaTeX.
Ciò significa che per poterlo utilizzare appieno bisognerà prima installare questo software.
A questo proposito, coloro che utilizzano linux potranno tranquillamente installarlo con la propria utility (in debian, ad esempio: apt-get install latex) mentre per coloro che utilizzano windows dovranno installare la versione per questo sistema operativo denominata MikTex.

Per ora è tutto; seguiranno ulteriori articoli al riguardo.

Mi presento

Mi presento...
Mi chiamo Vittorio e in rete, se qualcuno ha avuto a che fare con me, mi conosce come nathanvi.
Nathanvi è stato il mio pseudonimo per almeno 11 anni ovvero dal momento in cui sono approdato sul web giostrandomi tra BBS e modem a 14,4Kb/s.

Negli anni a seguire ho gestito un paio di blog ed un mio sito. Il taglio che davo era strettamente personale: foto delle mie gite o della moto, piccoli pettegolezzi e considerazioni personali...
Proprio per questo motivo, dato che i trenta anni
sono ormai alle spalle da tempo, ho deciso di far "spirare" il mio vecchio dominio e dedicarmi a cose meno personali e, spero, più interessanti per chi legge.

In questo blog voglio mettere le mie scoperte in campo informatico e/o matematico, recensioni di programmi usati e piccoli trucchi.
Non voglio fare guide e nemmeno manuali ma dare un piccolo contributo alla comunità sul web e perchè no, aiutare la mia memoria ormai in fase calante anche a distanza di tempo ;-)