mercoledì 29 giugno 2011

Espansione Vision: Visual Studio un anno dopo



Un anno fa di questo mese Microsoft ha rilasciato Visual Studio 2010 e Microsoft. NET Framework 4, il più importante aggiornamento apportato IDE dell'azienda e il quadro dal codice. NET è stato rilasciato nel 2002.

Dal lancio, abbiamo visto le aggiunte ancora di più. Microsoft ha rilasciato una serie di cosiddetti Feature Pack, che hanno esteso il supporto per unit test, Team Foundation Server basato su collaborazione e virtuale-load test nell'IDE. E il mese scorso, Microsoft ha rilasciato Visual Studio 2010 SP1, che comprende una serie di aggiornamenti di funzionalità e correzioni che vanno da attrezzature integrate per lo sviluppo di Silverlight 4 IntelliTrace supporto per SharePoint e 64-bit progetti.

L'ambito in espansione di Visual Studio 2010 si riflette nella nostra copertura. Questo mese cominciamo a rotazione le diverse nuove colonne. Pratico. NET, scritto da VSM Strumenti Editor Peter Vogel, fornisce tutorial attuabili e la guida in una vasta gamma di sfide di programmazione, mentre Mobile corner autore Nick Randolph aiuta gli sviluppatori di ambientarsi nel mondo emergente di sviluppo Windows Phone. Nel mese di maggio, avremo il debutto colonna di programmazione Michaelis Mark 'interfaccia utente volti a Windows Presentation Foundation, Silverlight e sviluppo HTML5 altri.

Stiamo anche estendere la nostra linea portata. Mentre Patrick Steele continuerà a scrivere il nostro C # angolo di colonna in stampa, nuovo arrivo Eric Vogel (nessuna relazione con Pietro) sarà contribuendo on-line, scrivendo colonne Web due volte al mese con il C # angolo banner. Infine, è con rammarico che l'addio a contributore di lunga data Kathleen Dollard, che sta mettendo da parte le chiedono colonna Kathleen di concentrarsi su altri sforzi. Kathleen, ci manchi già.


Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla

AppHarbor annuncia l'Add-On di API per sviluppatori. NET

da infoQ

AppHarbor , un fornitore di hosting per PaaS. NET, ha annunciato un add-on API . Ciò fornirà un portale self-service di terze parti fornitori di servizi. Gli sviluppatori possono acquistare i servizi cloud attraverso una singola interfaccia e integrare ulteriori funzionalità nelle applicazioni si costruiscono sulla piattaforma AppHarbor. Il catalogo iniziale include Memcacher, MongoHQ , Cloudant , Redis To Go e MailGun .

InfoQ mise in contatto con Michael Friis , co-fondatore di AppHarbor, per avere maggiori informazioni -

InfoQ: E 'possibile per qualsiasi sviluppatore di terze parti a presentare un add-on per essere utilizzato con AppHarbor? E 'come un mercato, con i primi servizi menzionati come le applicazioni di partenza, o si tratta di un negozio chiuso?

Michael: Siamo sicuramente vedere questo come un free-for-all mercato aperto. Noi vogliamo testare add-ons prima di renderle disponibili agli sviluppatori (e forse inizialmente per offrire agli utenti beta privata), ma a parte questo, non imporre alcun limite su chi può offrire add-on sulla nostra piattaforma. Questa apertura comprende lasciando più add-on con i fornitori di servizi simili sulla piattaforma, ad esempio due add-on fornitori sia offerta hosted MongoDB. L'add-on documentazione API è pubblica (il nostro add-on programma funziona allo stesso modo di come Heroku).

InfoQ: Per gli sviluppatori che utilizzano AppHarbor, è possibile scrivere test contro questi add-on (magari usando una sandbox)?

Michael: E 'tecnicamente possibile scrivere test che utilizzano addons aggiunto a un'applicazione, ma si consiglia contro di essa - anche perché il test sarebbe utilizzando la stessa risorsa addon come l'applicazione distribuita.

In generale, si consiglia agli sviluppatori dipendenze finto esterno per aumentare la velocità e la semplicità di esecuzione e di evitare l'installazione complessa e teardown nella loro unit test.

