Technology Experience
Software

Aggiornamenti in vista, ma da fare a casa…

Giovedì o venerdì tornerò a casa, e ritornerò a poter navigare con la mia bella ADSL a tutta velocità. Ci sono già due cose che bollono in pentola: Subtext 2.0 e Visual Studio 2008 Service Pack 1.

Entrambi voglio guardarli per bene a casa: il primo prevede l’aggiornamento della piattaforma su cui gira il mio blog, e quindi è mission-critical. 🙂

Il secondo invece prevede un download da 536Kb, e per il resto viene scaricato al momento, e via GPRS non è proprio il massimo.

Technorati Tags:   

Send to Kindle
Hardware

Le reti Wi-Fi non hanno futuro? Ma scherziamo???

Sono rimasto abbastanza perplesso nel leggere la rubrica Prima Pagina di Roberto Dadda sul numero di Settembre di PC Magazine. Il titolo dell’articolo è “Wi-Fi ha davvero un futuro?”. Secondo lui, il Wi-Fi non ha senso di esistere, e tutti dovremmo utilizzare al suo posto le reti cellulari, che sono già pronte, funzionano e hanno una copertura praticamente quasi completa.

Ehm, forse qualcosa mi sfugge, ma non sono assolutamente d’accordo. Credo che dovremmo spiegare a Roberto Dadda che le reti Wi-Fi e le reti cellulari hanno scopi e capacità totalmente differenti. Queste ultime servono esclusivamente alla connessione su Internet tramite GSM/GPRS/UMTS e via dicendo. Punto. Non fanno altro. Danno l’accesso alla Rete in auto, in treno, in montagna, su una barca, etc. etc.

Le reti Wi-Fi invece servono per connettersi principalmente all’interno di una LAN locale, magari in ambiti ristretti come una casa o un ufficio. La connessione Wi-Fi si stabilisce tra un dispositivo mobile (notebook, palmare, smartphone) ed un router Wi-Fi. Ma non è assolutamente detto che tramite Wi-Fi si vada direttamente su Internet. E’ invece probabile che vedrò gli altri PC della LAN, potrò accedere alle condivisioni di rete, alle stampanti: la realtà è che la connessione tramite Wi-Fi mi dà un indirizzo IP all’interno di una LAN, con tutte le conseguenze del caso. Ma, lo ripeto, non è assolutamente detto che questo determini automaticamente l’accesso ad Internet. Che poi ci sia la possibilità di girare per il mondo e trovare reti Wi-Fi non protette è un altro discorso: è solo una possibilità, e credo tra l’altro anche illegale.

Penso quindi che reti Wi-Fi e reti cellulari abbiano scopi totalmente differenti, e non c’è alcun motivo valido per eliminare l’una o l’altra. Ora, caro Roberto, compito per il mese prossimo: prenda un foglio A4 e lo divida in due parti verticalmente. Da una parte scriva le caratteristiche di una rete Wi-Fi; dall’altra faccia la stessa cosa, ma per le reti cellulari. Vedrà che sono due mondi molto diversi. Parliamone?

Technorati Tags:  

Send to Kindle
My personal life

Ok la tecnologia in vacanza, ma occhio a dove la portate!

Nel post precedente mi sono divertito a raccontarvi perchè anche in vacanza io mi porto sempre le mie fedeli apparecchiature digitali. Ma ci sono ovviamente anche i contro di questa mia scelta. Una disavventura l’ho vissuta oggi, e non posso che raccontarvela.

Oggi io, mio fratello, Stefano, Ferdi, Antonella e Sabrina ci siamo avventurati in una gita alle isole Tremiti, un piccolo arcipelago proprio al largo del Gargano, in Puglia, chiaramente. Vi risparmio il viaggio all’andata con il mare mosso. L’acqua di queste isole è davvero spettacolare: sono sempre venuto in Puglia nelle mie vacanze estive, ma era la prima volta che visitavo questo locazione che vi consiglio assolutamente.

