DB Oracle tips.

Scritto il 20-06-2009 da Vito Antonio Bonardi

Pubblicato su : Programming

0

Qualche giorno fa, mentre scrivevo una function Oracle (abbastanza complessa), mi son reso conto che una select all’interno della function non ritornava il risultato che mi aspettavo.
Eppure, eseguendo la query al difuori della function con gli stessi parametri, funzionava.
Dopo una serie di verifiche ho individuato il problema nella tipologia di parametro che passavo alla function. Io passavo un tipo VARCHAR2, il campo sul DB era definito CHAR, per questo la where condition falliva.

Questo perchè Oracle ha due metodi per comparare le stringhe:
• non-blank-padding (la lunghezza dei campi non viene resa uguale prima del confronto) quando almeno uno dei due elementi da comparare è VARCHAR2.
• blank-padding (il campo più corto viene riempito con spazi fino a raggiungere la lunghezza dell’altro prima di confrontarlo) quando entrambi gli elementi sono CHAR.

Inoltre ricordo che la “literal string” che io usavo esternamente (quella che funzionava) è sempre rappresentata internamente come datatype CHAR.

Nuovo Layout.

Scritto il 02-06-2009 da Vito Antonio Bonardi

Pubblicato su : Pensieri, Programming, Technology

0

Chi su questo blog ci capita spesso, da qualche giorno avrà notato il nuovo template.
In realtà questo che vedete non è il tema su cui stavo lavorando negli ultimi mesi (anche se è molto simile), ma dopo aver visto questo template, ho deciso di mettere da parte il lavoro fatto e ripartire da quello.

Dovrebbe esser ottimizzato per tutti i browser, ma sarei grato se qualcuno nota un problema e me lo segnali, su questo post o via email.
Nell’occasione ho installato anche WpTouch, un plugin per ottimizzare WordPress per iPhone/iPod Touch.

Cercasi analista programmatore java.

Scritto il 19-03-2009 da Vito Antonio Bonardi

Pubblicato su : Pensieri, Programming

2

Secondo me non hanno ben capito cosa cercano …

Ricerchiamo analista/programmatore Java in ambito Enterprise Edition, che abbia maturato una significativa esperienza nello sviluppo di soluzioni Web-oriented basate su piattaforma Java / J2EE, in particolare nel contesto dell’offerta applicativa DB2.

UltraEdit File Tabs.

Scritto il 21-02-2009 da Vito Antonio Bonardi

Pubblicato su : Programming

0

UltraEdit file tab

Se vi capita, com’è successo a me poco fa, di chiudere accidentalmente la visualizzazione a tab su UltraEdit, sappiate che per ripristinarla è sotto:
View > View/Lists > Open File Tabs
Lo scrivo qui perchè stavo quasi impazzendo a cercare l’opzione giusta!

Javascript insertAdjacentElement, insertAdjacentHTML, insertAdjacentText Cross Browser Compatibility.

Scritto il 17-02-2009 da Vito Antonio Bonardi

Pubblicato su : Programming

2

Chi come me sviluppa software per il web, quotidianamente si trova ad affrontare problemi di compatibilità tra i vari browser.
Il problema che ho riscontrato in questi giorni, riguarda la funzione insertAdjacentHTML, metodo non standard di casa Microsoft (non è presente in ECMAscript).
Dopo una breve ricerca su google (santo google), ho trovato questa faq, che risolve il problema.
Ecco la soluzione:

if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){

HTMLElement.prototype.insertAdjacentElement =
        function(where,parsedNode)
	{
	   switch (where){
		   case 'beforeBegin':
			   this.parentNode.insertBefore(parsedNode,this)
			   break;
		   case 'afterBegin':
		           this.insertBefore(parsedNode,this.firstChild);
			   break;
		   case 'beforeEnd':
			   this.appendChild(parsedNode);
			   break;
		   case 'afterEnd':
			   if (this.nextSibling)
			       this.parentNode.insertBefore(parsedNode,this.nextSibling);
			   else this.parentNode.appendChild(parsedNode);
			   break;
	  }
	}

     HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
     {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var parsedHTML = r.createContextualFragment(htmlStr);
        this.insertAdjacentElement(where,parsedHTML)
     }

     HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
     {
       var parsedText = document.createTextNode(txtStr)
       this.insertAdjacentElement(where,parsedText)
     }
}

