vicidomini.net
Blog di pubblica inutilità

Excel: contare i giorni che mancano ad un compleanno

28 luglio 2009

Un amico che lavora in caserma ha il gravoso compito :) di tener traccia dei compleanni e di inviare ai festeggiati i biglietti d’auguri. Mi chiede quindi se in Excel è possibile fare qualcosa di utile.

Come no!

Excel fornisce alcune funzioni di calcolo per le date ma nessuna di queste funzionava in modo simile a come volevo io. Prima di tutto impostiamo in Excel la tabella dei dati.

Tabella dei compleanni

Fatto? Fatto! Nell’immagine sopra è possibile vedere, oltre alla fantasia nella creazione dei nomi, la formula usata per calcolare il numero dei giorni mancanti. La formula è:

=RESTO(ARROTONDA.PER.DIF(DATA(ANNO(OGGI());MESE(D4);GIORNO(D4))-OGGI();0);360)

L’unica cosa da cambiare è il riferimento alla cella D4, che deve essere la data rispetto alla quale calcolare il numero di giorni mancanti. Una volta scritta la formula per la prima cella della tabella, facciamo click sulla cella, premiamo e teniamo premuto sul quadratino in basso a destra della cella stessa e trasciniamolo fino all’ultima riga della tabella, quindi rilasciamo il pulsante del mouse. La formula è stata copiata su tutte le righe cambiando di volta in volta il riferimento alla cella su cui viene effettuato il calcolo.

A questo punto vogliamo che i compleanni imminenti appaiano in alto nella tabella. Usiamo la funzione di ordinamento di Excel.

Clicchiamo su una qualsiasi delle celle che contiene il numero di giorni mancanti. Poi nel ribbon Home selezioniamo “Ordina e filtra” e quindi “Ordina dal più piccolo al più grande”. Tranquilli, l’ordinamento non mischia i dati nella tabella, non ci troveremo Mario Rossi col compleanno di Paolo Verdi!

Ordinamento dei risultati

A questo punto sarebbe davvero comodo fare che ogni volta che apriamo il file di Excel la tabella fosse automaticamente ordinata. Questo è un lavoro da affidare alle macro. Prima di tutto salviamo il file con supporto alle macro (v. figura qui sotto).

Salva con attivazione macro

Adesso sulla tastiera battiamo ALT+F11 per aprire l’editor di VBA. Sulla sinistra, facciamo doppio click su ThisWorkBook. Dalla finestra del codice selezioniamo nella casella di riepilogo sinistra Workbook, e in quella destra Open. Il codice VBA da incollarci è:

Private Sub Workbook_Open()
    ActiveWorkbook.Worksheets("Foglio1").Activate
    Range("D4").Select
    Selection.Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Le eventuali modifiche da fare sono solo due: invece di D4 bisogna scrivere la cella su cui applicare l’ordinamento (nel mio caso D4 è la prima casella che contiene i giorni calcolati mancanti al compleanno) e invece di Foglio1 bisogna scrivere il nome del foglio su cui è stata creata la tabella.

Quando si riapre il file Excel può visualizzare un avviso di protezione riguardante la presenza di macro. In tal caso basta cliccare sul pulsante Opzioni della barra dell’avviso e confermare che siamo sicuri del contenuto della cartella di lavoro, e la tabella sarà ordinata come programmato.

Attivazione macro

Abbastanza chiacchiere, ecco il file: Compleanni (469)
(l’archivio zippato contiene lo stesso file sia in versione Excel 2007 che versione Excel 2003, quest’ultima è stata creata da Excel 2007 quindi non posso essere sicuro al 100% che funzioni a dovere su versioni di Excel precedenti alla 2007)


Aggiungere una pagina Tag Cloud a wordpress

11 settembre 2008

Mi piaceva molto l’idea di Davidonzo di avere una pagina contentente l’intera nuvola di tag. In WordPress quest’opzione è piuttosto nascosta. Non sono esperto di WordPress, non ne conosco per nulla la struttura e la pagina del codex riservata ai tag è incompleta, mentre gli articoli trovati in rete sembrano una scopiazzatura mal adattata del codex stesso.

