ottobre 2007 Blog Posts
A poco più di una settimana dal workshop su WPF, previsto per Venerdì 9 Novembre, risultano iscritte solamente 14 persone, numero inferiore rispetto alla media degli altri incontri.
Purtroppo nello stesso giorno ci sono altri due eventi che sicuramente impediranno ad alcune persone di partecipare (il workshop di DotNetSide su Sharepoint ed il TechEd), per cui siamo in dubbio se rimandare l'evento (con tutti i disagi che ne conseguono), dato che lo speaker che interverrà, Luca Regnicoli di Devleap, è un esperto a livello nazionale ed in genere tiene corsi del genere per lavoro, per cui sarebbe sicuramente un peccato farlo...
Il 9 novembre .NetMarche eroga il suo sesto workshop sull'argomento WPF. Lo speaker è Luca Regnicoli, e quindi la qualità dell'evento è garantita. La location è Osimo, la stessa del precedente workshop, per cui subito dopo l'evento ci sarà la solita cena condita di argomenti Geek, per cui… non mancate :D !!!!!!
Alk.
Esistono libri od articoli che talvolta contengono frasi molto interessanti e che racchiudono in poche righe grandi verità, per questa ragione ho creato nel mio blog una categoria chiamata "citazioni" in cui metterò qualche citazione. Inizio con questa presa da Aspect oriented software developement with use cases
"If you want to build the correct system, you have to get the requirements correct. This does not necessarily mean thick and huge volumes of documents. You must understand the motivation behind the stated requirements, the stakeholders' concerns. And that is paramount."
Alk.
In un precedente post ho parlato di come cifrare una stringa in javascript con RSA ora è arrivato il momento di mostrare un utilizzo pratico di questa tecnica. Il controllo login standard di asp.net 2.0 è infatti poco sicuro perché spedisce la password dell'utente in chiaro e quindi dovrebbe essere sempre utilizzato in contesto https. Purtroppo per hosting a "poco prezzo" ma in generale se non si ha a disposizione https, sarebbe comunque doveroso non far girare per la rete le credenziali dell'utente in chiaro. Per fare questo si procede in questo modo, ecco come si presenta la pagina di...
Ho un software che è sempre andato bene, ultimamente mi sono accorto che venivano loggati alcuni errori mentre si cercava di stabilire una comunicazione con le soket, andando a vedere i log ho visto che l'errore era il 10035 o WSAEWOULDBLOCK . Questo errore si verifica per socket non bloccanti, ma nel mio caso il valore della proprietà Blocking era pari a true. Dopo 10 min di ricerca mi imbatto in questo post. Leggendo vedo un moderatore che consiglia di fare questo workaround
As a temporary workaround you may want to explicitly set the Blocking property to true right before you...
Sono mesi che lavoro su vista, e stamane mi sono detto "proviamo ad attaccare la webcam al portatile per vedere se va". La ho attaccata, gli ho detto di cercare i driver, li ha trovati online e durante l'istallazione mi ha dato un blue screen L
Ho riavviato e praticamente anche con la telecamera staccata tentava sempre di istallare i driver, quindi blue screen ad ogni tentativo. La soluzione è stata avviare in provvisoria e fare un revert con il punto di ripristino, tutto ora sembra funzionare.
Quello che non capisco è perché il sistema cercava di istallare lo stesso il driver...
Se vi interessa cifrare stringhe da Javascript in RSA da passare al codice lato server questo posto potrà esservi utile. (Clicca per leggere)
Alk.
Ieri mi sono posto il problema di far girare l'emulatore del Pocket PC nel computer di un cliente perchè quest'ultimo doveva far vedere un programma che sto sviluppando ad una demo. Inizialmente ho tentato di installare l'sdk di windows mobile, ma senza successo perché mi richiedeva il visual studio istallato.
A questo punto ho provato la soluzione "grezza", ho preso la cartella C:\Program Files\Microsoft Device Emulator\1.0 ed ho copiato tutto il contenuto dal mio pc al pc del cliente, ho incrociato le dita e l'emulatore è partito. Il secondo passo è spostare lo stato dell'emulatore, che si trova nella cartella...
Qualche gg fa ho terminato Developing more secure asp.net 2.0 applications. Voto 5/5, libro sicuramente indispensabile
per chiunque lavori nel web con asp.net e non solo. Personalmente non sono un esperto di sicurezza, ma ritengo che l'argomento Security sia al giorno d'oggi INDISPENSABILE, per questa ragione è necessario che chiunque sviluppi software abbia per lo meno una infarinatura generale che gli permetta di evitare di introdurre nel software buchi di sicurezza veramente vergognosi.
Il libro è molto interessante perché ha un approccio pratico, trattando in dettaglio vari aspetti della sicurezza legati ad ASP.NET 2.0, ma non solo. Il capitolo 4 ad...
Ho appena finito di leggere Analysis Pattern di Fowler e debbo dire che è stata indubbiamente una bella lettura. Una delle pecche del libro è che più che di Pattern, il libro parla di specifici casi (ospedalieri, finanziari) mostrando alcune possibili soluzioni per problemi specifici di queste realtà. Le casistiche presentate non sono abbastanza generali dal poter essere chiamati pattern, ma comunque sono indubbiamente interessanti e possono essere spunti di riflessione. La seconda parte più generale scorre decisamente meglio della prima, sebbene rimanga forse troppo astratta. Il libro è datato, la notazione grafica non è UML, ma egualmente comprensibile, grazie...
Sabato abbiamo fatto una gitarella con gli admin di DotNetMarche unendo l'utile (Discutere del futuro della community) al dilettevole (il pranzo :D). Sento ancora il sapore della buonissima fiorentina presa all'osteria di Muzzicone, a cui non posso che fare una buona pubblicità. Debbo dire che passare ogni tanto un fine settimana con la community è veramente divertente, a parte qualche discorso di politica (come non citare la Levi-Prodi) è stata una giornata molto rilassante, nella quale ho dimenticato veramente "date di scadenza", "F24", "Commercialisti" e quant'altro. La community è veramente una vera valvola di sfogo per lo stress :D
Alk.
Sfogliando il muro trovo questo post….leggo l'articolo è rimango esterrefatto…….ma in che paese viviamo?
Alk.
[Edit] Anche Grillo come prevedibile sta dicendo la sua sull'argomento.
Il test double, è una tecnica utilissima per aumentare la "testabilità" del codice, ma come fare per usare questa tecnica in maniera efficiente. Un pattern che uso costantemente è quello dell'override per le istanze singleton. Faccio un esempio. Se in un progetto ho un DAL molto standard che usa un Dao per tabella (un table module) gli oggetti Dao sono solitamente senza stato, per questa ragione utilizzo il pattern Registry in cui tengo le istanze singleton dei miei Dao. (Questo quando non posso usare Nhibernate :P). In sostanza ovunque il codice necessiti di un dao non fa altro che chiamare...
Il mondo è veramente cambiato, egli verrà su un debugger di fuoco e brucerà i bug con i suoi infiniti poteri, nessun buco di sicurezza potrà tollerare il suo sguardo. Egli ha creato il mondo dall'assembly e nel momento del giudizio i giusti cammineranno assieme a lui verso il Codice promesso.
Alk.
Una cosa che mi manca tanto dal C++ è la STL. In C++ la libreria STL è ben organizzata, soprattutto i contenitori; in .NET invece c'è un po' di confusione e di entropia. Prendiamo ad esempio la IList<T> e la List<T>. La seconda non è solamente una implementazione concreta di IList<T> perché ha veramente tanti metodi in più, questo fa si che lavorare con una IList<T> o con la sua diretta implementazione concreta fornita da microsoft sia differente. Personalmente avrei fatto si che la List<T> implementasse solamente i metodi di IList<T> lasciando ad un'altra classe i metodi aggiuntivi, oppure ancora...
Due righe solo in risposta a vari post recenti di cui uno degli ultimi di alessandro. Quello che mi chiedo sempre è questo, ho letto vari libri tra cui Rapid Developement, code complete, On pressure and on time ed altri, i quali sono basati su consigli di persone reali che nel mondo della programmazione hanno lavorato a livelli altissimi.
Ora in questi libri vengono date una serie di linee guida, ma soprattutto vengono anche riportate le cause maggiori di fallimento di progetti reali, analizzati post mortem. Allora perché quando si cerca di far capire a chi dirige la baracca che esiste...
In un precedente post si parla di eguaglianza, volevo fare una piccola precisazione perché in un commento ho detto una cosa un po' sbagliata e confusa rispondendo a Diego di getto, ho per questo cancellato il commento riprendendo in maniera più estesa e spero più chiara il discorso. Prendete il seguente snippet:
Object TO3 = "test";Object TO4 = new StringBuilder().Append("test").ToString();Console.WriteLine("TO3 == TO4 is {0}", TO3 == TO4);Console.WriteLine("Object.Equals(TO3,TO4) is {0}", Object.Equals(TO3, TO4));Console.WriteLine("Object.ReferenceEquals(TO3, TO4) is {0}", Object.ReferenceEquals(TO3, TO4));
Stampa false, true, false; di questi, il terzo false è chiaro dato che il ReferenceEquals() compara per riferimento e le due stringhe sono chiaramente istanze differenti, ma per l'operatore == e per Object.Equals() avere un risultato differente può generalmente causare apprensione :D. Per capire il perché di questo comportamento...
Squilla il telefono, rispondoIo:ProntoAltro:…..ProntoIo:Salve, chi desidera?Altro:Chi sei?Io:Scusi, chi cercava?Altro:Ho sbagliato numero?io:Dipende, chi cercava?Altro:La signora xxxIo:Allora ha sbagliato numeroAltro: Click.
Ora, io ho risposto con voce gentile, dando del lei, penso che per educazione almeno mi poteva dire alla fine "mi scusi ho sbagliato numero" e non sbattermi il telefono in faccia :D :D, secondo voi sbaglio?
Alk.
Sette sono I nani, le meraviglie del mondo, le note, e sempre sette sono I minuti dopo I quali il mio Windows Media Encoder fa le bizze L, ho registrato per la seconda volta uno screencast per il mio intervento al 4° workshop dotnetmarche e anche in questo caso dopo il settimo minuto l'audio ed il video si imballano L
Alk.
Girovagando per i forum di C# ho visto uno snippet sbagliato di un tizio che in sostanza voleva fare una generica routine per comparare due entity. Da qui faccio nascere una riflessione con due piccole domande: cosa stampa lo snippet seguente?
String TS1 = "test";String TS2 = "test";Object TO1 = TS1;Object TO2 = TS2;Console.WriteLine("TS1 == TS2 is {0}", TS1 == TS2);Console.WriteLine("TO1 == TO2 is {0}", TO1 == TO2);
Siamo sicuri al 100% oppure abbiamo bisogno di altre informazioni per affermare con certezza l'output? E il seguente cosa stampa?
String TS3 = "test";String TS4 = new StringBuilder().Append("test").ToString();Object TO3 = TS3;Object TO4 = TS4;Console.WriteLine("TS3 == TS4 is {0}", TS3 == TS4);Console.WriteLine("TO3 == TO4 is {0}", TO3 == TO4);
Alk.
Seconda parte del post su come validare gli input dell'utente. In questa parte si mostra come utilizzare Castle.Winsor per gestire il file di configurazione dove memorizzare le regole di validazione.
Alk.
In questi giorni mi sto dilettando un po di sicurezza, ieri ho postato un tip su come cifrare la querystring, oggi volevo postare una semplice tecnica per fare validazione custom dei parametri in querystring e post. La tecnica non è nulla di eccezionale, ma può essere interessante.
(clicca per leggere)
Alk.
Se dal Visual Studio apro un'altra solution poi spesso non posso accedere alle proprietà dei progetti, questo non ci fa sempre, ma spesso L
Ogni volta sono costretto a chiudere e riaprire il VS…a qualcun altro è mai capitato?
Alk.
Avete mai pensato a quanto insicuri possono essere i parametri passati in una querystring? Il chiamante può infatti modificarli a piacimento per cercare di trovare ad esempio una falla di sicurezza nel vostro applicativo.
In questo piccolo articolo mostro una possibile soluzione, criptare la querystring in modo che sia impossibile per un attaccante modificarla.
(Clicca per leggere l'intero post)
Dopo il post di Raf ho voluto scrivere un breve post in cui spiego brevemente come accedere a risorse del file system da asp.net in maniera un po più sicura del passare il nome del file nella querystring.
Alk.
Dopo avere letto il post del pres, ho deciso di provare anche io, purtroppo tra tutti I personaggi mi è venuto fuori proprio quello che mi piace di meno siiiiggghhh
Il bello è che ho riprovato, cambiando un paio di risposte su cui ero indeciso la prima volta, il risultato è stato "Matt" che naturalmente è il secondo personaggio che non mi piace della serie :D :D :D ihihih.
Alk.
In seguito al meraviglioso post di Raf vorrei segnalare un libricino. Il libro in questione si chiama Developing More-Secure Microsoft ASP.NET 2.0 Applications, lo ho quasi finito di leggere e non è assolutamente male, è molto pratico, non da troppa teoria di base, si legge in non troppo tempo, non sarà approfondito ma sicuramente evita di fare gli errori grossolani fatti nel sito di Veltroni.
Penso che sia una lettura obbligatoria per chiunque sviluppi asp.net, perché se è vero che non possiamo tutti essere esperti di sicurezza è anche vero che una conoscenza minima è doverosa.
Alkk.
E' da poco che lavoro su SqlServerCe, a parte lo smattimento per capire perchè nel mio sistema non si istallasse, debbo dire che sono abb soddisfatto. Il nuovo SqlCeResult è decisamente carino, ho infatti modificato leggermente il pattern esposto nel precedente post, ho infatti creato piccole classi business e poi ho definito per ogniuna di esse la versione cursor, ad esempio Product e ProductCursor. La versione cursore eredita dalla classe base, e come esposto nel precedente post permette di usare un comodo foreach, ma utilizzando sempre la stessa entità per risparmiare RAM. L'unico drawback è che il chiamante deve essere...
Una piccola considerazione sull'uso di SqlCeResultSet in ambiente mobile. Come simulare una lista di business object senza effettivamente creare in memoria tutte le istanze.
Stamane debbo fare un lavoro urgent per un cliente, sviluppo su mobile e necessità di sql server, vado ad istallare tutto e quando istallo il SqlServerCe mi trovo questo
Cosa?? The upgrade patch cannot be installed??? Dopo 3 ore di sofferenza ho trovato la ragione. Prima di tutto date uno sguardo a questo post. In sostanza sembra che non sia stato istallato correttamente da visual studio la versione base del sql server mobile tools…provo a reinstallare…nulla mi da un errore strano, Error code 3 file not found….mamma mia … dopo un po di tempo ho trovato la soluzione
Basta andare...