giovedì 29 marzo 2012

Ridimensionamento batch delle immagini con la shell

Qualche volta ho bisogno di un semplice comando per ridimensionare una grande quantità di immagini JPEG, ad esempio quando le devo inviare via Internet e non è necessario mantenere un'elevata risoluzione.

Un programma molto veloce per effettuare il ridimensionamento è convert, della suite di programmi ImageMagick, normalmente presente nei repository ufficiali delle principali distribuzioni.

Si può utilizzare il ciclo for della shell Bash: servono 2 directory nelle quali mettere rispettivamente le immagini da ridimensionare e quelle ridimensionate, ad esempio Source e Resized, posizionate nella stessa directory. Quindi si copiano i file da ridimensionare nella directory Source.

Si apre quindi una shell, posizionandosi nella directory Source e si lancia il comando:

$ for i in * ; do convert "$i" -filter lanczos -resize 2280x2280 -quality 90 "../Resized/$i" ; done

e si attende il completamento dell'operazione. I file sorgenti verranno processati ad uno ad uno e man mano che l'operazione procede verranno creati i files ridimensionati, con lo stesso nome degli originali, nella directory Resized.

I parametri che si possono aggiustare sono:

  • dimensione dell'immagine: nell'esempio convert scalerà l'immagine fino alla massima risoluzione di 2280 pixel sia in altezza che in larghezza mantenendo il rapporto di aspetto originale (per maggiori informazioni sulla geometria del ridimensionamento fare riferimento alla documentazione ufficiale); in altre parole, l'immagine sarà sempre di 2280 px sul lato più lungo, mentre il lato più corto sarà calcolato al fine di mantenere le proporzioni;
  • filtro da utilizzare, imposta quale algoritmo utilizzare per il ridimensionamento: io preferisco il Lanczos, ma è una questione di gusti; l'opzione -filter può anche essere omessa;
  • qualità del file JPEG voluta, che imposta il livello di compressione e, quindi, le dimensioni dei file voluti.

venerdì 16 marzo 2012

Un'occhiata al KDS

L’annuncio di sistemi che riducono drasticamente il consumo di carburante ha sempre stuzzicato il mio interesse professionale e la mia sensibilità di “risparmiatore energetico”, anche se generalmente si rivelano delle bufale.
Ho quindi seguito con un certo interesse le varie notizie che si rincorrevano a proposito del Kinetic Drive System del sig. Leonardo Grieco che ha anche conquistato le pagine principali dei siti del Fatto Quotidiano e del Sole 24 Ore.
Ora che mi sono fatto un’idea e potrei provare ad analizzare il funzionamento del dispositivo e a fare alcune speculazioni sulla sua effettiva efficacia.
La migliore fonte di informazioni che ho trovato è il video nel quale lo stesso Grieco ne spiega il funzionamento e lo mostra in azione.
Da quello che sono riuscito a capire, il principio di base è quello di far lavorare il motore al massimo carico intorno al punto di coppia massima per un breve periodo di tempo, lanciando il veicolo ad una certa velocità per poi sfruttare l’inerzia per quanto possibile, disaccoppiando il motore dalle ruote che, in questa fase, gira al minimo.
Il KDS sembra un comando elettroidraulico (centralina oleodinamica ed elettrovalvola) che sostituisce la pompa azionata dal pedale della frizione, in modo che l’operazione di innesto/disinnesto della stessa sia controllato da una logica che legge la posizione dell’acceleratore e del pulsante di “cut-off”: in partenza e in accelerazione la frizione viene innestata, durante la “planata” con l’acceleratore rilasciato, disinnestata.


Nell'immagine sono infatti riconoscibili:
  • centralina idraulica che mette in pressione l'olio, il cilindro nero posizionato sul fondo;
  • distributori o elettrovalvole, posizionate intorno alla centralina (i parallelepipedi lucidi), da cui partono i raccordi idraulici ed i relativi solenoidi di comando (in colore arancio);
  • logica di controllo, composta dai relè (di cui visibili 4 neri e 1 bianco) ed un temporizzatore (quello con il quadrante circolare). La presenza del temporizzatore farebbe supporre che il dispositivo non sia controllato da una logica programmabile.
