jueves, 27 de enero de 2011

Tarjeta de red en VMWare Linux

Algunas veces me ha pasado, y a muchos de mis compañeros, que se copian una máquina virtual hecha en VMWare, con Linux (el caso particular es Ubuntu Server pero creo que aplica a cualquier distribución) de un equipo a otro y cuando inician la VMWare en el otro equipo, este no detecta la tarjeta de red.

La solución para esto la he encontrado con uno de los dos pasos que voy a mencionar abajo, pude que solo con el primero se solucione, pero como he dicho en algunos casos tengo que combinar los 2 pasos, y a veces no basta con hacer el 1 y luego el 2, sino que hay que hacer el 2 y luego el 1.


Primero que nada, lo mejor es la configuración de la red, de la vmware, ponerla en NAT (igual después si no le andan los pasos que pongo abajo, pueden cambar a Bridged)

Paso 1:

Por consola, vamos a /etc/network, y editamos el archivo interfaces.

Ahí si tenemos lo normal deberíamos de tener algo asi (depende si la eth0 está como dhcp que es mi caso o como estática que es un poco distinto, pero la idea va a ser la misma)

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet dhcp

La solución es agregar configuración como que tenemos más tarjetas de red, yo he tenido que llegar a definir hasta eth5, pero para ahorrarse el problema definan hasta la 9.

Entonces lo que tenemos que agregar es lo siguiente:

auto eth*

iface eth* inet dhcp

donde está el asterisco (*) cambiar por 1, 2, etc. (si van a agregar 3 tarjetas, debería quedar una eth0, eth1, eth2 y eth3, es decir van a tener que agregar 3 veces estos 2 renglones)

luego, guardan y cierran el archivo, y reinician ya sea el servidor o el servicio de red (/etc/init.d/networking restart)

Cuando reinician, ven las tarjetas que tienen configuradas (ifconfig) y esto les va a decir que tienen la 127.0.0.1 (es decir la de “lo” de la configuración), y tantas tarjetas de red como tengan configurada en la vmware, lo normal es 1 sola, pero esta red, puede ser la eth0 o la eth3, entonces si detecto la eth3, lo que hacen para dejar limpio el archivo borran la configuración de las otras tarjetas (eth0, eth1, eth2), nunca borren la de “lo” esa es intocable.

Si solo con esto no se soluciona, va el Paso2.

Paso2:

En la configuración de la VMWare, deben de agregar una tarjeta de red, luego reiniciar el equipo Linux, ver con ifconfig si quedaron las 2 tarjetas de red o solo 1, y luego (depende de que es lo que quieren yo estoy suponiendo que quieren 1 sola tarjeta de red), apagar el equipo, y a la VMWare sacarle la primer tarjeta de red. Estos son los pasos que a mí me funcionaron, ya sé que alguien puede decir porque no sacamos directamente de entrada la primer tarjeta, quedamos con 0 tarjetas, agregamos una tarjeta, ahora estamos con 1, y recién ah iniciamos el Linux, bueno de esta forma a mí no me funciono, yo tuve que iniciar el Linux con 2 tarjetas y luego quitar la primera.

Esto mismo que explique por consola, si el equipo es Suse, se puede hacer por Yast, pero eso lo dejo para que lo investiguen ustedes, ya que Yast es un poco fácil de entender (si sabemos lo que estamos haciendo y si leemos bien lo que él nos dice).

Bueno espero solucionar el tema.

martes, 25 de enero de 2011

Siguiendo con el tema de Store procedure de MySql, ahora lo que vamos a crear es un procedimiento para actualizar las estadísticas de MySql.

He leído un poco sobre las estadísticas sobre MySql, y el resumen seria que se debe de ejecutar cuando se borran o agregan muchos datos de una tabla (sobre todo si esta tiene muchos registros).

La teoría la tengo clara pero no les puedo confirmar si el actualizar las estadísticas realmente mejora la performance de la aplicación, es decir teóricamente lo debería de hacer, pero no he podido detectar fehacientemente que esto sea asi, las bases que yo trabajo de desarrollo son de muy pocos datos, y las bases de producción que lo he corrido los usuarios no me dijeron si anda mas rápido o no (tampoco se los pregunte para no obtener una respuesta negativa por el solo hecho de preguntarlo).

Bueno ahora con lo interesante, abajo pongo el procedimiento.

DELIMITER $$

DROP PROCEDURE IF EXISTS `estadisicas` $$

CREATE DEFINER=`root`@`%` PROCEDURE `estadisicas`(in base varchar(50))

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE tabla VARCHAR (50);

DECLARE cursor1 CURSOR FOR SELECT TABLE_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=base;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cursor1;

REPEAT

FETCH cursor1 INTO tabla;

IF NOT done THEN

SET @ddl = CONCAT('ANALYZE TABLE ', tabla, ';');

