23 October 2008 ~ 7 Comments

Las fotos para Kaleman (II)

Alia, originally uploaded by Leonid Kavardakov.

A lo mejor le gustaria a Kaleman poner esta foto de tapiz en su compu o algo asi. Ahhh tal vez, no, creo que a ella le gustan más las gueras.

Lo que sigue es NSFW y especialmente para el deleite visual de Kaleman :-)

ok, bye.

23 October 2008 ~ 2 Comments

Dia de Muertos en Cucuchucho

Tumba en Cucuchucho, originally uploaded by desertzarzamora.

¿Recuerdan esta foto? No se si la puse el año pasado, pero la pongo este año ya que el día de muertos está muy cerca.

Para los (tal vez pocos) extranjeros que visitan mi blog y no saben que onda. Resulta que el 2 de Noviembre en Mexico se celebra el Dia de Muertos y el lugar donde uno debería estar es en Patzcuaro y sus alrededores. Esta foto fue tomada en Cucuchucho.

23 October 2008 ~ 0 Comments

Decipher Reflections from Reality

Ya se me estaba desesperando Karina, asi que aqui le pongo una foto de una chica. Esta foto me gusta mucho.

Por cierto, la chica de la foto NO esta desnuda, esta completamente vestida, y ella misma lo aclara en el pie de la foto. De hecho le molesta que la gente siempre piense que esa foto es de ella en desnudez.

21 October 2008 ~ 3 Comments

Subversion: cómo hacer un merge de una branch al trunk

  1. Hacer un check out del trunk:
    svn co svn+ssh://server/path/to/trunk
  2. Hacer check out de la rama (branch) que vamos a fusionar (merge):
    svn co svn+ssh://server/path/to/branch/myBranch
  3. Entrar a “myBranch”
  4. Encontrar la Revision donde nació “myBranch”:
    svn log --stop-on-copy

    Tomar nota de la revisión rXXXX donde nació la branch.

  5. Entrar al directorio del trunk.
  6. SVN update:
    svn up

    Lo cual actualizará los ultimos datos del trunk, tomar nota de la revisión “At revision YYYY” (debería ser mas grande que rXXXX).

  7. Hacer un SVN merge:
    svn merge -r XXXX:YYYY svn+ssh://server/path/to/branch/myBranch

    Lo cual hace un merge de la branch en el trunk (la copia local)

  8. Arreglar conflictos de archivos en caso de haberlos
  9. Check in para subir el trunk actualizado (merged) al server:
    svn ci -m "Hice un MERGE de la branch myBranch [XXXX]:[YYYY] al trunk"

Listo.

07 October 2008 ~ 0 Comments

Las webcams Logitech pueden entregar Bayer

Acabo de comprar unas cámaras Unibrain Fire-i, por dos razones: (i) porque son firewire y hacerlas funcionar en linux es muy fácil, no son una pesadilla como las USB; y (ii) porque puedo obtener datos en formato Bayer.

Pero ahora resulta que las webcams Logitech pueden entregar Bayer. Habrá que probar una de esas, sobretodo la Logitech PRO 9000.

04 October 2008 ~ 1 Comment

¿Gtalk + YahooMessenger + MSN Messenger?

Es interesante el siguiente punto del acuerdo de cooperacion Google-Yahoo:

Es aún mas interesante sabiendo que Yahoo y Microsoft unieron hace ya varios meses sus redes. ¿Será posible que con el acuerdo Google-Yahoo los usuarios de Gtalk puedan acceder de manera directa no solo a Yahoo Messenger, sino a MSN Messenger?

A mi me gusta la idea, sobretodo porque zarzamora.com.mx usa Google Apps, y como bonus tengo Gtalk para todo @zarzamora.com.mx.

¡Y Google Talk usa en realidad a Jabber! ¿Es un paso hacia la Jabberización de MSN Messenger? Con todo lo que arrastra (Jabber-Asterisk, Zimbra, etc)

26 September 2008 ~ 1 Comment

Los chinos, el Dr Emmet Brown, los fuegos artificiales y la piratería de todo

No conformes con haber falsificado los fuegos artificiales de las olimpiadas, ahora los chinos han falsificado detalles de la “exitosa” mision tripulada al espacio.

