1) Donwload appengine sdk.
2) unzip file
3) Open NetBeans -- tools - plugins
4) add new Url http://kenai.com/downloads/nbappengine/NetBeans7.2/updates.xml
5) install plug-in
6) add new server
7) Start new project (Web Application) with Server Google App Engine.
domenica 11 novembre 2012
NetBeans 7.2 + Google App Engine
martedì 25 settembre 2012
Import Geonames DB on MongoDB with NodeJs and Query
Continuo a pensare che le prestazioni di MongoDB siano veramente buone, ancora meglio se unite ad un linguaggio di scripting come NodeJs.
Ecco un esempio di utilizzo su moli di dati consistenti (testato con server MongoDB in locale quindi con poche risorse di sistema).
Resources:
Installare i seguenti moduli
MongoDB ODM Mongoose
npm install mongoose
Modulo per leggere file di grosse dimensioni
npm install carrier
Lib per il calcolo delle query
npm install moment
definiamo la struttura della collection, poi si prosegue con l'inserimento delle info.
var mongoose = require('mongoose');
var databaseName = 'geonames';
var connection_string = 'mongodb://localhost/'+databaseName;
var db = mongoose.connect(connection_string);
var schema_geonames = mongoose.Schema({
geonameid : Number,
name : String,
asciiname : String,
alternatenames : String,
loc : [Number],
feature_class : String,
feature_code : String,
country_code : String,
alternatenames : String,
cc2 : String,
admin1 : String,
admin2 : String,
admin3 : String,
admin4 : String,
population : String,
elevation : Number,
dem : String,
timezone : String,
modification_date : String
});
schema_geonames.index ({
loc : "2d",
asciiname : 1,
name : 1
});
var Geonames = db.model('Geonames', schema_geonames);
var carrier = require('carrier');
var fs = require('fs');
var filename = '/path/of/file/allCountries.txt';
var inStream = fs.createReadStream(filename, {flags:'r'});
carrier.carry(inStream)
.on('line',
function(line) {
var fields = line.split('\t');
var geonames = new Geonames({
geonameid : fields[0],
name : fields[1],
asciiname : fields[2],
alternatenames : fields[3],
loc : [fields[4],fields[5]],
feature_class : fields[6],
feature_code : fields[7],
country_code : fields[8],
alternatenames : fields[9],
cc2 : fields[10],
admin1 : fields[11],
admin2 : fields[12],
admin3 : fields[13],
admin4 : fields[14],
population : fields[15],
elevation : fields[16],
dem : fields[17],
timezone : fields[18],
modification_date : fields[19]
});
geonames.save(function (err) {
if (err)
console.log('Error save geonames');
});
}
)
.on('end',
function(){
console.log('end');
process.exit(1);
}
);
db.geonames.find().count();
8309522
Dopo aver aspettato che a procedura di import abbia concluso possiamo eseguire qualche semplice query es di $near:
GeonamesModel.find({ feature_class: 'P', loc : { $near : [45.32306, 8.41533] }} ,{},{ limit: 20 }, function(err, docs){
if (err) {
console.log("error in finding near", err);
throw err;
}
console.log('docs.length : ' , docs.length);
docs.forEach(function(doc)
{
console.log( doc.asciiname + ' (' + doc.admin1 + ')');
}
)
})
Risultato:
docs.length : 20
Vercelli (VC) 45.32306,8.41533
Larizzate (VC) 45.3,8.38333
Caresanablot (VC) 45.35736,8.39203
Torrione (VC) 45.31667,8.46667
Borgo Vercelli (VC) 45.35786,8.46303
Scavarda (NO) 45.33218,8.47477
Asigliano Vercellese (VC) 45.26146,8.40853
Villata (VC) 45.38776,8.43263
Prarolo (VC) 45.28206,8.47814
Desana (VC) 45.26966,8.35973
Quinto Vercellese (VC) 45.37966,8.36173
Lignana (VC) 45.28606,8.34393
Oldenico (VC) 45.40276,8.38103
Sali Vercellese (VC) 45.30986,8.32893
Pertengo (VC) 45.23556,8.41754
Casalvolone (NO) 45.40096,8.46463
Pezzana (VC) 45.26206,8.48504
Costanzana (VC) 45.23816,8.36813
Collobiano (VC) 45.39686,8.34833
Stroppiana (VC) 45.23026,8.45384
Tot time 205ms
[Sorgenti completi]
Etichette:
geonames,
mongodb,
mongoosejs,
nodejs,
odm
Ubicazione:
13048 Santhia' VC, Italia
venerdì 14 settembre 2012
MBFastTrack - Online la Beta
Online la Beta di MBFastTrack.
Applicativo realizzato in Java con Spring, MongoDB e Bootstrap.
E' una beta e prendetela come tale ancora pieni di bachi... ;)
Etichette:
java,
mbfasttrack,
mongodb,
programming,
Spring
Ubicazione:
13048 Santhia' VC, Italia
martedì 4 settembre 2012
PHP - Problemi con EOL
Per qualche strano motivo il testo contenuto in una variabile continua ad andare a capo, questa cosa non è gradita alla funzione javascript a cui passo il valore, dopo varie ricerche e prove riesco a trovare una soluzione.
il PHP alle volte è veramente ostico.
$html = '' . $var1 . '' . $var2;
$html = str_replace("\\r\\n", "", addslashes(trim($html)));
$html = str_replace(PHP_EOL,"",$html);
$html = str_replace(array("\r", "\n"), '', $html);
il PHP alle volte è veramente ostico.
mercoledì 13 giugno 2012
MongoDB - decode failed on shell
PRIMARY> show dbs;
Wed Jun 13 10:45:05 decode failed. probably invalid utf-8 string [pJ@??]
Wed Jun 13 10:45:05 why: TypeError: malformed UTF-8 character sequence at offset 3
Wed Jun 13 10:45:05 Error: invalid utf8 shell/utils.js:1237
AAAAAAA!!!!!!!
/etc/init.d/mongodb stop
/etc/init.d/mongodb start
PRIMARY> show dbs;
admin 0.203125GB
db0 0.203125GB
db1 0.453125GB
db2 0.203125GB
db3 0.203125G
...
...
..
OK!!!!
Ubicazione:
13100 Vercelli VC, Italia
martedì 5 giugno 2012
MongoDB - Configurare l'Auth su sistemi in ReplicaSet/Shared
Procedura da eseguire su ogni server. (testata su Ubuntu con MongoDB versione 10gen)
editare il file:
/etc/mongodb.conf
modificare i parametri:
auth = true
keyFile = /var/lib/mongodb/key
da terminale ssh:
echo "inserire_una_password_che_si_vuole" > /var/lib/mongodb/key
chmod 600 /var/lib/mongodb/key
chown mongodb:mongodb /var/lib/mongodb/key
-- MongoDB restart
eseguire questa operazione su tutti i server che si connettono tra di loro.
-----
connettersi via console su una dei server.
creare l'utente principale di admin che accede a tutto
use admin;
db.addUser("mongoadm", "345098340958");
db.auth("mongoadm", "345098340958");
Connettersi al db che si vuole e creare le utenze di accesso:
use db1;
db.addUser("user1-db1", "5396739759075ghdfoger");
db.addUser("user2-db1", "46734345t345345")
db.system.users.find();
use db2;
db.addUser("user1-db2", "345345345");
db.addUser("user2-db2", "dgfdfgerter");
db.system.users.find();
a questo punto dai nostri client possiamo connetterci con l'utente del singolo db.
-----
per autenticarsi da console passare sempre dall'utente di admin altrimenti non si accede a tutti i comandi di administration es: rs.status();
Per accedere a db1 da console:
use admin;
db.auth("mongoadm", "345098340958");
use db1;
db.auth("user1-db1", "5396739759075ghdfoger");
Ubicazione:
13048 Santhià VC, Italia
lunedì 4 giugno 2012
MongoDB su Duvri 81.08
Dopo un anno di lavoro abbiamo messo online l'app documentale Duvri 81.08.
Comprende una piattaforma per la realizzazione guidata della documentazione per la valutazione dei rischi da interferenze. (vedi blog per maggiori info)
Realizzata dal contributo di Confindustria Vercelli-Valsesia e Inail.
La app si basa su MongoDB distribuito in replicaset su 3 server.
Due macchine front-end bilanciate con PHP5, Zend Framework e Docrine Odm.
Un server con Open Office server, Tomcat con una app web di conversione documenti basata su JodConverter
App segnalata sulla pagina di MongoDB.
Etichette:
Doctrine,
mongodb,
Open Office,
php
Ubicazione:
13100 Vercelli VC, Italia
Iscriviti a:
Post (Atom)

