giovedì 20 febbraio 2014

Rimuovere virus format.vbs

Come rimuovere manualmente il virus format.vbs che trasforma i file e le cartelle contenute nei dispositivi rimovibili (chiavette USB) in collegamenti a

C:\Windows\system32\cmd.exe /c start format.vbs&start &exit

Ho provato a rimuovere il virus con vari software:

Malwarebytes
Avast
Avg

Tutti rilevano il virus nel computer, ma non riescono a rimuoverlo completamente.

L'unico modo trovato è rimuovere la chiave di registro che si trova in:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

e si chiamerà

format         REG_SZ        "C:\Users\\AppData\Local\Temp\format.vbs

Eliminando tale chiave il tutto dovrebbe risolversi. Fate comunque una scansione con l'antivirus ed eliminate i file pericolosi che eventualmente troverà nei file temporanei del pc.

Purtroppo non ho trovato una soluzione per correggere automaticamente i file modificati all'interno delle chiavette. L'unica soluzione trovata per il momento è quella di aprire i file (il collegamento darà un errore in quanto non sarà più valido il collegamento a format) e salvarli in una nuova copia. In questo modo vengono salvati con la loro vera estensione.

Se qualcuno ha una soluzione si faccia avanti! :)

sabato 24 novembre 2012

From .mkv to .avi in CentOS6

To convert from .mkv to .avi in CentOS6 use this command:


ffmpeg -i input.mkv -sameq -acodec copy output.avi

More informations here


Mount NTFS partitions on CentOS6

With a few steeps the problem is gone:

1. open the terminal window with the root account.

2. download rpmforge for centos 6 to your system:

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

3. now install the rpmforge for centos 6:

rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

4. just install/update the package fuse-ntfs-3g:

# yum install fuse-ntfs-3g

5. mount your units:

# mount -a


More informations here

mercoledì 31 ottobre 2012

Groupon e io

Groupon e io: Era inizio settembre. Il mio caro vecchio iPhone 3G mi cade di tasca mentre vado in scooter. Ci passano sopra 4 macchine e da quel momento non ho più un telefono.

Pochi giorni dopo un amico in buona fede mi passa un link decisamente appetitoso, vista la mia situazione. È un link a Groupon.it. Un sito di cui ho tanto sentito parlare ma che non ho mai avuto il piacere di usare.

Il link offre un IPhone 4S a 454 euro. Un prezzo piuttosto conveniente, che giustifico pensando ad una svendita in previsione della imminente uscita dell’Iphone 5.

Decido di fidarmi. Groupon è un’azienda importante. Da anni tutti ne glorificano i prezzi pazzi facendomi puntualmente sentire un cretino. Io che non ho mai comprato un coupon in vita mia.

Sulla pagina dell’acquisto c’è un timer. Un timer che corre veloce e ti costringe a comprare subito per paura di perdere l’occasione. Ovviamente non appena il counter arriva a zero scopri che l’offerta viene prorogata di altri due giorni. Ma al momento non ci pensi.

Con 454 euro in meno sul conto ti arriva una mail in cui scopri una cosa che avresti potuto scoprire anche prima, se avessi letto bene: il prodotto verrà spedito 20 GIORNI LAVORATIVI dopo l’ordine.

Va beh, uno pensa. Non dirmi che sono diventato così nerd da non stare un mese senza whatsapp.
E così inizi a contare i giorni. Ché 20 giorni lavorativi in realtà sono 30 giorni normali.

Dopo un mese nulla accade. Cerco informazioni su internet e scopro una cosa che avrei dovuto scoprire prima: Groupon ha più clienti insoddisfatti e sul piede di guerra di un’azienda di medicinali assassini. Le segnalazioni di ritardi, inadempienze, violazioni non si riescono a contare. Terrorizzato, decido di contattare il call center (molto a pagamento) di Groupon per avere qualche data certa.

Pensando di fare del servizio civile, entro nel dettaglio di ogni telefonata. Che magari qualcuno non farà il mio stesso errore.

TELEFONATA 1 (dopo circa 30 giorni)
Faccio presente all’operatore la scadenza dei 20 giorni lavorativi. Chiedo quindi un orizzonte temporale. L’operatore mi dice che entro 7 giorni lavorativi avrei ricevuto la chiamata del corriere. Ringrazio. Mi metto ad aspettare.

TELEFONATA 2 (dopo circa 39 giorni)
Faccio presente all’operatore la tautologica scadenza della scadenza. Gli chiedo di darmi una data certa. L’operatore mi dice di non essere in grado di darmela. Presto mi verrà spedito il prodotto. In ogni caso lui aprirà una pratica in cui segnalerà il mio problema.

Gli chiedo quale sia il problema da segnalare. Voglio solo sapere quando è prevista la spedizione. L’operatore non mi sa rispondere. Ci vuole una segnalazione per avere quella risposta.

Mi tranquillizza: dopo l’apertura della pratica riceverò una risposta entro 7 giorni lavorativi.

