Technology Experience
.NET World

Un pizzico di Linq nel mio Technorati plug-in

La cosa più bella nello sviluppare piccole applicazioni opensource/freeware in autonomia è quella di poter cogliere l’occasione per studiare le nuove tecnologie, o i nuovi strumenti che i nuovi framework ci danno. Per esempio, ecco la schermata del mio WPF Technorati Plug-in for Windows Live Writer:

Assumiamo che la ListBox a sinistra sia popolata con una semplice List<string>. Tale lista di stringhe viene ritornata dal web-service di Technorati, che ci restituisce per l’appunto i primi 100 tags utilizzati su un determinato blog.

La nuova funzionalità che ho aggiunto permette all’utente di filtrare l’elenco dei tags per trovare quello che vuole aggiungere: invece di scorrere a mano i 100 tags, può scrivere parte della parola nella TextBox indicata dalla Label Tags Filter. Questo è stato realizzato in Linq:

1 void filterTagsTextBox_TextChanged(object sender, TextChangedEventArgs e) 2 { 3 string filter = filterTagsTextBox.Text; 4 5 if (!string.IsNullOrEmpty(filter)) 6 { 7 IEnumerable<string> filtered = Enumerable.Where 8 (_tagsList, n => n.ToLower().Contains(filter.ToLower())); 9 _filteredTags = new List<string>(filtered); 10 tagsListBox.ItemsSource = _filteredTags; 11 } 12 else 13 { 14 tagsListBox.ItemsSource = _tagsList; 15 } 16 17 foreach (string s in _selectedTags) 18 tagsListBox.SelectedItems.Add(s); 19 }

Alla linea 5 controllo se l’utente ha effettivamente indicato un filtro: se no, imposto la proprietà ItemsSource della ListBox al membro privato della classe _tagsList, che è la List<string> di cui parlavo prima, quella ritornata da Technorati.

Se invece l’utente ha indicato un filtro, ottengo un’istanza di IEnumerable<string> filtrata usando Linq:

IEnumerable<string> filtered = Enumerable.Where(_tagsList, n => n.ToLower().Contains(filter.ToLower()));

Con una sola riga ottengo il risultato voluto. Notare che uso il metodo ToLower(), per non fare differenza tra maiuscole/minuscole. Uso il metodo Contains(), così quello che scrivete nella TextBox viene cercato all’interno della stringa: può essere all’inizio, alla fine oppure in mezzo.

Alla linea 9 creo una nuova List<string> che viene riassegnata come ItemsSource della ListBox ed il gioco è fatto.

Alla linea 17 e 18 mi occupo di riselezionare via codice gli eventuali tags selezionati prima di applicare il filtro: cambiando ItemsSource, perdo tutti i SelectedItems, per cui devo andare a rimetterli io manualmente via codice.

Technorati Tags:   

Send to Kindle
Software

Questa volta WH4L mi ha reso incazzoso

Questa volta hanno superato il limite. Nulla da dire per la celerità nelle risposte, nella disponibilità e – dal punto di vista tecnico – sull’efficienza del servizio. Ma per quanto riguarda la piattaforma Sharepoint, WH4L lascia fortemente a desiderare. Seguite il mio consiglio: non affidatevi a WH4L per questo servizio! Non so se sono io sfigato e se invece a voi è andata meglio: io vi racconto la mia esperienza.

Ad aprile dell’anno scorso ho attivato Windows Sharepoint Services 3.0 sul mio hosting. Da quel giorno ho utilizzato Sharepoint per pubblicare un po’ di tutto:

  1. download dei freeware che ho scritto
  2. rapportini, fatture, documentazione varia (il tutto in un’area privata)
  3. altre cose più “leggere”: libri che ho letto, la mia raccolta di DVD

Nel corso di questi (quasi) 12 mesi, diverse volte ho trovato il server Sharepoint irraggiungibile: a volte ottenevo un errore 404, altre volte mi diceva che era impossibile connettersi al database, altre volte altri errori che mi erano più o meno sconosciuti. Ho sempre risolto aspettando un giorno, oppure aprendo un ticket presso l’assistenza: non so loro cosa facessero di preciso, comunque il tutto tornava a funzionare regolarmente.

Fino allo scorso weekend. Ancora una volta, il mio server Sharepoint non risponde. Li contatto e mi propongono di spostare il mio website su un altro server Sharepoint. Questa cosa non ha costi aggiuntivi, e dico loro di procedere. Nonostante questa operazione, alcune parti del sito danno ancora grossi problemi.

