ASP.NET
Tutto ciò che è relativo ad ASP.NET a partire dalla 1.0 fino alla versione attuale :)
Dopo lunga gestazione, abbiamo inserito la funzionalità di forum in Umbracoitalia.
Finalmente c'è un posto tutto italiano per scambiarsi problemi (e soluzioni) basate su questo CMS.
Li abbiamo "lanciati" online a forza, quindi saranno magari pieni di bug... segnalateceli :)
La versione 4.6.1 di Umbraco è uscita con alcuni bug minori relativi alla parte editoriale.
Uno dei più noiosi è un bug nel TinyMCE relativo al cut&paste da word. Il bug è stato risolto nella versione 4.7, ma per chi non riuscisse ad upgradare in tempo, trovate qui i dati relativi al bug ed anche il file javascript per fixare il problema.
Qualche post fa avevo evidenziato i principali effetti deleteri dell’avere in produzione un applicativo con il debug abilitato.
Ultimamente (ieri), mi è capitato ancora una volta di trovare un applicativo in produzione da parecchio tempo che, per motivi ancora da chiarire, si è ritrovato con il debug abilitato. Gli effetti sono stati che l’architettura bilanciata su due nodi continuava a cadere, provocando disservizio. Un frontend che fino al giorno prima reggeva tranquillamente un milione e mezzo di pagine viste al giorno, si è ritrovato a non sopportarne più di 400 mila, con gravi danni per l’advertising. Una volta riconfigurato il...
Chi di voi ha utilizzato almeno qualche volta Umbraco, conosce sicuramente il meccanismo potente delle macro. Come probabilmente sapete, le macro hanno la possibilità di essere “cachate” (utilizzano la cache nativa di ASP.NET) per evitare che vengano interpretate ogni volta. Questa funzionalità è, però, tanto utile quanto pericolosa. Il rischio, infatti, è di “abusare” in maniera eccessiva di questa facilitazione, soprattutto quando si parla di macro XSLT. Un esempio: chiunque lavori in XSLT da più di qualche ora sa che ci sono dei selettori che in generale è meglio evitare. Qualcosa come $currentPage/ancestor-or-self::node//node...
Una delle maggiori richieste quando si implementa qualcosa in Umbraco che ha del pregresso è, ovviamente, l’importazione. Personalmente, mi sono trovato bene con CmsImport (prima noto come UmbImport), un package commerciale che per 99 dollari permette di fare l’importazione “semplice” e, tramite custom action, maneggiare il documento importato in modo da fare virtualmente qualsiasi cosa. A meno che l’autore non abbia aggiornato la documentazione o il blog mentre leggete questo post, vi consiglio di scrivergli per chiedergli esempi: è possibile fare veramente tante cose e lui è molto disponibile ad aiutarvi, ma gli esempi e la...
Spesso (troppo) vedo un gran numero di progetti web che finiscono in produzione senza le dovute precauzioni. La cosa peggiore che si può fare è, quasi certamente, dimenticarsi di cambiare l’attributo “debug” nel web.config quando si pubblica. Vedere <compilation debug=”true”> .. </compilation> nei web.config dei server di produzione dei miei clienti ormai mi da istinti omicidi :) Molti non lo fanno per pigrizia o perchè “così se c’è un errore, ho informazioni più dettagliate”. Questo approccio è _assolutamente sbagliato_: una forte politica di logging mette al sicuro...
Lavorando spesso con siti frontend, il SEO diventa una priorità non trascurabile. L’ottimizzazione per i motori di ricerca è una delle richieste più pressanti da parte del cliente, e questo porta spesso a dover generare titolo, keyword e abstract direttamente da backend (o, utilizzando un CMS, prendendolo dalle proprietà del documento corrente). Un problema che ho rilevato è che, interagendo direttamente con l’header runat=”server” e inserendo un tag <title> direttamente a runtime, il ASP.NET si “incasina” e, non sapendo che voi avete aggiunto effettivamente un tag <title> magari nel page_load, lo aggiunge lui. Questo porta...
Lavorando così tanto con Umbraco, XSLT ormai è diventato un mio secondo linguaggio. Scendere a patti con la paginazione in XSLT, spesso, può essere un problema. Il problema principale è la mancanza di divisione con resto: idiv è stata introdotta con XSLT 2.0, che purtroppo non è supportato dal Framework ne, quindi, da Umbraco. L’alternativa è: - Introdurre un parser XSLT di terze parti e mettersi a modificare il core (come quello di Altova, che è disponibile gratuitamente). Particolarmente complesso :) - Utilizzare la funzione floor(), che restituisce il numero intero indipendentemente da...
Ci sono molte parti di Umbraco che hanno bisogno di essere… “aiutate” per funzionare correttamente! Molto si trova con la pratica, molto leggendo blog come il mio :) Quindi, visto che non sono geloso, vi giro un altro blog da cui ricavo un sacco di informazioni utili, che spesso utilizzo: http://www.nibble.be/ A discapito dell’estensione, il sito è in comprensibilissimo inglese, e punta molto sull’argomento “startup” di Umbraco, che io spesso posso tralasciare per motivi pratici… Technorati Tags: Umbraco,Tips & Tricks
Utilizzando l’oggetto Image, può capitare di ricevere un errore, abbastanza criptico, che spesso è impossibile da interpretare: Generic Error in GDI+ Chiaramente, i componenti COM non hanno la buona educazione di avvisarci riguardo a _quale_ sia effettivamente l’errore…. Per fortuna, in ASP.NET le cause per questo errore sono principalmente due: 1: Permessi. Ossia, stiamo cercando di salvare un immagine in un percorso in cui l’utente interattivo non ha i permessi di scrittura. Come al solito, ma non solo in questo caso, è buona norma assicurarsi che i permessi siano corretti soprattutto quando...
Mi è capitato un problema bizzarro, ultimamente, uno dei tanti in cui mi sto scontrando lavorando con siti con alto traffico di utenti. Il problema in questione era che il DataReader, improvvisamente, è “impazzito”, restituendo una System.IndexOutOfRangeException nel metodo GetOrdinal. In pratica, mi diceva che nel set di dati restituito mancava la colonna che cercava di leggere. Peccato che, nel metodo in questione, la colonna ci fosse, la stored fosse corretta… insomma, funzionasse tutto “normalmente”. Come nel classico dei bachi, il problema si presentava in maniera assolutamente randomica. Quindi, per esempio, andava perfettamente in 10 casi,...
In uno dei tanti progetti che sto seguendo, mi è capitato un errore di quelli che nessuno vorrebbe mai avere: l’applicativo schizza come una lippa ma, improvvisamente, la CPU schizza al 100% (su un server con 16 core e 16 giga di ram…) e rimane li, inchiodata, per quasi un minuto. Poi va giù, senza generare errori rappresentativi, e ritorna a funzionare… per non si sa quanto! Abbiamo passato differenti giornate a cercare di capire il problema. Alla fine, siamo abbastanza sicuri di aver isolato la causa: l’utilizzo di una cache esterna basata su Dictionary, “falliva”...
Probabilmente molti di voi, usando Umbraco, si appoggiano a dei template XSLT per gestire le proprie macro. Se già non lo fate, iniziate a farlo… la gestione dei template è importante, e permette di mantenere gli XSLT relativamente semplici da gestire. Una comodissima funzionalità dei template XSLT è la possibilità di richiamare un dato template, passando dei parametri. Questi parametri possono essere passati, o avere un valore di default che verrà utilizzato all’interno del template stesso. Per dichiarare il template con i parametri, la sintassi è <xsl:template match="node" mode="list"> ...
Umbraco ha alcune grandi pecche. Una delle più grandi è la crescita, a volte incontrollata, della base dati. Questo succede perchè per ogni salvataggio, Umbraco si tiene una versione di tutte le proprietà specificate per un DocumentType, nella tabella cmsPropertyData. Questo è comodissimo dal punto di vista redattoriale, ma per siti con grande ricambio di dati (come le testate giornalistiche che sto seguendo in questo periodo) si traduce in una crescita veramente esponenziale. Inoltre, anche la tabella umbracoLog cresce a dismisura, poichè non è possibile filtrare il livello di verbosity: o si spegne tutto, o ci si...
Una delle funzionalità più richieste è operare con il testo nell’ambito dell’XSLT. Uppercase e lowercase sono sicuramente i metodi più popolari. Umbraco, nelle sue extension, non fornisce supporto per queste funzionalità. Ma non è una mancanza: le funzionalità di questo genere sono esposte dalle Xslt string utilities. In particolare, per l’Uppercase, si dovrà scrivere: <xsl:value-of select="Exslt.ExsltStrings:uppercase($month)"/> Per il lowercase… beh, indovinate :) Purtroppo, nella reference queste due funzioni non sono specificate… quindi è altamente probabile che possano sfuggire! Technorati Tags: Umbraco,Uppercase,Lowercase,Xslt string utilities,Exslt
Ho scritto ieri riguardo il FamFamFam Icon Pack, ed alla sua importanza nel caso di alberi realmente complessi, per dare un feedback visivo all’utente/editore su quello che sta facendo. Mi hanno scritto alcune persone dicendo che è “inutile”, poichè nella selezione del DocumentType, le icone non vengono visualizzate, quindi ci si trova con una combo lunghissima, senza poter sapere che cosa si sta selezionando. Purtroppo, è un “baco noto” di umbraco quello di non visualizzare le icone con nessun browser, tranne Firefox. Quindi, se volete giocare con i DocumentType e le nuove...
Sono sicuro che anche a voi le icone standard fornite da Umbraco scontentano proprio. Quando si ha a che fare con molti DocumentType, avere a disposizione una gamma più ampia di icone è quasi una necessità, per consentire alla redazione di lavorare meglio ed accorgersi, anche visivamente, nel caso stiano facendo qualche errore.
Il miglior icon pack che ho trovato per Umbraco è il Fam fam fam icon pack, del già “famoso” Mark James. Installatelo ed avrete a disposizione una marea di icone per i vostri DocumentType… avrete solo l’imbarazzo di dover svegliere quella giusta!
… e se...
Teamcity è un ottimo prodotto gratuito (con limitazioni, ma molto ampie) che risolve brillantemente il problema della Continuous Integration, senza spostarsi su prodotti più articolati come TFS, che per molti clienti è fuori portata. Lo uso abitualmente in congiunzione con SVN: formano un’accoppiata molto stabile, e non mi danno praticamente nessun problema. Ogni tanto, però, la build si rompe per misteriosi motivi, soprattutto usando Umbraco. Come premessa, in tutte le solution che hanno umbraco come website ho disabilitato la compilazione del website, perchè ci mette un sacco. Quindi, l’unico modo per assicurarsi che tutto funzioni...
In molti casi, è necessario estendere Umbraco per aggiungergli diversi tipi di funzionalità. Nell’ultimo progetto, che andrà online tra qualche settimana, abbiamo dovuto creare un sito parallelo che girasse dentro umbraco (quasi come abbiamo fatto con www.style.it). In questo sito, che comunque gira sotto umbraco, abbiamo dovuto utilizzare la sessione per diversi motivi. Ovviamente, pubblicato sull’ambiente di stage, non funzionava piu nulla. Gli “object reference not set” del log non davano molte informazioni, ma con un pò di magia abbiamo scoperto l’arcano: le sessioni erano tutte misteriosamente a null. Ma non nel senso...
Forse non tutti sanno che, negli ultimi mesi, sono stato presissimo perchè la mia azienda si è occupata totalmente del rilascio del nuovo sito di style.it. Posso affermare senza ombra di dubbio che è il progetto piu complesso che abbia mai affrontato con Umbraco. Con qualche ombra di dubbio, posso affermare che è uno dei progetti più complessi che conosca in generale, sviluppato con Umbraco. Se qualcuno sta pensando al novello ASP.NET, la grande differenza tra i due è che ASP.NET è utilizzato e editato da gente che, più o meno, capisce quello che sta facendo. Style...
Probabilmente molte persone che usano umbraco ormai sono a conoscenza della possibilità di visualizzare il trace di .NET ed i relativi messaggi di errore delle macro utilizzando umbShowDebugTrace (per chi non ne fosse a conoscenza, fate un salto qui: http://our.umbraco.org/wiki/how-tos). Per chi invece già lo conosce e, come me, lo ritiene a volte poco intuitivo e pratico, segnalo questa utilissima estensione per Chrome di Kenneth, con cui ho avuto il piacere di lavorare spesso. In pratica ti aggiunge un menù che ti permette di entrare e uscire dalla modalità di debug, navigare direttamente in umbraco e...
Visto che, ultimamente, la maggior parte dei miei Weekly (Daily? Hourly?) Issue sono dovuti principalmente a questo CMS, ho deciso di creare una sezione apposta :) Iniziamo con uno degli errori più comuni che mi sono capitati in questi ultimi giorni: non si sa per quale motivo, l’applicativo in produzione ha iniziato a crashare prima ancora di avviarsi, tirandosi dietro tutto il W3WP.exe. L’errore, abbastnza criptico, era: Type 'umbraco.DataLayer.SqlHelperException' in Assembly 'umbraco.DataLayer, Version=0.3.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable. Dopo parecchi giri, discussioni via MSN con alcune persone del core team, e ricerche dovunque, si è...
Mi capita spessissimo di lavorare con i Build Events sulle solution, soprattutto usando Umbraco (seguiranno infatti una serie di post su questo CMS. Che è il motivo principale per cui sono sparito in questi mesi :)). Il problema principale che ho avuto è trovare una vera reference della sintassi. Le macro ci sono quasi tutte, ma spesso non si sa bene che cosa si può fare e che cosa no. Girando un pò, sul sito msdn si spiega che la sintassi dei Pre/Post build event in realtà è la medesima dei “vecchi” comandi MS-DOS. Quindi, potete agilmente trovare...
Chiunque avesse acquistato il mio ultimo libro, probabilmente avrà qualche problema a trovare gli esempi in rete. A lungo andare, questi saranno presenti sul sito dell'editore, nella scheda del libro. Nel frattempo, potete scaricarli direttamente a questo link.
E purtroppo, ci cascano anche le grandi...
O dovrei dire "Soprattutto le grandi"? :)
Quello che piu mi fa tristezza di questa cosa è il fatto che si pensi così poco all'impatto negativo che può avere una cosa simile su un utente, soprattutto quando sta navigando prodotti che valgono dai 20k euro in su... e soprattuto quando mettere su non dico un controllo di errori decente, ma una pagina di errore è _così_ semplice... :(
Fortunatamente non è sottoposto ai piu semplici problemi di Injection... :)
Ho parlato tempo fa di come comandare la serializzazione di una classe con XmlSerializer utilizzando XmlElementAttribute per avere il nome degli elementi XML non concorde con quello dei campi della Classe. In questi giorni mi è capitato di dover aggiungere degli attributi ai nodi del mio XML, e in questo caso le cose si complicano un poco ....
(continua)
Ormai tutti quanti abbiamo log4net nelle nostre applicazioni web che, ben piantato nel global.asax o in un error handler, ci avvisa di tutti i casi in cui la nostra applicazione va in errore. In una grossa applicazione che ho in produzione, mi capita da qualche mese di ricevere due errori che proprio non riuscivo a spiegarmi: Invalid character in a Base-64 string e Unable to validate data
(continua)
Web Service e namespace NON sono i miei argomenti preferiti, anzi di solito tendo a limitarmi al mondo .NET appunto per evitare problemi. Purtroppo in giro c'è di tutto, e recentemente ho avuto parecchi problemi ad interfacciarmi con un Web Service su base AXIS con due diverse definizioni di Namespace...
(Continua)
Leggendo in giro su 3424322 blog, si evince che Visual Studio 2008 ed il framework 3.5 verranno rilasciati alla fine di questo mese....
Ora, a me sembra un pò presto ..... magari mi sono perso qualche pezzo del percorso di beta/rc di visual studio però mi aspettavo una "gestazione" finale un pò piu lunga......
Comunque, ci sono ancora alcune cose da chiarire: dall'annuncio ufficiale si legge
Visual Studio 2008 and the .NET Framework 3.5 will be available by the end of November 2007. The .NET Framework 3.5 will also be available to end users via a free, optional download from Microsoft Update
Quindi lo...
Tempo fa scrissi un post riguardo l'uso del metodo GetPostBackClientEvent() dell'oggetto Page per avere a disposizione uno snippet JavaScript che simulasse la PostBack (il classico _doPostBack()).
Già a quel tempo, ma anche per molti mesi prima, misi in guardia dall'andare dall'interagire a manina con il Javascript del framework, ma ancora in questi giorni sui NG se ne è tornato a parlare quindi meglio riprecisare ulteriormente:
[continua]
Access non è, come noi tutti sappiamo, una gran scelta in campo di base dati.
Per alcuni progetti, d'altronde, si rivela essere l'ideale, sia per il supporto in fase di deploy che per la semplicità per darlo in pasto all'utente intanto che si sfiluppa un backoffice decente :)
[continua]
Mi capita spesso di dover "dare da leggere" a qualcuno diversi documenti che lo introducano a VS 2008. Cosa cambia, come funziona, cosa c'è di nuovo.. da parlare ce ne sarebbe per secoli, quindi di solito quando me lo chiedono i miei clienti, do prima qualche malloppotto (leggero ovviamente) da leggere, e poi mi prostro aspettando che arrivino le domande :D
Ora, volevo segnalare questo interessantissmo post dell'amico Pietro che da un pò di giorni sto girando direttamente così almeno hanno tutto ben diviso! Grazie Pietro :)
Qualche tempo fa, avevo parlato di un progetto che stavo iniziando con gente totalmetne a digiuno di programmazione e totalmente con strumenti free.
Il progetto in se, dopo una partenza "difficoltosa", sta ingranando.... vedremo come andrà.
Nel frattempo, mi sono scontrato con un'esigenza che lavorando in ambiente "classic" non ho mai avuto: utilizzando Visual Web Developer Express 2005 come IDE ed avendo il mio codice di business nella directory App_Code, tutti i miei CustomControl e le mie classi sono definite li. Quindi, cosa prendo come nome di assembly quando devo referenziare un Custom Control con la direttiva di pagina Register o da Web.config?...
Mi è capitato ultimamente di avere a che fare col mondo flash.. molto a che fare...
Tralasciando le considerazioni personali, ho avuto modo di vedere che il parser XML di Flash ed i WebServices che restituiscono DataTable o DataSet non vanno molto d'accordo... (questo a detta di chi ci lavora, anzi gradirei sapere da qualcuno che conosce bene actionscript se è vera questa informazione.....)
Quindi, quello che ho dovuto fare è stato, per amore della tranquillità (e per esigenze di deploy in tempi "stretti"), cambiare l'output da DataTable a XmlDocument. Anche così, dava problemi la dichiarazione che ne consegue, che ha...
Allora, cosa sareste disposti a fare voi per levarvi dalle scatole lultimo progetto 2003 che avete tra le mani?
Io personalmente sarei disposto a un sacco di cose.... il problema principale è che questo applicativo è uno dei piu complessi guarda caso (un motivo se non l'abbiamo ancora migrato c'è :D)
Contiene una trentina di progetti, di cui due web, diverse console application, un servizio, ed il resto sono classi di business. ... oggi ho iniziato a fare le prove, e vediamo come andrà a finire...
L'interrogativo è: farlo per tutto e metterli di fronte al fatto compiuto? O parlarne...
Ho avuto un insidioso problema che mi ha fatto tribolare non poco oggi.
Sto creando una gestione di immagini via web (no Matteo, niente a che vedere con te :P) che permetta di caricare un immagine e cropparla, resizarla, girarla, controllarla. Insomma: un mini photoshop, ovviamente molto molto mooooooooolto mini :D
Ovviamente mi sono guardato in giro e nno ho visto niente che facesse come volevo io, tanti begli spunti alcuni fatti anche molto bene, ma mancavano di qualcosa oppure non mi convincevano per le soluzioni "tecnologiche" adottate (soprattutto per quanto riguarda CSS e Javascript). Quindi mi sono messo di impegno e mi sono...
Mi sono trovato a sviluppare un sacco di Custom Control nella mia "carriera".
In molti casi mi sono "scontrato" con la scarsa conoscenza del team in questo campo. E' una cosa abbastanza strana, capire che un Custom Control non è niente di trascendentale e che quello che fa il framework con la sua Textbox volendo possiamo rifarlo anche noi è una cosa che tutti gli sviluppatori dovrebbero _quantomeno_ comprendere... non dico saperla fare ad occhi chiusi, ma comprenderla si :)
Comunque, a parte le filippiche, le domande che piu mi sento fare è come utilizzare dei path relativi. Ho visto brutture (roba...
Si lo so, era un week end... ma tant'è...
Ho avuto una settimana distruttiva dal punto di vista lavorativo, e anche per questo non ho postato Daily Issue... ho avuto troppo da fare su lati "burocratici" e la maggior parte degli argomenti che ho trattato erano un pò OT per questo blog... è uscito qualche spunto interessante, ma troppo incentrato sulle realtà in cui lavoro.. non mi piace che escano fuori cose troppo personali, i miei clienti leggono il mio blog :)
Comunque, le buone notizie è che sto ricominciando a scrivere e dovrei ricominciare ad avere i miei soliti problemi :)
L'altra...
Paciugando su asp.net mentre aspetto che il progetto enorme finisca di fare il get latest da un sourcesafe particolarmente congestionato, mi sono imbattuto in questa lista di programmi liberamente scaricabili per rendere la vita piu semplice al moderno sviluppatore metropolitano....
Che dire, le conosco tutte, ma non le uso tutte (DevMetrics by Anticipating Minds.... sigh, la complessità ciclomatica.... ne aveva parlato Luka o Marco credo... non sono ancora convinto che sia una scienza esatta :)) .... credo che prenderò lo spunto di queste vacanze, oltre che per rifare il portatile come già previsto, anche per installare qualcosa di sfizioso e provarlo...
Tranne...
Ho avuto come esperienza alcune domande sull'uso di LoadControl che mi hanno spiazzato.
Ho sentito dire (:)) che per usare LoadControl bisogna per forza mettere un register tagprefix all'interno della pagina.... però tutto questo non ha molto senso, perchè se devo fare un LoadControl vuol dire che (potenzialmente) non so che controllo dovrò caricare, e quindi tutto questo diventa impossibile.
Ma infatti, per utilizzare il metodo LoadControl non c'è bisogno di avere nessuna registrazione: basta avere un placeHolder, e utilizzare il metodo LoadControl della classe Page, passando il path relativo (con la sintassi Page.LoadControl("~/Controls/MyControl.ascx");)
In questo modo avrò un istanza di UserControl...
Ultimamente, parlando con alcuni colleghi e sui newsgroup, mi è capitato di incorrere in qualche incomprensione sul funzionamento della sezione authorization.
Visto che è capitato così tante volte nell'arco di una sola settimana, direi che a sto punto lo scrivo qui, così almeno se me lo richiedono... rimando al link sul mio blog :)
Allora come è scritto qui:
http://msdn2.microsoft.com/En-US/library/acsd09b0(VS.80).aspx
At run time, the authorization module iterates through the allow and deny elements, starting at the most local configuration file, until the authorization module finds the first access rule that fits a particular user account. Then, the authorization module grants or denies access to...
Stavo paciugando in questi giorni con un piccolo programmino di statistiche... l'idea è tenere sotto controllo, senza troppe pretese, le solite cose che interessano in caso di statistiche, senza utilizzare un prodotto gratuito con immagini invasive ed assolutamente non-fashion (:P) e senza dover pagare per averlo. E ovviamente, essendo hostato su server non conosciuti, senza avere accesso ai log della macchina. In se, creare un programma semplice è un lavoro veloce di una mezza giornata, per conteggiare le classiche cose: accessi unici, pagine visitate, useragent, browser, referrer, etc etc. Preso dalla smania, ho deciso di customizzarlo un pochetto, sai...
Non è esattamente un Daily Issue.. ma ieri, per il progetto di cui parlavo tempo fa, mi sono ritrovato ad entrare nell'annosa questione del parametro Type dei famosi metodi dell'oggetto ClientScriptManager per iniettare codice JavaScript all'interno di una pagina, ed in particolare RegisterClientScriptBlock e RegisterStartupScript. In questi due metodi, sono sempre stato abituato dagli esempi a mettere come tipo this.GetType(). Questo sia che lo mettessi in una pagina direttamente, che in un custom control. Il dubbio mi è venuto ieri, quando ho sviluppato un CustomControl derivato da un mio CustomControl, ed ho notato che... lo script veniva duplicato! Dopo...
Ebbene si, finalmente, dopo molte peripezie, sono riuscito a fare installare i validissimi ASP.NET 2.0 CSS Friendly Control Adapters che, per chi non li conoscesse, permettono di renderizzare la maggior parte dei controlli ASP.NET 2.0 con html compliant alle specifiche CSS.
Questo mi ha aiutato a prendere alcune delle applicazioni già scritte e "sfrondarle" di tutte quelle noiose tabelle per riportare allo splendore i DIV innati dentro di loro...
Risultato.. beh, sembra uno spot pubblicitario, ma le pagine sono _decisamente_ piu snelle e decisamente piu veloci nel rendering. Ed il cross platform non è neanche così distruttivo, se si prendono come assodate alcune differenze...
Molto spesso in ASP.NET capita di dover simulare il click di un Button/LinkButton/ImageButton/Etc per tutta una serie di motivi.
Troppo spesso, negli esempi che vedo su internet vedo che si scrive a manina un richiamo alla funzione __doPostBack (JavaScript) forzando l'id del controllo e gli eventuali argomenti.
Questa cosa non mi piace per nulla ed oltretutto è passibile di errori: qualsiasi service pack del framework _potrebbe_ cambiare il metodo e quindi vanificare i nostri progetti. Per avere sempre la referenza corretta, consiglio di utilizzare GetPostBackClientEvent, che viene esposto dalla classe Page, ed accetta un oggetto di tipo Control (quindi il Button, LinkButton, ImageButton...
Molto spesso mi è capitato di forzare la dialog del "save as" per esempio con i PDF, per evitare che mi aprisse il reader embedded all'interno del browser. Volevo scrivere la mia soluzione, ma visto che è praticamente uguale a questa, vi posto direttamente il link :)
Link: Forcing an "Open, Save" dialog on know file types
Update: il link alla pagina diretta ogni tanto si incastra, credo che sia un problema di un plugin all'interno del sito...L'ho cambiato con il link al riassunto del giorno!
Segnalo dal blog di Scott Water(etc) una serie di tips sull'utilizzo di ASP.NET con problematiche quali caching, web.config, stato e altro...
http://scottwater.com/blog/archive/tags/asp.net+tips/
Non è molto recente, ma se non l'avete fatto sempre meglio dargli una letta: io ho scoperto un paio di cavolate cui proprio non pensavo :)
Eh si, capita ancora... siamo nel 2007, esiste IDisposable, esiste il Finally... eppure ci sono ancora problemi di Leaked Connection... soprattutto in 2003... caso vuole che in questi ultimi due giorni ne abbia avuti due, quindi posto qui un interessante articolo vecchio e stravecchio (sempre il caso vuole che un post sul NG mi riportasse a leggerlo proprio oggi, dopo anni che non lo vedevo :)) che spiega un pò le varie possibilità di connection leak... e soprattutto i vari casi in cui può succedere NON per problemi di close ....
Qui il link:http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
Beh... Se qualcuno ha problemi di Memory...
Ok, con ieri si è concluso il rilascio completo (quello che è definito come "Release 1".. .vedremo se sarà poi presente un'eventuale Release 2....) del famoso programma di tesoreria su cui sto lavorando da ormai due anni. E ancora una volta, devo inginocchiarmi e ringraziare .NET per aver fatto diventare il deploy delle applicazioni un gioco da ragazzi: pur senza pacchetto di installazione, è bastato copiare i siti, modificare i web.config (niente addin, la configurazione la vuole fare il lreparto IT .. così si sente partecipe... :)), pestare sulla tastiera un paio di InstallUtil, smanettare un pò con la GAC ed il...
Ho avuto a che fare con questo pernicioso errore da ieri.
Mi succedeva che su _una sola_ homedir (guarda caso quella contenente una copia di un'applicativo in produzione.. ma va beh...) mi desse questo messaggio d'errore ogni volta che cercavo di andare in debug. E non c'era verso nemmeno con l'attach al processo.
Googlando un pò in giro ho trovato diverse soluzioni ma nessuna che aveva niente a che fare con il mio problema: web.config malformato (no, perchè l'applicativo gira, solo non va in debug....), scriptmaps non installati (e questo l'ho scartato, tutti gli altri siti vanno!), versione scorretta del framework (ho...
No, non centra Sophie Marceau!! Non capita anche a voi di avere dei periodi nella vostra vita di sviluppatore in cui vi fissate su qualcosa??A me capita sempre, ci sono periodi in cui mi capita di ritrovarmi a fare una cosa sempre e comunque, dovunque, a volte anche quando non è necessaria, per fortuna praticamente mai quando è dannosa. Ho avuto per esempio il mio periodo Factory, in cui tutto era una factory, anche dove magari era inutile. Ho avuto il mio compianto periodo Singleton, stenderò un velo pietoso sul mio periodo XML....Ora ho il periodo Collection, farei ereditare tutto...
Ho ricevuto questo strano errore giusto poco tempo fa, dal mio caro amico W3SVC, che in partenza mi dava una bellissima iconcina di stop al posto del familiare globo tenuto in palmo di mano, ed un errore strano (non sono neanche stato li a scriverlo giù) ogni volta che tentavo di avviarlo.
Sono in un periodo molto incasinato e sono (stranamente) a casa questa sera per finire alcuni progetti urgenti da testare domani. Immaginerete le mie bestemmie quando all'apertura di windows ho ricevuto questo splendido errore dopo che, per la troppa fretta, ho "insaccato" il portatile ancora acceso nello zaino,...
Come ho scritto in questo post di stamattina, ho avuto qualche problema nell'installazione del communityServer. Il problema che manifestavo era che non riuscivo a fare in modo di avere un sito del tipo www.miosito.com in quanto il www veniva irrimediabilmente tolto per lasciare solo miosito.com, che ovviamente mi prendeva a pernacchie nella migliore delle ipotesi, nella peggiore invece si collegava al server di posta :)
Tralasciando, la _prima_ cosa che ho fatto è stato dire "ma dai, furbo lo scott, avrà messo qualcosa nel web.config per levarlo così è piu elegante" e mi sono lanciato in una ricerca nei file di configurazione...
Ho installato la beta2 di communityserver... ho alcune applicazioni che sfruttano .Text e mi sono detto che è una rottura di scatole venire a patti col codice "maccaronico" di quell'aggeggio, e visto che olltretutto andrebbero ampliate sto provando la migrazione direttamente su CommunityServer.
Qualcuno ha avuto esperienze? Per ora sta andando tutto bene, non è una scheggia (è un pò lentino, a dirla tutta..) ma sembra solido anche se con la 2.0 non si può vedere il codice sorgente (bisogna tirare fuori i cash... deciderò poi se è il caso di farlo).
Mi sono solo scontrato con un problem (abbastanza) grave: qualsiasi cosa io faccia,...
Stavo paciugando con il LoadTemplate per caricare dei template dinamici all'interno di TemplateColumn create dinamicamente, e mi sono trovato di fronte al problema di dover prendere l'istanza di un oggetto (checkbox, textbox) definito nel template per variarne il valore.Sembrava tutto facile, ma mi sono dimenticato che il mero FindControl() non funziona perchè, per ogni templatecolumn caricata in questo modo, viene creata una tableCell contenente un oggetto di tipo ASP_NomeFileTemplate_Ascx con all'interno le istanze degli eventuali controlli. Per avere l'istanza della textbox posso risolvere in due modi: ho controllo che il tipo corrisponda con quello sopra definito, e dopo chiamo unfindcontrol per...
Ultimamente ho avuto la necessità di visualizzare un sacco di dati sia in orizzontale che in verticale in alcune DataGrid. Ovviamente, non potendo creare una pagina larghissima e lunghissima, ho usato i DIV in overflow per farle apparire con le scrollbar. Il problema è che, navigando su e giù per i dati, si perdevano le intestazioni e questo diventava effettivamente un po scomodo.
Mi stavo per lanciare nel confezionamento di un controllo ad hoc, quando Code Project mi ha levato, come molte altre volte, dagli impicci: qui http://www.codeproject.com/aspnet/ScrollingGrid.asp trovate una splendida datagrid che supporta lo scrolling ed il blocco delle testate!
Discutevo l'altro giorno al workshop con Mrkino, Adrian e Gianluca di questa faccenda.Io personalmente utilizzo molto spesso i CompareValidator con Operator="DataTypeCheck" per validare l'input di un utente e controllare che sia un intero o un double. L'unico problema è che questo controllo controlla (scusate l'allitterazione: di domenica il mio dizionario si dimezza :)) solamente il fatto che il numero inserito sia un numero intero oppure reale (da qui il mio storcere il naso sul fatto che invece che Type="Real" lui accetti Type="Double"). Questo si traduce nel fatto che lo sviluppatore poco attento potrebbe basarsi solamente su un CompareValidator per validare un input, e...