Qualcosa su di me

Mi chiamo Andrea Moro, sono un appassionato di informatica da quando avevo 8 anni e da quando mio padre mi regalò il C64.

Qualche anno più tardi, il mio primo pc e nel 1994 la prima esperienza con Internet, di cui mi sono subito innamorato e con cui oggi mando avanti la mia attività di Web Designing e posizionamento nei motori di ricerca.

View Andrea Moro's profile on LinkedIn

Calendar

<<  ottobre 2008  >>
lumamegivesado
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar


RSS

Per chi usa il Mac, come del resto per qualunque utente di PC, gli aggiornamenti sono indispensabili per correggere spesso situazioni critiche. Ero convinto che il Mac in un certo senso fosse più stabile, e con esso tutte le sue applicazioni.
In un certo senso mi sbagliavo, perchè bene o male sto vedendo rilascio di patch e nuove versioni quasi allo stesso ritmo di Windows Vista (non XP che decisamente ne sfornava molti di più), anche se di aggiornamenti veri e propri per Leopard se ne sono contati sulla punta delle dita.

Ad oggi sono disponibili aggiornamenti per iWeb (ver. 2.0.3) che personalmente non uso, Keynote (4.0.2), Pages (3.0.2), Numbers (1.0.2) e per chi se lo è comprato - Little Snitch (Firewall) - siamo arrivati alla 2.0.2 che richiede una procedura di aggiornamento un pò strana: l'avvio in SafeMode.

Technorati Tags:

Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Oltre al tradizionale modo di ricerca, dai Google Labs arriva una ventata di novità su quella che potrebbe essere il nuovo modo di concepire la ricerca, offrendo un sistema alternativo per la visualizzazione dei risultati con tre differenti tipologie utili ad inquadrare i risultati proposti.

Per attivare la funzionalità, che al momento è la prima della lista, basta semplicemente aderire al programma schiacciando sul tasto Join the experiment che trovate negli Experimental Labs ed utilizzare il nuovo tag view.

Vediamo di cosa si tratta

Nello specifico una vista di tipo informativo, un timeline, e una di tipo geografico con l'integrazione dell'ormai nota piattaforma Google Maps.

In sintesi, la query di tipo informativo (view:info), offre un menù sulla destra che permette di raffinare ulteriormente i risultati trovati per ulteriori criteri di ricerca quali la data (ammesso che nel documento si faccia allusione ad un periodo storico), ad una misura (peso, distanza, superficie ecc.), alla locazione geografica specificata. Insomma una sorta di query nella query. Esiste poi un'ulteriore visualizzazione per questo gruppo che non ha filtro, ma che mostra semplicemente delle thumnails, laddove queste sono recuperabili, per il sito mostrato nella SERP.

Questa vista è secondo me quella più utile.

Le altre due, la timeline, rassomiglia in un certo senso ad una ricerca enciclopedica, ovvero ti mostra i risultati imagecercati con la clausula aggiuntiva view:timeline con un box per specificare un lasso di tempo ulteriore sulla data per filtrare ulteriormente il documento. Mi sà molto di doppione rispetto alla vista info e al filtro per data. Unica vera differenza è la presenza di una timeline grafica con la quale presumibilmente è possibile capire a colpo d'occhio il numero di documenti presenti per un dato periodo, ma sostanzialmente i risultati mostrati sono i medesimi (giusto una diversa rappresentazione dell'URL mostrato).

L'ultima visualizzazione è quella di tipo mappa, cioè la rappresentazione cartografica del luogo dove si trova il sito proposto.

C'è da dire che al momento tutti i risultati che ho provato non collimano con gli indici attuali, cioè una SERP restituita dal Google tradizionale non è la stessa di quella mostrata dagli Experimental Results. Del resto il nome "Experimentals" la dice tutta, tuttavia il no-sense più assoluto lo si ha proprio con questa funzione, perchè mi sono trovato dei risultati totlamente differenti dalla vista con la mappa rispetto alla ricerca standard.