La cosa interessante delle isole Tremiti è che è possibile noleggiare un gommone per un’intera giornata, cosicchè è possibile visitare in tutta libertà quello che si vuole, si può fare il bagno sfruttando spiaggette incantevoli, si possono scattare fotografie, si può ammirare il fondale sottomarino, etc. etc.

Potevo quindi perdere l’occasione per portarmi a dietro la mia macchina digitale? Certo che no. Però i viaggi in mare, anche se vicino alla costa, sono abbastanza rischiosi, soprattutto quando si incrociano altri gommoni o imbarcazioni più grandi. E’ basta un’onda un po’ più grossa delle altre per distruggere tutto quello che avevamo a bordo di elettronico/digitale: la mia fotocamera è partita, tre cellulari ci hanno salutato, un iPod è finito ko per annegamento. Quindi, è pur vero che è comodo avere tutte le nostre apparecchiature a disposizione, ma portarsele in giro anche in posti “ostili” forse è un po’ troppo esagerato. Oddio, credo che non ci sia nulla di male nel portarsi una fotocamera digitale in mare, ma forse una custodia impermeabile avrebbe fatto davvero comodo!

Technorati Tags:

Send to Kindle
My personal life

Ecco perchè un notebook serve anche in vacanza

Credo che molte persone sbaglino ad associare l’idea che uno non riesce a staccarsi dal lavoro se decide di portare il suo notebook durante la sua vacanza estiva. Oggi i notebook sono talmente potenti e versatili che possono servire in molte occasioni diverse: possono servire a svuotare la SD della fotocamera, può essere utile per visionare i propri filmati girati con la videocamera, si possono usare per ascoltare musica o per vedere un buon film. Ed a patto di avere una buona connettività (cosa che io non ho in questo momento) si può prendere la posta elettronica, si possono uploadare fotografie, si può bloggare, scrivere, recuperare ogni tipo di informazione e via dicendo. Notebook – mi spiace – non è per forza lavoro, anzi, tutto l’opposto. Perciò, cari amici, non tediatemi se adesso, all’una e mezza del mattino, sono qui a bloggare aspettando che mi arrivi un po’ di sonno, dopo la mega-mangiata di pesce di questa sera.

E’ tantissimi anni che faccio campeggio, ed ogni anno che passa vedo crescere in modo sensibile il numero di notebook utilizzati dalla gente sotto le verande delle roulotte, dei camper e dei bungalow. Devo dire che sono contento di ciò, perchè questo vuol dire che sempre più persone apprezzano l’apporto che l’informatica e le tecnologie che le ruotano attorno hanno dato alla loro vita quotidiana. Persino mia mamma – che con i computer ha sempre avuoto poco a che fare – cominciava a sentire la mancanza di Google, perciò gliel’ho dovuto portare qua io.

E poi, non potete mai sapere se la vostra vacanza filerà liscia fino in fondo oppure no: potreste trovare maltempo, o magari potreste ritrovarvi con il piede fuori uso per tre giorni. In queste situazioni, vi ritrovereste con un sacco di tempo libero in più: quale modo migliore di riempire il tempo a vostra disposizione se non quello di dedicarvi al vostro passatempo preferito?

Technorati Tags:  

Send to Kindle
My personal life

Il cielo è azzurro sopra Milano, e spero anche al Sud!

E, devo dirlo, anche nel mio cuore. Oggi è il mio ultimo giorno di lavoro prima delle ferie estive.

Come ormai è abitudine, mi aspettano tre settimane vicino a Rodi Garganico. Nonostante sia immerso nel mare e agli alberi, mi porterò tutto quello che un buon blogger dovrebbe portarsi: notebook, connessione Web, fotocamera, videocamera e tutto il resto. Così nelle giornate di cattivo tempo, o se ne avrò voglia in ogni caso, tutta la mia attrezzatura sarà lì sempre con me.

