sabato 4 febbraio 2012

XNA e la gestione di Windows Media Player

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_xna-e-la-gestione-di-windows-media-playe_1135.aspx



Introduzione
Vedremo come gestire tramite XNA il lettore multimediale di Windows, in particolare, rilevare informazioni sui brani, artisti ed altro sul catalogo di Windows Media Player, presente nel pc.
L’applicazione, di tipo XNA per Windows, visualizzerà a video tali informazioni .




Creazione del progetto
Dopo aver creato un progetto di tipo XNA per Windows, aggiungere nella parte “content” un oggetto di tipo “SprintFont” in questo modo, potremmo gestire il testo per la visualizzazione delle informazioni a video.
Terminato ciò, inizieremo a scrivere il codice per gestire le informazioni richieste in precedenza.
Dichiariamo a livello di classe, gli oggetti che ci permettono di gestire le informazioni.



Le classi da utilizzare sono “SpriteFont”, per la gestione del testo, “KeyboardState”, per il rilevamento del tasto, ossia se digita il pulsante della tastiera di tipo "a", passa al brano successivo (nel caso sono presenti due o più brani) .
La classe “Medialibrary”, per la gestione di media player, la classe “Song” per la gestione dei brani, in cui possiamo rilevare informazioni (autore, genere, ecc), variabili di tipo numero, e stringe per la visualizzazione dei dati, ed infine l’oggetto “VisualizationData” per la frequenza del brano.
Qui di seguito si riporta la dichiarazione di tali oggetti.



GraphicsDeviceManager graphics;



SpriteBatch spriteBatch;



SpriteFont sprFont;



KeyboardState keyboardstato;



MediaLibrary mediaLibrary;



Song song;





int album, canzoni, artisti, generi;



string tipoMedia, nomeMedia;



VisualizationData visData;





Nell’evento “Initialize” impostiamo i vari oggetti creati in precedenza. In particolare inizialiamo tali oggetti per poterli utilizzare nel programma. Inoltre, verifichiamo quanti brani sono presenti nel catalog, in caso di almeno una presenza, si imposta il primo brano e si esegue.



Si riporta il frammento di codice per tale evento.




protected override void Initialize()



{



// TODO: Add your initialization logic here





base.Initialize();



//inizializzo le variabili



mediaLibrary = new MediaLibrary();



visData = new VisualizationData();





tipoMedia = mediaLibrary.MediaSource.MediaSourceType.ToString();



nomeMedia = mediaLibrary.MediaSource.Name;



album = mediaLibrary.Albums.Count;



canzoni = mediaLibrary.Songs.Count;



artisti = mediaLibrary.Artists.Count;



generi = mediaLibrary.Genres.Count;



if (canzoni > 0)



{



song = mediaLibrary.Songs[0];



MediaPlayer.Play(song);





}







}





Nell’evento “Update” verifichiamo se viene digitato il pulsante “a” in tale caso , passiamo al secondo brano, nel caso che sono presenti due o più brani.
Qui di seguito si riporta il frammento di codice di tali operazioni.




protected override void Update(GameTime gameTime)



{



// Allows the game to exit



if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)



this.Exit();



keyboardstato = Keyboard.GetState();



if (keyboardstato.IsKeyDown(Keys.Escape))



{



this.Exit();



}



if (keyboardstato.IsKeyDown(Keys.A))



{



if (canzoni > 1)



{



MediaPlayer.Stop();





song = mediaLibrary.Songs[1];



MediaPlayer.Play(song);





}





}



MediaPlayer.GetVisualizationData(visData);





// TODO: Add your update logic here





base.Update(gameTime);



}





Si creano due funzione, che visualizzano a video le informazioni., la prima accetta vari argomenti, due interi riguardante le coordinate di posizione, il testo da visualizzare ed il colore, queste passate all’oggetto SpriteBatch, permette di visualizzare le informazioni a video.
L’altra funzione “Visualizza” viene utilizzato nell’evento "Draw" .




private void VisualizzaVideo(int x, int y, string testo, Color colore)



{



spriteBatch.DrawString(sprFont, testo, new Vector2((float)x, (float)y), colore);









}





private void Visualizza(int x, int y, string testo)



{



VisualizzaVideo(x, y, testo, Color.White);





}





