Model M e Trackball, l’accoppiata vincente

Quando i miei polsi iniziarono a far male, realizzai che era il momento di rivisitare la mia postura e di controllare l’accoppiata mouse/tastiera. Dopo essermi documentato sulla posizione della sedia e delle braccia davanti al computer, mi sono ritrovato su una pagina che spiegava i difetti del mouse come periferica. Tra questi spiccava lo sforzo e la coordinazione richiesti per il movimento del cursore, è necessario l’uso di gran parte dei tendini del braccio e questo unito alla cattiva postura ed un uso intensivo porta a dolori.

Trovato un capo d’accusa al mio mouse provvedo a documentarmi sulle alternative, scoprendo la varietà di questo settore. Esistono periferiche di ogni tipo e per ogni compito: manopole adatte a chi lavora nel campo 3D, penne per chi disegna, touchpad, stick stravaganti ed infine trackball. Vidi che queste ultime potevano fare al caso mio.

Ho comprato questo modello, pagato 50 euro ai tempi, è una bella spesa ma non mi sono pentito dell’acquisto. Prima di tutto perché non ho più avvertito dolori, la mano sta in posizione di riposo e muovo il cursore con il pollice, avendo così un maggior controllo e precisione. Non corro il rischio di spostare il cursore durante la premuta dei tasti, come avveniva con il mouse, e posso tranquillamente giocare con i videogame. La palina si muove senza grosso attrito, non scivola mai dalla mano ed è completamente estraibile per eventuali pulizie. Non ho più sentito il bisogno di avere un mouse, penso che non tornerò indietro.

La mia vecchia tastiera era tutto sommato buona, era una multimediale con attacco PS/2. Era una tastiera della Kraun avuta in regalo per un compleanno diversi anni fa, mi ha accompagnato per tantissimo tempo ma qualche tempo fa sono venuto a conoscenza di diversi tipi di tastiere. Mi aspettavo che la quasi totarità delle tastiere fossero costruiti con dei gommini sotto i tasti, poi scopro con piacere tramite vari articoli le tastiere meccaniche.

Queste si differenziano da quelle che vedete sugli scaffali dei supermercati principalmente per il prezzo. Costano molto di più di una normale tastiera, per lo più è un prodotto di nicchia, per chi con la tastiera ha un legame particolare. Una delle più famose è la IBM Model M, un prodotto che ha le sue radici nella seconda metà degli anni 80. Ancora oggi a distanza di quasi 30 anni c’è gente che ne apprezza le qualità e le utilizza ogni giorno. Io ho avuto la fortuna di trovarne una con layout italiano per 10 euro, un vero affare (controllate quanto chiedono su eBay per questo articolo).

Prendendo in mano la tastiera si sente il suo peso notevole, pesa un paio di chilogrammi. Dopotutto deve tare appoggiata sul tavolo e non dovete portarvela in giro per casa, quindi non è un vero problema. Dietro presente un connettore per il cavetto ps/2, se un giorno dovesse rompersi semplicemente cambierò il cavetto senza saldature sulla scheda. I materiali sono robusti e il telaio in metallo contribuisce notevolmente al peso e alla robustezza. La mia precendente tastiera mi pare ora così fragile e leggera…

A distanza di molti anni i tasti si sono preservati molto bene; i caratteri sono stati stampati con processi di sublimazione, in questo modo che i tasti non si sono sbiaditi e/o cancellati col tempo. La qualità del materiale invece ha fatto in modo che i tasti non diventassero lucidi con l’utilizzo (come il vostro tasto spazio ad esempio).

Quando l’ho presa in mano la tastiera era sporcatissima, fortunatamente è progettata con criterio ed i tasti possono essere rimossi senza problemi per la normale pulizia. Sono composti da varie parti meccaniche, quando si tenta di rimuoverli va prima tolto il cappuccio. Questo permette anche di personalizzare il layout scambiando di posto i tasti tra di loro.

La tastiera è più ergonomica di quanto possa sembrare, ha l’inclinazione giusta e i tasti sono disposti in maniera molto ripida per aiutare la digitazione. Dopo qualche giorno di utilizzo mi trovo abbastanza bene, il rumore non è un problema, anche la mia precedente tastiera non si poteva definire di certo silenziosa.