Un esempio con le immagini qui proposte.

image image

Questa query qui sopra per "progettazione giardini abruzzo", ritorna - dopo diverso tempo investito in attività di posizionamento nei motori - una SERP dove il cliente Caravaggio Garden è al primo posto. Fantastico! Ma se richiediamo la visualizzazione mappa della medesima query, vedete che del mio cliente non v'è più traccia (sparisce completamente dalla SERP, non viene mostrata la mappa).

Ok, proviamo con un secondo esempio.

image image

Soluzioni informatiche in Abruzzo. Medesimo discorso. Non ho di che argomentare, perchè allo stato attuale non sono stato capace di trovare una query italiana funzionante. Eppure per entrambe i siti esistono delle locazioni nella Google Local Businesse Center, che molto probabilmente non entra nel merito della ricerca.

Per giunta cercando di analizzare gli esempi forniti da google, i conti non mi tornano perchè non trovo il testo mostrato nel box del risultato all'interno della pagina alla quale l'URL rimanda. Quindi non mi capacito da dove le informazioni geografiche siano state reperite. Vero che le pagine cambiano frequentemente, ma per tutte e tre le query lanciate, non v'è traccia ne dell'indirizzo ne di altro. Quindi vuol dire che c'è qualche altro archivio che viene preso in considerazione. Ma quale? O in che modo vengono analizzati i risultati?

Per assurdo, restando su risultati italiani di più semplice interpretazione, scrivete qualcosa come "ristorante tipico abruzzo"? Notate neinte di strano? 3 risultati (Torino, Napoli, Lombardia) che non c'entrano niente, nemmeno come contenuti della pagina mostrata (per di più un dominio è anche scaduto quindi non attendibile). 1 solo valido. Magari questi esperimenti li stanno facendo su quelli che un tempo erano i database dei risultati supplementari, quindi mondezza a tutto spiano.

Concludendo

Queste nuove funzionalità dovrebbero cercare di facilitare la vita all’utente, ma a vio modesto avviso un restyle del sistema di ricerca deve essere messo in campo qualora i risultati di questi esperimenti siano talmente tanto convincenti da auspicare una loro integrazione in Google.

Technorati Tags: ,

Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Una cosa che può trarre in inganno quando si creano controlli personalizzati, siano essi di tipo Web o di tipo Form (passatemi la definizione), è l'attributo DefaultValue.

Ci si potrebbe aspettare che quell'attributo imposti il valore di Default. Non è così. Spetta sempre al programmatore impostare il valore del controllo sia in fase di inizializzazione che in fase di rendering / esecuzione.

La domanda allora sorge spontanea: a cosa serve l'attributo se non viene utilizzato?

In realtà l'attributo viene utilizzato, ma solo nell'IDE, nella modalità Design. Cambiando un valore di una proprietà all'interno dell'IDE si potrà infatti notare che la proprietà diventa grassetto quando assume un valore diverso dall'attributo DefaultValue.

Fantastico, ma se io volessi usare quel valore, e ad esempio evitare di doverlo confrontare con quello di una variabile o di una costante privata (magari dal medesimo valore) usata per la sola inizializzazione?

Nulla di più semplice se si utilizza del codice come quello qui sotto riportato:

private T GetDefaultValue(string PropertyName)
{
  // Gets the attributes for the property.
 
System.ComponentModel.AttributeCollection attributes = TypeDescriptor.GetProperties(this)[PropertyName].Attributes;
 
return (T)((DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)]).Value;
}

 


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Nello scenario moderno della programmazione web, anche in virtù di una migliore ottimizzazione delle pagine per i motori di ricerca, capita sempre più spesso la necessità di restituire al browser (o al crawler) i cosiddetti Friendly URL, cioè dei percorsi pagina che siano più mnemonici e senza troppi fronzoli.