Il metodo draw, visualizza a video le informazioni sul brano, come nome album, autore, genere, tipo ed altro ancora.
Qui di seguito si riporta il codice di tale evento.




protected override void Draw(GameTime gameTime)



{



GraphicsDevice.Clear(Color.CornflowerBlue);



spriteBatch.Begin();



int y = 20;



Visualizza(20, y, "Esempio Media");



Visualizza(200, y, "(A) - play random track"); y += 40;



Visualizza(20, y, "Album: " + album.ToString()); y += 20;



Visualizza(20, y, "Artisti: " + artisti.ToString()); y += 20;



Visualizza(20, y, "Generi: " + generi.ToString()); y += 20;



Visualizza(20, y, "suoni: " + canzoni.ToString()); y += 20;



Visualizza(20, y, "Media Type: " + tipoMedia); y += 20;



Visualizza(20, y, "Nome Media: " + nomeMedia); y += 40;





if (canzoni > 0 )



{



Visualizza(20, y, "media in play: "); y += 20;



Visualizza(20, y, "Nome: " + song.Name); y += 20;



Visualizza(20, y, "Album: " + song.Album.Name); y += 20;



Visualizza(20, y, "Artista: " + song.Artist.Name); y += 20;



Visualizza(20, y, "Traccia: " + song.TrackNumber.ToString()); y += 20;



Visualizza(20, y, "Genere: " + song.Genre.Name); y += 20;



Visualizza(20, y, "Dimensione: " + song.Duration.ToString()); y += 20;





}





spriteBatch.End();





// TODO: Add your drawing code here





base.Draw(gameTime);



}





Riportiamo il codice completo di tutto il programma.






public class Game1 : Microsoft.Xna.Framework.Game



{



GraphicsDeviceManager graphics;



SpriteBatch spriteBatch;



SpriteFont sprFont;



KeyboardState keyboardstato;



MediaLibrary mediaLibrary;



Song song;





int album, canzoni, artisti, generi;



string tipoMedia, nomeMedia;



VisualizationData visData;

















public Game1()



{



graphics = new GraphicsDeviceManager(this);



Content.RootDirectory = "Content";



}





/// <summary>



/// Allows the game to perform any initialization it needs to before starting to run.



/// This is where it can query for any required services and load any non-graphic



/// related content. Calling base.Initialize will enumerate through any components



/// and initialize them as well.



/// </summary>



protected override void Initialize()



{



// TODO: Add your initialization logic here





base.Initialize();



//inizializzo le variabili



mediaLibrary = new MediaLibrary();



visData = new VisualizationData();





tipoMedia = mediaLibrary.MediaSource.MediaSourceType.ToString();



nomeMedia = mediaLibrary.MediaSource.Name;



album = mediaLibrary.Albums.Count;



canzoni = mediaLibrary.Songs.Count;



artisti = mediaLibrary.Artists.Count;



generi = mediaLibrary.Genres.Count;



if (canzoni > 0)



{



song = mediaLibrary.Songs[0];



MediaPlayer.Play(song);





}







}





/// <summary>



/// LoadContent will be called once per game and is the place to load



/// all of your content.



/// </summary>



protected override void LoadContent()



{



// Create a new SpriteBatch, which can be used to draw textures.



spriteBatch = new SpriteBatch(GraphicsDevice);



sprFont = Content.Load<SpriteFont>("SpriteFont1");





// TODO: use this.Content to load your game content here



}





/// <summary>



/// UnloadContent will be called once per game and is the place to unload



/// all content.



/// </summary>



protected override void UnloadContent()



{



// TODO: Unload any non ContentManager content here



}





/// <summary>



/// Allows the game to run logic such as updating the world,



/// checking for collisions, gathering input, and playing audio.



/// </summary>



/// <param name="gameTime">Provides a snapshot of timing values.</param>



protected override void Update(GameTime gameTime)



{



// Allows the game to exit



if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)



this.Exit();



keyboardstato = Keyboard.GetState();



if (keyboardstato.IsKeyDown(Keys.Escape))



{



this.Exit();



}



if (keyboardstato.IsKeyDown(Keys.A))



{



if (canzoni > 1)



{



MediaPlayer.Stop();





song = mediaLibrary.Songs[1];



MediaPlayer.Play(song);





}





}



MediaPlayer.GetVisualizationData(visData);





// TODO: Add your update logic here





base.Update(gameTime);



}





