Technology Experience
Community

Serata in Valtellina: grazie a tutti!!!

Ero davvero stanco, ma ormai le nostre mangiate in Valtellina sono diventate un’appuntamento immancabile, per cui volevo esserci a tutti i costi. E’ stato davvero divertente, e la compagnia ottima come al solito.

Mi ha fatto piacere vedere come ormai al nostro gruppo non si uniscono solo dotnettiani, ma ragazze, fidanzate e mogli, grazie alle quali ormai è stato sfatato il mito che dice che quando un gruppo di developer si riunisce a tavola si parla solo di lavoro, di tecnologia e di programmazione. Oh beh, forse un pochino sì, ma con quel tono scanzonato che è tutto fuorchè serioso.

Perciò grazie davvero a tutti!!!

Technorati Tags:

Send to Kindle
My daily work

Anche negli hotel l’hanno capito!

Appesa alla porta della mia camera nell’hotel di Atene c’era un cartoncino…

La conoscenza è il primo passo per la sicurezza.

Questo per confermare, se ce ne fosse bisogno, che sono d’accordo con quanto dice Raffaele in questo post di qualche tempo fa, che ha scatenato i soliti flame.

Versione breve: l’utente finale è l’anello più debole della sicurezza. E’ quello che apre links pericolosi e allegati inaffidabili. E’ quello che usa software insicuri e attua – magari senza volerlo – procedure pericolose per la stabilità del sistema. E come tale va educato. La conoscenza, il sapere come operare di fronte ad una situazione critica, è il primo passo per usare il proprio PC in modo sicuro. Uno può installare tutti gli antivirus che vuole, tutti gli antispyware che trova, ma se alla fine lancia un file .exe arrivato via posta, o casca nel phishing, nessuno può farci niente.

E’ solo colpa sua.

Send to Kindle
Software

Plug-in di AVG per Internet Explorer 7

Un paio di settimane fa mi è scaduta stava per scadere la licenza di AVG, il noto antivirus. Dopo averci pensato un po’ di tempo ho deciso di rinnovarla per altri due anni. Il motivo del mio ripensamento era dovuto al fatto che non capivo esattamente le differenze sostanziali tra la versione freeware e la versione a pagamento. Alla fine, preso da mille impegni (viaggio ad Atene, lavoro, lavoro, lavoro) ho tirato fuori la carta di credito senza battere ciglio. Ho anche preso la palla al balzo per scaricare ed installare la versione più recente, la 8.0.

Nei giorni successivi all’installazione, ho notato un certo rallentamento di Internet Explorer. Rallentamento che notavo specialmente nell’apertura del browser: appariva la finestra ma prima che potesse diventare effettivamente usabile doveva passare qualche secondo. Inizialmente ho pensato a diversi problemi, ma poi…quando ho cominciato a fare le prime googlate sul Web, ho notato questo:

Notare i riquadri arancioni. Di fianco ad ogni link proposto da Google è apparsa un’icona che prima non c’era mai stata. E’ un’icona che inizialmente (appena la pagina compare nel browser) è una rotella che gira, e che dopo un po’ diventa un segno di spunta verde. E se ci si va sopra con il mouse appare un tooltip che, guarda caso, arriva proprio da AVG:

In pratica, è un plug-in di AVG per Internet Explorer che dice se il sito linkato è sicuro oppure no.

Mi sono quindi chiesto se fosse possibile disabilitare questo plug-in, e la risposta è sì. Basta aprire Internet Explorer 7, andare su Strumenti –> Opzioni Internet –> Programmi –> Gestione componenti aggiuntivi, ricercare la voce AVG Safe Search ed attivare l’option button Disattiva.

Ed il gioco è fatto! Tra parentesi, chissà quanti componenti partono insieme ad IE e che sarebbe utile disattivare per alleggerire la nostra navigazione!

Technorati Tags:   

Send to Kindle
.NET World

Uploader Windows Sharepoint Services

I cinque post che ho scritto nelle settimane scorse su Sharepoint non sono solo dovute allo studio e alla voglia di imparare Sharepoint da un punto di vista dello sviluppatore, ma mi sono serviti anche per sviluppare un tool, che ho battezzato Uploader Windows Sharepoint Services. Uno screenshot lo potete vedere qui sotto.