Le vacanze quest’anno arrivano un pochino in ritardo con il mio metabolismo: avrei preferito che fossero un mesetto fa. E’ vero, sono stato ad Atene una manciata di giorni, ma mica è servita a staccarmi adeguatamente dal lavoro. Comunque sia, il pomeriggio sta terminando e poi finalmente mi potrò staccare dall’ambiente di lavoro, dai miei palmari, da tutte le apparecchiature elettriche ed elettroniche che mi circondano, da files PDF di ogni tipo, dai clienti al telefono. Al diavolo tutto.

E chi lo sa, magari ci scappa un’altra visita a Gravina in Puglia, e magari un altro post alle 4 del mattino come quello dell’anno scorso.

Send to Kindle
.NET World

Quiz: perchè NullReferenceException ?

Questo metodo NetworkingSettings() viene eseguito all’avvio di un’applicazione su Pocket PC 2003 su cui è installato il Compact Framework 2.0. Lo scopo, come si vede dal codice che ho scritto, è quello di creare nel registro di configurazione del dispositivo una certa chiave dentro HKLMCommTcpIphosts. Purtroppo ho inserito queste righe nella versione finale del software, versione che è stata distribuita su una ventina di palmati Pocket PC, con il risultato di scatenare un’eccezione NullReferenceException non gestita.

1 public void NetworkingSettings() 2 { 3 RegistryKey key = Registry.LocalMachine.OpenSubKey(@"CommTcpIphosts ome_server"); 4 5 if (key == null) 6 { 7 key = Registry.LocalMachine.OpenSubKey(@"CommTcpIphosts", true); 8 key = key.CreateSubKey("nome_server"); 9 10 byte[] ip = new byte[4] 11 { 12 150, 80, 10, 196 13 }; 14 15 key.SetValue("ipaddr", ip, RegistryValueKind.Binary); 16 key.Close(); 17 } 18 }

Rispetto al codice in produzione ho cambiato alcune cose minimali: innanzitutto nome_server è un dominio valido; seconda cosa, i quattro bytes del byte[] hanno valori differenti. La mia domanda è: secondo voi, dove si scatena l’eccezione di cui sopra? Una volta individuato il punto (che io già conosco), la domanda successiva è: perchè?

Technorati Tags:  

Send to Kindle
.NET World

Usare in un DataTemplateSelector un ResourceDictionary definito in un file XAML

Ok, il titolo di questo post è più confuso che altro. Amen.

Nei giorni scorsi ho creato una class library per .NET Framework 3.5, all’interno del quale ci sono Windows in XAML, ResourceDictionary, immagini e video. C’è anche una bella classe TagDataTemplateSelector, che eredita da DataTemplateSelector.

Come ben sa chi sviluppa in WPF, una classe figlia di DataTemplateSelector ha un metodo pubblico SelectTemplate, che restituisce un DataTemplate piuttosto che un altro, in base alla logica che implementiamo nel metodo stesso. Questo serve ad esempio se avete una ListBox e volete applicare un template differente per ogni elemento: supponiamo di avere una classe Person che espone una proprietà Sex, che può valere Sex.Male o Sex.Female usando un’enum. Se un’istanza ha Sex == Sex.Male, vogliamo uno sfondo azzurro, mentre se Sex == Sex.Female, vogliamo uno sfondo rosa. I DataTemplateSelector servono proprio a questo.

Manco a farlo apposta, il mio esempio è un po’ più complesso di così.

All’interno di questa class library ho creato un ResourceDictionary in un file TagStyle.xaml. In questo ResourceDictionary ho definito due stili: InternetTag e LocalTag. Questi sono due stili praticamente identici, se non per un’immagine PNG che cambia. Ecco lo XAML che definisce lo stile InternetTag.

<Style x:Key="InternetTag" TargetType="{x:Type ListBox}"> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Margin="4" Source="ImagesInternetTagLogo.png" /> <Label VerticalContentAlignment="Center" Content="{Binding Path=Identifier}" FontSize="10pt" Padding="4" Width="110"> </Label> </StackPanel> </DataTemplate> </Setter.Value> </Setter> </Style>