Ma perché dovrebbe far consumare meno?
Nel mio precedente articolo ho accennato, come cause del basso rendimento dei motori a combustione interna per autotrazione, al fatto che la parzializzazione del carico1 viene effettuata riducendo la quantità di combustibile immesso; come effetto, si ha la diminuzione della temperatura massima del ciclo termodinamico, con conseguente diminuzione del rendimento (cfr. Teorema di Carnot).
Supponiamo che un’autovettura come la Skoda del sig. Grieco per viaggiare in piano ad una velocità costante di 80 km/h abbia bisogno di 10 kW di potenza media, con il motore al 35% del regime di rotazione di potenza massima (1700/1800 rpm): è plausibile considerare un carico medio intorno al 30%.
Per avanzare, quindi potrei dare il 30% di gas e andare a 80 km/h fisso, oppure andare a tutto gas il 30% del tempo e “planare” il restante 70%, oscillando tra i 75 e gli 85 km/h. Il consumo di carburante, però, potrebbe essere inferiore nel secondo caso, visto che il calore rilasciato viene sicuramente sfruttato meglio dal motore (ad una temperatura T1 più alta) e, quindi, ne serve meno per avere la stessa energia alle ruote. Inoltre, quando il motore gira al minimo, gli accessori ed i servizi (ad eccezione del compressore del climatizzatore e dell’alternatore) assorbono meno potenza, quando è a pieno carico il loro contributo è trascurabile.
Dico potrebbe, perché, benché i fondamenti teorici siano convincenti, senza una seria prova su strada non si possono trarre conclusioni. I fattori da considerare, infatti, sono troppi per essere trattari solo su base teorica, primo fra tutti il comportamento reale di un propulsore (che non è una macchina di Carnot) e la tipologia di percorso stradale: la massima efficacia si dovrebbe avere su percorsi pianeggianti percorsi a velocità bassa e costante, ma perde completamente la sua utilità nel traffico cittadino o in strade in forte pendenza.

Il discorso emissioni è tutto da verificare perché, se da un lato l’emissione di CO2 si riduce proporzionalmente al consumo di carburante, far girare il motore al minimo può far aumentare la concentrazione di idrocarburi incombusti e CO, che normalmente non vengono completamente ossidati quando la temperatura di combustione è bassa.

Un altro fattore da considerare, poi, è il fatto che motore e trasmissione vengono sollecitati in modo anomalo rispetto alle condizioni di progetto e collaudo di una vettura: il continuo passaggio dallo 0% al 100% potrebbe far insorgere problemi di fatica meccanica (soprattutto a carico di cambio e frizione) e termica (testa e pistoni) e sarebbe opportuno effettuare delle verifiche (progettuali e pratiche) prima di poter garantire che non ci siano controindicazioni.

Per ultimo, ma non meno importante, dobbiamo avere passeggeri disposti a sopportare un regime di marcia con ritmiche accelerazioni...

Un'ultima nota: il sig. Grieco non sembra aver capito perché il suo dispositivo dovrebbe permettere un risparmio energetico, infatti fa riferimento alla curva cicloide che, oltre a non essere la curva che ha disegnato lui (cfr. curva brachistocrona) non c’entra nulla con la riduzione dei consumi.

1 Con “carico” si intende il valore della coppia richiesta per un determinato regime di rotazione rispetto alla coppia massima erogabile per lo stesso regime e corrisponde banalmente alla posizione dell’acceleratore; schiacciando a tavoletta l’acceleratore chiediamo il 100% del carico (cioè della coppia) disponibile, rilasciandolo effettuiamo la parzializzazione e riduciamo il carico. La potenza massima si ottiene quando il motore gira al regime di potenza massima con il 100% del carico.

lunedì 12 marzo 2012

Il vero costo della benzina

Il problema del costo del carburante, e in generale dell’energia, non è del costo in sé, ma dello spreco nel suo utilizzo.

L’aumento del costo dei carburanti provoca sempre accese polemiche. La frontiera dei 2 €/l per la benzina si sta avvicinando, con il conseguente aumento generalizzato dei prezzi.

Puntualmente, parte la caccia al colpevole: il petroliere che specula, lo Stato con le accise, le Regioni con l’addizionale, i benzinai...

All’opinione pubblica, però, sfugge sempre un aspetto fondamentale del problema: la tecnologia con la quale estraiamo l’energia da un combustibile è intrinsecamente poco efficiente e vecchia di oltre 200 anni.

Le macchine termiche, con le quali viene prodotta la quasi totalità dell’energia consumata nel mondo (motori a combustione interna, ma anche motori aeronautici o turbine a vapore di centrali termoelettriche e nucleari, etc...), sfruttano il principio secondo cui l’energia ottenuta dall’espansione di un gas da un volume V2 a V1 dopo averlo riscaldato è superiore a quella che è stata necessaria per comprimerlo da V1 a V2, quando era più freddo: questo è evidente nei motori a combustione interna (m.c.i.), nei quali l’aria aspirata dal pistone viene compressa (prelevando energia dall’albero motore) e poi espansa dopo essere stata riscaldata da una combustione che avviene nell’aria di processo stessa. Il pistone raccoglie questa energia e la trasmette all’albero motore: poiché l’energia restituita è superiore a quella ceduta durante la compressione, il bilancio è positivo ed il motore produce un “lavoro”1.