Familiarità con EMACS

Più volte ho avviato EMACS senza volerlo in passato, a causa della associazione di alcuni file di testo nella mia Linux Box. Si presentava con la sua interfaccia cupa e poco amichevole, niente a che vedere con le normali grafiche dei più comuni text editor. Questo programma è nato negli anni 70, mentre alla radio davano i primi successi dei Queen e i computer erano costosissime macchinette per pochi eletti.

EMACS è diviso in due parti, il cuore scritto in C e l’interprete in linguaggio LIPS. In LIPS è costruito tutto il resto del programma, questa è la chiave della sua versatilità. È completamente votato alla completa personalizzazione in ogni suo aspetto; tutto è in funzione di comandi attivabili con la tastiera, ma non tramite shortcut a cui possiamo essere abituati, come CTRL+S, EMACS ha una sua dialettica e un suo modo di impartire ordini. Per salvare un file dovete, ad esempio, premte CTRL+X e dopo CTRL+S. Vi pare inutilmente complicato? Può darsi, ma dopo ci si fa abitudine e potreste anche personalizzare quel comando.

La navigazione nel testo è davvero ben curata, potete muovervi tra le parole, in modo che il cursore salti tutto quello che non è spazio, eliminare testo facilmente, limitando l’operazione alle sole righe, parole oppure frasi. Ha un ottimo sistema per riconoscere con che testo abbiamo a che fare.

Ci sono varie modalità a seconda del tipo di testo con cui lavoriamo, un po’ come quando apriamo un file PHP e ci ritroviamo la sintassi evidenziata. Ma EMACS fa le cose in grande; possiamo aggiungere modalità per l’auto completamento, quella per scrivere commenti sotto le 50 colonne, fare lo spelling di documenti multilingua a seconda di dove si trova il cursore.

La curva di apprendimento è ripida, io ho iniziato a leggere questa serie di tutorial della IBM, e tengo sulla scrivania un vademecum con le shortcut perché non ricordo mai bene i comandi. L’installazione base ha molto poco, potete navigare nel testo e ci sono alcune modalità installate di default, è un editor che cresce con voi e con le vostre esigenze. Raggiunge la perfezione perché voi l’avete personalizzato a puntino, ma per realizzare questo ci vuole pazienza e perseveranza…

Uno che si chiama Django

Esistono vari metodi per scrivere un sito web dinamico in Python; si va dal classico script CGI all’etensione mod_python per Apache, passando per svariati framework, numerosi ambienti che seguono filosofie differenti tra loro. Uno di questi è Django, sistema che usa il paradigma MVT con idee come quella del DRY.

Questo concetto MVT mi sembrò ridondante a primo impatto; per una persona abituata a scrivere da zero codice PHP e HTML, salvarlo in un unico file e poi vederlo immediatamente eseguito dal web server, tutta questa separazione sembrava una dispersione di tempo e lavoro.

T sta per template

Quando scrivevo qualsivoglia pagina in PHP, che dovesse essere un pochino complessa, ero solito definire almeno due funzioni in un file. Funzioni che servivano per stampare l’intestazione e il footer della pagina.

Successivamente, quando dovevo scrivere una pagina, includevo questo file e scrivevo il codice PHP misto a HTML. Se per disgrazia dovevo cambiare la grafica, il layout, o fare altre modifiche di natura grafica, dovevo rimettere mano al codice, e scansare man mano le righe di PHP. Tutto questo si traduceva in vari copia incolla dello stesso sorgente, snippet vari conservati in altri buffer dell’editor e così via…

Rimettere mano alla pagina, dopo tanto tempo, diventa un problema perché non ricordi bene il funzionamento, e capita spesso che qualche cosa vada storto per una semplice modifica. Per questi motivi (e altri) motivi decisi di rifare da zero RCP64. I template risolvono questo problema, non fanno altro che separare la rappresentazione della pagina in HTML da tutto il resto.

Un template engine non fa altro che mettere a disposizione dei speciali tag da inserire dentro il codice HTML, questi tag non sono altro che dei segnaposto per le variabili da stampare. Nella pagina così costruita, nel momento in cui dovrà essere visualizzata, verranno sostituiti i segnaposti con i nostri dati. Così facendo, in un momento di restayling, spostare tag e segnaposti è molto più sicuro che rischiare di cambiare il codice.