Questa tecnica va sotto il nome dell'URL rewriting e in ASP.Net si può fare in diversi modi. Scott Guthrie nel suo articolo li spiega in maniera comprensibile.

Una delle cose che invece viene spesso data per scontata è che anche dopo l'URL rewriting, il path originale (quello immesso dall'utente o seguito tramite un link) non serva più.

Nulla di più sbagliato; a volte ci sono delle informazioni preziose che durante il processo di rewriting sono state trascrurate, piuttosto che si devono fare ulteriori controlli non effetuabili in prima istanza.
Per tutti questi casi torna estremamente utile la proprietà RawUrl dell'oggetto HttpRequest.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Certo, magari sto precorrendo un pò i tempi, ma i cambiamenti dell'HTML 5 rispetto alla versione corrente, sicuramente si faranno sentire. W3C

Ovviamente siamo in tempi più maturi, nell'era del Web 2.0 e molte di queste modifiche in realtà erano già belle che preannunciate. Non stiamo parlando ancora di un nuovo linguaggio, perchè HTML 5, come dice il documento tecnico per sviluppatori è ancora in fase di stesura, tuttavia iniziare a dare uno sguardo oggi per sapere cosa ci aspetta domani, non è poi tanto sbagliato.

In questi giorni sto leggendo di tonnellate di post solo su particolari cambiamenti che impatteranno quello che è il sistema di ottimizzazione delle pagine ai fini del posizionamento.
In particolare, dopo la recente maretta di Google in merito ai link a pagamento e all'attributo nofollow per il tag a.

E' ovvio che l'HTML 5 non sarà solo questo; semplicemente scorrendo il documento ci si rende conto di come l'usabilità sia stato l'elemento principe prese in considerazione.

Per esempio la prossima scomparsa dei frame, il cambiamento del content-type per stare su aspetti più generali, o la modifica della valenza dei tag b o dello strong, per rimanere sempre in tema di ottimizzazione delle pagine.

Come per tutte le altre release del meta linguaggio, anche HTML 5 sarà in parte retrocompatibile. E questo forse è l'aspetto un pò più dolente della cosa, perchè significa - a mio avviso - poter ancora miscelare vecchi elementi con i nuovi senza dare quel taglio netto che invece un pò ci si aspettava.
Di contro, apprezzo moltissimo che molte maquillage non saranno più possibili, visto che il nuovo meta linguaggio è fortemente orientato allo sviluppo mediante CSS, separanto quindi ancor di più lo strato di programmazione da quello puramente grafico.

Insomma non resta che aspettare qualche mese ancora. Nell'attesa, buon CSS a tutti.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ormai la posta elettronica è un mezzo di comunicazione globale; molti di noi utilizzano questo strumento quotidianamente e per i più svariati motivi, dal lavoro al puro divertimento.

Senza entrare nel merito se sia giusto o corretto, la stragrande maggioranza dell'utente medio utilizza quello che trova sul computer, adattando le sue esigenze allo strumento.

Per questo motivo durante l'assemblaggio di un nuovo computer, dopo l'installazione del sistema operativo, tendo sempre ad installare quante più utility free disponibili. Mozilla Firefox, 7Zip, FoxIt Reader (per i PDF), Open Office.

Non tutti condividono la mia scleta, e molti anzi si lamentano di come mai non si trovano installato Office, che guarda caso è una suite a pagamento che guarda caso - lo ribadisco anche qua - se non se lo comprano io non glielo dò certo pirata.

Premessa a parte, in quella lista di software sopra menzionati, non ho mai aggiunto Thunderbird (il client di posta Mozilla). Avrò fatto bene o male, questo è difficile dirlo. Diciamo che in questo frangente voglio dar credito a Zio Bill e alla sua (ex) Microsoft.

Ho quindi sempre utilizzato Outlook Express come client di posta predefinito.

