31 agosto 2005

il mio db langue :(

purtroppo la problematica organizzativa mi tiene lontano dalla programmazione... se da una parte questo limita drasticamente il numero di bachi che vado a produrre, dall'altra rende giustizia a quella regola che dice più o meno che il 20% finale della soluzione di un problema è quello che ti costa circa l'80% dello sforzo totale. in ossequio al mio segno zodiacale, notoriamente patria di precisini e scrotoclasti, il db verrà quindi pronto a dicembre... 2006.

30 agosto 2005

Database independence

Una ironica presentazione che sfata il mito di "applicazione indipendente dal database". Alla luce della mia (poca) esperienza mi sembrano affermazioni molto vicine alla verità e comunque hanno rallegrato la mia giornata con qualche risata.

26 agosto 2005

Le stranezze della correzione automatica

ciao.
ho una tabella. ho una maschera su di essa. un campo nella tabella si chiama "descrizione" e nella maschera c'è una casella di testo per questo campo. peccato che tutte le volte in cui scrivo "[descrizione]" nell'editor delle proprietà del controllo il buon access me lo corregge in "[Description]" che sarà anche una proprietà di un oggetto, ma a me non serve... l'unica soluzione che ho trovato è di impostare via codice la proprietà del controllo al valore che mi serve ogni volta che apro la maschera:

Private Sub Form_Load()

Me.tstDescrizione.ControlSource = "=IIf([tipo]=[descrizione],[tipo],[descrizione])"

End Sub

la cosa "bella" è che se vado a vedere in struttura della maschera la stessa proprietà (dopo che il codice l'ha impostata) trovo:

=IIf([tipo]=[Description];[tipo];[Description])

a parte i ";" che dipendono dalla localizzazione di access, il resto è tutta farina del sacco di qualche ignoto (e ignobile?) correttore automatico di sintassi...

a parte questo, il mio db procede.

24 agosto 2005

Mi presento

ciao, sono silos, l'ultimo arrivato su questo blog (grazie al mio amico rudy per l'invito).
ho una certa età, che si potrebbe ottenere con una cosa tipo year(sysdate) -1973, avendo un risultato corretto a partire dal 31 agosto.

suono, quando posso, il pianoforte, ma questa è troppo off topic.

di database so poco, e non al livello degli altri contributori di questo blog; ho scelto di unirmi a questo blog per raccontare la vita di un utente di database e sono qua per raccontare la mia esperienza alle prese con quella torta di compleanno che è access, microsoft access (l'ho chiamata così perchè prima o poi finisci per fartela arrivare in faccia).

ho iniziato ad usarlo per lavoro al lavoro, visto che i sistemi informativi qua da me hanno un comportamento, diciamo, evoluzionistico, nel senso che si muovono con la prontezza di un'era geologica. nel mio ufficio servono dati e servono "in fretta" e io, piuttosto che tirarli fuori da orrendi sequenziali, ho scoperto il mondo dei database.

in questi anni da "dentista" (visto che ho fatto chili e chili di estrazioni) mi sono comportato bene: pur avendo autorizzazioni di lettura e scrittura sulla base dati aziendale non ho mai polverizzato tabelle (ma qualche update m'è scappata) e finalmente, a luglio 2005, ho ricevuto in premio un paio di mutande di ghisa, cioè un utente in sola lettura.

il server qua è oracle 9i, e va veloce :) il (mio) client è access, via odbc, indifferentemente nel codice o con l'interfaccia. ora ad esempio sto ultimando un piccolo programma per dei miei utenti e mi sto ovviamente imbufalendo perchè il vba è documentato come il sanscrito nella guida di msaccess e i miei bottoni colorati non fanno quello che gli chiedo... vi terrò aggiornati!

21 agosto 2005

Nuovo libro di Tom Kyte

Tom Kyte ha finito il suo ultimo libro "Expert Oracle Database
Architecture"
, il cui primo capitolo è scaricabile in formato PDF.
Ho appena comprato "Effective Oracle by design", ora mi toccherà far arrivare anche questo.
Divertente la differenza di prezzo tra Europa e USA, in prevendita: 29.69$ (24.42€) negli USA, 49.90€ in Germania, 35.38£ (52.24€) in UK.

Un po' di divertimento: andate a leggere le varie citazioni da discussioni online sui database di Database Debunkings.

12 agosto 2005

Arrivi da leggere

Proprio stamattina mi sono arrivati da Amazon UK i seguenti libri:

  • Effective Oracle by Design di Thomas Kyte
  • Database in Depth di C. J. Date
  • Optimizing Oracle Performance di Cary Millsap

Li avevo ordinati la sera dell'8 agosto; sono arrivati in 3 giorni. Ho risparmiato 30 euro rispetto all'acquisto online in Italia nonostante qui non ci fossero spese di spedizione.
Ne avrò per un po' da leggere.

Installare patchando i makefile

Ho appena installato il client Oracle 9.2.0.4 (9i rel. 2) su una macchina OpenSuSE nuova.
A parte che OpenSuSE è funzionalmente praticamente una copia di Windows XP, comunque durante l'installazione ho riscontrato i soliti problemi con il relink dei vari eseguibili.
Errore tipico:
Error in invoking target relink of makefile /opt/oracle/product/9ir2/precomp/lib/ins_precomp.mk
Il problema è il solito dei simboli della libc, che si risolve installando gcc_old-2.95.3-7.i586.rpm.
Tutti in giro consigliano di creare link simbolici del gcc installato:
ln -s /opt/gcc295/bin/gcc /usr/bin/gcc
dopo avere rinominato il vecchio eseguibile.
Ho trovato come evitare tutto ciò modificando tutti i makefile coinvolti, man mano che l'installazione prosegue: ad esempio, quando esce il messaggio di cui sopra, si può editare il makefile $ORACLE_HOME/precomp/lib/env_precomp.mk, che alla linea 199 contiene:
LINK=$(PURECMDS) gcc $(LDFLAGS) $(COMPSOBJS)
Basta sostituire gcc con $(GCC) e aggiungere nelle prime righe del file:
GCC=/opt/gcc295/bin/gcc, e così per tutti gli altri casi (tutti gli env_* sono più o meno uguali).
È evidente come le modifiche per l'ìnstallazione sotto Linux siano state fatte un po' di fretta da parte di Oracle...

01 agosto 2005

Errore libc

Finalmente una soluzione per le installazioni dei prodotti Oracle per evitare l'errore symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference. È una patch oracle, precisamente la 3006854.
In sostanza riguarda il problema dell'avvio dei vari eseguibili sotto Linux, con l'errore relativo al simbolo __libc_wait, non presente nella glibc più aggiornata.
Di solito il problema si può aggirare con la variabile d'ambiente:
export LD_ASSUME_KERNEL=2.4
se no si utilizza la patch 3006854, che trovate anche sul mio sito (Linux i386, ovviamente).
Detta patch compila al volo uno shared object (.so) che poi inserisce nell'elenco delle librerie da precaricare prima dell'esecuzione di qualsiasi programma: /etc/ld.so.preload; penso che sarebbe possibile anche sfruttare la variabile d'ambiente LD_PRELOAD solo per l'utente oracle, se proprio necessario.
Un'altro trucco molto efficace riguarda quello per l'errore sul ctype, ma ora non riesco più a trovare i riferimenti. Comunque, dopo avere compilato un piccolo sorgente C (ctype.o), lo si include con ar nella libreria $ORACLE_HOME/lib/libcore8.a, ricompilando poi la libreria client condivisa con genclntsh oppure relink <opzione>.
Cercherò tutti i link e li pubblicherò.