Ves al contingut principal

Entrades

S'estan mostrant les entrades d'aquesta data: maig, 2013

MyQuery per a Windows Phone

L'aplicació ja està en marxa!!!!
Treballant en un projecte nou, desenvolupament oficial per a terminals amb windows phone.  En projecte MyQuery: poder executar consultes SQL a qualsevol servidor MySQL, sent necessaris(alguns són obvis) els següents paràmetres:
Servidor de base de dadesusuaripasswordConsulta SQLbase de dades Pròximament i possible:
XifratAltres servidors que no siguen MySQL
L'aplicació consistirà posar els paràmetres de connexió, introduïr la consulta (bé siga select, insert, alter..) i es mostrarà el resultat de forma tabular.












Òbviamnet no hi ha drivers de mySQL per a windows phone, ni trobe què per a cap dispositiu mòvil, per tant he havut d'utilitzar un servidor intermediari que farà les connexions i l'aplicació rebrà el resultat. L'aplicació es gratuïta i a veure si es pot traure algo (si pagara el servidor ja em pegaria amb un canto en les dents) mitjançant adds. Estic platejant-me una aplicació que costé (pocs) diners MyQuery+ amb els segü…

Per fi!, tema dominat: mysql asincron en node.js

Escoltant marea (no té res a veure, però així indique preferències musicals ;)), he trobat la solució al problema dels posts anteriors. Resulta que la funció query del paquet és asíncrona, és a dir que no se pot saber quan s'executarà, però serà quan s'acabe la funció que la crida. Aleshores el que hem de fer és no retornar la resposta fins que no s'execute el callback. I així ens evitem el problema, si has estat seguint el post entendràs la consulta i tot:


function fservidor(request, response){
var resXML="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><resposta>";
function frequeston(){
  // El codi 200 vol dir què la petició ha segut correcta, i enviem la resposta en text pla.
   response.writeHead(200, {
         'Content-Type': 'text/plain'
      }); //end writehead
 }//end frequeston

request.on("end", frequeston);
 var client = mysql.createConnection('mysql://'+user + ':'+pass+'@'+serv…

L'estotèric abast de les variables en node.js

Com ja comentava en l'anterior post, ja duc un temps barallant-me amb handlers i demés malea del node.js. Crec que he descobert un altre problema de node.js. L'abast de les variables. Si jo definisc una variable en una funció, les modificacions fetes en la variable en les funcions definides dins no quedaran guardades. Trobe què és molt més fàcil veure-ho amb un exemple, si jo tinc el següent codi paregut als exemples anteriors (recordem la taula de personatges del joc de rol simple):

var resXML="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><resposta>";
   var i=0;
   client.query(action, function getSQL(err,result,fields){
     //console.log(fields);
     if (err){
       console.log("Error: " + err);
     }//if
     resXML = resXML + "<" + fields[0].table + ">";
     for(i=0;i<result.length;i++){
             resXML = resXML+"<"+fields[i].name+">" + i + "<" + fields…

Handlers d'errors en node.js quina bogeria ;)

Després de dos dies tornat-me varilla amb els handlers d'error en node.js, al final, quasi de casualitat he descobert que passa. Imaginem que vull connectar a una base de dades:

function doLogin(){
  var client = mysql.createConnection('mysql://'+user + ':'+pass+'@'+server+'/'+database);
  client.connect();
 }//function doLogin


La funció connect pot fallar en cas que els paràmetres siguen incorrectes, no hi haja connexió... si eixe error no és capturat, tanca el programa (tancant el servidor). Primer proví amb try catch, herència d'altres llenguatges no tant moderns ;) i no, no vaig aconseguir capturar l'error. Per tant vaig llegir que la millor cosa que podia fer en javascript (node.js) era afegir  una funció callback (que s'executa en cas d'error, i passada com a paràmetre). La funció ha de ser algo així:

function errResult(err,result){
  if (err != null) {
         berror = true;
   }
  else{
       berror = false;
  }
 }//function errResult