Eppure è molto semplice, bastano due semplici operazioni. Prima si crea un nuovo template. Un template è una serie di istruzioni che dicono a WordPress come visualizzare una pagina. Per creare un template il mio consiglio (be’, lo consiglia tutto il web…) è quello di prendere una pagina dalla cartella del proprio tema (ad esempio la pagina single.php che visualizza un singolo post del blog, oppure page.php che visualizza una singola pagina) e modificarla. Nel mio caso il tema non offre nessun template, pertanto ho aperto index.php: la pagina tuttofare del tema. Da questa ho eliminato tutto il codice centrale della pagina lasciando solo le funzioni essenziali per far apparire la pagina con la tag cloud come una normalissima pagina del blog.

Il risultato è questo:

<?php /*
Template Name: Tag Archive
*/ ?>
<?php get_header(); ?>
<div id="wrapper">
	<div id="content">
		<?php wp_tag_cloud('smallest=8&largest=20&number=0'); ?>
	</div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Il primo commento è obbligatorio perché da un nome al template. Le funzioni “get_” assieme ai due tag “div” servono a impostare l’aspetto e le funzionalità della pagina standard di WordPress (almeno nel mio tema basta questo).

La funzione “wp_tag_cloud” si preoccupa di scrivere la nuvola dei tag. Secondo la documentazione di WordPress i parametri che accetta sono:

  • smallest: la dimensione con cui apparirà il tag meno usato.
  • largest: la dimensione con cui apparirà l tag più usato.
  • unit: l’unità di misura con cui intepretare le dimensioni smallest e largest. Sono le stesse unità di misura accettate dallo standard CSS: pt (che è quella usata di default), px, em, ex, mm, %, e così via.
  • number: il numero massimo di tag da mostrare. Impostare a 0 per non dare alcun limite.
  • format: se impostato a “flat” separa ogni tag con uno spazio; “list” crea un elenco puntato; “array” non fa stampare il tag cloud ma restituisce un array da manipolare in PHP.
  • orderby: può valere “name” (ordina i tag per nome) o “count” (ordina i tag per frequenza di utilizzo).
  • order: imposta la modalità di ordinamento, “ASC” ordina in modo crescente (comportamento di default); “DESC” decrescente; “RAND” casuale.
  • exclude: esclude dal cloud i tag con gli ID specificati (es: exclude=1,5,25).
  • include: permette di specificare una lista di ID dei tag da visualizzare, gli altri tag saranno automaticamente esclusi.

Ovviamente è possibile fornire la stessa dimensione ai parametri smallest e largest se non si vuole che i tag abbiano dimensione proporzionale al loro utilizzo!

Tornando a noi, il template appena creato deve essere memorizzato nella directory del tema in uso; all’interno della directory di wordpress in “/wp-content/themes/(directory del tema)”. Il file deve avere estensione “php” e bisogna evitare di usare i nomi riservati di WordPress quali: single, page, tag, … per andare sicuri basta chiamare la pagina tagcloud.php.

Finita la parte tecnica, è possibile andare nella sezione di amministrazione di WordPress e scegliere Scrivi e poi Pagina. Dare un titolo alla pagina e lasciarne vuoto il contenuto. In basso, tra le opzioni della pagina, è possibile scegliere il template da assegnarle. Scegliere il template appena creato (se non avete cambiato il codice si chiamerà Tag Archive) e il gioco è fatto.

La pagina dovebbe essere raggiungibile tramite link (dipende dal tema utilizzato) e funzionare perfettamente.


TeamViewer: un’alternativa facile e gratuita a VNC per il controllo remoto

8 settembre 2008

La cosa più noiosa, quando hai un minimo di pratica col PC, è la gente che ti chiama per essere guidata a svolgere i compiti più assurdi. Come un tizio che voleva cancellare la cronologia di messenger perché la ragazza non doveva leggere.