M sta per models

Un’altra abitudine consolidata nello scrivere siti web che necessitano di connessioni al database, è quella delle scrittura di grezze query SQL all’interno della logica appartenente alla pagina. Scrivere SQL permette di ottimizzare direttamente l’uso del database, si va diritti al punto nel minor tempo possibile. In certe occasioni può servire una astrazione maggiore, una interfaccia con le entità associate a determinate proprietà.

Django mette a disposizione un sistema ORM attraverso i modelli, che non sono altro una astrazione dello schema ER del proprio database. Ogni entità, con i campi e le relazioni, viene definita tramite classi. In questo modo il frame work conosce la struttura dei nostri dati, e potrà prendersi cura di essi validandoli all’inserimento e convertendoli nel tipo di dato appropriato. A tutto questo viene aggiunto un livello per il controllo dell’integrità e della correttezza dei dati, tutto questo senza dover scrivere una riga di SQL ma con la sola manipolazione di oggetti e funzioni. Sono tutte cose che fa intrinsecamente qualsiasi DBMS ma I’astrazione ha un vantaggio pratico con l’interfacciamento del codice Python.

Basandosi sui vostri modelli il frame work è in grado di realizzare una interfaccia di amministrazione per i dati, potete perfezionarla e correggerla in ogni minima parte. Si possono aggiungere particolari elementi come il modulo di ricerca e modificare il template. L’interfaccia non è sola esclusiva per l’admin, potete decidere cosa gli utenti possono accedere e modificare. Il vantaggio in tutto questo è l’estrema rapidità di realizzazione.

V non è per Vendetta ma viste

In PHP quando richiediamo una pagina solitamente ci riferiamo a un file .php, in un determinato percorso con possibili parametri. Con django è totalmente differente, l’URL che cerchiamo viene passato al framework che lo passa attraverso una serie di espressioni regolari. Quando trova una corrispondenza chiama una funzione scelta e scritta da noi, possiamo pure passare dei parametri attraverso l’URL grazie alle regex. Questo permette di lavorare con URL lisci senza passare parametri con GET, una cosa del genere la si ottiene con PHP solo attraverso gli URL rewrite di Apache.

Queste funzioni non sono altro che le viste. La vista è il fulcro per quanto riguarda la logica del nostro sito, processa i dati provenienti dagli URL, li elabora, estrarre contenuti dal database e si interfaccia con il template. Il frame work mette a disposizione degli strumenti per la creazione di speciali viste, queste possono servire ad esempio alla generazione di feed RSS.

Django ha tutta una serie di funzioni per la gestione di un bacino di utenti, crea automaticamente le tabelle nel database implementando un sistema di gruppi e permessi. Possiamo anche associare dei profili per ogni utente senza sforzo, abbiamo a disposizione tutta una serie di funzioni per la registrazione, l’autenticazione e varie forme di controllo.

Conclusioni

Lo sviluppo con django di differenzia notevolmente da chi è abituato con un ambiente LAMP, abbiamo una struttura da seguire e molte operazioni di routine necessitano la riga di comando. Durante lo sviluppo ne avremo bisogno per creare il database, gestire i progetti, le componenti e soprattutto per tenere su un web server di prova durante lo sviluppo. Per il deployment invece si ha bisogno di una struttura più grande, magari basata su Apache o qualche altro software. Ci sono vari accoppiamenti tra web server e DBMS, ma data la sua natura non legata a una particolare tecnologia lo rende flessibile per la maggior parte degli ambienti.

Django è un modo differente di realizzare soluzioni basati su un sito web, mette a disposizione strumenti per il lavoro più ripetitivo e una serie di librerie che ti cullano. Non ti protegge dal scrivere brutto codice più di quanto non lo faccia Python. Ad ogni modo no è la soluzione a tutte le esigenze, è più una valida alternativa per certi tipi di lavori.

Per fissare i concetti e le tecniche ho scritto un blog engine, potete trovare il repository a questo indirizzo. Come libro di testo ho usato The Definitive Guide To Django, consultabile interamente on-line. Non ho trovato il libro molto esauriente, ma per iniziare è un buon testo, non ha nulla di definitivo come afferma il titolo.