Faccio presente all’operatore che non mi sembra una grande conquista avere una risposta entro 7 giorni. Una risposta al perché il mio prodotto, che aspetto da 39 giorni, non mi sia ancora arrivato. L’operatore utilizza la prima frase che probabilmente viene insegnata ad ogni operatore: “Lei ha ragione signore, ma questo non dipende da me”. Rispondo con lo stesso grado di banalità: “Mi faccia parlare allora con la persona da cui questo dipende”. Mi viene risposto che è tardi (le 20.00) e che i responsabili non sono in sede. Decido di richiamare il giorno successivo.

TELEFONATA 3 (dopo circa 40 giorni)
Racconto tutta la storia ad un nuovo operatore. Inizio ad avere toni un po’ più perentori. In fondo, faccio presente, loro hanno da un mese e mezzo i miei 454 euro e non si sono ancora degnati di farmi sapere qualcosa del mio iPhone 4S. L’operatore, come un automa, mi risponde le stesse cose del operatore precedente. Farà una segnalazione. Mi capisce. Non dipende da lui. Non può passarmi nessuno. Non perché non ci siano i team leader. Ma perché non è abilitato a passarmeli.

Per forzare la banalità del male, decido di passare all’attacco. Dal nulla gli chiedo: “Mi dica la verità: avete venduto più iPhone di quelli che avevate. State ricevendo una chiamata al secondo e state prendendo tempo”. Silenzio. L’operatore non ha una risposta preconfezionata. Cede: “Effettivamente c’è stato un overbooking”. Bingo. Gli dico, con grande tranquillità, che se non hanno abbastanza iPhone non hanno che da dirlo. Possono rifondermi i 454 euro e non mi lamenterò più.
L’operatore mi promette che sta segnalando tutto all’ufficio tecnico e che mi darà una risposta entro breve. Mi sembra convincente. Non ho molte alternative. Gli credo.

TELEFONATA 4 (dopo circa 43 giorni)
Non avendo ricevuto nessuna risposta chiamo nuovamente. Parlo con un’operatore più in gamba degli altri. Uno che, dopo le mie parole, ammette che effettivamente c’è un problema con gli iPhone 4S.

Ecco: saranno spediti negli ultimi giorni di novembre. Cosa?? Quindi vuol dire che devo aspettare altri 40 giorni? 70 giorni dall’inizio della vicenda? Pare di sì.
Perché non lo avete comunicato per e mail? Lo sapete che state violando i termini della vendita? Certo. Si scusano. Non dipende da loro. Faranno una segnalazione.

A quel punto mi indurisco. Di fronte alla prepotenza unilaterale divento prepotente anche io. Chiedo di parlare con il team leader. Dico che monterò un casino. Dico che voglio risposte chiare e non intendo aspettare 70 giorni per un telefono che mi doveva essere spedito dopo 30. Il ragazzo sembra spiazzato. Mi tiene in attesa. Mi faccio i complimenti da solo, il bluff ha funzionato. Dopo alcuni minuti mi dicono che il team leader ha deciso di far partire una procedura di urgenza. Mi sento quasi in colpa e cerco di recuperare dicendo: “dovreste darla a tutti quelli che hanno comprato il telefono, non solo a me”. Mi viene detto che in poche ore tutto si risolverà.

Effettivamente dopo alcuni minuti mi arriva la prima mail da Groupon dopo quella di conferma di acquisto. Mi viene inviata da tale Paolo, che mi scrive

“In merito alla sua richiesta la informiamo che le spedizioni saranno effettuate dopo circa 20 giorni lavorativi dall’ordine; pertanto il prodotto (il cui ordine risulta correttamente inserito ed è già in mano all’ufficio competente) sarà in spedizione a breve.
La informiamo inoltre che abbiamo provveduto a sollecitare con carattere d’urgenza la spedizione del prodotto.”

Io non so cosa avreste pensato voi, ma io ho pensato che nel giro di qualche giorno avrei avuto finalmente il mio Iphone 4S. Ovviamente non è andata così.

TELEFONATA 5 (dopo circa 48 giorni)
Passano 5 giorni. Forte della mail di Paolo, chiamo nuovamente il servizio clienti. Mi risponde un certo F. Che ovviamente non vede traccia della mia segnalazione, del carattere di urgenza e della spedìzione a breve. Mi dice (questa l’ho già sentita) che farà una segnalazione e che mi verrà risposto in 7 giorni lavorativi. Dopo 5 telefonate inizio a capire il trucchetto. Lo espongo candidamente a F. e gli dico: “Queste segnalazioni non le legge nessuno, vero? Sono solo un modo per scaricare il barile e guadagnare tempo”. Risposta: “Lo ha detto lei, non l’ho detto io”. Olé.
Ad un certo punto una domanda strana: “Ma lei di che colore ha scelto l’Iphone?”. Io: “Bianco” (che poi lo volevo nero!). Pausa. Io: “Ma perché?”. Lui: “Per informazione”. Attacco: “Ma è vero che gli iPhone verranno spediti solo a fine novembre?”. Panico. “Chi glielo ha detto?”. “Un suo collega”. Silenzio. F. risponde che effettivamente sugli iPhone bianchi c’è da aspettare fine novembre.