Capita a volte che il pc sia bello che incasinato e quindi si debba ricorrere alla formattazione per ripristinare il normale funzionamento e velocità di esecuzione dei programmi.

Salvare documenti e cartelle è abbastanza intuitivo (anche se esistono molti utenti che sbagliano perfino quello, salvando i collegamenti invece che i file veri e propri), ma il discorso è completamente diverso per la posta elettronica. Specie poi se si usano i profili (la cui gestione da parte di OE non mi è mai piaciuta, ma questa è un'altra storia).

Vediamo quindi come fare manualmente questa operazione di salvataggio che si divide in due: il salvataggio della rubrica e quello delle e-mail vere e proprie.

 

Salvataggio della Rubrica

Mentre per la rubrica è quella di Windows, quindi per il salvataggio è sufficiente fare Esporta dal menu file del programma Rubrica di Windows, generando quindi un file .wab.

 

Salvataggio delle E-mail

Per le e-mail non esiste un comando apposito.Si deve in primis capire dove sono i file di archivio, e questo lo possiamo scoprire aprendo Outlook Express, e selezionando il menu Strumenti > Opzioni, tab Manutenzione, quindi premere il pulsante Archivia cartella.
Si aprirà una finestra che mostra il percorso dell'archivio. Ora possiamo selezionare il percorso e poi copiarlo (tramite la combinazione di tasti Ctrl+C oppure premendo il tasto destro del mouse e scegliendo Copia).

A questo punto apriamo una finestra di risorse del computer e nella barra degli indirizzi premiamo CTRL+V per incollare il percorso appena copiato, quindi premiamo invio. Si aprirà la cartella dove sono salvati i file. Ora possiamo selezionare i file e copiarli dove vogliamo.

 

Salvataggio degli Account

Ultima operazione è quella di salvare gli account. Qua per fortuna basta andare nel Menu Strumenti > Account > Tab Posta elettronica. Selezionare ogni account presente (e che si vuole backuppare) e premere il tasto esporta per generare il file .IAF

 

Il ripristino di tutte queste informazioni avviene nel modo opposto a quanto appena eseguito.

Mi rendo conto che questa operazione può non essere alla portata di tutti, e allora in questo caso ci vengono in soccorso diversi tool esterni (gratuiti).

Per esempio PicoBackup, specifico per Outlook Express o se si usano altri client di posta (tra i quali anche ThundeBird) si può ricorrere a MailStore.

Personalmente non ho mai usato questi due software, quindi non sò se effettivamente si comportino bene oppure meno. Lascio a voi scoprirlo.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Erano un paio di giorni che mi arrovellavo per capire perchè l'evento onmenuitemclick del controllo asp.net menu non venisse eseguito.

Come al solito, dopo ore di investigazione, che chissà perchè partono sempre dalle cose più difficili e mai da quelle più ovvie, inizio a trovare la mia risposta.

Va premesso che l'evento viene generato a seguito di un postback sulla pagina stessa; detto questo le cause che evitano lo scatenarsi dell'evento possono essere due:

1) Quando il controllo menu viene renderizzato, i link che vengono generati sono quelli che puntano alla funzione interna javascript __doPostDack. Questa funzione accetta due parametri in ingresso, di cui il secondo è il menu specifico che è stato clicckato.

Se esiste un menu con un identico nome, il framework non sà quale menu clicckare e di conseguenza non scatena l'evento.

Questa prima causa, tuttavia, non era quella a cui appartenevo.

2) Fatto salvo particolari di make-up da parte dell'utente, il link di destinazione generato dal controllo si può vedere nella status bar semplicemente passando il mouse al di sopra del link. E nel mio caso, il link era un link che non faceva il postback. Ecco la causa. Non effettuando il postback verso la pagina di origine, lato server il framwork mai si sarebbe potuto immaginare di scatenare un evento.