Il mio problema è che non riuscivo a restituire i due stili dalla classe TagDataTemplateSelector. Di solito, infatti, riesco a raggiungere l’istanza dello stile tramite l’applicazione corrente. In questo caso, invece, il codice gira dentro una class library, e quindi non ho un’applicazione istanziata. L’unico modo che ho trovato è quello di caricare il ResourceDictionary via codice, reperire gli stili definiti.

Il costruttore del DataTemplateSelector è diventato quindi il seguente:

1 public TagDataTemplateSelector() 2 { 3 ResourceDictionary dict = new ResourceDictionary(); 4 dict.Source = 5 new Uri("pack://application:,,,/VivendoByte.WindowsLiveWriterPlugins.TechnoratiTagsWPF;component/TagStyle.xaml"); 6 7 Style s = (Style)dict["InternetTag"]; 8 Setter st = (Setter)s.Setters[0]; 9 internetDataTemplate = (DataTemplate)st.Value; 10 11 s = (Style)dict["LocalTag"]; 12 st = (Setter)s.Setters[0]; 13 localDiskDataTemplate = (DataTemplate)st.Value; 14 }

Alla riga 1 istanzio un ResourceDictionary, che viene riempito alla riga 2 specificando un Uri adeguato. In pratica, specifico l’assembly nel quale è contenuto il ResourceDictionary, e specifico anche il nome del file XAML. Le righe 7-9 e 11-14 hanno la stessa logica: nel primo blocco recupero lo style InternetTag, poi il suo setter (riga 8) e salvo in un membro privato della classe il Value di quel setter. Tale membro privato è internetDataTemplate. La stessa cosa accade per l’altro stile LocalTag, che viene salvato in localDiskDataTemplate.

Tutto questo accade nel costruttore. Il metodo SelectTemplate diventa a questo punto un semplice switch:

1 public override System.Windows.DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container) 2 { 3 if (item != null && item is TechnoratiTag) 4 { 5 TechnoratiTag tag = item as TechnoratiTag; 6 7 switch (tag.Source) 8 { 9 case TagSource.Internet: 10 { 11 return internetDataTemplate; 12 } 13 case TagSource.LocalDisk: 14 { 15 return localDiskDataTemplate; 16 } 17 } 18 } 19 20 return null; 21 }

Il DataTemplate da restituire dipende come dicevamo da un valore della proprietà dell’oggetto item, che viene quindi castato a TechnoratiTag. In base alla sua proprietà Source restituisco alla ListBox un DataTemplate piuttosto che un altro.

La particolarità di questa soluzione sta nel fatto che non passiamo da un’istanza di Application.Current, perchè quest’ultima non esiste e di conseguenza vale null. Se potessimo accederci, invece, potremmo usare il metodo FindResource per recuperare le risorse definite dentro App.xaml. Oppure potremmo usare la collection Windows[], ma neppure questo è fattibile. L’unica tecnica possibile, come mostrato dal codice, è quello di caricare a run-time un ResourceDictionary e cercare al suo interno i DataTemplate voluti.

Technorati Tags:   

Send to Kindle
Software

C’è un gran bisogno di Desktop sul Web

Lo so che è un discorso trito e ritrito, come so anche che molti di voi lettori non sono d’accordo a priori. Ma mi piace ogni tanto riprendere questo discorso, perchè mi rendo conto che passa il tempo, le tecnologie Web cambiano e vengono stravolte, ma il mio ragionamento continua ad essere valido. O almeno così io credo.

Diciamolo francamente: esistono oggi un gran numero di siti e portali Web 2.0 che riempiamo con tutta una serie di informazioni personali, siano esse post, foto, curriculum, video, etc. etc. Il fatto di pubblicare su Internet tutte queste informazioni non significa assolutamente che il tutto nasca, viva e muoia lì, anzi, più passa il tempo e più ho l’impressione che ci sia sempre più bisogno di portare tutti i dati in locale sul nostro PC. E quando c’è bisogno di fare “vere” elaborazioni, è sul desktop che si fanno. Non sempre è vero, sia chiaro, ma in alcuni casi è proprio così.

Qualche esempio tratto dalla mia esperienza o leggendo altri blog.

Flickr