Alzo un po’ i toni, pur evitando di prendermela direttamente con il povero F. Lui erge il muro di gomma che è stato addestrato ad alzare. Capisce la mia posizione. Non può fare niente. Non può passarmi nessuno. I suoi capi non prendono le telefonate. Non ha date e informazioni. Mi promette però che entro 7 giorni avrò una risposta e che in ogni caso a fine novembre avrò il telefono.

Gli chiedo di metterlo per iscritto. Di mandare una mail. Di darmi qualche dato concreto in mano. Mi dice che farà una segnalazione. Gli faccio notare l’incongruenza di quello che dice. La falsità di quello che dice. La diabolica e disarmante semplicità della ruota da criceto in cui mi hanno infilato. F. capisce. F. non può fare niente. F. farà una segnalazione.

Sono disarmato. Improvvisamente vorrei non avere abbandonato Giurisprudenza dopo un esame. O il corso di judo dopo la lezione di prova.

Un mio collega mi dice: “La mia ragazza ha visto un Galaxy SII su Groupon.it a un prezzo pazzesco, lo sta per comprare”. Ecco che mi ricordo di avere un blog sul Post. Ecco che trovo finalmente un senso alla mia vita. Oggi.

Probabilmente non avrò mai più un iPhone e non vedrò mai più i miei soldi indietro.

Ma almeno avrò salvato una vita.

giovedì 4 ottobre 2012

LA DURA VITA DI UN FREELANCE

Copio e incollo dalla bacheca di Ines Della Valle, giornalista freelance attualmente in Egitto.

La Stampa: il caporedattore legge la mia proposta di un'inchiesta su cui ho lavorato in Egitto. Mi dice che è interessante e che vuole un pezzo di 2 pagine e mezzo circa, da pubblicare un weekend di questi. Gli dico ok, ma posso sapere quale compenso prevedete per lavori di questo tipo? Mi risponde "prima fammi vedere il pezzo poi ne parliamo". Gli scrivo l'articolo, mi dice che va benissimo che l
a storia funziona e vuole anche delle fotografie, gli mando circa una 30ina di foto. Mi dice "scusa sai, ma per adesso il pezzo non può essere passato (era il periodo delle rivolte antiamericane per il film su Maometto)". Gli dico ok, capisco, ma intanto mi può dire quanto mi paga? Così intanto emetto fattura...Mi dice (copio incollo) "Finchè il pezzo non viene pubblicato non puoi essere pagata, sorry". Sparisce.
Dopo un mese circa gli scrivo per avere notizie e questa, testuali parole, è stata la sua risposta:

"Cara Ines,
tempo proprio che non uscirà, nonostante per me andasse bene...
sorry
cg"

SORRY

Per tanti miei colleghi freelance questa non sarà una novità, e non lo è neanche per me, ma ogni volta che succede una cosa del genere mi chiedo come sia possibile che ancora non esista una ca....o di legge o regola che ci tuteli da sta gente....com'è possibile???




Qui il sito di Ines http://www.inesdellavalle.com/

CONDIVIDETE!

mercoledì 13 giugno 2012

ONLINE CONVERTER FROM PDF TO DOC, PPT, XLS

Volentieri pubblico il suggerimento di una lettrice, che mi ha scritto queste righe per posta:


Hello Irene, Having visited your blog Pas Pasa Pan, I noticed that you mention online file converters. In line with that, I wanted to bring your attention to our free online PDF Converter. It has the ability to create PDFs from virtually any document format or convert PDF documents to Word, Excel and PowerPoint. Its main features include: · 100% free · Safe and easy to use · Unlimited number of conversions · Hassle-free: no need to buy or install anything on your computer · Fast and accurate conversion results You can learn more and test it here:http://www.pdfconverter.com/free-pdf-conversion-online/ I hope that you will find the time to check it out and review it, or otherwise mention it on your blog. Your users will surely find it handy. I look forward to your feedback or any questions that you may have! Best regards, Cindy


Un servizio molto utile, sicuro, facile da usare, con un numero illimitato di conversioni, tutto fattibile online. Molto buono, l'ho provato ed è ottimo. Consigliato!


http://www.pdfconverter.com/free-pdf-conversion-online/

sabato 21 aprile 2012

Installare Virtualbox su Centos 6

Ad oggi, 21 aprile 2012, queste sono le istruzioni che ho seguito io per installare correttamente Virtualbox versione 4.1.12 su Centos 6.


1. Entrare in un terminale come root user
su


2. Installare i repo dei files RHEL/CentOS
cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo


3. Fare l'update degli ultimi pacchetti
yum update


4. Installare i seguenti pacchetti
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
 yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
 yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-PAE-devel dkms