Il controllo remoto permette ad una persona di comandare un PC a chilometri di distanza attraverso internet. Le soluzioni più famose in tal senso sono UltraVNC (gratuito) e RealVNC. Non volendo utilizzare una soluzione a pagamento quale RealVNC la scelta cade subito su UltraVNC, ma l’insidia è dietro l’angolo: come comportarsi in caso il PC da controllare (o peggio, entrambi) sia dietro ad un router? Sarebbe necessario aprire le porte del router verso UltraVNC. Ma se l’utente dall’altra parte vi chiede aiuto perché non sa cancellare la cronologia di messenger (e capita che voi lo guidate telefonicamente ma lui invece delle impostazioni di messenger si ritrova a pigiare a caso nelle impostazioni di Windows Explorer) sarà capace di modificare le impostazioni del router?

Ovviamente no.

Per caso, mi sono imbattuto in TeamViewer che funziona senza problemi anche dietro i router appoggiandosi a intermediari web offerti dal programma stesso. TeamViewer ci giunge in due pacchetti, entrambi gratuiti: la versione completa e il modulo cliente. La persona che vuole comandare l’altro PC deve scaricare la versione completa; la persona che vuole che il proprio PC sia comandato può scaricare la versione completa, ma il modulo cliente è più immediato e facile da usare.

Continua a leggere »


Incorporare le immagini di iTunes nelle tracce (ed usarle in altri programmi/lettori)

21 agosto 2008

Dopo aver regalato il mio iPod Nano mi è rimasto un iTunes pieno di canzoni (tutte belle taggate). Ho dunque comprato una SDHC da 8GB e trasferito (quasi) tutta la collezione sul mio N95, per poi ricordarmi che le illustrazioni degli album scaricate automaticamente da iTunes attraverso lo Store non vengono memorizzate all’interno di ogni singolo file ma in un database a parte.

Il che da una parte  buono perché evita di appesantire troppo i file (un’illustrazione può tranquillamente raggiungere i 500kb di peso), dall’altra vuol dire che solo iTunes e gli iPod/iPhone possono leggere tali illustrazioni (quando sincronizzati con iTunes).

Come esportare le illustrazioni di iTunes? Come visualizzarle in altri programmi (compreso il Nokia Music Player)? E soprattutto, perché non azzecco mai un pronostico sul calcio?

A due di queste tre domande dà risposta il cosiddetto iTunes COM for Windows SDK, una API che i programmatori possono sfruttare per interagire con iTunes. Questo articolo si riferisce ovviamente alla versione Windows di iTunes ed utilizza un’altra tecnologia poco usata: Windows Script Host. Leggendo la documentazione dell’iTunes COM si nota che non espone nessun metodo per la gestione dei pronostici di calcio, pertanto dovremmo limitarci a manipolare un po’ le illustrazioni degli album (qualche maligno direbbe che sarebbe anche il caso di disinstallare iTunes).

Bando alle ciance. Propongo uno script in linguaggio JScript che non fa altro che analizzare la libreria di iTunes. Quando trova un brano che ha un’illustrazione scaricata dallo Store, incorpora tale illustrazione all’interno della traccia. Lo script avvia iTunes automaticamente quando parte, ma è anche possibile avviare iTunes manualmente prima di eseguire lo script. In questo caso è anche possibile selezionare all’interno di iTunes una o più tracce (all’interno della libreria principale, di una playlist, o di una ricerca) e limitare l’elaborazione solo alle tracce selezionate. Se avete IrfanView installato nel PC è anche possibile ridimensionare le illustrazioni per far pesare meno i file. Lo script trova IrfanView se quest’ultimo è stato installato tramite il suo installer oppure se l’eseguibile di IrfanView e lo script risiedono nella stessa cartella. Alla fine dell’operazione viene visualizzato un file di log.

Scarica lo script: EmbedAlbumArt.js (4 KB)

Quasi dimenticavo: l’idea di utilizzare IrfanView per il ridimensionamento delle illustrazioni mi è venuta leggendo questo post.

Continua a leggere »


Ricomincio da tre

19 agosto 2008

… sperando che sia l’ultima volta :)