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...
Full ASP.NET Archive