Del resto come dargli torto, la navigazione verso un URL specifico, seppur fatta tramite una voce di menu, altro non equivale a l'inserimento del medesimo URL nella barra dell'indirizzo, quindi ad un navigazione diretta, ovvero ad una richiesta ex-nuova a cui nessun evento può essere associato.

Scoperta la causa, non mi restava che capire perchè invece di un link postback, io mi trovavo un link diretto.

Presto detto. Generalmente il controllo asp:menu si utilizza con un SiteMapDataSource, il cui databindings di default, prendendo i dati dal file Web.sitemap (o cmq dal file specificato nel web.config) lavora nel seguente modo:

  1. La proprietà TextField viene associato all'attributo Title del singolo SiteMapNode;
  2. La proprietà NavigationUrl viene associata all'attribu Url del singolo SiteMapNode;

Se si legge nella documentazione MSDN per la proprietà MenuItem.NavigateUrl, nelle note si può leggere quanto segue:

Una voce di menu supporta due modalità: modalità di selezione o modalità di spostamento. Per impostazione predefinita, una voce di menu è in modalità di selezione. Per impostare la modalità di spostamento per una voce di menu, impostare la proprietà NavigateUrl della voce di menu su un valore diverso da una stringa vuota ("").

Quando una voce di menu è in modalità di spostamento, tutti gli eventi di selezione relativi a tale voce di menu risultano disattivati. Quando viene selezionata una voce di menu in modalità di spostamento, l'utente passa all'URL specificato. Se lo si desidera, è possibile impostare la proprietà Target per specificare la finestra o il frame in cui visualizzare il contenuto collegato.

Ecco allora che tutto appare chiaro, il comportamento del Menu associato al SiteMapDataSource, fa in modo che la modalità del menù venga impostata automaticamente su quella di spostamento.

Se infatti si modifica il comportamento del bindings, evitando l'associazione della proprietà Url, si potrà notare come il menù a questo punto effettui correttamente il PostBack.

Un esempio è possibile vederlo inserendo questa proprietà all'interno del tag <asp:menu> ... </asp:menu>

<DataBindings>
  <asp:MenuItemBinding DataMember="SiteMapNode" TextField="Title" />
</DataBindings>

Tuttavia ora sorge un nuovo problema, quello di dover intercettare manualmente la pagina di destinazione, e fare un redirect dopo che l'azione che vi interessa compiere nell'evento MenuItemClick è stata correttamente processata.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Un interessante articolo su come sfruttare una caratteristica di VS 2008 per fare il debug del codice .Net.

Qui, invece, è disponibile uno screencast di circa 15 minuti, dal medesimo argomento e medesimo autore.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Finding an open source CMS (hence free) written in C # 2.0, which does not need a database to store data is not easy. On ASP.Net platform, there aren't so much solutions like per Linux platform, and Microsoft guy did a great job when they released the MWPSK.

This time what I find as missing is the possibility to share a particular content among different pages, i.e. a disclaimer.

So with a bit of code, also using the newest LINQ to XML functionality provided by the .net framework 3.5, I developed the Static Content section.

The usage is pretty simple, just add the section, create the content and save it. Automatically the new XML file generated will be linked to the section. If you need the same section into another page, add the Web-MA Static Section, choose the previously created file and save.

Changes made to a specific section file, anywhere, obviously will be reflected on all pages.

Enjoy the code and feel free to report bugs and comment.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Il concetto di motore di ricerca di tipo 1.0 è relativamente semplice: sono enormi database di pagine Web costruiti da aziende; i contenuti vengono catalogati per parole chiave e metatag che permettono di indicizzare le pagine appena vengono aggiornate o ne vengono aggiunte di nuove. Questo processo è continuo e incessante perché è la Rete stessa che si evolve minuto per minuto.

I motori di ricerca 1.0 a disposizione oggi sono moltissimi e la competizione è molto aspra.

Ma sottolineo la frase "di tipo 1.0". Già, perchè dopo aver dato tanto risalto al web 2.0, al nuovo modo di concepire la rete e di instaurare un rapporto con l'utente in modo bidirezionale, non posso non parlare di questo nuovo e sorprendente motore di ricerca tutto tricolore.