PREPARE STMT FROM @ddl;

EXECUTE STMT;

END IF;

UNTIL done END REPEAT;

CLOSE cursor1;

OPEN cursor1;

REPEAT

FETCH cursor1 INTO tabla;

IF NOT done THEN

SET @ddl = CONCAT('OPTIMIZE TABLE ', tabla, ';');

PREPARE STMT FROM @ddl;

EXECUTE STMT;

END IF;

UNTIL done END REPEAT;

CLOSE cursor1;

END $$

DELIMITER ;

* El parámetros que recibe es: nombre de la base. Para ejecutarlo simplemente hay que correr desde el browser lo siguiente:

CALL estadisticas('mibase');


Lo que estamos utilizando son 2 sentencias MySql, que son ANALYZE y OPTIMIZE .

viernes, 14 de enero de 2011

Cambiar masivamente los collate de MySql

Esto que voy a postear antes tengo que hacer 2 aclaraciones, primero es un plagio J, segundo gracias Diego Giusso (el creador). pero tenía que tenerlo accesible desde cualquier lugar y no solo desde la empresa.

La situación es la siguiente, tengo una base MySql que tienen algunos campos o tablas con un collate y otros con otro, entonces necesito de alguna forma unificarlos. Para esto utilizaremos un procedimiento almacenado, que se puede generar y ejecutar, directamente del browser de MySql.

Bueno acá abajo, copio lo que les decía que “robe”.

Solución masiva con procedimiento almacenado

* Podemos crear el siguiente procedimiento almacenado que nos permite automatizar la conversión de codificación de campos de una base:

DELIMITER ;;

DROP PROCEDURE IF EXISTS actCOLLATE;;

CREATE PROCEDURE actCOLLATE(in base varchar(50), in characterSet varchar(32), in collateNew varchar(32))

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE tabla VARCHAR (50);

DECLARE campo VARCHAR (50);

DECLARE tipo TEXT (50);

DECLARE cursor1 CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=base AND NOT CHARACTER_SET_NAME IS NULL AND COLLATION_NAME<>collateNew;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cursor1;

REPEAT

FETCH cursor1 INTO tabla, campo, tipo;

IF NOT done THEN

SET @ddl = CONCAT('ALTER TABLE ', base,'.', tabla, ' MODIFY COLUMN ', campo, ' ', tipo, ' CHARACTER SET ', characterSet, ' COLLATE ', collateNew);

PREPARE STMT FROM @ddl;

EXECUTE STMT;

END IF;

UNTIL done END REPEAT;

CLOSE cursor1;

END;;

* Los parámetros que recibe son: nombre de la base, carácter set (por lo general ‘latin1’), collate (por lo general ‘latin1_general_cs’). Para ejecutarlo simplemente hay que correr desde el browser lo siguiente:

CALL actCOLLATE('mibase','latin1','latin1_general_cs');

* Una vez ejecutado, si se quiere eliminar el procedimiento lo pueden hacer ejecutando:

DROP PROCEDURE actCOLLATE;

domingo, 9 de enero de 2011

Nokia 5800 / Endomondo, asi da ganas de hacer deporte

Los que en algún momento leyeron mi blog, quizás sabe que tengo un Nokia 5800, alguna vez ya subí algo sobre el celular, pero quizás ninguno (solo los amigos y conocidos) saben que de vez en cuando (si la rodilla me lo deja) me gusta salir a correr. Bueno hasta acá nada interesante, pero hoy navegando en las páginas que tengo como preferidas, y de casualidad, encontré en http://www.aplicacionesnokia5800.com/ un soft, GRATIS (y esto luego de conocer el soft. me sorprende aún mas) para en principio, medir la distancia que corres (puede ser correr, andar en bicicleta, esquiar, etc.).

Con solo esto ya me gustaba, pero empecé a leer un poco más, y decía que necesitaba acceso a Internet, porque subía los datos a la página de endomondo y tiraba unas estadísticas, como soy un poco desconfiado, y justo era domingo, digo, vamos a probarlo, y así fue, instale el soft, algo tan fácil como entrar a la página, regístrate (gratis), poner tu número de celular y te llega el link para descargarlo (hasta acá por wifi), e instalarlo, calzarme los campeones, y a la ruta.

Usarlo es muy fácil, solo tenes que ejecutar el soft (como se conecta por gps, más adelante explico un poco más esto, sugiero prenderlo unos minutos antes), poner iniciar, empezar a correr, y listo.

Además si queres correr con música, el propio endomondo tienen una parte donde podes reproducir la música que tengas en la aplicación por defecto del 5800 para reproducir. Como siempre que voy a hacer correr, llevo los auriculares, hice como decía arriba, primero le doy play a la música y luego le pongo iniciar para que empiece a correr los minutos (acá un punto que yo mejoraría, le pondría iniciar en 10 segundos, o 30 segundos, ya que le doy iniciar, luego tengo que poner el celular en el brazalete y empezar a correr, ahí se pierden unos 15, 20 segundo, no es la vida o la muerte, pero estaría bueno que arranque unos segundos después).