function getObjInnerText(obj){
     if (document.all)
     { // IE;
       return obj.innerText;
     }
     else{
           if (obj.textContent){
	      return obj.textContent;
           }
}

E alla fine gli “0″ sconparvero!

Scritto il 10-02-2009 da Vito Antonio Bonardi

Pubblicato su : Programming, Technology

0

BlogrollCirca un anno e mezzo fa, scrissi un post in cui parlavo di un problema che si era verificato sul mio tema, verificatosi aggiornando WordPress alla versione 2.2.1! Nello specifico, erano comparsi degli "0" accanto ai nomi del blogroll. Per mancanza di tempo (e di voglia), all’epoca non avevo cercato la soluzione del problema, anche se da una rapida lettura del codice avevo intuito che il problema era dovuto alla funzione wordpress get_linksbyname. Avevo completamente rimosso il problema, nonostante la mia "presenza" giornaliera sul blog. Oggi il problema mi è balzato agli occhi, ed ho quindi deciso di risolverlo. Dopo una rapida consultazione della guida di wordpress, ho risolto impostando a FALSE il parametro show_rating, che serve per indicare se devono essere visualizzati i caratteri o le stelle che mostrano il punteggio (TRUE) oppure no (FALSE).

p.s. Forse la correzione arriva in ritardo, il nuovo layout è in arrivo…

SQL Server CURSOR: loop sui records.

Scritto il 12-06-2008 da Vito Antonio Bonardi

Pubblicato su : Programming

0

Questo breve blocco di codice mostra come fare un loop sui record di una query utilizzando i cursori. Comodo quando si vogliono raggruppare in un campo i risultati di più record.

DECLARE @mycur CURSOR
DECLARE @test VARCHAR(10)
 
SET @mycur = CURSOR
FOR
SELECT mycolumn FROM mytable
 
OPEN @mycur
 
FETCH NEXT FROM @mycur INTO @test
 
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @test – sample statements
FETCH NEXT FROM @mycur INTO @test
END
 
DEALLOCATE @mycur

Terza forma normale (3NF).

Scritto il 16-02-2008 da Vito Antonio Bonardi

Pubblicato su : Programming

0

Per verificare se una tabella in 2NF è anche in 3NF basta chiedersi in maniera spicciola: “Esiste un campo non chiave che dipenda funzionalmente da un altro campo non chiave?”.

Ecco una definizione più formale:

Uno schema R è in 3NF se ogni volta che in R vale X -> A e A non è X (dove X è un insieme di campi e A è un campo specifico), allora o X è una superchiave per lo schema oppure A è primario (cioè è una delle chiavi, visto che in uno schema possono eserci più chiavi).

L’utilità del ciclo for.

Scritto il 12-12-2007 da Vito Antonio Bonardi

Pubblicato su : Programming

1

AgileDay a Bologna.

Scritto il 09-11-2007 da Vito Antonio Bonardi

Pubblicato su : Programming

4

Venerdì 23 Novembre 2007 si terrà a Bologna il quarto Italian Agile Day. L’Italian Agile Day è una conferenza gratuita di un giorno dedicata alle metodologie Agili per lo sviluppo e la gestione dei progetti software come eXtreme Programming, SCRUM, Feature Driven Development, DSDM, Crystal e Lean Software Development aderenti all’Agile Manifesto.
La conferenza si rivolge agli sviluppatori software, project leaders, IT managers, tester, architetti e coach che hanno esperienze da condividere o che iniziano solo ora ad interessarsi a queste tematiche. Sarà una grande opportunità per scambiarsi idee e condividere esperienze. Il focus della giornata è la conoscenza pratica, le esperienze sul campo e un attivo coinvolgimento di tutti i partecipanti. L’evento è organizzato dall’ Italian Agile Movement che festeggia 5 anni di attività.
L’Italian Agile Day 2007 si terra’ presso il Centro Congressi Hotel Savoia Regency, via del Pilastro 2  Bologna.

Per maggiori informazioni: www.agileday.it

A lavoro.

Scritto il 06-11-2007 da Vito Antonio Bonardi

Pubblicato su : Pensieri, Programming

6

La teoria è quando tutto dovrebbe funzionare e invece non funziona, la pratica è quando tutto funziona e non si sa perchè….

XMLHttpRequest vs iFrames: quale usare?

Scritto il 01-11-2007 da Vito Antonio Bonardi

Pubblicato su : Programming, Technology

1

Oggi a lavoro, per risolvere un problema, ho trovato due possibili soluzioni: usare XMLHttpRequest o iFrames. Poichè non riuscivo a decidermi, ho consultato Google per capire per benino i pro e i contro delle due soluzioni. Non è semplice confrontare queste due tecniche, perchè fondamentalmente sono diverse. Entrambi permettono di comunicare con il server in background, ma all’atto pratico poi dipende dalla situazione in cui ci si trova. Molti usano iFrames perchè è più facile da controllare: non bisogna fare altro che mostrare l’iFrame nascosto e voilà, le risposte sono pronte.
Ecco le differenze fondamentali:

  XMLHttpRequest  iFrame
Multithread yes no
Back button no yes
Cross-site no yes
Statuses yes no

Interessanti sono gli stati, assai utili nel momento in cui si vogliono fornire agli utenti informazioni più precise. Con iFrames non sai in che stato è la tua chiamata, mentre con XMLHttpRequest gli stati possibili sono 5:
0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, 4 = complete

Per la cronaca ho scelto XMLHttpRequest perchè così posso riusare il codice, cosa da tener sempre ben presente. D

p.s. Spulciando sul web, ho scoperto che Google Maps usa iFrames, mentre Google Suggest usa XMLHttpRequest.

Cos’è un API?

Scritto il 01-10-2007 da Vito Antonio Bonardi

Pubblicato su : Programming, Technology, Video

0

Restyling sezione photo gallery.

Scritto il 18-07-2007 da Vito Antonio Bonardi

Pubblicato su : Programming, Technology

0

Quando tempo fa avevo rinnovato la grafica del blog, per mancanza di tempo non avevo "ridisegnato" la sezione photo gallery.
Così dedicandoci un pò di tempo in tarda serata, son arrivato a questo risultato.
Ora anche questa parte è molto più 2.0 rispetto alla precedente. Quasi mi compiaccio del mio lavoro. D

Java antiquato? Ci pensa JavaFX.

Scritto il 16-05-2007 da Vito Antonio Bonardi

Pubblicato su : Programming, Technology

3


Ho letto in giro molte critiche al liguaggio Java. C’è chi sostiene che alcune caratteristiche siano antiquate, altri si chiedono perchè per realizzare un’applicativo grazioso e allo stesso tempo ricco di contenuti, ci vogliano migliaia di righe di codice.
Molti altri invece sostengono la robustezza della piattaforma Java, e i framework e piattaforme che troviamo in giro ne sono un esempio. Forse è stato il punto di partenza da cui è partita la Sun Microsystem per rispondere alle critiche: JavaFX.
 
JavaFX è la variante scripting di Java: dicono (ancora ci guardo nei dettagli) abbia una sintassi molto più semplice. Una cosa è chiara, JavaFX non perderà quei vantaggi che hanno fatto si che Java si affermasse: Write Once, Run Anywhere.
JavaFX ha fondamentalmente due componenti principali: JavaFX mobile e il JavaFX scripting. Come è facile capire dal nome, JavaFX mobile è rivolto a chi sviluppa software per dispositivi mobili, ma è disponibile con licenza OEM ai carriers, handset manufacturers e a chi cerca di instaurare una relazione "branded" con i propri clienti.
JavaFX script invece è rivolto a chi vuole una sintassi semplice, ma allo stesso tempo veloce: sarà la risposta al simpler-syntax scripting per sviluppare programmi ricchi di contenuto ed effetti che includono set-up boxes, mobile, desktop and enterprise webapplications.

Per come è stato presentato, JavaFX si affiancherà ad AJAX e al SilverLight del Microsoft. Fortuna vuole che Sun ha dichiarato che JavaFX sarà opensource. Vedrò di capirci qualcosa in più, anche perchè sembra interessante.

UPDATE:
La sintassi è disponibile qui.