Li ricontatto, e mi dicono che alcuni parti risultano essere corrotte, e che l’unica soluzione è quella di restorare ripristinare un backup del Febbraio scorso. Un po’ rammaricato, dico loro di procedere.

Ma il backup – così dicono – non funziona, e mi propongono di restorare ripristinare un “very old backup” del 25 Luglio dell’anno scorso. Afflitto, dico loro di procedere. Nemmeno questa strada funziona, il backup non funziona per motivi che non conosco.

Morale: ho perso tutto il mio sito, liste ed elenchi compresi. Solo il mio elenco dei libri letti si è parzialmente salvato.

Una sola e piccola domanda: ma WH4L non dovrebbe fare backup giornalieri???

Alcune volte Zio Paperone su Topolino diceva: “Me tapino!“. Oggi lo dico io.

Technorati Tags:     

Send to Kindle
My daily work

Certi furbi a Milano

Qualche minuto fa, in Via Piacenza a Milano:

Il SUV Audi di colore nero blocca il passaggio al pullman ATM pieno di gente che – povero lui – non può fare altro che strombazzare per richiamare lo sciagurato proprietario dell’enorme veicolo inutile. Siamo in zona Corso Lodi/Porta Romana, zona centrale di Milano, per cui vi lascio immaginare.

L’ATM ha tante colpe, ma ogni tanto anche il cittadino non scherza!

Premio ‘Idiota del Giorno’.

Technorati Tags:    

Send to Kindle
Hardware

Il mio nuovo monitor: Samsung Syncmaster 2232BW

Come ben si ricorda la mia sorellina – che ha 13 anni che ho idea che diventerà una piccola tecnologa – fino a poco tempo fa ero solito dire: “Odio i monitor LCD, sono notevolmente inferiori ai CRT!“. Lo credo tutt’ora, ma alla fine ho ceduto e la voglia di prendermi un LCD 16:9 di un certo livello per godermi videogame e films è cresciuta pian piano. Il picco l’ho raggiunto sabato scorso: sono uscito e me lo sono preso.

Come recita il titolo, è un Samsung Syncmaster 2232BW. Caratteristiche principali:

  1. 22 pollici di diagonale
  2. 1680×1050 di risoluzione nativa
  3. 2ms di tempo di risposta (!)
  4. 170° di angolo di visuale
  5. connessione RGB e DVI: io ho usato quest’ultima

Il design è davvero bellissimo: la cornice nera intorno è stretta e la dimensione del pannello risalta in modo stupefacente. Tutto è laccato nero (sia il monitor in sè che la base) e dà al tutto un’aria molto più elegante.

Le prestazioni non mi hanno affatto deluso: niente da dire sotto Windows (sia XP che Vista). Entrambi i sistemi operativi hanno rilevato il monitor ed hanno cominciato ad usare la risoluzione nativa senza alcun problema.

Le prestazioni non mi hanno deluso nemmeno nei videogiochi, dove – si sa – il tempo di risposta è fondamentale per evitare l’effetto scia. Ho provato Test Drive Unlimited, Richard Burns Rally e Call of Duty 4. Non è che l’effetto scia sia scarso e quindi percepibile solo dai pignoli: l’effetto scia non esiste proprio!!!, e sembra di stare davanti ad un normale CRT. Spettacolare davvero!

Rispetto al mio vecchio 19″ CRT, questo è ovviamente molto meno profondo, è molto più leggero ed ho guadagnato un sacco di spazio sulla scrivania.

In conclusione, sono assolutamente soddisfatto, e non pensavo che un LCD mi rendesse così orgoglioso dell’acquisto. Ciò nonostante, penso che i CRT siano ancora validi per molti motivi, anche solo per il fatto che c’è un numero minore di parametri a cui dare retta: il tempo di risposta nemmeno esiste, l’angolo di visuale neppure, la risoluzione è maggiore, etc. etc. E poi, con gli LCD l’incubo del pixel bruciato è sempre dietro l’angolo, e non è cosa da poco. Incrocio le dita.

Technorati Tags:    

Send to Kindle
Software

Il mio sito Sharepoint è giù

Il mio sito Sharepoint ospita fra le altre cose alcuni download di utility freeware che qualcuno di voi ha scaricato ed utilizza regolarmente. Purtroppo pare che durante il weekend qualcosa sia andato storto ed il sito sembra essere corrotto – e non so bene il perchè. E’ tutto oggi che sono in contatto con l’assistenza tecnica di WebHosting4Life che, lo devo dire, è veloce nelle risposte, cortese ed efficiente.

