Tabulazioni e spazi nell’HTML


Quando si gestisce un blog o un sito come questo è di notevole importanza postare codice per chiarire al meglio gli argomenti trattati ai lettori.
Ogni buon programmatore sa che per avere un codice leggibile e chiaro è fondamentale usare l’indentazione, ovvero l’inserimento di spazi bianchi (o tabulazioni) che precedono alcune parti di codice per creare un effetto grafico che evidenzia dove inizia e dove finisce un blocco di codice. Al fine della compilazione del codice, l’uso di questa tecnica non è fondamentale ma rende sicuramente il codice più “pulito” e più “chiaro” per se e per gli altri.

Lavorando su piattaforma blogger/blogspot ho notato che quando si scrive una frase preceduta da una tabulazione o da alcuni spazi bianchi, nel momento in cui si visualizza il post essi vengono ignorati e il codice risulta piatto, più simile ad una lista della spesa che ad un lavoro di altissima programmazione ingegneristica :-).

Ecco allora che giungono in aiuto i tag html.

Esiste un particolare elemento html che permette di interpretare tutto ciò che è inserito tra i tag così come si presenta. Questo vuol dire che se una frase è preceduta da spazi bianchi allora nel post essa si presenterà così com’è. Tutto ciò è di particolare importanza per chi scrive codice poichè racchiudendo il listato tra i tag pre e /pre (ovviamente chiusi tra parentesi angolari ) esso si presenterà così come lo avete scritto.

Ecco la differenza tra un codice con il tag pre e il codice senza pre

CON PRE


if (a==b)
{
printf("a uguale a b"\n);
return 1;
}

SENZA PRE


if (a==b)
{
printf("a uguale a b"\n);
return 1;
}

Converrete con me che la differenza in fatto di chiarezza è rilevante già su quattro righe di codice. Non pensate che su un programma intero la cosa lo renderebbe più chiaro?

Sapere se un software è installato

Quando si creano programmi abbastanza complessi, alle volte può essere utile ricorrere a programmi esterni per agevolare il lavoro di stesura del codice del nostro software per evitare di riscrivere funzioni che potrebbero essere svolte benissimo da programmi di terze parti. La cosa funziona di sicuro se il programma viene scritto ed eseguito sul nostro computer poichè si presue che noi stessi sappiamo quali programmi che sono instalati su di esso; ma la cosa si complica se il nostro software deve essere distribuito: chi ci assicura che il programma a cui abbiamo chiesto aiuto sia installato anche sui pc di eventuali utenti finali?

Per ovviare a questa cosa è possibile interrogare il terminale mediante codice. Ovviamente ciò che sto per dire potrà essere usato solo su sistemi GNU/linux vista la notevole potenza dei comandi del terminale.

Esso prevede una comoda funzione che prende il nome di which; questo comando accetta come parametro il nome di un programma e ne restituisce il path in cui è installato se esiste o non restituisce nulla se nel computer esso non è presente. Proprio analizzando la risposta della shell si può capire se il programma non c’è e quindi avvisare l’utente di installarlo per far si che il nostro software funzioni come dovrebbe.

In gambas la cosa molto semplice. Per analizzare come fare scriviamo il codice di una funzione che accetta una stringa contenente il nome del programma e restituisce un booleano che vale 0 se il programma non c’è o 1 se il programma è installato.


Codice:


STATIC PUBLIC FUNCTION SoftExist(software AS String) AS Boolean

DIM control AS String

SHELL "which " & software
WAIT

IF InStr(control, software) THEN
RETURN TRUE

ELSE
RETURN FALSE

END IF

END


Analizziamo il codice. Inizialmente dichiariamo la stringa control nella quale verrà salvato il risultato del terminale. Il comando SHELL permette di eseguire istruzioni come se si lavorasse nel terminale. In questo caso diciamo al comando SHELL di eseguire which e di accettare come parametro la stringa che viene passata ala funzione; dopodichè aspetta che il terminale abbia finito con il comando WAIT.
Ora, grazie ad un ciclo IF si controlla che la risposta del comando contenga il nome del programma. Questo è possibile farlo poichè se il programma è installato, which restituirà il path che contiene al suo interno il nome stesso del programma. Proprio grazie alla funzione InStr si analizza che nella stringa control sia presente il nome del programma. Se così fosse restituisce 1 altrimenti (ELSE) si ottiene 0.

Per chi volesse ho implementato questa funzione nella classe sistema, di cui ho già parlato in un altro post. Potete scaricare il pacchetto Gambas-classe-sistema nell’apposita box DOWNLOAD qui a lato.

Meteomachine 1.0.4

Ancora un rilascio per il fortunato software meteomachine linux che sta trovando un consenso che non potevamo neanche immaginare. L’attuale versione è la 1.0.4.

Questo programma, nonostante indicato per una cerchia ristretta di persona, pare piacere anche a chi non mastica la meteorologia.

Il nuovo rilascio corregge un fastidiosissimo bug che non permetteva agli utenti di KDE di vedere le immagini satellitari. Il tutto era dovuto alla mancanza di una libreria che permette di gestire facilmente con lo stesso codice sia le gtk che le qt. In più si è passati dalla semplice licenza GPL alla più evoluta GPL v3 che tutela il softwar in maniera molto più ampia.

Spero che il programma continui a piacere e che i suoi utilizzatori siano sempre di più.