InfoQ: Cosa succede se qualcuno gli aggiornamenti loro API e le prove non passano più (con una distribuzione esistente)? È il titolare del conto lasciato intendere in qualche modo?

Michael: I servizi offerti da fornitori di add-on sono in genere ben compresi e definiti (ad esempio una stringa di connessione a un database MongoDB o un secchio Memcached). Qual è provisioning attraverso l'add-on API quando uno sviluppatore aggiunge un info add-on, è tipicamente l'indirizzo e autenticazione necessaria per accedere l'add-on risorsa. Sta allo sviluppatore di applicazioni per accedere a tale risorsa utilizzando l'apposito API, come definito dal fornitore di add-on.

InfoQ: Ancora non hanno chiarezza completa su cosa un'istanza significa-in termini di potenza di calcolo, memoria RAM. Eventuali chiarimenti?

Michael: Siamo ancora nel processo di determinazione esattamente quante risorse un'istanza può consumare. In termini di potenza di calcolo, sarà una frazione di un'unità EC2 Compute - attualmente, è un po 'meno di un ECU.

InfoQ: Ci sono gli SLA offerti con implementazioni AppHarbor?

Michael: Siamo in stretto dialogo con gli utenti della piattaforma dei relativi requisiti SLA e ci rendiamo conto che gli SLA sono importanti per molti sviluppatori e aziende che utilizzano NET..

AppHarbor piattaforma dà accesso NET sviluppatori di un file. Git - e Mercurial abilitati ambiente di distribuzione continua in grado di supportare un rapido costruire, testare e distribuire il flusso di lavoro comune ai team agile e start-up. È dotato di unit test automatici che consente agli sviluppatori di testare il codice prima che venga schierato come pure rollback. Normalmente, AppHarbor richiede solo 15 secondi per distribuire versioni nuovo codice delle applicazioni ospitate su di esso.

PHP 5.3.6 rilasciato!


Il team di sviluppo di PHP annuncia la disponibilità immediata di PHP 5.3.6. Questa release si concentra sul miglioramento della stabilità del ramo 5.3.x PHP con oltre 60 correzioni di bug, alcuni dei quali sono legati alla sicurezza.

Miglioramenti della protezione e correzioni in PHP 5.3.6:
  • Rafforzare la sicurezza nel parsing protocollo FastCGI con fpm SAPI.
  • Corretto il bug # 54247 (format-string vulnerabilità Phar). (CVE-2011-1153)
  • Corretto il bug # 54193 (integer overflow nella shmop_read ()). (CVE-2011-1092)
  • Corretto il bug # 54055 (sovraccarico del buffer con valori di alta precisione per l'impostazione ini).
  • Corretto il bug # 54002 (crash tag realizzati in exif). (CVE-2011-0708)
  • Corretto il bug # 53885 (segfault ZipArchive con FL_UNCHANGED di archivio vuoto). (CVE-2011-0421)

Miglioramenti chiave in PHP 5.3.6 comprendono:

  • Aggiornato in bundle Sqlite3 alla versione 3.7.4.
  • PCRE in bundle aggiornato alla versione 8.11.
  • Aggiunta la possibilità di connettersi a siti HTTPS tramite proxy con autenticazione di base utilizzando stream_context / http / intestazione / Proxy-Authorization.
  • Aggiunte opzioni per eseguire il debug delle funzioni backtrace.
  • Predefinito valore modificato della direttiva serialize_precision ini 100-17.
  • Bug risolto # 53971 (isset () e empty () producono errore di runtime apparentemente spuri).
  • Bug risolto # 53958 (chiusure non può variabili condivise 'uso' per valore e per riferimento).
  • Corretto il bug # 53577 (regressione introdotta in 5.3.4 in open_basedir con una slash finale).
  • Più di 60 bug fix altri.

Utenti Windows: si prega di mente che non facciamo più fornire costruisce create con Visual Studio C + + 6. E 'impossibile mantenere una alta qualità e costruire sicurezza di PHP per Windows utilizzando questo compilatore non più mantenuto.