Prima mi hanno trasferito il sito enjoy.vivendobyte.net da un server WSS ad un altro.
Adesso mi stanno ripristinando un backup del 30 Gennaio scorso, perchè pare che la situazione sia più grave del previsto. Speriamo bene!

Come dicevo questa mattina ad Emanuele sul forum di UGIdotNET, WH4L è assolutamente consigliabile: non c’è stato giorno in cui il mio sito o il mio blog fosse irraggiungibile.

Le cose cambiano però quando si tratta di Sharepoint: se dovessi azzardare una statistica, direi che su 100 giorni totali, in 20 di questi il sito WSS era giù, per un motivo o per l’altro. Un po’ troppo, porca miseria, o no?

Technorati Tags:    

Send to Kindle
Hardware

Vendesi Monitor Samsung Syncmaster 957p

Era il mio monitor CRT, fino a ieri. E’ un monitor 19″, che arriva fino a 2048×1536. Io l’ho sempre usato a 1600×1200. Condizioni ottimali, non mi ha mai dato alcun problema. Lo vendo perchè ieri mattina ho acquistato il mio nuovo LCD e quindi per forza di cose lo devo scartare.

Connessione esclusivamente RGB. Ci si può connettere via USB per regolarne le impostazioni via software. E’ un monitor, lo dico sinceramente, vecchio – nel senso che è stato acquistato circa 8 anni fa. Altrettanto sinceramente vi dico che è praticamente perfetto: lo schermo non ha un graffio, non mi ha mai dato alcun tipo di problema. E’ un monitor a cui sono anche un pochino affezionato, spero di non dovermene pentire separandomene.

Se siete interessati, contattatemi via Messenger (per chi ha il contatto) oppure via e-mail.
Se entro 3-4 giorni non sento nessuno, lo metterò su ebay.it e ve ne darò notizia qui.

Il prezzo? Ancora da decidere: al miglior offerente!

Grazie per l’attenzione!!!

Technorati Tags:   

Send to Kindle
.NET World

Visual Studio Dark non sarebbe male se…

Anche io sono cascato nel “tranello” di Emanuele. Tranello nel senso buono, sia chiaro. Ho scaricato il file emadark.zip e ho provato ad applicarlo al mio Visual Studio 2008 per farlo diventare dark.

Non è male, anche se bisogna farci l’abitudine. Sarà pur vero che lo sfondo nero aiuta la lettura, però secondo me c’è un problema di fondo. Switchare da un Dark Visual Studio a un qualsiasi altro software che adotta il bianco, è imho una mazzata per gli occhi.

Mi capita praticamente sempre di lavorare con Visual Studio, ed avere in contemporanea aperti Adobe Reader, oppure Word, oppure Omea Reader, oppure un sacco di altri software e passare dal bianco al nero (e viceversa) è piuttosto traumatico. Quando si passa un po’ di tempo ad editare codice in stile dark, il tutto rimane impresso sulla retìna, e quando si passa al bianco si vede per qualche secondo il residuo dell’immagine e sinceramente lo trovo davvero fastidioso.

La morale è una sola.

Se tutti gli applicativi avessero l’ambiente con lo sfondo nero, allora sì che andrebbe bene, sarebbe tutto uniforme, ma così mi vanno in palla gli occhi.

Technorati Tags:   

Send to Kindle
IV del Venerdì

[IV] del Venerdì (30)

Il 28 Febbraio prossimo compirò 0x100000 anni. Purtroppo non potrò godermelo affatto, perchè il 22 Febbraio, 6 giorni prima, verrò operato in day-hospital, per cui non sarà di certo la migliore delle mie giornate. Ma non finirà lì: dovrò prendermi 15-20 giorni di riposo. Niente lavoro, niente colleghi, niente chiaccherate, niente broccolaggi, il vuoto assoluto.

Tutto questo mi ricorda molto quello che mi è successo ad Aprile 2006, quando venni operato per lo stesso motivo. Come al solito, quando si pensa di essersi liberati di un problema, ecco che questo rispunta fuori. La cosa triste è che non solo mi perderò una eventuale festa di compleanno (mi toccherà anticiparla o posticiparla), ma mi perderò anche il lancio di Visual Studio 2008, che sembra una cosa banale, ma è una di quelle occasioni per ritrovarsi con gli amici di sempre per ridere e scherzare assieme.