In un periodo globale dove l'Italia sta subendo numerose sconfitte in tutti i settori, che questa sia - speriamo - la volta buona per ridare un pò di credito alla nostra bandiera che non derivi solo dalla "pasta con la pummarola in coppa e dal panettone".

Si stima, attualmente, che al momento esistano 40 milioni di siti web, ed è di vitale importanza che un motore di ricerca assolva a pieno il suo compito, quello di aiutare l'utente a trovare ciò che cerca in questo universo caotico e costantemente in espansione.

Ciò che fa la differenza è la capacità di un motore di ricerca di condurvi subito al sito di vostro interesse, evitandovi una lunga trafila a colpi di mouse tra siti e pagine Web che poco hanno a che fare con ciò che cercate. E questo processo di sintesi spesso viene meno grazie a tecniche poco ortodosse utilizzate da webmaster che si spacciano per professionisti e boicottano i risultati delle SERP.

In tutto questo ruolo, come gioca il fattore 2.0? Semplice, invece che essere il motore a scandagliare la rete per cercare contenuti, sono gli utenti che automaticamente sottomeno al motore i loro siti web preferiti associando descrizioni e parole chiave per una ricerca sempre migliore e più affine a quanto cercato.

Ggoal punta tutto sui suoi utenti e sulla loro capacità di fare squadra per svincolarsi dal vecchio ruolo di puro utilizzatore passivo a quello di ricercatore attivo.

La versione Beta è ormai alle porte, meno di due giorni lavorativi, quindi ancora un week-end dietro a tastiera e monitor per Giulio Giorgetti e il suo staff della FluiLink.

Alcune caratteristiche del nuovo motore.

La vera innovazione secondo me è la Wishlist presente in Homepage, con affissa la rotazione delle ricerche con maggior spessore fatte dai visitatori.
Un invito immediato rivolto agli utenti che applica a piene mani la prima regola del Web 2.0, quella di coinvolgere gli internauti in prima persona e rendendoli partecipi del contesto proponendo l'interazione tra la risorsa e il navigatore stesso, che potrà in questo modo editare i risultati della ricerca, aggiungendone di nuovi, segnalando abusi di quelli presenti, o aggiungere commenti e parole chiavi per i risultati esistenti.

Per quanti si aspettano possibili falsi positivi e tecniche di spamming, anche questo aspetto non è stato sottovalutato sin dalle prime righe di codice, dove una scritta Abuso conduce ad un form per la sottomissione di errori et simili. Errori, che saranno valutati da uno staff preposto, che se tutto va come deve andare, ben presto dovrà essere rimpolpato (e questo ce lo auguriamo tutti).

Aspetti questi che di recente sono stati in parte raccolti e condivisi anche dal neonato Wikia.

L'interattività del motore con l'utente sarà poi supportata dalla disponibilità degli RSS (Really Simple Sindication), ovvero la possibilità all’utente di ricevere i contenuti delle sue ricerche desiderate direttamente per mezzo dei feed.    

In sintesi

Ggoal mostra di aver sintetizzato e fatti propri i principi del Web 2.0 che saranno l'anima trainante di internet per i prossimi anni.
La versione Alpha - che ha riscosso dei successi incredibili (leggasi parecchi rallentamenti sulla rete proprio perchè la neonata struttura deve fare ancora i conti con il tuning delle risorse) - non può che essere considerata un vero successo e molto presto le modifiche introdotte nella Beta ci sapranno dire come i processi di interazione finora citati miglioreranno il prodotto.

Sono fermamente convinto della bontà del prodotto, e a tutto lo staff faccio un sincero augurio di poter presto salire nell'olimpo della ricerca.

Technorati Tags:

Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Advanced Technology

Abruzzo SEO specialist, .Net programming and computer stuff