Per Apache SAPI (php5_apache2_2.dll), assicurarsi di utilizzare un Visual Studio C + + 9 versione di Apache. Si consiglia l'Apache costruisce come previsto dalla ApacheLounge . Per qualsiasi altra SAPI (CLI, via FastCGI mod_fcgi, FastCGI con IIS FastCGI o un altro server in grado), tutto funziona come prima. Terzi fornitori di estensione partito deve ricostruire le loro estensioni per renderli compatibili e caricabili con Visual Studio C + 9 build che abbiamo ora fornire.

Tutti gli utenti PHP dovrebbe notare che il PHP 5.2 serie non è più supportata. Tutti gli utenti sono caldamente invitati ad aggiornare a PHP 5.3.6.

Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla

martedì 28 giugno 2011

Racconto del Encoding Cryptic


Qualcuno di nome Robbie aveva creato una richiesta di registrazione per l'assistenza nella risoluzione di un problema con un semplice Visual Basic. Un'applicazione console NET. E 'stato utilizzato per recuperare ed elaborare registrazioni dei prodotti e transazioni con carta di credito via Internet per un pezzo di shareware di nicchia.

"Linea di fondo, faccio Fortran e C + +, non so o per sapere Visual Basic. NET", ha spiegato il post. "Tutto quello che so è che ho un app con il file sorgente 2KB per questo che ho bisogno fissa così posso guadagnare dei soldi. Sarò felice di inviare 100 dollari per la persona che può risolvere il problema."


Naturalmente, Lee sentivo un po 'cauto che fare con un ragazzo (o ragazza) da Internet, ma la promessa di una facile $ 100 tentati lei a prendere una possibilità.

Elaborazione su Internet ... Kind Of
A pochi minuti di lavorazione e l'invio di una missiva professionalmente formulato, Lee ha ricevuto una risposta.

Dopo aver gentilmente ringraziato Lee per la sua e-mail, Robbie ha spiegato che l'allegato file. Exe normalmente eseguito su una base quotidiana con l'output diretto a un file di testo che, a loro volta, vengono caricate in un foglio elettronico. Scritto anni fa, aveva funzionato alla perfezione fino a quando l'altro giorno quando ha iniziato soffocamento.

Un'esecuzione del comando l'eseguibile ha rivelato l'errore: lunghezza non valida per una Base-64 matrice di caratteri.

Basandosi sulla sua esperienza professionale con la risoluzione dei problemi di base-64 problemi di codifica, Lee è stato positivo che il problema sarebbe stato un gioco da ragazzi risolvere. Desiderosi di testare il suo coraggio, Lee saltato direttamente in allegato. Sorgente vb. Lei è stato rapidamente preso in contropiede:

Le importazioni System.Net.Sockets Imports System.IO Importazioni riservate modulo EmailApp Sub Main () ProcessPayment As New Server Segreto As ns TcpClient fioco come sr NetworkStream As StreamReader s1 As String = user "pop3.initech.com" As stringa = pass "secret@initech.com" As String = "l & 28a%" Server = New TcpClient (s1, 110) ns = Server.GetStream sr = New StreamReader (Server.GetStream) dati As String = "UTENTE" + utente + vbCrLf + "PASS" + passare + _ vbCrLf + "STAT" + vbCrLf + "STAT" + vbCrLf Dim ENC1 () As Byte = _ System.Text.Encoding.ASCII.GetBytes (data.ToCharArray ()) ns. scrivere (ENC1, 0, enc1.Length) Dim x As Integer = CInt (String.Concat (sr.ReadLine sr.ReadLine + + + _ sr.ReadLine sr.ReadLine). Split ("") (6)) Dim tmp As String For i As Integer = x A x dati = "RETR" & vbCrLf & i.ToString ENC1 = System.Text.Encoding.ASCII.GetBytes (data.ToCharArray ()) ns.Write (ENC1, 0, enc1.Length ".") tmp = sr.ReadLine Mentre (tmp <>) Se tmp.StartsWith ("Oggetto") Poi dati tmp.Substring = (9, tmp.Length - 9) End If tmp = Fine sr.ReadLine Mentre Console. WriteLine (i.ToString + "," + ProcessPayment.DeCrypt (dati)) data = "DELE" & vbCrLf & i.ToString ENC1 = System.Text.Encoding.ASCII.GetBytes (data.ToCharArray ()) ns.Write ( ENC1, 0, enc1.Length) dati Avanti = "QUIT" + vbCrLf ENC1 = System.Text.Encoding.ASCII.GetBytes (data.ToCharArray ()) ns.Write (ENC1, 0, enc1.Length) End Sub