¿Bonito? Fake

A los gringos se les ha acusado de algo similar, pero los chinos se volaron la barda al dar detalles de la misión, incluso antes de lanzar el cohete ya tenian la noticia publicada, con lujo de detalles incluyendo las conversaciones de los astronautas (o taikonautas, o piratanautas). ¿O será que contrataron al Dr Emmet Brown para ayudarles a construir el cohete y el Doc les dió un condensador de flujo de bonus?

Fuegos artificiales falsos y generados por computadora, misiones espaciales ficticiamente exitosas y reportadas en el pasado. Tsssss…

25 September 2008 ~ 4 Comments

El maléfico blog del Lhuerta

Lo sabía, algo maléfico tiene el Lhuerta. Algo evil debe de moverse bajo el greñero. Y finalmente lo descubrí: Lhuerta es un asesino de Zorras de Fuego y de Xorg’s.

La verdad es que esto es culpa del driver beta de nVidia que aun no soporta bien mi 280 GTX. Y cada vez que entro a ver el blog del Lhuerta mi Firefox simplemente muere y se lleva consigo al servidor Xorg. El resultado es que me regresa a la pantalla de login.

Querido Nvidia:

Me estas provocando dolores de cabeza horribles ¡¡¡arregla ya el driver de Linux!!!!

16 September 2008 ~ 4 Comments

Terrorismo en México

Ahorita quiero oir a todos esos que dicen que el dinero empleado en el combate a la delincuencia es un desperdicio.

Y si lo siguen diciendo, ojalá que no les toque ser víctimas un atentado terrorista. O mejor sí, ojalá que les toque, a ver si con eso cambian de parecer.

13 September 2008 ~ 0 Comments

¿A quien se parece?

08 September 2008 ~ 0 Comments

CMake para tus projectos II: Kdevelop

En el post anterior expliqué como hacer un par de CMakeLists.txt para generación automática de Makefiles. Pero CMake es mucho mas potente, tanto que puede generar proyectos de KDevelop, Visual Studio (C++), Code::Blocks, Dev C++, X-code, etc, etc…

Creación automática de un proyecto de KDevelop con CMake

Usaré exactamente lo que se describe en el post anterior. Lo único que debe tenerse precaución es en eliminar todo lo que pudiera quedar dentro del directorio build/ de generaciones pasadas. El directorio build/ debe estar vacío.

$ cd build/
$ cmake -G KDevelop3 ../
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Check size of void*
-- Check size of void* - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ariel/Documentos/holaMundoCMake/build

Y listo. Nota la opcion “-G KDevelop3“. En el directorio build/ se auto genera un proyecto de KDevelop llamado HELLO.kdevelop pues HELLO es el nombre del proyecto que definimos en CMakeLists.txt. Ahora se puede abrir con KDevelop (C/C++). Project->Open Project y elegimos HELLO.kdevelop.

Abrir un projecto KDevelop generado por CMake

El proyecto compila, ejecuta y tenemos el arbol de inclusiones. Tambien podemos usar el debugger y el completador de código. Todo lo de KDevelop funciona porque es un proyecto nativo.

Ah, para que el completador de código funcione, debes tener KDevelop 3.5.2 al menos.

07 September 2008 ~ 6 Comments

CMake para tus proyectos

Yo era de los que en algun día de la newbie-esca vida me atemorizaban los Makefiles. Temía que en la oscuridad de la noche saliera un Makefile del ropero, o que por debajo de la cama un Makefile me jalara los pies. Pues no mas.

CMake es una excelente herramienta para generar Makefiles, y no solo eso tambien genera soluciones de Visual Studio, Code::Blocks, Kdevelop entre muchas otras. Así que me puse a investigar y resulta que CMake es trivial de usar, hasta un newbie como yo lo puede usar (por lo tanto otros newbies también podrían usarlo).

1. Hello World: El código fuente

Usaremos este código que muestra CMake para compilar y enlazar un programa principal con una librería extra generada por nosotros mismos. La siguiente estructura de directorios es la que hay que crear:

holaMundoCMake
|-- CMakeLists.txt
|-- build
`-- src
    |-- hola.cpp
    `-- milib
        |-- CMakeLists.txt
        |-- milib.cpp
        `-- milib.h

La idea aqui es que vamos a generar un pequeño programita a partir del codigo en hola.cpp y de la libreria milib.cpp, el código de hola.cpp es muy sencillo:

hola.cpp:

#include "milib.h"
int main(int argc, char* argv){
printf("\n Hola mundo desde main");
hola(2);
printf("\n");
}

Y lo que hace es cargar el header milib.h que es donde está definida la función hola().

milib.h:

#include <stdio.h>
//Prototipo de funcion
void hola(int);

milib.c:

#include "milib.h"
// Implementacion de la funcion
void hola(int veces){
  int i=0;
  while (i<veces){
    printf("\n [%u] Hola Mundo, desde 'milib'" , i);
    i++;
  }
}

El código es realmente trivial (si no lo comprendes mejor ni sigas leyendo). Hasta este punto no hemos usado nada de CMake ni hemos creado Makefiles ni nada. El código bien podríamos compilarlo a mano.

2. Hello World: Las CMakeLists.txt para CMake

Hay un archivo de CMake en holaMundoCMake/CMakeLists.txt y hay otro en holaMundoCMake/src/milib/CMakeLists.txt, éstos son los archivos clave para CMake. Con los comentarios se explican solos.

holaMundoCMake/CMakeLists.txt:

# El nombre del proyecto "HELLO".
# CMake genera automaticamente una variable llamada
# HELLO_SOURCE_DIR que puede llamarse usando
# ${HELLO_SOURCE_DIR} con la ruta del codigo
# lo mismo con ${HELLO_BINARY_DIR} para binarios

project (HELLO)

# Le decimos donde poner los binarios de librerias y ejecutables
# CMake admite instrucciones partidas en varias lineas
SET (LIBRARY_OUTPUT_PATH    ${HELLO_BINARY_DIR}/bin
	CACHE PATH "Directory for Libraries")
SET (EXECUTABLE_OUTPUT_PATH ${HELLO_BINARY_DIR}/bin
	CACHE PATH "Directory for Executables")

# Decimos a CMake que haga recursion a los siguientes directorios
# en orden de aparicion
add_subdirectory (src/milib)

# Directorios que debe incluir, ademas de los estandar.
include_directories (${HELLO_SOURCE_DIR}/src/milib/)

# Directorios para el enlazador, ademas de los estandar
# Para este ejemplo no los necesitamos ya que la unica libreria
# adicional es 'milib' y ya sabe donde encontrarla pues el mismo
# la genera
#link_directories (aqui pones mas rutas separadas por espacios)

# Decirle que queremos un ejecutable llamado holaMundo
# y le decimos el source para que lo compile
add_executable (holaMundo src/hola.cpp)

# Tenemos una libreria adicional llamada milib, enlazarla
target_link_libraries (holaMundo milib)

El segundo CMakeLists sirve para compilar la libreria “milib” y es mucho mas corto:

holaMundoCMake/src/milib/CMakeLists.txt

# Agregar una libreria llamada milib generada poru un cpp
# se pueden agregar muchas librerias con varios add_library
# Se deben listar todos los archivos fuente
add_library (milib milib.cpp milib.h)

3. Hello World: Generar Makefiles con CMake y compilar

En linux el modo por default es generar Makefiles, así que entramos al directorio build que actualmente está vacío y generamos los Makefiles:

~/Documentos$ cd holaMundoCMake
~/Documentos/holaMundoCMake/$ cd build
~/Documentos/holaMundoCMake/build$ cmake ../
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Check size of void*
-- Check size of void* - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ariel/Documentos/holaMundoCMake/build

Listo, ya estan los Makefiles generados, ahora a compilar con make:

~/Documentos/holaMundoCMake/build$ make
Scanning dependencies of target milib
[ 50%] Building CXX object src/milib/CMakeFiles/milib.dir/milib.o
Linking CXX static library ../../bin/libmilib.a
[ 50%] Built target milib
Scanning dependencies of target holaMundo
[100%] Building CXX object CMakeFiles/holaMundo.dir/src/hola.o
Linking CXX executable bin/holaMundo
[100%] Built target holaMundo
ariel@surfer:~/Documentos/eclipse/holaMundoCMake/build$ make clean
ariel@surfer:~/Documentos/eclipse/holaMundoCMake/build$ make
[ 50%] Building CXX object src/milib/CMakeFiles/milib.dir/milib.o
Linking CXX static library ../../bin/libmilib.a
[ 50%] Built target milib
[100%] Building CXX object CMakeFiles/holaMundo.dir/src/hola.o
Linking CXX executable bin/holaMundo
[100%] Built target holaMundo

En el directorio build/bin se encuentra el binario holaMundo,

~/Documentos/holaMundoCMake/build$ cd bin/
~/Documentos/holaMundoCMake/build$ ./holaMundo
Hola mundo desde main
[0] Hola Mundo, desde 'milib'
[1] Hola Mundo, desde 'milib'

¡Listo! ¿Quién dijo que habría que generar Makefiles a mano? Generar CMakeLists.txt es mucho mas fácil y mas intuitivo.

07 September 2008 ~ 0 Comments

AR archives, Shared objects y Static Objects: .a, .o , .so

Cómo convertir un AR archive (.a) lleno de static objects (.o) a un Shared Object (.so)

a files are just (ar) archives of .o object files, so all you need to do is unpack the archive and repackage them as a shared object (.so).

ar -x mylib.a
gcc -shared *.o -o mylib.so

06 September 2008 ~ 0 Comments

¿Cannot talk to klauncher?

Suele pasar en Gnome abriendo cosas de KDE de vez en cuando.

  1. :~$ dcopserver_shutdown
  2. :~$ kdeinit
  3. Listo

Pasa cuando sales de Gnome con CTRL-ALT-BACKSPACE, lo mejor seria meterlo en el inicio de sesion de Gnome.

06 September 2008 ~ 3 Comments

Howto: Compilar Mimas 2.1 y su libmimas.so en GCC 4.2.x

Mimas es un toolkit muy completo, incluso mas completo que OpenCV. Pero compilarlo es una pesadilla, el procedimiento al que llegúe es el siguiente:

  1. Descarga Mimas-2.1 (30 Oct 2006)
  2. Entra al directorio y: make -f Makefile.dist
  3. Aplica el ./configure y asegúrate de no tener errores, si tiene errores es por culpa de librerías que te faltan, instálalas. El configure es muy explícito y te dice qué salió mal.
  4. Lo que realmente es útil es la librería, asi que entra al directorio lib y: make
  5. Si tienes un GCC reciente(>4.2.2) lo más seguro es que no funcione, así que elimina todas las referencias a lo siguiente:
  • findpipette
  • pgh_2dobject
  • pgh
  • pgh_scene
  • pol
  • pol_locator_hough
  • pol_locator_scale
  • pol_model
  • pol_scene

Y me refiero a TODO, incluyendo los *.lo, *.cc y *.Plo. Si lo hiciste bien, y tienes las librerías completas, entonces podrás compilar con make.

Ahí mismo donde tienes el Makefile podrás ver el resultado de la compilación si entras al directorio .libs (comienza con un punto por lo que no aparece en el ls, pero aparece en el ls -la). Por cierto, si te sirven, todos los *.o son objetos que puedes enlazar individualmente de manera estática.

$ cd .libs
$ ls  *.o         (objectos compilados)
$ ls libmimas*    (static & shared objects)

El archivo .libs/libmimas.so.2.0.1 y sus links simbólicos son el shared object y junto con el directorio mimas-2.1/include (el cual contiene los headers) sirven para desarrollar usando mimas. Todo lo de la carpeta lib se compiló exceptuando los que eliminaste del makefile.

Y como siempre hay gente muy floja.

¿Por qué hacer todo esto?

Porque salen errores de este tipo

../include/image_op.h:100:   instantiated from ‘mimas::image<T> mimas::image_func(const mimas::const_image_ref<T2, T2Ptr>&, const mimas::const_image_ref<T3, T3Ptr>&, F) [with T1 = int, T2 = int, T3 = int, F = std::multiplies<int>, T2Ptr = int*, T3Ptr = int*]’
../include/image_op_help.h:22:   instantiated from ‘mimas::image<T> mimas::operator*(const mimas::const_image_ref<T, TPtr>&, const mimas::const_image_ref<T, UPtr>&) [with T = int, T1Ptr = int*, T2Ptr = int*]’
../include/image_funcs.h:390:   instantiated from ‘mimas::image<T> mimas::edgeHaynesJain(const mimas::const_image_ref<T, TPtr>&, const mimas::const_image_ref<T, UPtr>&) [with T = int, T1Ptr = int*, T2Ptr = int*]’
findpipette.cc:92:   instantiated from here

../include/image_op.h:75: error: no matching function for call to ‘multi_apply(boost::multi_array_ref<int, 2u>&, boost::const_multi_array_ref<int, 2u, const int*>&, boost::const_multi_array_ref<int, 2u, const int*>&, mimas::_multi_help2<int, int, int, std::multiplies<int> >&)’

[...]

make: *** [findpipette.lo] Error 1

WTF???????????

Que en español es

../include/image_op.h:75: error: no hay una función coincidente para la llamada a ‘multi_apply(boost::multi_array_ref<int, 2u>&, boost::const_multi_array_ref<int, 2u, const int*>&, boost::const_multi_array_ref<int, 2u, const int*>&, mimas::_multi_help2<int, int, int, std::plus<int> >&)’

05 September 2008 ~ 0 Comments

Kickstart a Gstreamer, un simple programita

#include <gst/gst.h>
int main (int   argc, char *argv[]){
  const gchar *nano_str;
  guint major, minor, micro, nano;
  gst_init (&argc, &argv);
  gst_version (&major, &minor, &micro, &nano);

  if (nano == 1)
    nano_str = "(CVS)";
  else if (nano == 2)
    nano_str = "(Prerelease)";
  else
    nano_str = "";
  printf ("Hola, yo se usar: GStreamer %d.%d.%d %s\n",
          major, minor, micro, nano_str);
  return 0;
}

Y compilas con

g++ `pkg-config --cflags --libs gstreamer-0.10` -o Hola Hola.cpp

Eso te dará como resultado un programa que dice

Hola, yo se usar: GStreamer 0.10.18

O la versión que uses. Luego de eso te das una vuelta y maldices a la gente de Phonon, porque teniendo algo tan completo y organizado como Gstreamer han decidido rehacer la rueda. El OSS en el pecado lleva la penitencia.

04 September 2008 ~ 1 Comment

Gstreamer y la webcam

Es trivial tener un visor simple de webcam con Gstreamer.

gst-launch-0.10 v4l2src ! video/x-raw-yuv,framerate=15/1,width=320,height=240 ! ffmpegcolorspace ! ximagesink

A lo mejor en tu distro se llama gst-lauch solamente.

02 September 2008 ~ 1 Comment

La extinción del los verdaderos Geeks y Hackers

En un principio se le llamaba Hackers a los verdaderos gurús de cómputo, que sabían programar, hacer y deshacer desde las entrañas de C/C++, y mejor aún si sabían ensamblador. Ahora cualquier trompete que usa el Password Revealer para quitarle las ****** a los password es un hacker y es idolatrado. No se diga de los supuestos “Hackers de Hotmail” que ‘te roban el password’. Esos trompetes se han convertido en los hackers de esta época.

Pero al parecer aun sobrevivía la definición de Geek, que es ligeramente inferior a un hacker y es mas bien un fanático del control, libertad y los fierros. Sin embargo hoy veo esta imágen:

Y me doy cuenta que ahora para ser Geek, necesitas un OS que te bloquea todo y te trata como niño (OS X). Si a los hackers les fué mal al ponerlos al nivel de Script Kiddies, a los Geeks les fué mucho peor, pues los pusieron al nivel de diseñadores de moda gays o de niñas fresas de colegio caro con su laptop blanca. No, no, no, no, no….

¿Que más se puede decir? No siempre la evolución mejora las cosas.

01 September 2008 ~ 1 Comment

¿Anjuta, Eclipse, NetBeans, Geany, KDevelop? Y el ganador es…

El orgulloso ganador luego de haber sido ignorado en la primer etapa es:

Eclipse + CMake

Eclipse se impone sobre netBeans justo en la recta final.

Eclipse Ganymede con CMake funciona perfecto, se integran muy bien y hasta hay un plugin de CMake para Eclipse. Hacer Makefiles me asustaba, pero con CMake es un paseo.

La única queja es que Eclipse está escrito en Java y es mas lento que los que estan escritos en C++.

31 August 2008 ~ 1 Comment

Las veguenzas de @hotmail (Parte II: Manualito)

Esta es la segunda parte de el post de las verguenzas de Hotmail. En este post voy a describir lo mas claro que yo pueda, la manera de obtener tu correo @tudominio.com.mx con 100 cuentas de 7Gigas cada una (como mínimo). Y todo en 3 simples pasos:

Paso 1: Compra un dominio

Si te late lo mexicano, ve a nic.mx y compra un dominio .mx, ponte creativo y elije algo decente o algo divertido (i.e. algo como zarzamora.com.mx). Hay muchas formas de pagar, desde deposito bancario hasta tarjetas de credito. Y ya que se acerca Septiembre hay promociones de $15 USD por año o algo así. Entonces, no seas codo, $150 pesos no es tanto y si compras por varios años sale mas barato.

Si no te late lo mexicano hay muchas otras opciones, desde el clásico .com, hasta los mas raros como .biz, .ws, .info, .pro o incluso puedes hacer juegos con los dominios internacionales. Unas ideas son:

  • http://elna.co y correos divertidos como
  • http://podero.so y correos como:
    • todo@podero.so
    • (.so es de Somalia)
  • http://cami.no y correos como:
    • restaurant@cami.no
    • restaurant@del.cami.no
    • Incluso la página puede ser http://el.cami.no
    • (.no es de Noruega)
  • etc, etc, etc, checa la lista de todos y busca combinaciones interesantes.

Paso 2: Activa tu DNS con ZoneEdit

Abre una cuenta en ZoneEdit (se ve chafa la página, pero es muy bueno) y ZoneEdit te asigna un par de DNS, por ejemplo ns2.zoneedit.com y ns8.zoneedit.com. Una vez que tienes el ZoneEdit tienes que esperar unas 2 horas a los cambios sean aplicados. Luego de eso lo que hay que hacer es entrar a la página de nic.mx y dar de alta los DNS que ZoneEdit te dió. Es facil pues lo haces vía Web. Si no usas nic.mx de todas maneras es fácil, pero no puedo dar instrucciones para todos.

Paso 3: Activa tu correo manejado por Google Apps

Abre una cuenta en Google Apps, asegúrate de elegir la del modo gratis. Como método de verificación elige el modo CNAME y haz lo que dicen sus instrucciones (aparecen cuando te das de alta). Luego de eso tienes que hacer al menos una redireccion de http://mail.tudominio.com hacia ghs.google.com. Es fácil, sólo entras al panel de ZoneEdit y creas los registros. Para entrar a tu correo escribes http://mail.tudominio.com. Tambien podrás usar Outlook (POP3 y IMAP) y hasta Gtalk para tu dominio.

Fin

Al final tendrás correo idéntico a Gmail (pero @tudominio.com) y DNS gratis, un espacio de hosting en Google para poner páginas, y lo mejor de todo que ¡es gratis!. Sólo recuerda pagar tu dominio cada año o cada que caduque.

¿Eres demasiado flojo como para seguir todos estos pasos?

Busca a tu amigo geek mas cercano y con unas cervezas tendrás tu GoogleApps en un santiamén (aúnque del costo del dominio nadie se salva).

31 August 2008 ~ 4 Comments

Como evitar las verguenzas de @hotmail.com

Cada vez que veo en tienditas, en programas de TV y Radio, o incluso en empresas de mediano rango correos para contactar que son del tipo:

  • productosgarcia@hotmail.com
  • pepe_1124@yahoo.com.mx

inmediatamente me llega a la mente que dichas empresas, personas o programas no tienen nada de profesionales. Y es que las direcciones @hotmail.com, @yahoo.com.mx, @todito.com y todas esas cuentas gratis se ven muy amateurs. Está bien para personas comunes y corrientes tener cuentas con nombres chistosos o cuentas gratuitas o cosas asi, pero para las empresas es una verguenza. Así que he aquí como obtener una cuenta @tudominio.com con hosting de correo gratis.

  1. Compra un dominio
  2. Abre una cuenta en ZoneEdit
  3. Abre una cuenta en GoogleApps

Claro, hay que configurarlas pero luego de eso tienes al menos 100 cuentas con un mínimo de 7gigas cada una para almacenar el correo.

Sé que es difícil que una persona común y corriente pueda configurar los servicios que menciono, pero cualquiera que haya salido (hasta de las ingenierías) puede ganarse un $$$ si le ayuda a una empresa a configurar eso y es ganancia para todos.

23 August 2008 ~ 0 Comments

Microsoft Lifecam VX-6000 = Microdia

No le creas a las malas lenguas que dicen que la cámara Microsoft Lifecam VX-6000 (045e:00f4) no funciona en linux. La verdad es que sí funciona. Dale lsusb, y si te sale 045e:00f4 simplemente instala el driver de Microdia pero asegurate de aplicarle el parche. Aunque, ten cuidado, tal vez para el momento que leas esto el parche ya estará en el GIT y no haga falta, chécalo antes.

Lifecam VX 6000 funciona en Linux

Si compilas el parche y si no quiere insertarlo, tal vez te haga falta insertar primero los módulos

# modprobe videodev
# modprobe compat-ioctl32

Y luego meter el driver de microdia recien compilado.

# insmod ./microdia.ko

Sí funciona, me consta porque yo tengo varias funcionando y funcionando bien. Así que si no puedes el error esta entre la silla y el teclado. Y si nada funciona, tal vez [...]

22 August 2008 ~ 0 Comments

Querido nVidia: Arregla los drivers (177.13) por favor!.

Crei que era mi imaginacion, pero cuando comencé a notar exagerada lentitud en Xorg con y sin el compiz prendido, supe que algo raro pasaba. Con mi viejita tarjeta serie 7000 el compiz corría de las mil maravillas, era de esperarse que con el monstruo de la 280 GTX corriera endiabladamente suave. Pero no. Y es que estoy usando drivers beta (177.13) y mas viejo no soporta la tarjeta. Así que en cruestion de drivers no hay forma de arreglarlo.

Luego veo un simple programita hecho por el creador de Avant Window Navigator, que salió en un forum. Lo compilo, lo ejecuto y a los 2 segundos: Xorg usando el 100% de un core de mi cpu, y el programita que lo único que hace es poner un cuadrado a dar vueltas comienza a ponerse lento, lentísimo (de hecho todo se pone lentísimo). El veredicto, hay algún problema en los drivers nvidia 177.13.

La solución la da el mismo de AWN:

$nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

Si aplicas ese comando, los programas que ejecutas comienzan a mejorar en desempeño. Lo mejor es ponerla en algun script de inicio de GDM, KDM, KDE o Gnome. Yo la puse en las “Sessions” de Gnome y funciona bien. No la pongas en algun init script porque de nada sirve, tiene que ejecutarse despues de que ha arrancado Xorg, y si reinicias Xorg se pierde y hay que ejecutarla de nuevo.

21 August 2008 ~ 0 Comments

La competencia: 3D Camera

¿Cuales son los principios básicos?

Estoy 90% seguro que esa es una cámara firewire o tal vez USB2.0 que manda datos en bruto (sin comprimir o tal vez en Bayer) a digamos unos 60 cuadros por segundo, de los cuales solo son útiles 30. Ademas de tener un arreglo de LED’s IR que prende en solo en los frames pares.

Los frames impares son los que se usan para video normal, los pares son usados para detectar la profundidad usando la ayuda del infrarrojo.

¿Como detectar la profundidad?

El IR es reflejado por objetos cercanos, y los objetos lejanos no alcanzan a recibir suficiente iluminacion IR. Es como prender una vela en la oscuridad, sólo puedes ver tu rostro y las cosas cercanas a la vela.

Finalmente

Usando las cosas a la par se puede sacar doble provecho de una cámara, es como tener 2 cámaras en una. Ojala tuviera una cámara con disparador manual. ¿Alguien me quiere regalar una Unibrain?

20 August 2008 ~ 0 Comments

Tijuana Sound Machine

Para los que (aun) no los conocen.