Appunti e promemoria su... beh... tutto quello che mi serve e che forse un giorno servirà anche a te...
mercoledì 29 agosto 2007
Web developer helper
Lato server visual studio (in .net) offre ottimi strumenti di debug e quindi il lavoro è generalmente semplice.
Lato client invece risulta ostico capire cosa realmente sta accadendo, quali dati vengono scambiati e quali file sono coinvolti nelle elaborazioni. Un ottimo tool che ci aiuta è possibile trovarlo al link http://projects.nikhilk.net/.
Con questo tool è possibile monitorare l'intero traffico HTTP, vedere anche le chiamate "nascoste" nelle applicazioni AJAX e vedere chiaramente le strutture dati javascript scambiate tra il client e il server.
Una ottima installazione e una guida completa completa inoltre il tool.
giovedì 26 luglio 2007
Manipolazione degli eventi javascript lato client
Un esempio:
<div style="height: 39px; border-style:solid;" onclick="javascript:prova();">
div con click definito nella pagina
</div>
Può capitare però che il comportamento della pagina debba cambiare in funzione della pagina stessa. Quindi gli eventi javascript che dovranno essere generati durante la vita della pagina non sono definiti direttamente lato server ma vengono impostati "dinamicamente" nel browser.
In pratica è possibile scrivere un oggetto HTML senza eventi associati
ad esempio:
<div id="divNoEvent" style="height: 39px;border-style:solid;">
div senza click definito a runtime
</div>
e aggiungere un poco di codice.
<script type="text/javascript">
function prova()
{
alert('hai fatto click');
}
var o = document.getElementById('divNoEvent');
o.onclick = new Function('prova()');
</script>
La chiamata o.onclick = new Function('prova()'); consentirà di agganciare la chiamata alla funzione prova() a runtime.
lunedì 25 giugno 2007
Configurare una rete wireless ragionevoltemente sicura a casa propria...
Tra un pochino la porterò in flat mode... e quindi rimanendo sempre acceso lo ho configurato affinchè offra un livello di sicurezza contro accessi indesiderati e non sia utilizzabile da sconosciuti, vista anche la nuova moda del war driving.
Vediamo se ho approntato tutto per benino per evitare che qualcuno oltre a me riesca ad usare la mia rete per i propri comodi...
- Cambiato password dell'admin dell'access point. Sembra banale, ma in quasi tutte le periferische si entra con Admin Admin...cambiare questa password mi è sembrata la cosa più ovvia e semplice da fare.
- Cambiato elenco dei mac address autorizzati ad accedere all'access point.
- Ridotto la potenza del segnale dell'access point al minimo indispensabile per avere buona copertura nella zona di interesse ma non far vedere la rete a chi ne è fuori ... Non abito in una zona affollata, ma se abitassi in un condominio mi scoccerebbe non poco vedere un elenco di 12 reti wireless attive intorno a me...
- Tra poco (non lo ho ancora fatto) abiliterò la crittografia WEP.
- Configurati gateway e ip per funzionare con il router ADSL. (non serve per la sicurezza, ma senza è inutile avere un access point acceso).
martedì 19 giugno 2007
Custom controls con eventi personalizzati
Ma un controllo per sua natura deve generare eventi server.
Dopo parecchia fatica ho trovato questa reference sul sito MSDN che spiega chiaramente come fare un controllo lato server che generi via javascript un evento lato server.
Nell'esempio spiegano la costruzione di un semplice link button che chiami la funzione OnClick sul server, ma cambiando delegati e nomi agli eventi, tutto funziona con eventi personalizzati e tipizzazione particolareggiata degli eventi.
venerdì 15 giugno 2007
10 cose da evitare... anzi... me ne bastano 6
1) fare copia e incolla... Se si ha necessità di copiare e incollare del codice significa che non si è sfruttata a dovere la struttura di ereditarietà messa a disposizione dal linguaggio a oggetti.
2) usare gli if e gli switch per modificare il comportamento. Ritorno al punto 1, esiste l'ereditarietà, quindi si può istanziare l'oggetto con il comportamento corretto e non mettere un if per variare il codice che verrà eseguito.
3) Implementare le proprie interfacce. E' più semplice manutenere una applicazione, anche se piccola, se questa implementa interfacce.
4) tipizzare il tipizzabile. Una applicazione che utilizza solo oggetti fortemente tipizzati è più facile da manutenere e da debuggare.
5) usare gli enumeratori. Si lega al punto 4, un enumeratore elenca semplicemente opzioni disponibili, il codice risulterà più pulito e non si potranno verificare situazioni non note.
6) ereditare tutto l'ereditabile... Controlli, engine e quant'altro. Non sappiamo dove la nostra applicazione finirà e quali comportamenti vorremo introdurre. Iniziando a scrivere l'applicazione utilizzando oggetti "nostri" che ereditano quelli di base, ci apriremo la porta per eventuali implementazioni future.
...se questi sei punti li avessi avuti ben chiari anni fa, beh, tutto sarebbe stato più semplice...
venerdì 8 giugno 2007
Con Hyperwords le pagine web diventano interattive
L'idea è quella di consentire una interazione ogni parola e accedere velocemente da un semplice menu a wikipedia, google maps, il client di posta e molto altro...
Che dire, guardate il video su you tube e ditemi se non fa gola anche a voi!!!!
Letto su...
http://www.downloadblog.it
Passaggio di parametri tra pagine in ASP.NET, POST e GET e CROSS PAGE POSTING
Quando ci si avvicina al mondo di ASP.NET si perde parzialmente il controllo dell'HTML che verrà generato e soprattutto non si riesce, semplicemente, a controllare i form ASP.NET in quanto le pagine vengono generate con 1 form html con action impostata automaticamente alla pagina stessa.
Cercando nella MSDN ho individuato le guide lines Microsoft per effettuare il CROSS PAGE POSTING DATA, e quindi risolvere il problema di passaggio dei parametri tra pagine ASP.NET.
Cross-Page Posting in ASP.NET Web Pages
How to: Redirect Users to Another Page
How to: Post ASP.NET Web Pages to a Different Page
giovedì 7 giugno 2007
ALT - TAB evoluto
Putroppo spesso l'icona o la descrizione indicata nella finestrella che appare non sono sufficienti per aprire la finestra corretta e così si va a "tentativi".
Un piccolo aiuto a questo viene da un piccolo PowerToy della Microsoft, che sostituisce la finestra di ALT + TAB standard con una piccola finestrella che fa anche una anteprima delle applicazioni.
Carino e comodo, trovate il file da scaricare al link Taskswitch.exe
mercoledì 6 giugno 2007
Multi desktop su XP
Su Microsoft XP non è disponibile nativamente ma attraverso un plug in (i PowerToy della Microsoft stessa) si può abilitare una funzionalità molto simile.
Dopo aver installato il plug in Deskman.exe si potrà abilitare dalla barra di avvio una nuova barra degli strumenti che consentirà di spostarsi tra i 4 desktop resi disponibili dalla applicazione.
Una utility carina che rende più semplice convivere con monitor mai abbastanza grandi e risoluzioni mai abbastanza "spaziose"
martedì 5 giugno 2007
Programmazione asincrona per le pagine web.
Questa è una prassi piuttosto comune, soprattutto perchè, escludendo eventuali interazioni sfruttando la tecnologia AJAX, la user experience migliora tanto più i tempi di attesa sono brevi.
Nei casi in cui i tempi di attesa siano più lunghi e soprattutto ci siano colli di bottiglia non superabili come esempio interazioni con web service piuttosto che procedure di IO particolarmente impegnative, oltre che ridurre la qualità della user experience si può incappare in problemi di scalabilità dell'applicazione.
Ho trovato questi articoli sull'msdn che spiegano esaustivamente il problema e anche delle ottime tecniche per superare anche questi ostacoli.
Asynchronous Pages in ASP.NET 2.0
Applicazioni scalabili con la programmazione asincrona in ASP.NET
lunedì 4 giugno 2007
ordine degli eventi nelle pagine e controlli ASP.NET
Al link http://aspalliance.com/articleViewer.aspx?aId=134&pId ho trovato un ottimo articolo che da una esaustiva spiegazione del problema.
Nella seguente tabella riporto semplicemente il reference dell'ordine degli eventi.
Method | PostBack | Controls |
Constructor | Always | All |
AddParsedSubObject | Always | All |
DeterminePostBackMode | Always | Page |
OnInit | Always | All |
LoadPageStateFromPersistenceMedium | PostBack | Page |
LoadViewState | PostBack | All |
ProcessPostData1 | PostBack | Page |
OnLoad | Always | All |
ProcessPostData2 | PostBack | Page |
RaiseChangedEvents | PostBack | Page |
RaisePostBackEvent | PostBack | Page |
OnPreRender | Always | All |
SaveViewState | Always | All |
SavePageStateToPersistenceMedium | Always | Page |
Render | Always | All |
OnUnload | Always | All |
venerdì 1 giugno 2007
Debuggare applicazioni ASP.NET
Visual studio offre un evoluto sistema di debug e controllo delle applicazioni in esecuzione. Normalmente questo si attiva quando si è in debug e si preme il tasto "F5" della tastiera piuttosto che il tasto "play" nella toolbar in alto.
Questa tecnica comporta però la compilazione di tutti i progetti nella soluzione o almeno l'analisi di tutti i progetti per individuare quali sorgenti sono stati modificati e quindi necessitano di una ricompilazione.
Se la soluzione contiene un numero elevato di progetti (anche solo una decina) il tempo da quando si preme F5 a quando si ottiene la pagina visualizzata può essere significativo e stressante.
Una soluzione possibile è quella di agganciare il debugger di visual studio all'applicazione IIS - ASP.NET (ma anche windows form) mentre questa sta funzionando.
Perchè questo sia possibile è necessario effettuare i seguenti passi:
- Aprire la console di IIS e creare il sito web [miosito] ASP.NET (versione XX) che punti alla directory dove sono contenuti i sorgenti del sito (aspx + cs).
- Aprire internet explorer (o altro browser) e digitare nella barra http://localhost/miosito/miapagina.aspx
- A questo punto andare dentro visual studio, menu DEBUG - Attach to Process
- Assicurarsi che il checkbox (show process from all users) sia selezionato
- Si aprirà una finestra con tutti i processi attualmente in esecuzione
- Selezionare aspnet_wp.exe Premere il tasto Attach
A questo punto visual studio sarà agganciato correttamente al processo di IIS e fermerà l'esecuzione nei debug point impostati.
mercoledì 30 maggio 2007
MOD rewriting e URL rewriting
beh, questo normalmente non è un problema, ma si eclude la possibilità di registrare gli interi contenuti su database, perdendo tutti i vantaggi garantiti da questa tecnica. (transazioni e backup...)
http://urlrewriter.net/
con questo si dovrebbe (non ho ancora avuto modo di provarlo) mantenere la compatibilità con i motori di ricerca e consentire di slegarsi completamente dal file system...
estrazione dati nidificati da SQL
Estrarre da una tabella le righe corrispondenti al massimo del valore di un campo della tabella del gruppo indentificato da un campo.
Eg.
Tabella:
Id -- Gruppo -- Val
id1 G1 2
id2 G1 1
id3 G1 0
id4 G2 0
id5 G3 3
id6 G3 2
Desiderata:
Id -- Gruppo -- Val
id1 G1 2
id4 G2 0
id5 G3 3
Soluzione con query nidificata:
SELECT Id, Gruppo,Val
FROM tabella
WHERE tabella.Val IN
(SELECT MAX(Val) AS Expr1
FROM tabella AS aliasTabella
WHERE (tabella.Id= aliasTabella.Id)
GROUP BY Gruppo)) ;