Fine modulo
mente di Lee vacillava. Il modo in cui il programma "lavorato" era quasi impensabile. L'elaborazione dei pagamenti tramite posta elettronica nel 21 ° secolo ... e nel campo argomento?! Esattamente che tipo di follia aveva camminato in?

In realtà Imposta
Dopo Lee calmato, pensò di nuovo a ciò che Robbie aveva detto prima di rendersi conto, "Ah ah! Questo deve essere un problema di dati!" Ha proceduto a dare uno sguardo a messaggi di posta elettronica di backup nel conto elencati il codice sorgente.

La maggior parte dei messaggi, almeno cinque al giorno, aveva soggetti che sembrava questa: H4sIAJ4qnU0AA4vML1VIyy/NS1EoyUhVCE5NLkotUQgN8lFUyCgpKbDS10/KLNHLqdRPyw3LcXLjAgDGBcb9LwAA

Tuttavia, un web marketer aveva apparentemente scoperto l'account "nascosto", l'avvelenamento con offerte incredibili per i quasi-legale per corrispondenza prodotti farmaceutici, che ha causato il programma a soffocare. Lee pensato che ne sarebbe soffocata troppo.

Poiché l'aggiunta di un filtro antispam euristico per il programma è stato non solo fuori del campo di applicazione, ma anche al di fuori dei 100 dollari, Lee ha preso la strada più rapida e semplice avvolgendo la funzione "Decrypt" all'interno di un blocco Try ... Catch. Un rapido test ha rivelato che il programma potrebbe ora scaricare ed esportare registrazioni degli utenti come era prima. I nomi utente, indirizzi e-mail, numeri di telefono e carta di credito tutte le apparve, disposti in ordinate, campi delimitati da virgole. Lee ha inviato la sua revisione torna a Robbie, che, in cambio, si offrì di incontrarsi per un caffè.

Quando si incontrarono, Lee fece del suo meglio per spiegare perché il processo non quando lo ha fatto e ciò che ha fatto per risolvere il problema. Robbie sembrava essere ricettivo. A seguito di alcune ulteriori chiacchiere, il pagamento è stato consegnato e Lee fatto una domanda che ancora rodeva lei.

"Il terzo file che mi hai mandato - il file Confidential.DLL - che cosa vuol fare è che ..."

"Mi dispiace, nessuna idea," Robbie taglio con le palme aperte davanti a lei. "Non la mia area di competenza, ricordi?"

"Inoltre," Lee ridacchiò, "tutto funziona esattamente come prima se non meglio, e questo è ciò che conta, giusto?"

Lee trattenne il respiro per un secondo prima di estendere una mano ringraziando per l'opportunità di Robbie. Il suo senso di responsabilità degli sviluppatori urlava nella sua testa: "Sei pazzo, signora Sì, funziona oggi, ma cosa succede se qualcosa cambia se si ottiene hackerato?!??"

Sulla strada di casa, Lee decise di rimandare salvare il mondo fino a quando un altro giorno. Nel frattempo, stava andando a scoprire cosa che ha fatto DLL.

Nascosti nella segretezza?
Due ostacoli principali Lee impedito di vedere come la DLL funzionato. La mancanza di sorgente del programma e il file denominato "Riservato", che aveva una classe denominata "Secret". Nonostante questi ostacoli, Lee era in grado di decompilare facilmente il file binario di vedere la verità che i laici in essa:

Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla


Programmazione asincrona con il CTP Async

Da Eric Vogel

L'anteprima della Comunità Async Technology (CTP) è un download liberamente disponibile per Visual Studio 2010.
La CTP include il Async async e attendono le parole chiave che vengono presi in considerazione per il prossimo iterazioni di C # e VB.NET. Entrambe le caratteristiche del linguaggio consentono di sfruttare più facilmente le funzioni di programmazione asincrona di. NET Framework. La parola chiave async consente di definire un metodo come un metodo asincrono. Il attendono parola chiave permette di indicare una espressione da valutare al termine di un metodo richiamato in modo asincrono.