5. Installa l'ultima versione di Virtualbox o scaricando dal sito la versione per Centos5 oppure con il comando
yum install virtualbox


6. Dare il comando
/etc/init.d/vboxdrv setup




Adesso virtualbox dovrebbe funzionare correttamente... per installare gli strumenti aggiuntivi scaricare da qui il file e lanciarlo (verrà aperto da virtualbox)

mercoledì 18 aprile 2012

martedì 3 aprile 2012

Gruppo FCM: Speciale Ubuntu 11.10 e Unity

Gruppo FCM: Speciale Ubuntu 11.10 e Unity:

Speciale Ubuntu 11.10 e Unity

Ubuntu 11.10 e Unity

Il gruppo FCM è lieto di comunicare che è stato pubblicato lo
Speciale Ubuntu 11.10 e Unity.
In questo numero troviamo:
* Panoramica di Unity
* Elenco delle caratteristiche di Ubuntu 11.10
* Configurare Unity
* Esplorare la Dash di Unity
* Unity e HUD
* How-Yo: Aggiornare l’Ocelotto
* How-To: Sicurezza in Ubuntu 11.10
* How-To: Ottimizzare il desktop di Unity
…e tanto, tanto altro ancora!
Il PDF è scaricabile dal link riportato qui sotto:
Download PDF Speciale Ubuntu 11.10 e Unity .
Oppure in versione Djvu a questo link:
Speciale in versione Djvu .
Buona lettura a tutti :)


martedì 20 settembre 2011

Ubuntu: utilizzare gli Alias per creare comandi personalizzati

Ubuntu: utilizzare gli Alias per creare comandi personalizzati:

Diventare padroni del terminale Linux è sicuramente cosa buona e giusta che ci permetterà di essere anche padroni del sistema in modo completo, in qualsiasi situazione. Dovete sapere che è possibile impostare alcuni alias in modo da creare il proprio “comando personalizzato” per lanciare facilmente alcuni comandi di sistema difficili da ricordare o trascrivere. L’alias ​​è il modo più semplice ed utilizzato per personalizzare i comandi, dando loro pseudonimi (nickname). Questo è molto utile per poterli usare per ricordare i comandi difficili, lunghi o che non contengono stringhe semplici da memorizzare.


(...)
Continua la lettura di: Ubuntu: utilizzare gli Alias per creare comandi personalizzati




© Tanino Rulez per Chimera Revo, 2011. |
Permalink |
Nessun commento |
Aggiungi su
del.icio.us


Post tags: , , , , ,


Feed enhanced by Better Feed from Ozh

domenica 18 settembre 2011

Ubuntu: come ottenere un indicatore meteo Conky ispirato ad HTC

Ubuntu: come ottenere un indicatore meteo Conky ispirato ad HTC:


Ecco come configurare Conky in modo da renderlo un indicatore meteo con un interfaccia in perfetto stile HTC. Il widget meteo HTC è una delle prime cose che colpisce quando si ammira un prodotto della celebre casa Taiwanese e che ormai la identifica nel campo dei tablet e smartphone. Andiamo a vedere nel dettaglio come poterlo configurare e utilizzare sul nostro desktop in Ubuntu.


1) Se non abbiamo già intallato Conky sul nostro pc digitiamo da terminale:


sudo apt-get install conky


2) Sarà inoltre indispensabile l’estensione Meteo, potrete comodamente scaricare il pacchetto Conky Forecast.deb da qui:



3) Ora scarichiamo il tema Conky-HTC:



4) Estraiamo il file .zip , e premiamo Ctrl+H all’interno della cartella appena estratta per visualizzare i file nascosti. Copiamo i file .fonts, .images, .conkyForecast.config, .conkyrc, .conky_start and .vreme.template nella nostra cartella home.


5) Configuriamo Conky-HTC da terminale:



gedit ~/.conkyForecast.config


e andiamo a sostituire il valore: “LOCALE =pt_br” con “LOCALE =pt_en


purtroppo è disponibile solo in inglese ma, per fortuna, le previsioni meteo sono perfettamente funzionanti nel nostro territorio e facilmente personalizzabili. Salvate e chiudete il file.


Configurare il meteo


Rechiamoci sul sito di The Weather Channel e cerchiamo le previsioni per la nostra città (nel mio caso ho scelto Milano) e copiamo il codice alla fine dell’url:


http://www.weather.com/weather/today/ITXX0042


ora inseriamo il codice della nostra località nella configurazione di Conky-HTC da terminale:



gedit ~/.conkyrc


una volta aperto gedit andiamo nel menù Cerca > Sostituisci ed inseriamo nella casella Cerca: il valore “BRXX0232″ e nella casella Sostituisci con: il valore delle previsioni per la nostra città, nel mio caso il “ITXX0042″. Non chiudiamo ancora il file .conkyrc e ne approfittiamo per correggere un bug che porta Conky-HTC troppo vicino al nostro pannello superiore: sostituiamo il valore “gap_y 10” con “gap_y 40“, in questo modo l’indircatore sarà centrato nell’angolo in alto a destra del nostro desktop.