Questo tool permette l’upload di un file locale in una document library di Sharepoint. E’ ovviamente possibile impostare numerosi parametri, più o meno necessari:

  1. server WSS
  2. info per l’autenticazione (dominio, username e password)
  3. path del file locale
  4. nome del website, nome della document library e path remoti
  5. un campo notes per aggiornare i metadati sulla document library

La cosa secondo me interessante è che è possibile inviare un file semplicemente cliccandoci sopra con il pulsante destro, come si vede dallo screenshot qui sotto.

Non ho ancora reso pubblico nulla, perchè per adesso lo utilizzo io a scopo personale, ma se dovesse essere utile, fatemelo sapere. Lo purifico di tutte le informazioni personali e ne metto i sorgenti da qualche parte.

Comunque sia, è davvero comodo, perchè adesso se voglio mettere qualcosa su Sharepoint non devo più aprire un browser e fare tutte le operazioni necessarie. Basta trovare il file sul mio PC e compilare qualche TextBox. Molto più veloce e pratico!

Technorati Tags:    

Send to Kindle
My personal life

[2] In differita da Atene…

Post scritto Domenica 15 Giugno 2008, ore 9:00 circa.
Camera 707, Hotel Zinon, Atene, Grecia.
Pubblicato oggi per problemi di connettività.

Ultimo giorno ad Atene.

Alla fine, lo scopo principale per cui siamo venuti qua, l’Icarus AeroExpo, ce lo siamo bellamente saltato. Un po’ l’assoluta ignoranza delle persone del posto per avere indicazioni sui mezzi di trasporto ed un po’ l’assoluta mancanza di manifesti e pubblicità in giro ci ha fatto desistere. E’ un po’ come se a Milano ci fosse lo SMAU e nessuno dell’ATM fosse in grado di spiegarmi come arrivarci: ha dell’incredibile. Vabbè.

Abbiamo avuto tutto da guadagnarci: invece di andare a guardare aerei a volteggiare in cielo – cosa fattibilissima anche in Italia, e forse è anche meglio – siamo andati a farci un bagno al mare. Non so se l’ho già detto, ma qua fa un fottuto caldo, passiamo tranquillamente i 30°C, e quindi non ci abbiamo pensato due volte. Tra l’altro, la spiaggia è raggiungibile (quasi) con la metropolitana, e quindi basta solo volerlo.

Abbiamo visitato la zona del porto, pieni di minuscoli negozietti ultra-colorati che sembra di essere a Shangai. Ieri sera abbiamo visitato il quartiere di Monastiraki, imperdibile secondo me anche solo per i ristoranti all’aperto davvero ottimi.

A proposito di cibo, ho ovviamente assaggiato la feta e – se ricordo bene il nome – il pork al souvrachi, una specie di spiedino con patate, paprika e riso in un unico piatto. Buonissimo. Io ve lo do come consiglio da amico: se volete mangiare ad Atene, buttatevi a Monastiraki, qualitativamente molto migliore della Plaka.

Adesso ci aspetta la colazione, poi pian piano cominciamo le procedure per il rientro in Italia, dove sappiamo che, ahimè, ci aspetta l’inverno.

Technorati Tags:    

Send to Kindle
My personal life

[1] In diretta da Atene…

La giornata qui ad Atene per me è appena cominciata. Qui sono le ore 8:48 ore locali, il sole promette bene. E’ il mio terzo giorno qui nella capitale greca, e il mio giudizio su di lei è in crescendo: il primo giorno – sarà che io e mio fratello eravamo un po’ stanchi – è stato insufficiente, ieri è andato meglio ed oggi si vedrà.

Alla fine è successa anche a me la stessa cosa accaduta al mio collega Stefano, ne parlavamo – mi pare – il giorno prima della mia partenza. Dopo essermi preparato a casa 8 batterie AA di ricambio da usare per la mia macchina digitale, ieri le ho usate per la prima volta…scatto una ventina di fotografie…e dopo il display lampeggia inesorabile: “Cambiare le batterie“. Ho provato tutte le combinazione e permutazioni possibili (cit.), ma niente da fare. La prima reazione è stata di rabbia, ma dopo mi sono calmato: sono entrato in un negozio e ho ahimè comprato un pacchetto di batterie nuove di zecca.

Arriviamo al sodo. La cosa che più mi colpisce di Atene è probabilmente la sua doppia faccia di povertà e allo stesso tempo di lusso. Ci sono vie dove sembra di essere in zona di guerra…cortili pieni di automobili sfasciate ed abbandonate, negozi con saracinesche guaste o sfondate, mentre un po’ più in là ci sono gioiellerie o centri commerciali lussuosi e cari come la Rinascente di Milano. Ci sono zone turistiche come il quartiere della Plaka pieni di negozietti di souvenir, ma basta magari girare l’angolo per ritrovarsi in una via senza lampioni che non si sa se è sicura o se finirai con uno o più coltelli nella schiena. E non pensate che abbia girato la periferia o chissà cosa…anche vicino al parlamento si possono fare incontri quantomeno improbabili con personaggi ancora più strani.

In parecchie vie c’è caos e confusione. Le automobili non hanno alcun ritegno a sgommare, a strombazzare, sembra il ritmo frenetico di una normale grossa città delle nostre. A dispetto del tempo in Italia, qua fortunatamente è tutto molto soleggiato, perciò la camminata fino al Partenone, sull’Acropoli, è stata faticosa. E mi sono abbronzato.

Adesso vi lascio, la mia giornata sta cominciando a tutti gli effetti. L’hotel in cui mi trovo ha a disposizione una bella connessione ADSL gratuita, e questo mi ha permesso di pubblicare già le foto scattate sino ad oggi. Se ne aggiungeranno altre anche oggi, ma intanto, come al solito, le potete trovare sul mio sito Flickr.

Send to Kindle
My daily work

Quando una cosa la si potrebbe architettare meglio!

Da qualche mese ho modificato il mio profilo sul sito Telepass. Gli scopi erano essenzialmente tre:

  1. evitare che mi arrivasse la fattura in formato cartaceo (risparmiare carta fa bene all’ambiente)
  2. poter controllare anche da remoto la mia situazione (fa sempre comodo)
  3. ovviamente ricevere la fattura in formato elettronico, pensando (ma forse sono troppo furbo) che arrivasse in allegato all’e-mail con la quale mi sono sottoscritto al servizio

Invece no. Le fatture Telepass sono trimestrali. L’altra sera ho ricevuto l’e-mail sul mio account dedicato che mi informava dell’arrivo di una nuova fattura. Molto bene, mi sono detto subito! Molto male, mi sono detto un secondo dopo. Perchè? Perchè l’e-mail non ha alcun allegato, e per vedere e stampare la fattura devo:

  1. aprire un browser
  2. loggarmi
  3. raggiungere la pagina delle mie fatture
  4. cliccare a mano sull’ultima fattura emessa
  5. aspettare che mi si apra una nuova finestra con il pdf
  6. lanciare la stampa della sola prima pagina) della fattura

Oddio…un incubo. Odio le pagine Web. Le odio.

Non era più comodo inserire il pdf direttamente nell’e-mail???

Se fossi un malato di mente (e lo sono eccome) potrei addirittura farmi un software che monitorizza la casella e-mail, e quando ne arriva una, estrae l’allegato e ne lancia la stampa in automatico, senza alcun intervento umano. Lo sono – malato di mente, dico – perchè un software pensato così ce l’ho già. Peccato.

Odio le pagine Web, perchè comunicano solo con gli occhi di un utente ma non favoriscono integrazione/dialogo/interoperabilità/scambio con chichessia. Odio le pagine Web, e dovrebbero essere usate solo per siti “brochure”. Quando un sito deve (e tutti dovrebbero) esporre funzionalità più complesse, dovrebbe aprirsi al mondo, così da poter essere sfruttati meglio. Odio le pagine Web, perchè non si adattano ai dispositivi mobili: sì, ok, tecnologicamente parlando si può anche, ma chi lo fa davvero??? Non ditemi “Sì, qualcuno lo fa, Igor“, ditemi chi lo fa davvero. Se quella fattura fosse allegata ad un’e-mail, la riceverei comunque, anche su un palmare o su un cellulare: vederla magari sarà difficile, ma almeno la ricevo. Della fattura effettivamente chi se ne frega, ma se fosse un pdf di un biglietto aereo? O di un treno? O l’ingresso ad una fiera?

Ve l’ho già detto? Odio le pagine Web, soprattutto quando sono usate male.

Send to Kindle
.NET World

Sharepoint: quali campi possiamo usare nel CAML ?

Una query CAML può far riferimento ad un gran numero di campi, sia per effettuare ordinamenti, sia per applicare filtri. Inizialmente pensavo che il nome di questi campi potesse essere trovato semplicemente sfogliando la document library da Internet Explorer. In realtà quello che si legge nelle ColumnHeaders navigando un website Sharepoint è il Display Name. Nelle query CAML bisogna far riferimento ai campi attraverso il loro Internal Name.

Dove trovare questo famigerato Internal Name? Il buon Vincent Rothwell, MCTS di Sharepoint, ha redatto sul suo blog questa bella tabella HTML che elenca Display Name, Internal Name, Guid e Type dei campi di una Document Library. Basta sfogliarla, trovare il campo desiderato e riportare il tutto nella query CAML.

Technorati Tags:   

Send to Kindle
.NET World

Sharepoint: Ottenere l’ID di un file pubblicato in una document library

Attraverso CAML possiamo fare tutta una serie di query che vanno ad interrogare il contenuto di una document library. Per esempio, se volessimo aggiornare i metadati di un file pubblicato in una document library dobbiamo prima averne l’ID univoco. Questo lo abbiamo visto precedentemente, quando abbiamo ottenuto l’ID dell’ultimo file uploadato.

Quale CAML dobbiamo scrivere per sapere l’ID di un qualsiasi file?
E’ molto semplice:

<Where> <Eq> <FieldRef Name="FileLeafRef" /> <Value Type="Text">{0}</Value> </Eq> </Where>

Se usiamo questo CAML in un metodo GetIDFromFilename, il risultato è servito:

1 public int GetIDFromFilename(string listName, string folder, string fileName) 2 { 3 Lists l = new Lists(); 4 l.Credentials = new NetworkCredential(this.Username, this.Password, this.Domain); 5 6 XmlDocument doc = new XmlDocument(); 7 XmlNode query = doc.CreateNode(XmlNodeType.Element, "Query", string.Empty); 8 XmlNode options = doc.CreateNode(XmlNodeType.Element, "QueryOptions", string.Empty); 9 10 if(!string.IsNullOrEmpty(folder)) 11 options.InnerXml = string.Format("<Folder>{0}</Folder>", folder); 12 13 string xml = ResourceHelper.GetResourceContent("UploaderMOSS.XML.GetIDFromFilenameQuery.xml"); 14 query.InnerXml = string.Format(xml, fileName); 15 16 XmlNode node = l.GetListItems(listName, null, query, null, "1", options, null); 17 18 node = node.FirstChild.NextSibling.FirstChild.NextSibling; 19 20 if (node != null) 21 { 22 int idFile = Int32.Parse(node.Attributes["ows_ID"].Value); 23 this.CacheFilesID.Add(fileName, idFile); 24 return idFile; 25 } 26 else 27 return 0; 28 }

I parametri richiesti in input dal metodo sono, nell’ordine: il nome della lista, il path ed il nome del file. Il risultato è un banale int, che può valere 0 (zero) nel caso in cui chiediamo l’ID di un file che non esiste. Se il file è alla root della document library, il parametro folder può essere string.Empty. La query CAML che abbiamo visto prima viene utilizzata alle righe 13 e 14.

Se il file si trova annidato in diversi subfolders della document library, dobbiamo utilizzare – come già ho detto prima – il parametro folder. Internamente, il metodo costruisce un blocco <QueryOptions><Folder>{0}</Folder></QueryOptions>, dove viene iniettato il path (es: “Folder1/Folder2/Folder”, escludendo il nome del file). Questo blocco <QueryOptions> viene passato al metodo GetListItems del web-service di cui vi ho parlato nei post precedenti.

Conclusione

Detto questo, possiamo scrivere un metodo Main come questo:

static void Main(string[] args) { ConnectorWSS wss = new ConnectorWSS(); wss.UploadDocument("D:\Documenti\test_uploading.txt", "igordamiani/Documenti/test_uploading.txt"); int idFile = wss.GetIDFromFilename("Documenti", string.Empty, "test_uploading.txt"); Dictionary<string, string> values = new Dictionary<string, string>(); values.Add("Note", "Upload di test!"); wss.UpdateDocumentMetadata("Documenti", idFile, values); }

Con poche righe di codice, pubblico un file sulla document library di Sharepoint, ne ottengo l’ID e salvo i metadati costruendo prima un Dictionary<string, string> appositamente.

Technorati Tags:     

Send to Kindle