domenica 25 agosto 2013

martedì 23 luglio 2013

Oracle + Procedure + Tomcat + Connection Pool + Ibatis



Utilizzando il connection pool di tomcat via app attrraverso ibatis/mybatis  alcune chiamate a Store Procedure Oracle generavano errore
Caused by: java.lang.RuntimeException: unexpected invocation exception: unexpected invocation exception: null at oracle.ucp.jdbc.proxy.PreparedStatementProxyFactory.invoke(PreparedStatementProxyFactory.java:138) at oracle.ucp.jdbc.proxy.CallableStatementProxyFactory.invoke(CallableStatementProxyFactory.java:101) at $Proxy17.getResultSet(Unknown Source) at com.ibatis.sqlmap.engine.execution.SqlExecutor.getFirstResultSet(SqlExecutor.java:337) at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:299) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:283) at com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)

La soluzione è semplicemente NON chiamare le procedure con ibatis.callProcedure() ma con ibatis.update()


[via]

venerdì 12 luglio 2013

Certificazioni MongoDB 10gen

Sono disponibili i corsi gratuiti della 10gen con relativa certificazione di MongoDB.





mercoledì 1 maggio 2013

MongoDB Index


Visualizzare gli indici presenti sul db

use test;
db.system.indexes.find();

Visualizzare gli indici presenti sulla colection

db.<collection_name>.getIndexes()

Crea l' indice univoco eliminando le chiavi duplicate

db.accounts.ensureIndex( { username: 1 }, { unique: true, dropDups: true )

Creare un indice su elementi che possono anche non esserci nell'elenco dei documenti

db.addresses.ensureIndex( { "size": 1 }, { unique: true, sparse: true } )

Index Size

db.<collection_name>.indexSize();

Forzare l'uso di uno specifico indice

db.users.find().hint( { age: 1 } )

Elimina l'uso degli indici

db.people.find().hint({$natural:1})
Note:
  • l'indice _id per default è sempre univoco anche se non specificato sulla getIndexes()
  • L'indice di default viene creato di tipo BTREE
  • In caso di utilizzo di query su indice sparse le query default non ritornano i documenti che non posseggono quel field.




martedì 23 aprile 2013

MongoDB Shell


Alcune info prese dal corso di Mongo sulla Mongo University


Ritorna la funzionalità:


PRIMARY> db.names.save
function (obj) {
    if (obj == null || typeof obj == "undefined") {
        throw "can't save a null";
    }
    if (typeof obj == "number" || typeof obj == "string") {
        throw "can't save a number or string";
    }
    if (typeof obj._id == "undefined") {
        obj._id = new ObjectId;
        return this.insert(obj);
    } else {
        return this.update({_id:obj._id}, obj, true);
    }
}


Uso di variabili assegnate:

> db.names.save({name:"furetto"});
> db.names.find();
{ "_id" : ObjectId("515ea7d69f97aede503daa70"), "name" : "furetto" }
> var f = db.names.findOne();
> f;
{ "_id" : ObjectId("515ea7d69f97aede503daa70"), "name" : "furetto" }
> f.name2 = "pippo";
pippo
> f;
{
"_id" : ObjectId("515ea7d69f97aede503daa70"),
"name" : "furetto",
"name2" : "pippo"
}
> db.names.save(f);
> db.names.find();
{ "_id" : ObjectId("515ea7d69f97aede503daa70"), "name" : "furetto", "name2" : "pippo" }

Dati Testi con Javascript:

> for(i=0;i<1000;i++){db.scores.insert({"score":i})};


Escludere _id dalle query:

> db.names.find({"name2":"pippo"},{"_id:" 0, "name2":1});
{  "name2" : "pippo" }


Query tra estremi anche di caratteri:

>db.names.find({"name2":{$gte : "p", $lte:"z"}})

Query per tipologia di campo (per le tipologie di field vedi specifiche json):

> db.names.find({"name2": {$type : 2})


martedì 19 marzo 2013

Raspberry Pi - configurare - NetGear 150N - RTL8188CUS


Preso il Rapsberry PI direttamente da RS. Chiavetta USB WI-FI  - NetGear150N.

Configurato in dhcp sulla mia rete interna.

Inserire la chiavetta nel Raspberry,

lsusb e vedete se la chiavetta viene vista dal sistema

NetGear, Inc. WNA1000M 802.11bgn [Realtek RTL8188CUS]

le configurazioni di

/etc/network/interfaces


auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


il file wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="xxxxx"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="xxxxxxxxx"
}



riavviare e togliere il cavo di rete.



[via omer.me ]

sabato 2 marzo 2013

MongoDB - Rename Database

Non è possibile rinominare un database di mongo. Il metodo possibile è copiare il db e poi eliminare quello vecchio.

db.copyDabatase("original","newdb","localhost");

use original;
db.dropDatabase();

se abbiamo db molto grosso dobbiamo tenere conto della necessità di parecchio spazio su disco per eseguire l'operazione.