Oggi dimostriamo un semplice utilizzo del ThreadPool di .NET osservando in maniera molto semplice che i Thread vengono riutilizzati. Per accodare una richiesta al ThreadPool utilizzeremo la classe Task, con un semplice contatore terremo traccia dei Task creati e stamperemo a video l'Id del Thread che lo esegue. var tasks = new Task[100]; for (int i = 0; i < 100; i++) { ...
React Development Blog
Gestione Errori con AngularJS
Facendo seguito all'articolo precedente, oggi vedremo come gestire gli errori di un'applicazione AngularJs. Il nostro web service potrebbe infatti ritornare una serie di errori, in base all'hash della URL fornito dall'utente. Nella funzione: myApp.config(function($httpProvider, $routeProvider) { }); Occorrerà aggiungere il seguente interceptor: $httpProvider.interceptors.pus ...
Primi passi con AngularJS
AngularJS è un framework JavaScript che permette di estendere una semplice pagina HTML e renderla dinamica. I componenti principali di un'applicazione AngularJS sono i template ed i controller, un'altra feature importante e che vedremo in questo articolo è il modulo ngRoute. Registriamo la nostra applicazione con le relative dipendenze. var myApp = angular.module('myApp', [ ...
jQuery Flot, come eliminare le barre con altezza zero
In un recente progetto abbiamo utilizzato la libreria javascript jQuery Flot per disegnare dei semplici grafici di tipo "stacked bars". I grafici che dovevamo rappresentare avevo dati "sparsi" ovvero non tutte le barre contenevano tutti i dati. Ad esempio Come è ben visibile da grafico la prima colonna ha una piccola linea verde. Il "dato verde" in realtà non contribuisce alla ...
Registrare Css Jquery o file .js in una Web Part SharePoint 2010
Durante le mie svariate esperienze fatte nello sviluppo sharepoint e in particolare nello sviluppo di web part si è presentata frequentemente la necessitià di dover utilizzare risorse esterne (css custom, file javascript, jquery, bootstrap ...). Magari lo sapete già ma io l'ho scoperto di recente dopo averlo cercato su internet svariate volte e lo voglio condividere spero vi t ...
Semplice Export CSV con Generics e Reflection
Ci è capitato diverse volte di dover esportare dei dati in da tabelle o viste di Sql Server o magari da griglie di pagine web di nostre applicazioni il cui datasource è creato "ad hoc" per la pagina. Presentiamo qui una semplice implementazione di un export in csv che fa uso dei Generics e della reflection. public static void FromEnumerable<T>(IEnumerable<T> list ...
Callback C#
Una funzionalità interessante e forse poco utilizzata nello sviluppo di applicazioni web .NET sono le Action (o callback). Per chi ha sviluppato applicazioni desktop o javascript conosce la loro utilità, soprattutto quando si ha la necessità di gestire degli eventi. In un sito web C# diventano molto utili nel momento in cui pagine o controlli diversi interagiscono tra loro: Mas ...
Come estendere classi pre-esistenti
In alcune situazioni vorremmo poter estendere classi esistenti nel framework o il altre dll oppure potrebbe essere necessario estendere ad esempio le classi autogenerate ad esempio da Linq to Sql. Per farlo abbiamo a disposizione due diverse strade (oltre all'ereditarietà). Se una classe è dichiarata con la keywork "partial" è possibile estenderla aggiungendo metodi e propriet ...
Primi passi con F# - La successione di Fibonacci
Oggi vediamo un esempio di funzione ricorsiva e di pattern matching con F#. Per farlo presenteremo una semplice implementazione della notissima funzione di Fibonacci. La funzione che implementeremo riceverà in input un intero n e restituirà l'n-esimo numero della successione di Fibonacci. Per maggiori dettagli sulla matematica consigliamo wikipedia. Il codice consisterà essenz ...
Thread Safety in practice
Vediamo innanzitutto come instanziare ed avviare due thread. Nel nostro esempio, i due thread simulano del lavoro intensivo da eseguire in background e ritornano. static bool done = false; ... Thread a = new Thread(task); a.Start(); Thread b = new Thread(task); b.Start(); ..... static void task() { if (!done) { Threa ...