domingo, 5 de junio de 2011

Cast an ArrayList to an Array of strings (android)

Me topé con la necesidad de catear un arraylist a un array de strings desarrollando una app para android, por suerte luego de una simple búsqueda encontre la fomar más simple de realizarlo :D

String [] myStringsArray = myArrayList.toArray(new String[myArrayList.size()]);

Lección aprendidad para un domingo :D

martes, 31 de mayo de 2011

nodejs mysql database

Este es un pequeño articulo como utilizar node.js como web server para mostrar los resultados de una consulta a un motor de base de datos MySQL.


Lo primero que debemos ver es tener el módulo necesario "mysql", estoy utilizando la versión 0.5.0-pre.

#node -v
v0.5.0-pre


Lo primero que hacemos es crear el objeto para la consulta:

var Client = require('mysql').Client,
client = new Client();
client.user = 'user';
client.password = 'password';
client.host='127.0.0.1';
client.port='3306';
client.database='base_de_datos'
client.connect();


Luego creamos el servidor:

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});

Y dentro de este realizamos la consulta, y la asociamos a su función de callback

client.query(
"select * from table where campo1 > 1 limit 10;",
function select(err, results, fields) {
if (err) {
console.log("Error: " + err.message);
throw err;
}

Sacamos los datos por la consola y por la pantalla

console.log("Number of rows: "+results.length);
console.log(results);


for (var i in results){

var result = results[i];
res.write(result.campo1+"\n");
}

res.end();
});

Terminamos el código bindeando un puerto para escucha

}).listen(1337, "0.0.0.0");
console.log('Server running ');



El script completo es:


var Client = require('mysql').Client,
client = new Client();
client.user = 'user';
client.password = 'password';
client.host='127.0.0.1';
client.port='3306';
client.database='DB'
client.connect();


var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});


client.query(
"select * from table where campo1 > 1 limit 10;",
function select(err, results, fields) {
if (err) {
console.log("Error: " + err.message);
throw err;
}
console.log("Number of rows: "+results.length);
console.log(results);
res.write(results);

for (var i in results){

var result = results[i];
res.write(result.campo1+"\n");
}
res.end();
});

}).listen(1337, "0.0.0.0");
console.log('Server running ');

martes, 3 de mayo de 2011

Simple (one line) web server python

the simplest way to serve up page or file sharing is go to the directory and run:
$ python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"

Then go to http://:8000 and see your files :D

viernes, 1 de abril de 2011

Instalar virtualBox-4

En la web de virtualbox se encuentra un completo tutorial de como actualizar a la última versión del producto, la web es: VirtualBox 4.
Para los usuarios de distribuciones basadas en Debian simplemente deben agregar el repositorio a la lista de repos disponibles y lo pueden instalar con el manejador de paquetes de su preferencia.

jueves, 27 de enero de 2011

Eliminar ^M

Cuantas veces nos encotramos que al abrir un archivo con el vim vemos los molestos delimitadores de carry return (^M), una forma simple de eliminarlos es con el comando de reemplazo:

%s/\r//g

y ya podemos seguir editando nuestro archivo :D

jueves, 30 de diciembre de 2010

IndentationError: unexpected indent

Este post está relacionado con python, muchas veces al editar un script desde consola con el vim luego al querer correrlo nos arroja este error... Error de identación, pero al acceder al archivo no encontramos a simple vista que bloque está mal identado o por qué da ese error...
Por eso para ver las marcas del script simplemente lo podemos visualizar con el comando


#cat -vET archivo.py

En donde veremos los tabs como  ^I y el delimitador de final de línea como $.

por ejemplo:


def db(tabla,tipo,puerto=None,desde=None,hasta=None):$
^I"""$
^I"""$
$
^Iif tipo == 'Bandwidth_mb':$
^I^Itipo = 'Total_Bandwidth_mb,Read_Bandwidth_mb,Write_Bandwidth_mb'$
^Ielif tipo == 'Throughput_io':$
^I^Itipo = 'Total_Throughput_io ,Read_Throughput_io ,Write_Throughput_io'$
^Ielif tipo == 'Queue':$
^I^Itipo = 'Queue_Full_Count'$
$

viernes, 18 de diciembre de 2009

Matando conexiones tcp ( tcpkill )

Este post esta dedicado a matar conexiones tcp, muchas veces tenemos alguna conexión tcp que queremos matar, pero no queremos matar el proceso. Por ejemplo una consola de vnc manejada por qemu. Para estos casos en que solo queremos matar la conexión tcp podemos utilizar el comando tcpkill (que lo provee el paquete dsniff), el uso del mismo es el siguiente:

pepo@frank:~$ tcpkill --help
tcpkill: invalid option -- -
Version: 2.4
Usage: tcpkill [-i interface] [-1..9] expression

Donde:
                -i interface # es la interface de red
               [-1.. 9 ] #el grado de fuerza bruta con el que se mata la conexión, el default es 3
                expression # filtro a utilizar, al estilo tcpdump (host, port, etc)

Ejemplo:

Vemos la conexión a matar

pepo@frank:~$ netstat -nalp|grep vnc
(No todos los procesos pueden ser identificados, no hay información de propiedad del proceso
 no se mostrarán, necesita ser superusuario para verlos todos.)
tcp        0      0 172.xx.xx.xx:40184      172.xx.xx.xx:5922       ESTABLECIDO 4426/vncviewer 
unix  3      [ ]         FLUJO      CONECTADO     540821   4426/vncviewer     

Matamos

pepo@frank:~$ sudo tcpkill -i eth0 host 172.20.70.19 and port 5922
[sudo] password for pepo:
tcpkill: listening on eth0 [host 172.20.70.19 and port 5922]
172.20.70.19:5922 > 172.16.99.39:40184: R 2779891000:2779891000(0) win 0
172.20.70.19:5922 > 172.16.99.39:40184: R 2779891181:2779891181(0) win 0
172.20.70.19:5922 > 172.16.99.39:40184: R 2779891543:2779891543(0) win 0
172.16.99.39:40184 > 172.20.70.19:5922: R 3942621646:3942621646(0) win 0
172.16.99.39:40184 > 172.20.70.19:5922: R 3942623978:3942623978(0) win 0
172.16.99.39:40184 > 172.20.70.19:5922: R 3942628642:3942628642(0) win 0

Y listo....

pepo@frank:~$ netstat -nalp|grep vnc
(No todos los procesos pueden ser identificados, no hay información de propiedad del proceso
 no se mostrarán, necesita ser superusuario para verlos todos.)