Ora possiamo salvare e chiudere.


Lanciare Conky


Non ci resta che lanciare Conky da terminale digitando:


conky


se volete aggiungere Conky alle vostre Applicazioni d’avvio basterà premere Aggiungi, Nome: “Conky-HTC”  e Comando: “/home/nomeutente/.conky_start.sh“.


Un po di fatica, ma per un vero smanettone configurare Conky è sempre divertente, ecco il risultato:



Sembra che ripaghi abbondantemente qualche minuto speso dietro al terminale e gedit.


via




© Alessandro L per Chimera Revo, 2011. |
Permalink |
Nessun commento |
Aggiungi su
del.icio.us


Post tags: , , , , , , ,


Feed enhanced by Better Feed from Ozh

mercoledì 24 agosto 2011

BleachBit 0.9.0 beta rilasciato! Installiamolo su Ubuntu

BleachBit 0.9.0 beta rilasciato! Installiamolo su Ubuntu:


Chi utilizza Windows conoscerà sicuramente Ccleaner, un software per la pulizia del proprio registro e non solo. Per i sistemi Linux esiste un’alternativa valida e che non potete non avere installato sul vostro sistema: BleachBit. BleachBit, lo “spazzino” del nostro sistema, annuncia pubblicamente la versione 0.9.0 beta che include miglioramenti, correzioni di bug e aggiornamenti di traduzione.


(...)
Continua la lettura di: BleachBit 0.9.0 beta rilasciato! Installiamolo su Ubuntu




© renato per Chimera Revo, 2011. |
Permalink |
Nessun commento |
Aggiungi su
del.icio.us


Post tags: , , , , ,


Feed enhanced by Better Feed from Ozh

giovedì 18 agosto 2011

Aggiornare un'immagine .iso con zsync in Windows usando cygwin

Volete aggiornare un'immagine CD con estensione .iso, ma utilizzate Windows e non potete utilizzare il potente programma zsync? Niente paura, adesso vi spiego come fare:

1) Innanzitutto scaricate Cygwin, che è un software che consente a un SO Windows di svolgere alcuni compiti in maniera esteticamente e funzionalmente simile ai sistemi UNIX.

2) Installate Cygwin lanciando il file setup.exe. Durante l'installazione vi chiederà di scegliere una sorgente di download. Scegliete Install from Internet e continuate.
Di default zsync dovrebbe installarsi, (ma a me non è successo sebbene fosse selezionato).


3) Terminata l'installazione, create una nuova cartella Download in C:/cygwin/home/ (se avete lasciato le impostazioni standard).

4) Copiate in questa cartella l'immagine .iso che volete aggiornare. Lanciate Cygwin e spostatevi nella cartella Download con il comando

cd Download

5) Adesso, non ci resta che aggiornare l'immagine con

zsync http://cdimage.ubuntu.com/daily-live/current/**********.zsync

immettendo il link esatto.

6) Se dovesse appunto apparire un comando che dice che zsync non è installato:

una volta scaricato il file di zsync .tar.bz2 da qui estraetelo direttamente per 2 volte fino ad ottenere una normale cartella. Copiate la cartella ottenuta in C:/cygwin/home//Download, lanciate Cygwin, spostatevi nella cartella suddetta e lanciate i seguenti comandi:

./configure
make
make install

dopo di che potete continuare con il punto 5.


giovedì 7 luglio 2011

Modificare un file PDF

Ho a che fare in continuazione con file PDF e loro modifica. Mi trovo benissimo nel compiere queste operazioni via terminale, anche perché mi sbrigo prima. Mi annoto anche qui queste operazioni e le condivido con voi.

Ovviamente esistono alternative che fanno uso di strumenti grafici, come PDF Mod, PDF Chain, PDF Shuffler, PDF Split and Merge (pdfsam).

I pacchetti usati in questo post sono: ghostscript, pdftk, poppler-utils, che vanno installati se non li avete già.

Manipolazione del PDF

Unire più PDF in uno solo

pdftk input_A.pdf input_B.pdf input_C.pdf cat output output.pdf

Unire tutti i PDF di una directory in uno solo

pdftk *.pdf cat output output.pdf

Dividere un unico file PDF in tanti file PDF quante sono le sue pagine

pdftk input.pdf burst

Estrarre da PDF alcune pagine

pdftk input.pdf cat 10-20 output output.pdf

Estrarre da PDF alcune pagine non consecutive

Col seguente comando estraiamo le pagine 3, dalla 10 alla 20, 25, 28, 32, dalla 45 alla fine:

pdftk input.pdf cat 3 10-20 25 28 32 45-end output output.pdf

Ruotare un PDF di 90° a destra (clockwise)

Col seguente comando ruotiamo tutte le pagine (dalla prima alla fine) verso Est:

pdftk input.pdf cat 1-endE output output.pdf

Ruotare un PDF di 90° a sinistra (counter-clockwise)

pdftk input.pdf cat 1-endW output output.pdf

Ruotare un PDF di 180°

pdftk input.pdf cat 1-endS output output.pdf

Estrarre immagini dal PDF

È consigliabile crearsi prima una directory (ad esempio pdf_images) dove far confluire tutte le immagini e poi dare:

pdfimages input.pdf pdf_images/

Convertire un PS in PDF

ps2pdf -dPDFSETTINGS=/screen input.ps output.pdf

dove screen può essere:

screen (72 dpi)
ebook (150 dpi)
printer (300 dpi)
prepress (300 dpi)

Convertire un PDF in PS

pdf2ps input.pdf output.ps

Ridurre le dimensioni di un PDF

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

Modificare i metadati di un PDF

Estraiamo prima le informazioni esistenti in un file di testo:

pdftk input.pdf dump_data output info.txt

Modifichiamo le informazioni e reimportiamole in un nuovo PDF con:

pdftk input.pdf update_info info.txt output output.pdf

Un esempio di elenco di metadati:

InfoKey: Title InfoValue: Titolo del PDF InfoKey: Subject InfoValue: Soggetto del PDF InfoKey: Keywords InfoValue: Parole, Chiave, Del, PDF InfoKey: Author InfoValue: Autore del PDF

PDF e immagini

Convertire un PDF in PNG

convert -density 300 input.pdf output.png

Tutte le pagine saranno convertite in immagine. I file immagine risultanti avranno questo nome:

output-0.jpg --> Pagina 1 output-1.jpg --> Pagina 2 ecc.

La stessa conversione può essere effettuata con pdftoppm, un componente di poppler-utils.

Convertire un PDF in PNG specificando le dimensioni di uscita

convert -scale 940 input.pdf output.png

Convertire un PDF in PNG specificando la risoluzione di uscita

convert -density 300 input.pdf output.png

Estrarre da PDF una pagina e convertirla in PNG

convert input.pdf[0] output.png
0 sta per pagina 1, 1 per pagina 2 e così via.
Anche in questo comando si possono usare le opzioni -scale e -density.

Estrarre da un PDF più pagine non consecutive e convertirle in PNG

convert -density 300 -scale 940 input.pdf[0,2,6,11,16,21,26,33,38] output.png

Convertire un PDF in un PDF immagine (rasterizzare il PDF)

convert -density 300 input.pdf output.pdf

Convertire più PNG in PDF (A4 verticale)

convert -adjoin -page 210x297 *.png output.pdf

Convertire più PNG in PDF (A4 orizzontale)

convert -adjoin -page 297x210 *.png output.pdf

mercoledì 29 giugno 2011

Join my alliance!!!


Manifesto dell’Alleanza Ribelle

La nostra casa – la Terra – è in pericolo. VW si oppone a due leggi europee fondamentali per la salvaguardia del clima: innalzamento degli obiettivi di riduzione delle emissioni e maggiore efficienza delle automobili. Due leggi vitali se non vogliamo fare la fine del pianeta Alderaan (distrutto dalla Morte Nera…). Ma non tutto è perduto. Percepiamo del Bene in VW.

Tutti noi, membri dell’Alleanza Ribelle, chiediamo a VW di abbandonare il Lato Oscuro della Forza e di dare al nostro pianeta una possibilità di salvezza.

1

Sostenere un forte abbattimento delle emissioni di CO2.

Nonostante la sua immagine “green”, Volkswagen spende ogni anno milioni di Euro per finanziare le lobby che impediscono all’Europa di innalzare gli obiettivi di riduzione delle emissioni di gas serra, dal 20% al 30%, entro il 2020. Aziende virtuose come Google, Ikea, Sony, Unilever, Philips e Barilla sostengono già l’innalzamento degli obiettivi sul clima. Volkswagen non può permettersi di rimanere indietro.

2

Promuovere la produzione di auto più efficienti.

Le auto con consumi di carburante bassi fanno risparmiare ed emettono meno CO2. Da sempre Volkswagen si oppone al miglioramento degli standard di efficienza, ma interrompere la nostra dipendenza dal petrolio è una necessità. Come prima azienda automobilistica in Europa, VW incide moltissimo sulle emissioni e ha una grande responsabilità ambientale. Per questo deve cambiare e sostenere standard ambiziosi, d’ora in avanti.

3

Più fatti, meno parole.

Volkswagen sostiene di voler essere “il produttore d’auto più ‘eco-friendly’ al mondo”, ma i suoi modelli più efficienti, nel 2010, hanno rappresentato soltanto il 6% delle sue vendite. Volkswagen ha la tecnologia per fare molto meglio di così: deve impegnarsi per produrre solo veicoli “oil free” entro il 2040. (Per maggiori informazioni leggi l’intero rapporto)



JOIN MY ALLIANCE!!!

domenica 19 giugno 2011

Linux Bash Scripting for Dummies: Struttura Scripts

Bentornato al nostro consueto appuntamento settimanale sul bash scripting. Quello che oggi ti propongo è una prima infarinatura sugli scripts.

Come già ci siamo detti l’obiettivo di questa serie di guide è imparare a scrivere delle procedure (scripts) in maniera chiara e funzionale; e per farlo dobbiamo iniziare a capire come questi devono essere strutturati.

Introduzione

Qualsiasi sviluppatore, sia che esso programmi in php che in ruby che in qualsiasi altro linguaggio, ti dirà che ci sono sostanzialmente due modi di scrivere il software che si possono descrivere con

  1. Scrittura fatta a cazzo di cane
  2. Scrittura fatta bene

Entrambi i metodi funzionano, dando per scontato che i software sono scritti senza errori, vale a dire che due software uguali ma scritti con i due metodi sopra illustrati funzioneranno entrambi, ma – c’è un ma – solo il software scritto col secondo metodo potrà essere definito un buon software, perchè?

Perchè chi usa il primo metodo tende a scrivere il software nella maniera più veloce, senza inserire i cosiddetti “commenti” all’interno del codice – che sono importantissimi – inserendo le funzioni base e senza pensare se una determinata azione può essere eseguita in altro modo, magari con meno linee di codice.

Il secondo metodo invece è migliore perchè, anche se necessità di più tempo per scrivere lo stesso software (ma non sempre eh), fa scrivere del codice più funzionale, vale a dire che se ad esempio il codice è ben commentato e ben indentato1 sarà più facile rileggerlo magari dopo mesi che è stato scritto, soprattutto se a rileggerlo è una persona diversa da chi l’ha scritto inizialmente; inoltre, se il codice è anche ben ottimizzato ne risulterà un software più snello che richiede meno tempo e meno risorse per essere eseguito. Ne consegue che più lo script è complesso e più è importante, nonchè necessario, un processo di progettazione precedente alla stesura del codice; la progettazione è lo step che in molti casi determina la qualità del software finale, pensa che a volte il processo di progettazione può richiedere parecchio tempo, molto più di quello necessario per la stesura del codice finale.

Ecco perchè è cosi importante saper ottimizare il codice che si scrive.

La struttura degli scripts bash

Dunque uno script bash possiamo dividerlo in tre macro-aree che chiameremo ispirandoci alla terminologia che si usa per l’html delle pagine web: header, corpo e – se necessario – il footer. Se non hai mai scritto in bash sappi che tra poco inizierai a leggere dei temini dei quali, quasi sicuramente, non ne saprai il significato. Però non devi spaventarti perchè ovviamente il tutto ti sarà chiarito mano mano che leggerai l’articolo, e qualora cosi non fosse sei invitato a chiedere tutto quello che vuoi nei commenti.

Header

Nello scripting unix l’header, o apertura, degli scripts include come primissima cosa l’interprete che il sistema deve usare per leggere ed eseguire il codice che seguirà. A seguire troveremo – opzionalmente – le istruzioni che servono ad includere eventuali file di configurazione, librerie, altri script, ecc… e poi tutte le variabili che sono necessarie per l’esecuzione dello script.

L’interprete deve essere inserito come prima riga dello script e nel caso di bash si usa:

#!/bin/bash

Se hai visto qualche volta del codice bash noterai una cosa, questa riga inizia con un cancelletto che viene usato per i commenti, però questo codice viene eseguito perchè altrimenti come farebbe la shell a capire quale interprete usare? In realtà una differenza c’è, perchè i commenti iniziano con un asterisco e basta, noi invece stiamo usando la combinazione di asterisco+punto esclamativo che in bash si chiama shebang.

Come fa la shell a capire che quella è una shebang (chiamata anche hashbang) e non un commento? Perchè per essere una hashbang valida, questa combinazione deve apparire per prima, vale a dire che i primi due caratteri del paragrafo che inizia, devono essere appunto “#!” se invece viene piazzato all’interno di un paragrafo in qualsiasi altra posizione allora la shell sa che quello è un commento.

#!/bin/bash <- questa è una hashbang. echo "#!/bin/bash" <- questo è un messaggio da stampare a schermo. # Using #!/bin/bash as interpreter <- questo invece è un commento.

NB. Se dopo aver scritto uno script e lo lanciamo con “./script.sh” otteniamo un “command not found” significa che molto probabilmente non è stato inserito l’interprete in testa al file.

Dopo l’interprete a volte potremmo trovare una sezione dedicata al cosiddetto sourcing delle dipendenze. Per esempio noi potremmo scrivere uno script che per funzionare ha bisogno di un file di configurazione che a sua volta può contenere delle variabili, altri comandi da eseguire, ecc…

Il sourcing può anche essere fatto al di fuori degli script con l’apposito comando ‘source’, per esempio, potremmo voler definire un alias di comandi all’interno del nostro file .bashrc2 per poter aggiornare tutti i pacchetti installati nella nostra linux box.

Normalmente lanceremmo “sudo pacman -Sy” se stessimo usando Archlinux oppure “sudo apt-get safe-upgrade -y” per debian/ubuntu, ma per fare ancora prima possiamo inserire dentro il nostro .bashrc l’alias