è un prodotto di Yahoo che permette di pubblicare e di condividere fotografie. E’ possibile commentare fotografie, geotaggarle, aggiungere descrizioni e nomi, assegnare tag, creare e gestire album fotografici. Chiaramente è possibile fare tutto questo tramite il portale Web di Flickr. Nonostante questo è stato creato un ottimo tool per fare le stesse cose in modo disconnesso.

LinkedIn

è un prodotto di puro social networking che mantiene in contatto le persone nel mondo del lavoro. Si parla di curriculum, esperienze professionali, skill tecnologici, etc. etc. Anche questo può essere definito un portale Web a tutti gli effetti: ciò nonostante Raffaele segnala che Xobni – plugin per Outlook 2003/2007 – è in grado di interfacciarsi a LinkedIn per scaricare la fotografia del nostro profilo per visualizzarla come mittente delle e-mail che riceviamo. Ed in futuro Raffaele si auspica l’integrazione con Facebook. Anche qui…il Web è solo un mezzo di pubblicazione e di trasporto verso il mondo desktop.

Sharepoint

è un prodotto Microsoft che permette di pubblicare su Intranet/Internet documenti, inteso nel modo più flessibile possibile. Documenti vuol dire files Word, Excel, liste customizzate con tutte le informazioni che vogliamo, etc. etc. Sharepoint può integrarsi con applicazioni desktop tramite web-services o con altri portali Web tramite un domain model opportuno. Di questi web-services ne ho parlato anche io sul mio blog. Applicazioni come Word, Excel e Groove si interfacciano con Sharepoint, ancora una volta per portare sul desktop ciò che il Web non può dare. O – meglio ancora – ciò che il Web sia sbagliato o innaturale che dia: potenza di calcolo, disponibilità totale delle informazioni in ogni momento.

YouTube

lo conosciamo tutti: è il più grande portale di video del mondo, dove chiunque può pubblicare filmati di ogni tipo. E’ gestibile tutto da Web: upload del filmato ed impostazione di tutti i suoi parametri, come luogo, data, tag, descrizione, etc. etc. Ma sono stati creati una serie di tool che permettono l’upload anche tramite applicazione desktop.

del.icio.us

è un servizio Web che permette di mettere on-line i propri preferiti. Ma qualcuno ha creato un plug-in per Firefox, in modo tale che sia possibile comunque accedere ad essi senza passare per forza attraverso una pagina Web.

Senza contare tutta quella miriade di applicativi che permettono di interagire con mail/forum/blog, e di esempi ce ne sono un’infinità. Non tutti gli obiettivi possono essere raggiunti via browser, non c’è scampo, e quindi sarà sempre necessario creare applicazioni desktop ad-hoc. Per questo tecnologie di presentation saranno sempre necessarie, che siano Console o WPF e via dicendo.

La morale di tutto questo, secondo me, è che il Web tende ad avvicinarsi al desktop come modalità di interazione con l’utente, e su questo ci siamo. Questo è quasi banale dirlo. Qualcuno una volta mi disse che un giorno tutte le applicazioni saranno accessibili via browser. Questo onestamente lo ritengo plausibile ed è sicuramente una maledetta comodità. Ma se mi dite che un giorno di applicazioni desktop non ce ne sarà più bisogno, allora io sono fermamente contrario. Se ci si pensa un attimo, il Web funge da enorme ed infinito repository di bytes, che raggiungono prima o poi un sistema desktop: i bytes possono essere pagine HTML, immagini JPG o PNG, video, filmati Flash, script, bytecode Java, Silverlight e via dicendo. Il sistema desktop significa la maggior parte delle volte un browser, ma altre volte non è così. Quando un sito Web è creato con criterio, ecco che esso permette di veicolare informazioni in modo più strutturato. Oggi non si tratta più di scaricare banali pagine Web statiche, ma di far viaggiare veri e propri oggetti serializzati che verranno manipolati in modo opportuno ed in modo più complesso che non attraverso un browser. Tutti gli esempi prima, e chissà quanti altri potreste farmene voi, non sono uno scherzo.