Andiamo attraverso il processo di ottenere il CTP Async istituita, seguito da uno sguardo ad alcune applicazioni pratiche.

Per iniziare
prima scaricare il CTP Async. Prima di installare il CTP in modo che non avete di ASP.NET MVC 3 Beta o RC installato, in modo da causare problemi con il CTP Async. Fidati di me su questo. Anche essere sicuri che non hanno alcun Visual Studio 2010 hotfix installati che hanno modificato il runtime C # o VB.NET - Inoltre, non installare Visual Studio 2010 Service Pack 1 se si vuole provare il CTP asincrona, in quanto non sono attualmente compatibili.

Ora che sapete che cosa non fare, andare avanti e installare la CTP Async e verificare che gli esempi funzionano correttamente. Se gli esempi non si compilano correttamente, controllare che non si ha nessuna delle suddette Studio incompatibili visivo 2010 aggiornamenti / correzioni rapide installate. Mi consiglia di installare la CTP di sviluppo su una macchina virtuale. Noi iniziare con la creazione di un metodo asincrono.

In primo luogo, verrà impostato il nostro primo progetto per il CTP Aysnc. Creare una nuova. NET 4 C # Console Application e aggiungere un riferimento a AsynchCtpLibrary.dll. Il file AsynchCtpLibrary.dll sarà situato nella vostra directory utente di Windows Documenti sotto "Microsoft Visual Studio Async CTP \ Samples".

Creazione di un metodo asincrono
Creazione di un metodo asincrono prevede la creazione di un metodo con la parola chiave async e ritorno sia vuoto, attività o attività . Cominciamo dal semplice e creare un metodo asincrono con un tipo restituito vuoto che saluta semplicemente l'utente dato il loro nome.

static void async GreetUserAsync (string name) {attendono TaskEx.Run (() => Console.WriteLine ("Ciao, {0}", nome));} 

GreetUserAsync è dichiarato come un metodo asincrono e attende un compito, che stampa "Ciao, il nome" alla console dove nome è il nome dato alla funzione. TaskEx.Run crea un task che esegue la funzione Console.WriteLine. Vi starete chiedendo perché non potrei semplicemente chiamare Console.WriteLine ("Ciao, {0}", nome)) entro GreetUserAsync?La risposta è che si può, ma poi il metodo GreetUserAsync avrebbe eseguito in modo sincrono. Il attendono espressione chiamerà il compito creato, permettono il thread principale per l'esecuzione, e costringerà la funzione GreetUserAsync per tornare una volta il suo compito è stato completato.

La chiamata al metodo asincrono:

static void Main (string [] args) {Console.WriteLine ("Async App Console CTP semplice"); Console.Write ("Nome:"); string name = Console.ReadLine (); Console.WriteLine ("La chiamata metodo asincrono ..."); GreetUserAsync (nome); Console.ReadLine ();} 

Un esempio più complesso
Ora che abbiamo coperto le nozioni di base, creiamo una applicazione più complessa che richiede un certo numero ed esegue calcoli diversi sul metodo in parallelo e visualizza i risultati in tempo reale. L'applicazione calcola il valore assoluto, radice quadrata e cubica di un numero dato e calcolare un totale, una volta gli altri calcoli sono finiti.

Il primo passo è quello di aprire Visual Studio 2010 e creare una nuova applicazione WPF C #. Successivamente aggiungere un riferimento a AsynchCtpLibrary.dll proprio come abbiamo fatto nel precedente esempio. Ora aprire il MainWindow.xaml.cs e inserire il codice seguente tra in elemento costitutivo.


[Clicca sull'immagine per ingrandirla.]
Figura 1.

Eseguire l'applicazione e si garantisce che l'applicazione si presenta come la schermata qui sopra. Ora che la nostra interfaccia grafica è creato possiamo iniziare ad aggiungere la logica di base alla nostra applicazione. Inizieremo con l'aggiunta del metodo asincrono per calcolare il valore assoluto di un dato numero.


Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla