AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

Articolo su Ioprogrammo: La piattaforma Parse di Facebook

Su IoProgrammo numero 193 (Settembre/Ottobre2014), trovate un mio articolo dedicato alla piattaforma Parse di Facebook.

Titolo di copertina:

Lo sforna App universale!
Utilizziamo il rivoluzionario generatore di codice firmato Facebook, per realizzare app compatibili con tutti i sistemi esistenti
 
 

#4 - ITA | Identificatori verbatim C#

In alcuni casi può rendersi necessario l’utilizzo di una delle parole chiave di C# come identificatore.

Ciò in particolare può tornare utile quando si interagisce con altri linguaggi .NET, in cui ad esempio una data parola non è una parola chiave.

Per evitare il conflitto basta far precedere l’identificatore dal carattere @. Il carattere @ non fa parte dell'identificatore, quindi quest'ultimo può essere usato in altri linguaggi senza il carattere @. Un identificatore con il prefisso @ è detto identificatore verbatim.

L'uso del carattere verbatim è consentito anche con identificatori che non sono parole chiave, ma naturalmente è meglio evitarlo per questioni di stile e per evitare confusione.

Per esempio, è possibile dichiarare una variabile così:

int @class;

#3 - ITA | Quante e quali sono le parole chiave di C#?

Quante e quali sono le keyword (o parole chiave) che costituiscono il vocabolario del linguaggio C#, secondo le specifiche 5.0?
Esattamente 77, riportate qui di seguito.

abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while

 

questo e altro all'interno di Programmare con C# 5, guida completa


Enum.GetValues in Windows Phone 7.x

 

Per ottenere l'elenco dei valori di un'enumerazione, ove non è disponibile l'apposito metodo GetValues (o GetNames) di Enum, per esempio in Windows Phone 7, possiamo implementare un metodo che sfrutta la Reflection ed ottiene lo stesso risultato:

public static List<T> GetEnumValues<T>()
        {
            List<T> values = new List<T>();
            foreach (var x in typeof(T).GetFields())
            {
                if (x.IsLiteral)
                {
                    values.Add((T)Enum.Parse(typeof(T), x.Name, false));
                }
            }
            return values;
        }

a questo punto possiamo invocarlo come segue:

var values=GetEnumValues<MyEnum>();


Windows Phone: WebBrowser e Javascript non vanno d'accordo?

Windows Phone fornisce un controllo WebBrowser utilizzabile nelle proprie app, per esempio per visualizzare pagine e siti internet, o per creare applicazioni ibride, con un misto di interfaccia XAML ed il resto appunto HTML/Javascript.

Il controllo WebBrowser ha delle limitazioni rispetto a quello di sistema, ed inoltre le funzionalità supportate dipendono anche dalla versione del sistema opeativo. 

In Windows Phone 7.1 è basato su Internet Explorer 9, mentre il controllo per Windows Phone 8 si basa su Internet Explorer 10, ed in Windows Phone 8.1 abbiamo infine il supporto di Internet Explorer 11.

A causa di queste differenze anche il contenuto visualizzato al suo interno può variare fra le differenti versioni dei sistemi operativi.

Il controllo permette anche di renderizzare contenuto che fa uso di javascript (Jquery & co sono ormai omnipresenti...), in questo caso però è necessario impostare a true l'apposita proprietà IsScriptEnabled, da code behind o direttamente da XAML.

webBrowser.IsScriptenabled=true;

 

In genere questo è sufficiente.

Purtroppo nella pratica mi è capitato di aver a che fare con una pagina html di un cliente, che faceva largo uso di Javascript, e che sul controllo WebBrowser non aveva intenzione di funzionare come funzionava su un normale browser.

Dopo vari googlamenti, tentativi, ricerche su StackOverflow e forum vari, ho scoperto che aggiungendo alla pagina HTML in questione la dichiarazione doctype di HTML 5, il tutto funzionava a meraviglia:

<!DOCTYPE html>
<html>
...

Quindi se vi capita, provate a risolvere così.

 

Articolo: Word 1.1 e MSDOS 2.0, il codice sorgente

Su IoProgrammo numero 192 (Luglio/Agosto 2014), trovate un mio articolo di commento al rilascio del codice sorgente di Word 1.1 e MS-DOS 2.0, una volta tanto non parlo di programmazione ma di storia e archeologia dell'informatica!

Titolo di copertina:

L'eredità di Zio Bill
  • Word 1.1 e MS -DOS 2.0 Ecco il codice sorgente 
    Chicche, debolezze e furbizie di programmi che hanno fatto la storia dell'informatica

 

 

#2 - ITA | Chi è il creatore di C#?

Il creatore del linguaggio C# è Anders Hejlsberg, ingegnere software danese, leggenda vivente del mondo della programmazione. 

Hejlsberg vanta un’esperienza trentennale in Borland dove ha creato il compilatore turbo Pascal e il suo successore, Borland Delphi. 

Nel 1996 approda in Microsoft, dove inizialmente si occupa del J++ (versione Microsoft del linguaggio Java) e delle Windows Foundation Classes, prima di divenire l’architetto capo di C#.

Potete seguirlo su twitter: @ahejlsberg

 

questo e altro all'interno di Programmare con C# 5, guida completa

#1 - ITA | Da dove deriva il nome C#

Perchè si chiama C
Vi sono varie interpretazioni, ma in quanto linguaggio derivato dal C, il nome C# deriva dalla combinazione di C con il simbolo di diesis preso dalla notazione musicale, che indica che la nota a cui si riferisce va alzata di un semitono.

Quindi un linguaggio che è un passo superiore a C.

Secondo altre interpretazioni il simbolo # è invece la combinazione di quattro +, quindi un modo di scrivere C++++.

Il simbolo nel nome di C♯ è il diesis, che in inglese si legge sharp ed è diverso dal simbolo del cancelletto #. Ma con una tastiera è più semplice utilizzare quest'ultimo, In ogni caso si pronuncia "C sharp" e non “C cancelletto” o “C diesis”.

 

questo e altro all'interno di Programmare con C# 5, guida completa

 

Windows Phone 8.1 e la simulazione di push notification

Il nuovo emulatore di Windows Phone messo a disposizione dal Windows Phone SDK 8.1, permette di testare in maniera molto semplice e produttiva applicazioni che debbano fare uso di push notification, senza dover implementare la parte server di invio di queste ultime.

Il nuovo emulatore mette a disposizione nuovi strumenti, che appariranno come tab nella finestra Additional Tools, attivabile cliccando sulle freccette dell'emulatore stesso. Fra le novità vi è appunto la tab Notifications, come potete notare dall'immagine seguente:

 

Appena mi sono accorto di questa nuova funzione, ho provato subito ad utilizzarla, e devo dire che l'utilizzo stesso non è stato immediato (probabilmente la tarda ora aveva fatto brutti scherzi)! Quindi ho deciso di scrivere questo post, per aiutare chi dovesse incontrare le stesse difficoltà.

Innanzitutto c'è da dire che per testare tale funzionalità, l'app dovrà prevedere la gestione delle push notification, visualizzando magari delle notifiche Toast, aggiornando le tile con testi, immagini, badge, e così via.

Proviamo quindi a fare subito un semplice esempio pratico. Avviate Visual Studio 2013 (con Update 2 RC installato), e create un nuovo progetto Windows Phone (va bene sia un progetto Windows Phone Store App, quindi basato sulla nuova architettura Windows Runtime, che un progetto Windows Phone Silverlight 8.1, tanto l'importante è poter utilizzare il nuovo emulatore).

Dopo aver creato il progetto, dobbiamo innanzitutto impostare l'app in maniera che essa possa visualizzare delle Toast Notifications. Quindi basta fare doppio click sul file Package.appxmanifest, e nella sezione Notifications, impostare il valore Yes in corrispondenza della voce Toast Capable.

 

A questo punto, è necessario ottenere un canale sul quale viaggeranno le push notification dal Windows Push Notification Service verso l'app, e quindi al caricamento della pagina principale, all'interno del gestore delll'evento Loaded, ho inserito il seguente codice:

private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

            channel.PushNotificationReceived += (s, args) => { Debug.WriteLine(args.NotificationType); };
            Debug.WriteLine(channel.Uri.ToString());
        }

Esso crea un oggetto channel, e vi associa un gestore per l'evento PushNotificationReceived (in questo caso gestito inline con una espressione lambda, ma tanto lo utilizzeremo solo per stampare una stringa di debug) e stampa nella finestra di debug l'Uri del canale appena creato.

Il progetto, per lo scopo che ci siamo prefissi, cioè quello di testare il nuovo tool per le notifications, è finito.

Quindi ho avviato il debug, ho aperto gli additional tools, ho abilitato la checkbox Simulation, ed ho cercato di inviare una notifica push simulata. Semplice, ma troppo bello per essere vero: non funzionava!

In realtà, il tool stesso indica la strada corretta da seguire: Enable Simulation, then redeploy and launch the push app to get the channel URI.

In parole povere, basta seguire la seguente procedura:

  1. avviare la prima volta l'app e quindi l'emulatore
  2. aprire i tools e abilitare la checkbox Simulation
  3. interrompere il debug
  4. lanciare nuovamente l'app
  5. cliccare il pulsante refresh per ottenere il channel URI

Ora è possibile scegliere una tipologia di notifica, modificare eventualmente il template, e inviarle all'app cliccando il pulsante Send.

La seguente immagine mostra una Toast Notification appena ricevuta dall'app sull'emulatore, le stesse notifiche sono mostrate naturalmente anche all'interno del nuovo Action Center introdotto da Windows Phone 8.1.

 

 

Storia delle versioni di .NET, C# e Visual Studio.

Microsoft ha parlato per la prima volta della nuova piattaforma .NET, originariamente conosciuta come NGWS (Next Generation Web Services) alla conferenza PDC dell'11 luglio 2000. rilasciando una agli sviluppatori una Tech Preview.

La prima Beta 1 di .NET 1.0, vede invece la luce l'1 novembre 2000, seguita da una Beta 2 il 20/06/2001. 

Nella seguente tabelle sono riassunte le successive release della piattaforma .NET, delle specifiche di C# e dell'IDE Visual Studio.

Anno  .NET Framework C# Visual Studio
2002 1.0 1.0 Visual Studio .NET 2002
2003 1.1 1.2 Visual Studio .NET 2003
2005 2.0 2.0 Visual Studio 2005
2006 3.0 2.0
2007 3.5 3.0 Visual Studio 2008
2010 4.0 4.0 Visual Studio 2010
2012 4.5 5.0 Visual Studio 2012
2013 4.5.1 5.0 Visual Studio 2013

Storia delle versioni di .NET, C# e Visual Studio.

.NET Framework Versions, C# Releases, Visual Studio Editions history