Se qualcuno ha tribolato con i numeri in Oracle allora si ritroverà in questa esperienza.
Cosa fare se dobbiamo cambiare la precisione di un numero e la tabella ha valori?
Se qualcuno ha tribolato con i numeri in Oracle allora si ritroverà in questa esperienza.
Cosa fare se dobbiamo cambiare la precisione di un numero e la tabella ha valori?
Chi possiede un dispositivo mobile Apple sa che una delle politiche Apple prevede che per usare alcune funzionalità dai suoi dispositivi o applicativi occorre avere una connessione Internet attiva.
Questo impedisce l’uso offline di alcune funzioni, e questo ci può anche stare se queste sono legate strettamente alla Rete; non lo sono altrettanto se queste funzionalità (vedi l’accesso ad un servizio webDAV) possono essere rese disponibili da una rete locale wifi, isolata da internet anche e non solo per ragioni di sicurezza (come in alcune realtà imprenditoriali o istituzionali).
Problema: come utilizzare le funzioni aggregate di oracle (avg, variance) su differenze di tempi i cui valori si trovano su campi di tipo timestamp (chi ci ha provato ha smadonnato almeno quanto me).
Continua a leggere
Oracle quando ci si mette fa diventare pazzi di rabbia; ho provato ad avviare una istanza che sapevo configurata (ometto per il momento alcuni passaggi per non rovinarvi la sorpresa):
SQL> startup
ORA-27103: internal error
Linux-x86_64 Error: 2: No such file or directory
Additional information: 101
Ovviamente cerco dettagli su alert.log e altre possibili fonti, compreso il documento ufficiale per gli errori (b14219.pdf, che per errore 27103 mi suggerisce di chiamare l’assistenza!!!!).
Internet neanche a parlarne: tanti errori e (im)probabili soluzioni, ma neanche una traccia di questo errore.
Non vi dico le peripezie e il percorso con cui sono venuto a soluzione. Anche il caso ci ha messo del suo.
In ogni modo devo prima svelarvi il contesto omesso precedentemente: l’istanza risiede in un virtual environment di un container OpenVZ (tecnologia di zoning per Linux).
L’ambiente è stato creato clonando una macchina fisica (su cui l’istanza girava correttamente): la clonazione è avvenuta con la semplice copia del filesystem con un TAR, omettendo quei percorsi legati al kernel sorgente che avrebbero potuto collidere con il kernel della macchina virtualizzatrice (/proc, /dev, /sys, ecc). Tecnica sperimentata in precedenza decine di volte con successo, anche con istanza Oracle presenti.
Ed è stato proprio in /dev il problema: nella ricostruzione di tutti gli i-node standard presenti in questo percorso mi sono dimenticato (e poi fortunosamente ricordato cercando di usarlo nel contesto di un comando che stavo eseguendo per altre configurazioni) del file speciale /dev/zero.
In assenza di questo file Oracle va in pappa e genera l’errore indicato all’inizio, senza altra informazione.
Buon Oracle a tutti
Visto il moltiplicarsi dei framework per la dependency injection in Java negli ultimi anni (CDI, Guice…), sembra ormai scontato che questo pattern sia fondamentale per la realizzazione di applicazioni enterprise complesse.
Creare un dependency injector, al contrario, è qualcosa di molto semplice. Basta usare un po’ di refection.
Prendiamo un esempio: PrizeManager è una semplice classe che, dati degli utenti e dei premi, assegna questi randomicamente, informando un altro oggetto (MainController) dello stato delle cose.
package it.nerdammer; import java.util.Collections; import java.util.List; public class PrizeManager { @Inject private MainController mainController; @Inject private List<User> users; @Inject private List<Prize> prizes; public void assignPrizes() { mainController.start(); Collections.shuffle(users); Collections.shuffle(prizes); for(int i=0; i<users.size() && i<prizes.size(); i++) { // assegna i premi users.get(i).winPrize(prizes.get(i)); } mainController.stop(); } }
Il compito del dependency injector è quello di impostare i riferimenti dei campi annotati con l’annotazione @Inject.
Ecco a voi il primo nerdpost al cacao.
Oggi parliamo infatti di un argomento nuovo per nerdammer.it ma che non può mancare: programmazione OSX/iOS , da Cocoa a CocoaTouch.
Iniziamo oggi con una esperienza Cocoa: la classe NSMenu.
In generale è sempre stato un Nib/Xib a trasportare nelle nostre applicazioni la struttura dei menu (grazie a InterfaceBuilder): ma quanti non hanno mai avuto bisogno di costruire un menu totalmente dinamico? Continua a leggere
Problema: Cambiare il tipo (type) di un tag input (es: da sumbit a button) tramite javascript al momento del caricamento della pagina o al verificarsi di qualsiasi altro evento.
La funzione JQuery .attr() non può cambiare l’attributo type dei vari tag per via di un problema che si verifica con le seguenti versioni di Internet Explorer (Note: jQuery prohibits changing the type attribute on an <input type=”text” /> or <button> element and will throw an error in all browsers. This is because the type attribute cannot be changed in Internet Explorer):
IE 6, IE 7, IE 8
Chiunque si sia mai avventurato nella giungla della realizzazione di siti web avrà certamente capito che, nonstante tutti gli standard che sono stati definiti negli ultimi anni, ogni browser interpreta il codice html/css a modo suo. Il risultato è che il 60% del tempo di sviluppo di un sito web non si perde nella fase di testing (come diversi teorici dell’ingengeria del software sostengono), ma nel cercare di trovare degli “hack” per Internet Explorer !
Fino a l’altro ieri pensavo che le incompatibilità tra browsers riguardassero solo la presentazione del sito, ma ci è voluto poco a trovarmi di fronte a un problema legato al submit delle form, in particolare, al tag input con immagine incorporata. Che differenza c’è tra i seguenti due campi di input ?
<input type="image" name="pulsante" value="Click" src="img/img.png" /> <input type="submit" name="pulsante" value="Click" />
Realizzazione di un sistema che permetta di trasformare agilmente, velocemente ed in maniera pulita un campo input text in uno con le funzionalità di calendario jquery (li dove sia attivato javascript).
Demo finale: Input text con jquery calendar (javascript abilitato):
Testato con: jquery 1.7.1, jquery ui 1.8.16 Continua a leggere
Note operative sul Flashback in oracle.
Testato con: Oracle 10g – 11g
Per poter utilizzare le tecnologia di Flashback è necessario che il vostro db sia opportunamente configurato
Ecco alcune delle principali funzionalità fornite dalla tecnologia Flashback
DROP TABLE table_name; ... SHOW RECYCLEBIN ... FLASHBACK TABLE table_name to BEFORE DROP;