Il desktop ha delle peculiarità uniche: potenza di calcolo, disponibilità e proprietà fisica delle informazioni, possibilità di fare backup. Non ditemi, per favore, che un giorno il Web sarà ovunque, perchè non potete saperlo. Oggi in Italia la televisione non c’è dappertutto, sebbene sia fisicamente possibile portarsi un apparecchio TV e ricevere il segnale. Internet sarà certamente accessibile ovunque, ma con velocità/disponibilità/affidabilità differenti, e quindi non ci si può fare troppo affidamento. Un tizio vorrebbe poter lavorare in treno, in spiaggia, in mezzo ad un parco, bloggare a 6000 piedi di quota, dalle Bahamas. Un tizio vorrebbe semplicemente non collegarsi alla Rete per lavorare.

E poi, ultimo ma non ultimo, c’è una cosa che on-line non è assolutamente fruibile: i videogame.
Finchè si videogiocherà, il desktop esisterà sempre. Per fortuna.

Technorati Tags:

Send to Kindle
Hardware

Il mio hardware è cambiato!

Non so come mai, ma per me la seconda metà di luglio è sempre un periodo in cui ho il forte desiderio di dare un ammodernamento al reparto informatica di casa mai. Erano tre anni che non mi occupavo del mio desktop personale, e quindi gli ho dato una bella botta di vita.

Ecco i componenti che ho preso:

  1. Mainboard Gigabyte GA-EP35C-DS3R P35 Core2/P4 ddr2/ddr3 Glan sk775
  2. Intel Core2 Quad Q9450 2.66GHz 1333Mhz L2-12MB LGA775 BOX
  3. 4GBytes con quattro moduli Kingmax DDR2-1066 PC2-8500 Tiny BGA
  4. Hard-Disk SATA2 Seagate da 250GBytes

Ho preferito non prendere un disco più capiente, dal momento che ho già un secondo disco esterno su USB da 320GBytes che uso per tutti i miei dati. Basta ed avanza.

Per adesso ho installato sul disco SATA2 Windows XP, per un solo evidente motivo: volevo vedere la potenza del quad-core con videogame recenti come Colin McRae Dirt (che non riuscivo a giocare con il vecchio sistema), Call of Duty 4, Race 07 e simili. La differenza è notevole sul serio, a cominciare dall’installazione di Windows a tutto il resto. Sono soddisfatto, e alla grande.

 

Ho passato la serata di venerdì scorso ad installarmi tutto dal punto di vista hardware, tirando fuori tutto dal mio case ThermalTake Soprano ed installando mainboard, CPU e RAM nuovi di zecca. Le reinstallazioni software le ho lasciate per il giorno dopo.

Ultima comunicazione: giocare a Call of Duty 4 a 1280×1024 a massimi dettagli è sconvolgente. Non cambia veramente molto dalla precedente configurazione, ma la risoluzione aumentata e tanti piccoli dettagli fanno la differenza, soprattutto con la ATI Radeon HD4850 ereditata da mio fratello – storia troppo lunga per essere raccontata in questo post.

Technorati Tags:

Send to Kindle
Security

Dovrei tremare di paura?

Non capisco perchè un messaggio diretto ad alvise scarpa sia arrivato a me.
Non ho fatto alcuna domanda su alcun oggetto in vendita su ebay.
Non so chi sia il mittente del messaggio, janice, anche se il suo nome ispira.
Il messaggio è vagamente minaccioso.
Il link sul pulsante Rispondi punta a http://m5q.by.ru/aon.txt?signin.ebay.it/ws/eBayISAPI.dll?SignIn&amp;errmsg=8&amp;pUserId=&amp;co_partnerId=2&amp;siteid=101&amp;pageType=-1&amp;pa1=&amp;i1=-1&amp;UsingSSL=1&amp;bshowgif=0&amp;favoritenav=&amp;ru=http%3A%2F%2Fwww.ebay.it%2F%3F_trksid%3Dm37&amp;pp=.
Il link qui sopra non è di ebay.

Phishing?

Technorati Tags:  

Send to Kindle