Come mi accadde due anni fa, quindi, avrò molto tempo per:

  1. leggere
  2. bloggare
  3. guardare films
  4. cazzeggiare
  5. chattare
  6. scrivere codice
  7. guidare (virtualmente)
  8. volare (virtualmente)
  9. dormire
  10. …altro…

Ovviamente, non necessariamente in quest’ordine. E poi – non si sa mai – magari mi godrò pure il mio prossimo monitor LCD che ho intenzione di comprare – giustappunto – entro il mio compleanno.

Technorati Tags:

Send to Kindle
Community

La blogosfera continua a crescere

Non ho idea di quante persone aprano il loro blog ogni giorno. Posso immaginare che sia un numero inimmaginabile. So che potrei conoscerlo googlando un po’ e cercando le ultime statistiche, ma preferisco ignorarlo. Tanto…chemme frega?

So solo una cosa: negli ultimi giorni ho sottoscritto due blog freschi freschi, nuovi nuovi.

Il primo è del Mamauro, creatura sagace e pungente, intelligente e folle a modo suo, volubile ed astratta, ma sufficientemente reale da star seduto (quasi) davanti a me tutti i giorni. Ebbene sì: il Mamauro è un mio collega. Non aspettatevi da lui un blog tecnico. Il Mamauro non mi approverebbe nemmeno il chemme qui sopra: secondo voi – altrimenti – perchè scrivere uno scempio simile? Il resto è tutto dire.

Il secondo è di un collega di mio fratello. Non lo conosco di persona, so che si chiama Michele, ma ho letto i suoi ultimi post e lo trovo interessante. Qui si parla di normali giornate lavorative, di Sharepoint, di serate passate a Milano e di altro ancora. Persino di scatti d’ira.

La blogosfera continua a crescere. Buon divertimento.

Blog del Mamauro : http://ilmamauro.blogspot.com

Blog di Michele : http://blog.mgutman.net/

Technorati Tags:  

Send to Kindle
.NET World

Le keywork namespace e using sono meravigliose!

Il .NET Framework è composto da una moltitudine di classi, tipi, interfacce, enum. Saremmo spaesati se non potessimo esprimere in alcun modo un concetto come: ok, adesso fammi lavorare solo con questa parte del framework. La keywork using ce lo permette.

Dalle migliaia e migliaia di classi del framework, la using seleziona/filtra solo la parte che ci interessa: System, System.Data, System.Windows, System.Xml, System.Security e così via. Saremmo tutti più confusi se non esistesse la using, e tantomeno il suo amico namespace. Avremmo tutti gli oggetti in un unico grande calderone, tutte le classi mischiate assieme, senza alcuna suddivisione logica.

La using è molto comoda anche solo per leggere il codice, vostro o altrui. E’ sufficiente aprire un file .cs, dare un’occhiata all’elenco di using dichiarate all’inizio ed avete subito l’idea chiara e precisa su cosa fa quel pezzo di codice che avete sotto il naso. Vedete System.Xml.Serialization? Da qualche parte il codice serializza o deserializza qualcosa. Vedete System.IO? Da qualche parte il codice accede a file system, utilizza uno stream in lettura o scrittura e così via.

E’ importante che l’elenco degli using sia il più breve possibile? Beh, non fatene di certo una regola, ma io personalmente credo di sì. Se avete un progetto con 20 classi – ciascuna dichiarata in un namespace diverso – avete bisogno di 20 using per utilizzare tutte quelle classi. E’ importante accorpare le classi che hanno ed espongono la stessa logica (implementata in modi diversi), che hanno forte dipendenza fra loro, che logicamente fanno parte dello stesso dominio applicativo. E’ importante che con l’utilizzo di una sola using entrino in gioco un insieme di classi coerenti e collaborative fra loro. Supponiamo di digitare using VivendoByte.Fatturazione.UserInterfaceWPF: vi aspettereste di trovare in questo namespace una classe chiamata NetworkStreamManager? Probabilmente no. Nessuno ci dà delle regole per utilizzare le keywork namespace e using: tutto è dato dal nostro buon senso, e tutto deve alla fine portare alla realizzazione di un’applicazione il cui design sia chiaro, semplice e limpido da leggere: sia per noi, sia per gli altri che un giorno metteranno mano al nostro codice.

Ricordatevelo, quindi: la namespace e la using sono nostre amiche.

Technorati Tags:    

Send to Kindle