pkgup='pacman -Sy'

oppure

pkgup='apt-get safe-upgrade -y'

di modo da dover solo scrivere “sudo pkgup” per ottenere la stessa azione. Bene, una volta fatta questa modifica per poter usare quell’alias dovremmo lanciare una nuova shell o riloggarci al sistema nel caso stessimo usando un server che non ha quindi un desktop manager come gnome o kde; oppure possiamo renderla definitiva da subitousando il comando source.

:~$ source ~/.bashrc

Nel caso degli script non dobbiamo usare il comando source, basta solo inserire il path al file che ci interessa preceduto da un punto ed uno spazio.

# Includo il file di configurazione . /path/to/configuration/file

NB. Un file che viene incluso in testa allo script non per forza necessita di essere reso eseguibile (chmod +x).

La prossima cosa che incontriamo nell’header degli scripts sono le definizioni delle variabili, queste sono molto importanti in quanto ci consentono di poter definire a monte pezzi di codice che poi verranno riutilizzati dentro il corpo dello script, per farlo si richiamano appunto queste variabili anteponendo il simbolo del dollaro al nome della variabile, la variabile VAR quindi verrà richiamata con $VAR.

E’ molto importante fare l’uso delle variabili perchè cosi evitiamo di dover ripetere gli stessi pezzi di codice più volte all’interno dello script (ottimizzazione, ricordi?), è facile intuire quindi che le variabili vengono concepite per lo più durante la fase di progettazione.

Per capire come si usano le variabili andiamo a vedere un pezzo di script che creai un paio di anni fa, quando dovetti mettere in piedi una procedura di backup dei server basata su rsync.

#!/bin/bash   #Definizione delle variabili   PATH_SCRIPT="/usr/local/scripts"   RSYNC_CMD=`which rsync`   INCLUDE_FILE="$PATH_SCRIPT/path.conf"   SERVER_LIST="$PATH_SCRIPT/servers.inc"   PATH_BCK="/mnt/backups"

Possiamo notare da subito due cose, la prima è che inizio ad usare sin da subito le variabili che definisco, $PATH_SCRIPT infatti l’ho usata anche per definire il path dell’include file3 ed il path della lista dei server da backuppare; la seconda cosa riguarda il comando rsync:

Avrai notato che tutte le variabili sono definite dentro i doppi apici tranne RSYNC_CMD che è definita dentro degli apici inversi, questo perchè apici, doppi apici, ed apici inversi in bash hanno determinate funzioni.

Con i doppi apici diciamo alla bash che quello che delimitano deve essere stampato valorizzando eventuali variabili contenute all’interno, analogamente con il singolo apice diciamo a bash che quello che è contenuto all’interno deve essere stampato cosi com’è senza tenere conto di variabili, per esempio ponendo di avere definito una variabile VAR=”3″:

echo "il valore di VAR è $VAR"

ci darà in output “il valore di VAR è 3″ mentre

echo 'il valore di var è $VAR'

ci darà in output “il valore di VAR è $VAR”.

Mentre il comportamento dell’apice inverso (che in linux otteniamo con la combinazione altgr+’ mentre in windows tenendo premuto ALT e digitando sul tastierino numerico 096) è differente, dichiarando una variabile con questo carattere diciamo a bash che il valore della stessa deve essere uguale all’output del comando inserito tra apici inversi.

Nel caso dello script di cui sopra quindi RSYNC_CMD avrà come valore l’output del comando “which rsync” che nella maggior parte dei casi sarà uguale a “/bin/rsync”.

Ma perchè ho definito il comando di rsync con una variabile al posto di scrivere “/bin/rsync” ogni volta che mi serviva? Per una questione di usabilità, quando si fa uno script infatti si deve pensare che questo può essere lanciato su qualsiasi architettura, e non tutte le distribuzioni hanno il comando rsync sotto /bin, potrebbe essere lanciato ad esempio su un server sul quale rsync è stato installato da sorgenti dentro il path /usr/local/bin, conviene sempre quindi definire i comandi usati nello script con delle variabili passandogli `which nomecomando` come valore, eccezion fatta per i comandi standard ovviamente, come ad esempio “ls” che troveremo sempre dentro “/bin/ls”.

  1. L’indentazione è l’inserimento di una serie di spazi vuoti tramite il tasto TAB ad inizio di ogni paragrafo, serve per aiutare la lettura
  2. .bashrc è il file che viene letto ad ogni nostro login, od ogni qualvolta lanciamo una shell, esso contiene tutte le nostre preferenze per l’uso della shell, come variabili d’ambiente, alias di comandi, personalizzazioni del prompt della shell e tanto altro.
  3. rsync consente di passare un file come parametro all’interno del quale ci sono dei percorsi specifici da includere o da escludere dai backup

da http://www.ilportalinux.it/linux-bash-scripting-for-dummies-struttura-scripts/