Archive for the 'Web application' Category

Occhio al DB di Drupal: auto_increment delle chiavi primarie

Dopo troppo tempo, sono stato molto impegnato e mi scuso, eccomi di nuovo con una gustosa soluzione per i vari utilizzatori di Drupal.

Mi è capitato di dovere ricreare/spostare le tabelle node e correlate da un’installazione di Drupal ad un’altra. Dopo aver copiato i dati, dump+insert, nel nuovo db ho provato a inserire un nuovo nodo e…BAM! Non mi creava il nodo e l’errore era una chiave primaria duplicata nel db: quindi, niente inserimento.

Dopo non pochi tentativi e molto tempo sprecato, ho fatto la solita maledetta ricerca in internet e ho scoperto ciò che sospettavo, cioè che drupal ha una sua tabellina che tiene il conto degli indici e che se non viene aggiornata/adattata ai nuovi inserimenti fa sballare tutto.

La tabella in questione è “SEQUENCES”. Qui sono contenuti tutti gli nidici delle tabelle fondamentali: aggiornate questa e tutto funzionerà.

http://www.flatiron.it/2009/01/occhio-al-db-di-drupal-auto_increment-delle-chiavi-primarie/

Librerie javascript

Oggi stanno diventando indispensabili per creare delle RIA, anche se qualcuno le critica perché creano alcuni problemi di accessibilità oltre a mettere il codice della pagina in secondo piano (a questo proposito, affronterò il problema delle tecnologie utilizzate nello sviluppo dei siti web in un prossimo post), ma le librerie javascript (o i framework come qualcuno li chiama) sono sicuramente il futuro.

Sono molti i “big” che ne hanno sviluppate di proprie e moltissime anche quelle dei meno big. Ormai sono una realtà dalla quale non è possibile prescindere. Io le ho utilizzate e rendono lo sviluppo delle interfacce più semplice, però ricordate: scegliete quelle che preferite all’inizio di un progetto e mantenetele resistendo alla tentazione di effettuare un mesh-up di librerie. Vi assicuro che c’è da impazzire.

Di seguito vi riporto i link di alcune delle più conosciute:

http://www.flatiron.it/2008/09/librerie-javascript/

Qualche soluzione per non impazzire con javascript, Internet Explorer e il DHTML

Internet Explorer (da adesso IE) non supporta il DOM come Firefox (da adesso FF), ma supporto solo una parte di DOM: utilizza invece DHTML che, nell’ultima versione, ha subito dei cambiamenti importanti. Questo porta a una serie di problemi nello sviluppare funzioni cross browser in javascript, specialmente se il nostro obiettivo è implementare componenti dell’interfaccia in finestre di pop-up, dalle quali riportare un risultato nella finestra principale (un calendario, selezionare elementi, inserire valori che aggiornano una combo box, ecc.).

Per chi sviluppa web application utilizzando javascript, può capitare di dover risolvere alcuni problemini quando si tratta di far funzionare i propri script concepiti per FF (quindi seguendo lo standard DOM), in IE 6/7.

Ultimamente ho realizzato una web application per la formazione online e mi sono trovato nei guai in diverse occasioni; in particolare quando ho cercato di spostare alcune funzioni dell’interfaccia dalla finestra principale in finestre di pop-up per non affollare la prima. In questo post voglio illustrare i problemi che ho incontrato e le soluzioni che ho adottato. Non pretendo di fornire informazioni originali (anche perché molte delle soluzioni le ho trovate nei forum), quello che mi preme è raccogliere i suggerimenti e strutturarli in modo da fornire un aiuto chiaro a chi incapperà (o è incappato) negli stessi problemi.

Creare un nuovo elemento nella finestra aprente (opener) dalla finestra aperta (pop-up).

Se vogliamo creare e aggiungere un nuovo elemento nella finestre aprente (opener), dalla finestra aperta (con window.open) in IE, dobbiamo utilizzare il metodo createElement() specificando la finestra aprente, altrimenti l’oggetto creato sarà inconsistente e, quindi, inutilizzabile. es.:

document.createElement('input');  sbagliato
window.opener.document.createElement('input');  corretto

Non essendo questo necessario in FF, non saperlo potrebbe portarvi via molto tempo.

Il metodo window.opener.document.getElementById() non funziona in IE7.

In IE7, per poter recuperare un oggetto della finestra window.opener, dalla finestra aperta come pop-up, non possiamo utilizzare la funzione getElementById(), perché genererà un ‘errore. Dobbiamo, invece, impiegare le modalità definite dal DHTML, che sono le seguenti:

- window.opener.document.all[index];
- window.opener.document.all['nomeElemento'];
- window.opener.document.all.item('nomeElemento');

Per una guida esaustiva potete consultare la MSDN Library: HTML and DHTML reference (en).

In javascript, il metodo trim() per l’oggetto String non esiste: una soluzione.

L’oggetto String di javascript offre molti metodi, ma tra questi non esiste il metodo trim(). Il metodo si può rivelare utile quando dobbiamo eliminare gli spazi da stringhe provenienti dalla response di un oggetto XMLHttpRequest.

Questa è una soluzione efficace e di facile implementazione:

String.prototype.trim = function (){
	return this.replace(/^\s*/,””).replace(/\s*$/,””);
}

Una volta definito, tutti gli oggetti String avranno il metodo trim().

Spero che questi brevi e semplici appunti possano esservi utili e possano farvi risparmiare qualche ora nelle estenuanti fasi di debugging.

http://www.flatiron.it/2008/05/qualche-soluzione-per-non-impazzire-con-javascript-internet-explorer-e-il-dhtml/