/// <summary>



/// This is called when the game should draw itself.



/// </summary>



/// <param name="gameTime">Provides a snapshot of timing values.</param>



protected override void Draw(GameTime gameTime)



{



GraphicsDevice.Clear(Color.CornflowerBlue);



spriteBatch.Begin();



int y = 20;



Visualizza(20, y, "Esempio Media");



Visualizza(200, y, "(A) - play random track"); y += 40;



Visualizza(20, y, "Album: " + album.ToString()); y += 20;



Visualizza(20, y, "Artisti: " + artisti.ToString()); y += 20;



Visualizza(20, y, "Generi: " + generi.ToString()); y += 20;



Visualizza(20, y, "suoni: " + canzoni.ToString()); y += 20;



Visualizza(20, y, "Media Type: " + tipoMedia); y += 20;



Visualizza(20, y, "Nome Media: " + nomeMedia); y += 40;





if (canzoni > 0 )



{



Visualizza(20, y, "media in play: "); y += 20;



Visualizza(20, y, "Nome: " + song.Name); y += 20;



Visualizza(20, y, "Album: " + song.Album.Name); y += 20;



Visualizza(20, y, "Artista: " + song.Artist.Name); y += 20;



Visualizza(20, y, "Traccia: " + song.TrackNumber.ToString()); y += 20;



Visualizza(20, y, "Genere: " + song.Genre.Name); y += 20;



Visualizza(20, y, "Dimensione: " + song.Duration.ToString()); y += 20;





}





spriteBatch.End();





// TODO: Add your drawing code here





base.Draw(gameTime);



}





private void Visualizza(int x, int y, string testo)



{



VisualizzaVideo(x, y, testo, Color.White);





}





private void VisualizzaVideo(int x, int y, string testo, Color colore)



{



spriteBatch.DrawString(sprFont, testo, new Vector2((float)x, (float)y), colore);









}



}




Conclusioni
L'articolo ha voluto fornire le basi per utilizzare la tecnologia XNA, con alcuni programmi del computer, ossia programmi del sistema operativo Windows. L'utilizzo del lettore multimediale in XNA è la dimostrazione di come utilizzare contenuti multimediali tramite XNA.

venerdì 3 febbraio 2012

Silverlight il controllo TreeView VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_silverlight-il-controllo-treeview-vbnet-_1141.aspx



Introduzione
In questo nuovo articolo sulla tecnologia Silverlight, versione 5 vedremo l’utilizzo del controllo Treeview, un controllo che permette la visualizzazione i dati in maniera ramificata, a livelli.



Stesura del codice
Si apre Visual Studio 2010, e si crea un nuovo progetto Silverlight con la versione 5.
Dalla barra degli strumenti, aggiungiamo un controllo Treeview, nella finestra delle proprietà (se non viene visualizzata facciamo f4 sul controllo selezionato) facciamo click sul pulsante della proprietà “Items”, verrà aperta una finestra nella quale possiamo aggiungere i vari nodi.
Tramite il pulsante “Add” situata sulla parte sinistra della finesta, sotto alla voce “Select Item”, viene aggiunto un nodo. Nella parte destra vengono visualizzate le proprietà del nodo selezionato, il tutto come mostrato in figura 1.







Figura 1



La proprietà “Header” permette di impostare il testo del nodo appena creato , nel nostro esempio è stato digitato del testo libero.
Nella finestra delle proprietà, possiamo effettuare anche il binding dei dati, o altre operazioni, un semplice utilizzo di proprietà può essere quello di impostare una determinata formattazione al nodo, come per esempio se il nodo è selezionato, tramite la proprietà “IsSelected” impostata a “True”, oppure possiamo espandere il nodo per visualizzare i sottonodi di appartenenza, il tutto impostando la proprietà “IsExpanded”, a true.
Se facciamo click sulla proprietà “Items”, possiamo aggiungere altri sottonodi, in tal caso verrà visualizzata una nuova finestra, in cui è possibile aggiungere altri elementi.
Aggiungiamo un nuovo elemento e nella proprietà “Header” impostiamo tale proprietà con il valore “Sotto Nodo”.
Confermate il tutto, tramite il pulsante “OK” delle varie finestre.
Il risultato sarà come quello illustrato in figura 2.





Figura 2