Il teorema di Carnot, però, definisce un limite teorico al rendimendo di questo processo, legato al fatto che il calore è una forma “degradata” di energia, e, quindi, una volta che abbiamo “bruciato” l’energia immagazzinata nel combustibile in calore, non possiamo più sfruttarla completamente. Il rendimento è funzione della massima temperatura raggiunta dalla combustione e, poiché la parzializzazione viene fatta riducendo la portata di combustibile, si abbassa il rendimento teorico che, in condizioni normali di utilizzo, non è superiore al 50-60%.

Il rendimento di un motore a combustione interna reale, poi, è ulteriormente penalizzato dalle parti in movimento accessorie (albero/i a camme, pompe dell’olio e di alimentazione del combustibile, etc...), dalle perdite dirette di calore dalle pareti dei cilindri (raffreddano i gas combusti prima che si espandano e spingano il pistone), dalle perdite fluidodinamiche nei condotti di aspirazione e di scarico, e per ultimo, ma non meno importante, dal fatto che un motore a pistoni ha una caratteristica (curva) di potenza che mal si sposa con quella richiesta da un’automobile: infatti, un motore non può partire da fermo, ma ha bisogno di un sistema di disaccoppiamento con la trasmissione (frizione o convertitore di coppia) e di un cambio di velocità per adattare i differenti regimi di rotazione di motore e ruote. Realizzare un motore che abbia un buon rendimento in tutto il suo campo di funzionamento, ipotizzabile tra un 10-60% di carico e 20-70% di velocità di rotazione, è praticamente impossibile, quindi si cerca un compromesso che, però, non ottimizza i consumi.

Alla fine, un’automobile a benzina (o a metano o GPL) porta alle ruote un 20-25% dell’energia posseduta dal combustibile, valore che può salire a un 30-35% per un’auto equipaggiata con un motore a gasolio; il resto, lo butta via sotto forma di calore nei gas di scarico e nel sistema di raffreddamento.

D’altra parte, il management dell’industria automobilistica non ha motivazioni per investire a lungo termine su soluzioni diverse da quelle già consolidate (per quanto inefficienti), a meno che non diventi una necessità dettata dal mercato; il mercato stesso, quindi, dovrebbe sviluppare una maggiore sensibilità sul problema dello sfruttamento efficiente delle risorse energetiche, oltre che sul loro costo (che, probabilmente, sarà sempre più alto): la benzina a 4 €/l non sarebbe un problema, con un’auto che con un litro percorre 60 km...


1 In senso strettamente termodinamico.

mercoledì 7 marzo 2012

Corruzione di files con Samba

Recentemente ho avuto la spiacevole sorpresa di imbattermi nella corruzione di files condivisi con Samba e montati con il driver cifs (via # mount -t cifs).

Una macchina virtuale (Windows Xp) su VirtualBox, che girava sul client, aveva il disco virtuale VDI sul server samba (entrambi Ubuntu 10.04 LTS), montato appunto via cifs: dopo qualche ora di utilizzo, il SO sulla macchina virtuale iniziava a lamentare la corruzione del filesystem. Il ripristino del backup, effettuato il locale sul server, risolveva momentaneamente il problema, salvo il fatto che la corruzione del filesystem si ripresentava puntualmente.

Una breve ricerca su Google mi ha portato in evidenza questi articoli (1 e 2), nel quale veniva indicata come possibile imputata la cache del filesystem. Nel caso in cui la rete sia molto trafficata, come quella della quale facevano parte le 2 macchine, e nel caso in cui siano coinvolti files di grandi dimensioni, la fiducia che il kernel del client nella cache può essere mal riposta, con il risultato di ritrovarsi dei files corrotti. Il problema sembra essere sul lato client, quindi non dovrebbe coinvolgere client Windows o Unix montati con driver diversi da cifs (i.e. smbnetfs o GVFS via FUSE).

Per disabilitare la cache, è sufficiente passare l'opzione forcedirectio a mount:

# mount -t cifs //<NomeRete>/<Condivisione> -o username=pippo,password=PasswordDiPippo,forcedirectio /<MountPoint>

Non nascondo che sono rimasto un po' sorpreso dalla mancanza di riferimenti nella documentazione ufficiale di questo tipo di problemi, considerando che la conseguenza può essere una corruzione silenziosa dei files condivisi; d'altra parte, ho usato cifs per anni in altre situazioni senza aver mai aver riscontrato questo tipo di problemi.

D'ora in poi, comunque, monterò sempre le mie condivisioni Samba con forcedirectio.