Ahora cuando llegas a cada km es soft. te avisa, esto esta espectacular, sobre todo los que son muy fanáticos como yo que corro X km, y si es en un lugar donde no hay kilometraje marcado se pierde un poco la referencia.

Como les decía se conecta por gps, para saber cuántos km se están transitando, yo lo probé por ahora 1 sola vez, y diría que le pega muy bien.

Si tenemos Internet en el celular, el propio endomondo, va subiendo cada tanto la información a Internet, y lo puede ver todo el mundo, o los amigos como lo llaman, si entran a la página van a ver que se muestra información al instante de muchas personas.

Cuando llegamos a la meta ponemos detener al celular, ahí directamente nos muestra los km recorridos, la calorías gastadas, el promedio por km, y según dice (yo no tengo) si tenes una faja cardíaca te daría información de cuantas pulsaciones tenes etc.

Hasta acá es un soft. que me dejo de cara, pero no termino mi asombro.

Luego de descansar y llegar a casa y conectar el wifi nuevamente, a los pocos segundos, veo que estos datos se suben a internet y queda todo en la página, y empiezo a navegar un poco en esta, y mi asombro fue mayor. Primero, muestra los datos que comente, calorías, km, minutos, etc., luego hace una gráfica, con los tiempos, muestra con un conejo el mejor, y una tortuga el peor, partiendo por km. Luego tiene una gráfica detallada con las velocidades y de fondo la altitud del terreno (impresionante), después tenes el mapa para mostrar el recorrido, indicando marcas en cada km (otro impresionante), hay para hacer competencia entre amigos (todavía no lo probé), tenes rutas de otras personas (en Montevideo no vi ninguna, si en Maldonado), un calendario con las fechas que corriste, etc.

La verdad señores y señoras, este es una aplicación por la que pagaría algunos morlacos, porque me quedo corto decir que me encanto.

Yo tengo Nokia con Symbian, pero según vi por ahí, también está para android, así que a quien le guste hacer ruta (ya se acorrido con con bici) le aconsejo que si puede que se lo instale y veo si le gusta tanto como a mi.

La verdad que mientras corría pensaba en hacer alguna aplicación para algo parecido, pero nunca voy a poder llegar a hacer algo que colme mis expectativas tanto como lo hizo endomondo.

Nada más que dejarle el link.

http://www.endomondo.com

viernes, 7 de enero de 2011

Clases de linux con logo de windows


Primero que nada agradecer a todos mis "alumnos", y sobre todo a Laurita, que me saco una foto.
Lo comico de esto es que estaba dando una clase de Linux, y el proyector amigo, justo proyecta el inicio de la barra de tareas de windows en mi pelada, y de fondo se ve que estoy anotando las llegadas tardes en un planilla, obviamente Excel, nada de OO.

Bueno por mas que todo apunte a que soy amante de Windows, no es así, no me caso ni con Dios ni con el Diablo (cada uno pone a M$ y a Linux del lado de la frase que le guste).

domingo, 2 de enero de 2011

Genexus, grilla solo con variables

Varias veces me paso que con genexus tengo que tener una grilla la cual solamente tenía variables, y no entendía por que no andaba, y optaba por varias opciones para que funcionara, normalmente usar una tabla auxiliar.

Pero ayudando a un amigo (Gerardo) y el que es un poco más terco que yo, se dedicó a investigar y encontrar como se podía solucionar, y (obviamente) la encontró.

La solución es tener algún for each line en el código, aunque este no haga nada pero genexus pide tener un for each line para desplegar los valores en la grilla. Estoy de acuerdo con ustedes que es una solución al problema, pero la gente de artech debería de solucionar estos temas de fondo.

Cambiar extension masivamente de archivos

Tengo una cantidad considerable de imágenes que no sé por qué quedaron descargadas con extensión php, y sé que realmente son jpg, entonces les tengo que cambiar la extensión.

La opción fácil es ir una por una y cambiar la extensión a mano, pero si son 10 lo haría, pero si ya son más buscaría (así ya aprendo) alguna solución más automática. Entonces como son mucho más de 10, te ponga a buscar en internet y encuentro que para Linux existe una pequeña aplicación llamada mmv que me soluciona este tema.

Lo que tengo que correr es lo siguiente

mmv “*.php” “img#1.jpg#

Luego de correr esto, a los pocos segundos tengo todas la imágenes con extensión jpg.

Una vez más digo, que grande es la consola, por más que muchos usuarios no les guste (Pani esto está dedicado para vos)