Il codice XAML, è come quello riportato qui di seguito.



<sdk:TreeView Height="259" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="227">



<sdk:TreeViewItem Header="Root">



<sdk:TreeViewItem Header="Sotto Nodo" />



</sdk:TreeViewItem>



</sdk:TreeView>









Possiamo aggiungere al singolo elemento, anche immagini ed altri controlli.
Qui il codice di tali operazioni




<Grid x:Name="LayoutRoot" Background="White">



<sdk:TreeView Height="259" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="227">



<sdk:TreeViewItem Header="Root">



<sdk:TreeViewItem Header="Sotto Nodo" />



<sdk:TreeViewItem Header="Sotto Nodo con immagine" >



<StackPanel Orientation="Horizontal">



<Image Source="/SLTreeviewCS;component/Images/Foto.jpg" Height="50" Width="50" />



</StackPanel>



</sdk:TreeViewItem>



</sdk:TreeViewItem>



</sdk:TreeView>



</Grid>





Ora vedremo come utilizzare alcuni eventi.



Selezioniamo il controllo treeview, e nella finestra delle proprietà nella sezione eventi, facciamo doppio click sull’evento “SelectedItemChanged” che si verifica nel momento in cui cambia la selezione dell’elemento.
Come riportato qui di seguito.




<Grid x:Name="LayoutRoot" Background="White">



<sdk:TreeView Height="198" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="248" SelectedItemChanged="treeView1_SelectedItemChanged">



<sdk:TreeViewItem Header="Root">



<sdk:TreeViewItem Header="Sotto Nodo" />



<sdk:TreeViewItem Header="Sotto Nodo con immagine" >



<StackPanel Orientation="Horizontal">



<Image Source="/SLTreeviewCS;component/Images/ Foto.jpg" Height="50" Width="50" />



</StackPanel>



</sdk:TreeViewItem>



</sdk:TreeViewItem>



</sdk:TreeView>



</Grid>



Passiamo in visualizzazione codice e scriviamo il codice per visualizzare a video un messaggio, che riporta il testo relativo al testo del nodo selezionato.



VB.Net



'si verifica quando cambia la selezione degli elementi



Private Sub TreeView1_SelectedItemChanged(sender As System.Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Object)) Handles TreeView1.SelectedItemChanged



Dim trwSeleziona As TreeView = TryCast(sender, TreeView)



Dim ElementoSelezionato As TreeViewItem = TryCast(trwSeleziona.SelectedItem, TreeViewItem)



If TypeOf (ElementoSelezionato) Is TreeViewItem Then



MessageBox.Show(ElementoSelezionato.Header.ToString())



End If



End Sub





C#



//si verifica quando cambia la selezione degli elementi



private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)



{



TreeView trwSeleziona = sender as TreeView;



TreeViewItem ElementoSelezionato = trwSeleziona.SelectedValue as TreeViewItem;





if (ElementoSelezionato is TreeViewItem)



{



MessageBox.Show(ElementoSelezionato.Header.ToString());



}





}







Nella visualizzazione XAML, selezioniamo il nodo quello relativo all’immagine e nella finestra delle proprietà facciamo doppio click nell’evento “Selected“ anche all’evento “Collapsed “ e l’evento “Expanded
“ .
L’evento Selected viene eseguito nel momento in cui si seleziona il nodo, mentre l’evento “Collapsed” quando si nascondono i nodi, e l’evento Expanded quando si espande.



Qui di seguito si riporta il codice XAML




<Grid x:Name="LayoutRoot" Background="White">



<sdk:TreeView Height="198" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="248" SelectedItemChanged="treeView1_SelectedItemChanged">



<sdk:TreeViewItem Header="Root">



<sdk:TreeViewItem Header="Sotto Nodo" />



<sdk:TreeViewItem Header="Sotto Nodo con immagine" Selected="TreeViewItem_Selected" Collapsed="TreeViewItem_Collapsed" Expanded="TreeViewItem_Expanded">



<StackPanel Orientation="Horizontal">



<Image Source="/SLTreeviewCS;component/Images/Foto.jpg" Height="50" Width="50" />



</StackPanel>



</sdk:TreeViewItem>



</sdk:TreeViewItem>



</sdk:TreeView>



</Grid>





Qui di seguito vediamo il codice per i vari eventi.
Per l’evento Selected, ossia quando si seleziona quel determinato nodo.




VB.Net



' Si verifica quando viene selezionato un determinato nodo Private Sub TreeViewItem1_Selected(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles TreeViewItem1.Selected



Dim elemento As TreeViewItem = TryCast(sender, TreeViewItem)



MessageBox.Show(elemento.Header.ToString())



End Sub





C#



//Si verifica quando viene selezionato un determinato nodo



private void TreeViewItem_Selected(object sender, RoutedEventArgs e)



{



TreeViewItem elemento = sender as TreeViewItem;



MessageBox.Show(elemento.Header.ToString());



}



Vediamo il codice da scrivere per l’evento “Collpased” ossia quando vengono nascosti i sottonodi.



VB.Net



'Si verifica quando racchiudo il nodo



Private Sub TreeViewItem1_Collapsed(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles TreeViewItem1.Collapsed



MessageBox.Show("Racchiude")



End Sub





C#



//Si verifica quando racchiudo il nodo



private void TreeViewItem_Collapsed(object sender, RoutedEventArgs e)



{



MessageBox.Show("Racchiude");



}



Ora scriviamo il codice per quanto concerne l’evento che espande i vari sottonodi.



VB.Net



'espando un determinato nodo



Private Sub TreeViewItem1_Expanded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles TreeViewItem1.Expanded



MessageBox.Show("Espande")



End Sub







C#



//espando un determinato nodo



private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)



{



MessageBox.Show("Espande");



}





Caricamento dinamico dei nodi
Aggiungiamo alla nostra pagina, un nuovo controllo treeview, in modo che verrà riempito da codice.
Terminata tale operazione, passiamo in visualizzazione codice e scriviamo una funzione che carica il controllo.
Qui di seguito si riporta il codice completo di tale funzione




VB.Net



Private Sub CaricaDati()



'Nodo principale



Dim nodo As New TreeViewItem()



'imposto il testo



nodo.Header = "root"



'lo aggiungo al controllo



TreeView2.Items.Add(nodo)



'creo il sottonodo



Dim SottoNodo As New TreeViewItem



'imposto il testo



SottoNodo.Header = "SottoNodo1"



'imposto un nuovo oggetto e le varie proprietà, come selezionato ed esteso



nodo = New TreeViewItem



nodo.Header = "Root SottoNodo"



nodo.IsExpanded = True



nodo.IsSelected = True



'aggiungo il sottonodo al nodo



nodo.Items.Add(SottoNodo)



TreeView2.Items.Add(nodo)



End Sub









C#



private void CaricaDati()



{



//Nodo principale



TreeViewItem nodo = new TreeViewItem();



//imposto il testo



nodo.Header = "root";



//lo aggiungo al controllo



treeView2.Items.Add(nodo);



//creo il sottonodo



TreeViewItem SottoNodo = new TreeViewItem();



//imposto il testo



SottoNodo.Header = "SottoNodo1";



//imposto un nuovo oggetto e le varie proprietà, come selezionato ed esteso



nodo = new TreeViewItem();



nodo.Header = "Root SottoNodo";



nodo.IsExpanded = true;



nodo.IsSelected = true;



//aggiungo il sottonodo al nodo



nodo.Items.Add(SottoNodo);



treeView2.Items.Add(nodo);



}







Come si vede dal codice si è creato un nodo, il quale viene valorizzata la proprietà header, successivamente viene creato un sottonodo, impostando alcune proprietà come header, selezionato e con espansione.



Ora non ci resta che richiamare tale funzione, dall'event Loader della pagina, si invoca tale metodo.



Qui di seguito si riporta il codice delle suddette operazioni.




VB.Net



Private Sub LayoutRoot_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles LayoutRoot.Loaded



CaricaDati()



End Sub





C#



private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)



{



CaricaDati();



}





Conclusioni
Si è visto come utilizzare in maniera introduttiva il controllo Treeview, nell'articolo, non è stato descritto in maniera dettagliata le varie righe di codice, in quanto i commenti e le semplici righe di codice, lasciano al lettore di comprendere il codice scritto. L'utilizzo di questo controllo è molto semplice, inoltre la tecnologia Silverlight offre al programmatore semplicità nello scrivere il codice.

giovedì 2 febbraio 2012

Creazione di una newsletter in blogspot

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_creazione-di-una-newsletter-per-il-blogs_1133.aspx





Introduzione
In questo articolo vedremo come creare una newsletter per il proprio blog sulla piattaforma blogspot.
Si ringrazia l’amico Luciano di Vince di chi osa http://www.vincechiosa.com/, per le delucidazioni fornite.



Andiamo alla pagina del “Design” e nella parte (destra, sinistra, alto o basso) del nostro blog, facciamo click sulla voce, “Aggiungi Gadget” in questo modo verrà iniserito un gadget in quella sezione.
Nella finetsra che viene aperta (figura 1) selezioniamo il componente “Segui tramite email (novità)”.





Figura 1



Facciamo click su tale voce ,ci verrà aperta una finestra (figura 2) dove verrà visualizzato con il campo titolo ed url impostato, modificate il campo Titolo con un testo di vostro gradimento.





Figura 2



Cambiamo il testo nella casella Titolo, quello presente con il valore “Newsletter” e facciamo click su salva.
A questo punto, in visualizzazione design, avremmo la nostra newsletter, che sarà visibile subito nel sito.
A questo punto, dovremmo modificare la newsletter, impostando il numero massimo di carattere da visualizzazione quando dev’essere letta, ed altro. Facciamo click sulla voce “Visualizza le statistiche per saperne di più”figura 3





Figura 3




Nella nuova finestra che viene aperta (figura 4) selezionate il titolo del vostro blog, in modo che apre una nuova finestra





Figura 4



Vediamo come modificare il testo, quando viene inviata un email alle persone in caso di registrazione.
Nella pagina di configurazine (click sul titolo del feed) andate nella sezione “Publicize” e poi in “email Subscriptions” selezioniamo la voce “comunication preference” in questo modo possiamo modificare il testo quando viene inviata un email di registrazione.





Figura 5




Cambiamo il testo “confirmation email subject” che è l’oggetto dell’email, con “Attivazione newsletter per ..”
E modifichiamo la sezione confirmation email body” lasciamo in alterato il testo “${confirmlink}
“ che serve a confermare il link al testo.
Salvate le modifiche e fate una prova di registrazione.
Tramite il pulsante "Save" salvate il tutto.
Se registrate un nuovo indirizzo si riceverà tale messaggio.
Se invece, vogliamo impostare la schedulazione per l’invio dell’email, ossia l’orario, dobbiamo andare nella voce di menu “Publicize” e poi “delivery options” impostando la zona di orario (Roma) e l’orario in cui si vuole che venga inviata l’email il tutto come mostrato in figura 6





Figura 6




Di norma, quando viene inviata la newsletter, viene riportato il titolo e tutto il testo del post che avete scritto nel vostro post.
Se volete limitare il numero dei carattere da visualizzare nell’email, e che il dettaglio venga visualizzato nel post, dove seguire la seguente procedura.
Sempre nella sezione “optimize” andate nella voce di menu laterale destra “summary Burner”.
Come mostrato in figura 7





Figura 7





Impostate nella casella “Maximum lenght” il valore 50 o quello che desiderate, e nella casella “Teaser” il testo, che indichi come leggere tutto il post per esempio “[[fate click sul titolo della notizia per leggere tutta la notizia”.
A questo punto, fate click sul pulsante “Activate.”
A questo punto, salvate tutte le modifiche, anche nel blog, e siete pronti ad offrire ai vostri lettori la newsletter del vostro blog, il tutto con pochi passi e senza conoscere linguaggi di programmazione.



Conclusioni
L’articolo ha voluto fornire la conoscenza di base per applicare nei propri blog di blogspot una newsletter. Le funzionalità offerte dai feed di Google sono notevoli, offrendo molta flessibilità e molte attività. Lasciamo al lettore lo studio delle altre funzionalità.

mercoledì 1 febbraio 2012

download Format Factory 2.90 italiano portable USB











Antonio, mi informa della nuova versione di Format Factory, il programma gratuito ed in italiano per convertire i file da un formato ad un altro.

La versione 2.90, portatile, si può scaricare dal seguente sito http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1616&Itemid=33

Questo programma, non richiede nessuna installazione, basta fare doppio click sul file eseguibile ed il programma si avvia senza problemi.

Per il download e maggiori informazioni, visitate il sito indicato.

Complimenti ad Antonio per questi ottimi software.