Búsqueda

Buscar en 
Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Venta de Garage

Remate de algunas chunches

Venta de Garage

Posts Recientes

About Me..

Lights of my Oaxaca City

Name : Filein Rommel Leon
Birth Year : 1981
Country/City of birth : México/Oaxaca de Juárez
Live in : México City.
Mail & MSN: fileinleon [at ] gmail [dot] com
University : Instituto Tecnológico de Oaxaca
Profession : SoftwareDeveloper
Hobbies : Photography, Basketball, Movies, Books, Gadgets, Travel, Open Source, Technology.
Movies : Knight's Tale, The life is beautiful, August Rush, 7 Dias(Mexican), Matrix, The Pianist.
Songs : La chispa adecuada(Heroes del Silencio), One(U2), Somewhere over the rainbow(Israel Kamakawiwo), Chan Chan(Buena Vista Social Club), Mesecina(Goran Bregovic), Something Inside (Jonathan Rhys Meyers).
Books : The Alchemist(Paulo Cohelo), Travel to the center of the earth(Julio Verne), The Journeyer (gary Jennings), Iliada(Homero),

Visitantes


Software

Hace unos días estando en Lerdo de Tejada, Veracruz -lugar dónde hacen un arroz a la tumbada muy sabroso-, un amigo me preguntó si conocía de algunos equipos que sirvieran como repetidores inalámbricos, es decir ellos tienen una conexión de intenet de 4 mbps y la querían compartir con varios amigos que están extendidos a los largo de la población, lo que se me ocurrió comentarles rápidamente en base a mi experiencia es que adquirieran Access Points que sirvieran como bridges y que al mismo tiempo pudiera funcinar en modo AP.

Hace tiempo trabajando en una empresa conocí alguno de estos equipos y me tocó configurarlos, los llamados Wireless Switchs, los cuáles tienen Access Ports en vez de Access Points y la configuración es centralizada, estos Access Ports entre sus características es que pueden configurarseles varios ESSID, si no mal recuerdo tenían la opción de meterles hasta 4 ESSID en algunos lo que permitia hacer repetidores inalámbricos, lo malo solo era el costo pues una solución de esta no costaba en ese entonces menos de $ 1,000.00 dólares.

Por lo que una solución como la mencionada anteriormente no era viable para estos amigos que querían realizar una función plenamente con fines de entretenimiento, por lo que regresando aqui a México, D.F., saque un router WRT54G que tenía por ahí empolvándose, previamente ya le había metido el firmware de DD-WRT, la versión 0.23 que salió hace más de un par de años, pero desde entonces no había actualizado el firmware en este equipo, por lo que dándome una vuelta en el sitio de DD-WRT vi que ya tienen la versión 0.24 con su Service Pack 1, por lo que ni tardo ni perezoso la bajé para instalársela.

Antes ya había tenido conocimiento de Redes MESH y WDS(Wireless Distribution System), pero no lo había llevado a la práctica, por lo que despues de bajar la versión 0.24 de DD-WRT pude ver que el AP WRT54G en la configuración del Wireless ya permite trabajar en modo repetidor y modo bridge, por lo que quise hacer una prueba la cuál consiste en lo siguiente:

Conectar el router Linksys en modo repetidor a un Access Point 2Wire Infinitum que está en alguna parte del edificio dónde vivo.

Aqui es importante usar el mismo ESSID, Canal y llave WEP ó WPA que tiene el Access Point "padre" por así decirlo, de forma que hay que conectar el WRT54G como cualquier cliente inalámbrico con la salvedad que en la configuración hay que decirle que está trabajando en modo repeater bridge y no en modo AP o Cliente(ver figura de abajo).

Posteriormente agregar una interfaz virtual inalámbrica en el Router, esto hará que se vea un AP más al gestionar las redes inalámbricas y de ahí poder conectarnos.

Despues solo basta ir a la parte de Wireless->Wireless Security->Virtual Interfaces wl0.1 SSID [phylevn.mexrom.net] Para poder configurar la parte de seguridad de la red inalámbrica.

Ya que quede todo esto hay que guardar las configuraciones y aplicarlas.

Despues solo ir a la parte de Status y ver como está la parte inalámbrica ahí debería verse como el WRT54G se conecta en este caso al 2Wire Infinitum y también como un cliente se conecta a la interfaz virtual del WRT54G que trabaja en modo AP.

Configuración del WRT54G en modo repetidor y también configurando la interfaz virtual del WRT54G.

Agregando Interfaz vitual inalámbrica

Gestionando las conexiones realizadas por el WRT54G, en este caso ya conectado al 2Wire Infinitum y también se observa como un cliente se conectó a la red inalámbrica phylevn.mexrom.net que es la interfaz virtual del WRT54G.

Trabajando el Repetidor inalámbrico en WRT54G

Lo interesante de todo esto es que se realiza en un par de minutos, sin gastar tantos pavos que con soluciones propietarias como las de Symbol Technologies ahora Motorola.

Solo resta agradecerle a la comunidad de desarrollo de DD-WRT y al Open Source en general por permitir esto y muchas cosas más. face-smile.png

Pongo en http://files.mexrom.net código PHP para ejemplificar el uso de Ajax, el código muestra operaciones básicas como son Insercion, Actualización, Borrado y Listado de Datos sobre alguna Base de Datos haciendo uso de ODBC.

Para obtener el código entrar al siguiente url: http://files.mexrom.net

  • Login:invitado
  • Password:invitado

    Acceder al directorio Ajax_demo y descargar el archivo ajax_demo.zip

    Descomprimir el código de ajax_demo.zip en algún directorio del servidor web.

    Posteriormente se requiere crear la tabla siguiente:

    CREATE TABLE USUARIOS (
       CLAVE_USUARIO VARCHAR(10),
       NOMBRE VARCHAR(120),
       LOGIN VARCHAR(10),
       PASSWORD VARCHAR(10),
       ZONA VARCHAR(10),
       FECHA_CONEXION VARCHAR(10),
       HORA_CONEXION VARCHAR(10),
       STATUS VARCHAR(1),
       ADMIN VARCHAR(1),
       PRIMARY KEY (CLAVE_USUARIO)
    )
     

    Esta tabla puede crearse en cualquier manejador de base de datos que tenga un conector ODBC, de tal forma que será necesario crear una conexión ODBC a la base de datos dónde se creo la tabla.

    Posteriormente solo habilitar el soporte ODBC en PHP, en caso de que se use Wamp Server en el ícono de Wamp Server ubicado en la barra de tareas de Windows seleccionar PHP->PHP Extensios->PHP_PDO_ODBC.

    Ya que se tenga habiltado el soporte ODBC, entonces entrar al archivo conexion.php y cambiar los valores de conexión ODBC para acceder al servidor de Base de Datos.

    Con esto ya es posible probar las bondades de Ajax.

    Dar de alta manualmente un usuario con el valor de admin = *(asterisco) para poder acceder a la aplicación

    Ó descomentar la línea 17 del archivo index.php

    Espero le pueda servir a alguien, cualquier duda pongan un comentario.

  • phyl3vn | Programacion, Software | 25 Noviembre, 9:31pm | Comentar acerca de esto

    Hace tiempo adquirí un par de tarjetas Sangoma, y otros equipos de telefonía IP con Intruder Store, que por cierto una de las tarjetas me salió mal pues me dañaba los módulos FXO, por lo que la envíe a garantía a Intruder cosa que nunca me la hicieron válida y hasta la fecha no me han regresado la tarjeta Sangoma A200 y de esto ya va más de un año..

    Ahora la cuestión es que cuándo compré las chunches con Intruder me registré en su portal para hacer la compra vía internet, recuerdo que me registré como "Filein Rommel 2", curiosamente hoy en la mañana me llegó el siguiente correo a nombre de la empresa "B Models" nombrándome "Filein Rommel 2", por lo que quise saber quién era esta empresa y de dónde habían obtenido mis datos, por lo que entré a su página web http://bmodelsmex.com y curiosamente me llevó a la página web de "Intruder Consulting", supongo que no configuraron bien el servidor virtual Apache, pues les falto poner en el alias *.bmodelsmex.com para que cuándo entraran sin la www no me mandara al dominio principal del servidor de Intruder.

    Aqui un screenshot del ping que hice a la página web de Intruder y Bmodel, curiosamente es la misma.

    Por lo que no me queda más que recomendar cuidado con la información que den, como lo son domicilios, números de tarjetas de crédito y demás, pues muchas empresas se dedican a dar o vender información a terceros.

    phyl3vn | Tecnología, Software, Voz Sobre IP, Personal | 20 Noviembre, 11:57am | 1 comentarios

    Hace algunas semanas adquirí una cuenta de Rapidshare.com, el cuál es un servicio que te permite descargar infinidad de archivos sin límite de descarga y con un ancho de banda bastante rápido, por lo que decidí aprovecharlo para obtener algunos archivos, en Windows he usado Free Download Manager, pero en el caso de Linux el gestor de descargas de Firefox no me convence, al igual que Kget que viene integrado dentro de KDE, esto ya que si por alguna razón se pierde la conexión también pierdo todo el avance de la descarga realizado, por lo que buscando un Administrador de Descargas encontré WebDownloader for X en su versión 2.5.

    Web Downloader me permite ir agregando URL de archivos a descargar que los va poniendo en una cola, de tal forma que en la configuración le digo cuántos puede ir descargando simultáneamente, si en algún momento se interrumpe la conexión, Web Downloader guarda los datos para poder continuar(Resume) la descarga en el porcentaje que se quedó en la última sesión.

    Un problema que tuve con WebDownloader es que en la configuración le indicaba que los archivos me los pusiera en el directorio /downloads, directorio al que le asigne permisos de escritura para mi usuario, pero por alguna razón Web Downloader siempre me iba guardando los archivos descargados en un subdirectorio de mi dir HOME, esto no me gustó ya que en mi HOME no tengo mucho espacio, ya que los dir /(root) /boot /var /usr /home y swap los tengo en particiones independientes, por lo que tuve que eliminar el directorio MyDownloads que crea directamente Web Downloader, para poder hacer un link dinámico de /downloads a ~/MyDownloads por lo que de esta forma Web Downloader descargaba en MyDownloads que en realidad es /downloads .

    Con esto ya pude seguir aprovechando los beneficios de rapidshare.com... tongue.png

    phyl3vn | Tecnología, Software, Personal | 17 Noviembre, 12:55am | Comentar acerca de esto

    Llevo un par de meses integrando en un servidor Linux múltiples herramientas multimedia libres para la creación de un Centro Multimedia con capacidades domóticas.

    Entre las que he probado y de la que hablare ahora es de Motion.

    Motion Es una utilería desarrollado bajo una licencia libre que permite detectar movimientos en cámaras web usando video4linux como interfaz para conexión con Dispositivos de Video en linux tales como cámaras web.

    Lo interesante de Motion es que permite usar cualquier Cámara Web compatible con Linux para hacer VideoStreaming esto indica que podemos ver la cámara web a traves de una página web, por lo que monitorear la cámara se puede hacer desde cualquier parte del mundo siempre y cuándo la computadora dónde esta conectada la cámara estuviera conectada a una IP Homolagada, pero lo mejor de Motion es que permite configurarse para que cuándo detecte movimiento capture las imágenes y las guarde en un directorio en formato Jpeg, por lo que su uso se extiende aun más para lo que es VideoVigilancia.

    Por default Motion corre en modo aplicación, pero puede configurarse desde su archivo de configuración que está en /etc/motion/motion.conf para que corra en modo demonio por lo que siempre estará corriendo en background.

    Motion por default abre el puerto 8000 para que desde otras partes vía una página web se pueda monitorear la cámara web siempre y cuándo la opción de webcam_localhost esté en off, el puerto también es posible configurarlo.

    Algo que me llamó mucho la atención de Motion es que es muy configurable a traves de /etc/motion/motion.conf, en dónde leyendo mediante man la documentación me entero de que tiene un trigger on_event_start que permite ejecutar alguna aplicación al momento de detectar movimientos, de tal forma que aqui solo basta usar la imaginación para poder hacer algo interesante tal como es por ejemplo mendiante Asterisk alertar con una llamada telefónica a personal de seguridad de un movimiento detectado.

    También algo que me agradó de TextMotion es que guarda imágenes cuándo se detecta movimiento, asi como también tiene la opción de grabar un video de cuándo se detecta el movimiento y mejor aún de mostrar el área dónde se está registrando el movimiento..

    Tambien es posible configurar el número de frames necesarios parapoder considerar un evento de movimiento.

    Aquí pongo la configuración que uso para usar Motion como un detector de movimiento, con esta configuración guardo videos en formato avi con el codec msmpeg en el directorio default /var/lib/motion/snapshots y también desactivo la opción de que genere archivos JPG o PNG de movimiento, configuro a Motion para que muestre el video usando una calidad de 320x240 por cuestiones de rendimiento y ejecutando al momento de que se detecte un movimiento un script en PHP que es un Agi de asterisk que me permite marcar a una extensión telefónica.

    # Minimal motion example config file provided by the
    # Debian motion package - for basic webcam operation.
    #
    # You most certainly want to investigate
    # /usr/share/doc/motion/examples/motion-dist.conf.gz
    # for further configuration options. Also, refer to the
    # motion man page and /usr/share/doc/motion/motion_guide.html
    # for detailed information on configuration options.

    daemon off
    quiet on

    # You may very well need to change this (check with 'dmesg'
    # after plugging in your webcam).
    videodevice /dev/video0

    # Image size in pixels (valid range is camera dependent).
    #Si se tiene una cámara que soporte mayor calidad como por ejemplo 640x480 entonces cambiar los valores, por cuestiones de rendimiento he dejado los valores por default aqui
    width 320
    height 240

    framerate 25
    #calidad con que guardará las imágenes JPEG, en cuestiones de seguridad a veces es bueno darle un 100% asi  se tendrá una imagen más tínida, aunque esto requerirá mayores espacios
    quality 75
    auto_brightness off

    # General threshold level and noise threshold
    # level (for distinguishing between noise and motion).
    threshold 4500
    noise_level 64

    # Initial brightness, contrast, hue (NTSC), and saturation.
    # 0 = disabled (valid range 0-255).
    brightness 0
    contrast 0
    saturation 0
    hue 0

    # Encode movies in real-time (install ffmpeg before enabling).
    #default ffmpeg_cap_new off
    #ffmpeg_cap_new off
    #Habilitar esta opción para grabar videos cuándo haya movimiento
    ffmpeg_cap_new on

    # Codec to be used by ffmpeg for the video compression.
    # Supported formats: mpeg4, msmpeg4.
    #se configura el codec a usar
    ffmpeg_video_codec msmpeg4

    # Target base directory for pictures and films (you may need
    # to change this (or change its permissions) depending on
    # which system user runs motion).
    target_dir /var/lib/motion/snapshots

    # Define a port number (e.g. 8000) to enable the mini-http server.
    # 0 = disabled.
    webcam_port 8000

    # Set to 'off' to allow anybody (not just localhost) to view the
    # webcam via the mini-http server (http://hostname<img src="http://phylevn.mexrom.net/plugins/Emoticons/images/tongue.png" border="0" alt="tongue.png " width="16" height="16" />ort).
    #webcam_localhost on
    webcam_localhost off

    webcam_quality 70
    webcam_maxrate 8

    #Configuracion personalizada

    #Puerto para entrar a la configuracion
    control_port 8001
    #Usuario y password para acceder a la configuracion
    control_authentication motion:m0t10n

    #Numero de frames requeridos para poder lanzar el evento de movimiento
    #minimum_motion_frames  10

    #Comando que se ejecuta al detectarse movimiento
    on_event_start  "php -q /var/lib/asterisk/agi-bin/makeCallwithAsterisk.php"

    #Esta opcion siempre generaria imagenes cada cierto tiempo aunque no haya movimiento
    #output_all on

    #Muestra la región donde se localiza el movimiento
    locate on

    #muestra un texto en la esquina inferior izquierda
    text_left "phylevn.mexrom.net"
    #aumenta el tamano del texto
    text_double on

    #se asegura de que haya movimiento
    roundrobin_skip 2

    #desactivamos la opción de que guarde archivos de imágenes
    output_normal off

    #indicamos que guarde los archivos en formato NTSC para el caso de Mexico
    norm 1

     

    Existen otras aplicaciones para monitoreo de cámaras tales como webcam-server, pero a mi gusto Motion por mucho se lleva las palmas.

    Para mis prubeas he usado una cámara web Creative Live! Cam, la cuál adquirí por $ 180 pesos en la plaza de la computación.

    Para poder conectar esta cámara en Ubuntu Linux 7.10, use el driver ov51x-jpeg-1.5.9. Es posible usar la cámara también para el AMSN y otros programas que hagan uso de Video4Linux.

    En el anterior post puse información sobre una Rockola que hice en un rato de ocio allá en Oaxaca, ahora he puesto el código en SourceForge.net de la Rockola Web2.0 como le he llamado al proyecto.

    El código puede descargarse de la siguiente URL

  • http://sourceforge.net/projects/rockolaweb20/

    Puede obtenerse más información de esta aplicación en la siguiente URL:

    http://phylevn.mexrom.net/index.php/blog/show/Desarrollando_Rockola_en_Linux_.html

    Aqui algunos screenshots

  • http://www.flickr.com/search/?q=Rockola&w=56262362%40N00

    Espero pueda servirle a alguien el desarrollo y cualquier duda, comentario, sugerencia, queja ó demas siéntase libre de contactarme en fileinleon arroba gmail punto com

  • Hace unos días estando en Oaxaca visitando a mi familia y degustando de los panes de muertos, me preguntó mi papá si podía instalarle un programa para reproducir música, esto ya que mi padre rentó la licencia del Bar "La Chinita" que allá en la Ciudad de Oaxaca está enfrente de la Tienda del Issste de la Calz. Madero, probando algunas aplicaciones como Amarok, Esperanza con XMMS2, Mplayer, Xine, XMMS, Juk, Jukx, entre otros se me hicieron demasiado complejas para poder usarlas como Rockolas, por lo que una noche caminando por la estación del ferrocarril se me ocurrió la idea de desarrollarla usando una interfaz web, una base de datos empotrable al código como sqlite, y una utilidad que reprodujera la música sin que se requiriera interfaz gráfica como lo hace XMMS2, por lo que llegando a la casa de mis padres empecé con las primeras líneas de código.

    El resultado final fué el siguiente:

    Screenshot Rockola (ALfabeto cervezas)

    Características de la Rockola:

  • Lectura recursiva de archivos MP3 de los directorios asignados en la configuración.
  • Extracción de información de Artista, Titulo, Album y Genero de los archivos MP3 encontrados.
  • Almacenamiento de la información en la base de datos SQLite (SQLite no requiere configuración adicional)
  • Clasificación de canciones MP3 por Artista, Album ó Género.
  • Subclasificación de canciones MP3 por Alfabeto.
  • Busqueda personalizada de canciones por artista titulo, album ó género.
  • Listado de MP3 por Artista, Album ó Género.
  • Muestra información detallada de canción MP3 seleccionado.
  • Agrega MP3 a la cola de reproducción de XMMS2.
  • Limpia la cola de reproducción de canciones ya reproducidas.
  • Interfaz web.
  • Modo pantalla completa(Fullscreen) mediante Firefox y r-kiosk.
  • Componentes Ajax para clasificación de información y para todo el manejo de la interfaz.
  • Teclado virtual para busqueda personalizada de canciones.
  • Muestreo de botones de alfabeto en modo botón o imagen.

    Requerimientos:

  • Linux
  • XMMS2
  • Apache
  • PHP
  • PHP5-SQLite3
  • Extract
  • Firefox
  • Add-on R-Kiosk.

    Aquí algunos otros screenshots.

    Screenshot Rockola (Teclado Virtual)


    Screenshot Rockola (Config)

    El código fuente de lo subiré a SourceForge en cuánto me habiliten el servicio para subir el proyecto.

    Update El código puede descargarse de la siguiente URL: http://sourceforge.net/projects/rockolaweb20/

  • Este viernes 24 y sábado 25 de Octubre del 2008 estuve en el ENLi presentando un par de charlas sobre Fotografía y Telefonía de Voz sobre IP con Asterisk, el evento del ENLi fué un éxito había asistentes y ponentes de todas partes. Llegué a Puebla el día viernes, venía de Oaxaca ya que estuve ahí unos días con mi familia, por lo que salí de Oaxaca a la 1 am para llegar a Puebla a las 6 a.m, como aun me faltaba terminar mi presentación sobre Fotografía Digital en Linux, me senté en el área de comida de la CAPU(Central de Autobuses de Puebla) aprovechando que por ahí había redes wifi con internet, ya por hay de las 9 a.m. tomé un taxi para la UPAEP universidad dónde se llevó a cabo el Encuentro Nacional de Software Libre, llegando a las 9:30 me registré ya que a las 10:00 A.m. tenía un taller de J2ME al que me inscribí para saber más acerca del tema.

    Despues fué la comida de los ponentes que fué en un restaurant con un buffete de comida china bastante bueno, terminando más que satisfecho y con ganas de una siesta, pero tenía que dar una charla sobre fotografía digital en linux, la charla salió bien me falló al último la generación de un HDR con QTPFSGUI, pero los demas ejemplos con GIMP y UFRaw salieron bastante bien.

    Despues de la charla anduve vagando por la UPAEP y ya más tarde me retiré al hotel. Ya como eso de las 11:00 P.M fui para el antro Toushé dónde se llevaría acabo la fiesta del ENLi, pero al llegar lo noté muy vacío por lo que no me quedé más de 10 minutos y tomé de regreso un taxi para el hotel.

    Ya al día siguiente del día sábado me tocó dar otra charla más técnica, Telefonía de Voz sobre IP con Asterisk, por lo que me dirigí a la sala dónde tenía que presentarla, ya estando ahí coloqué todas las chunches que usaría, ATAs, Teléfonos, Router, bluetooth, Móvil, etc., a media plática se acercó el Tacvbo y pensé que haría una promoción sobre sus equipos, pero cuál fué mi sorpresa que no solo haría publicidad para la empresa en la que participa Neocenter quién patrocinó al ENLi, si no también me regaló un teléfono de Voz sobre IP Aastra 480i el cuál viendo sus características es bastante bueno, por lo que salí rayadísimo del ENLi.

    Por lo que no me queda más que agradecer a los asistentes a mis charlas, al ENLi, a los organizadores y a NeoCenter que se puso la del Puebla con el teléfono de Voz sobre IP .face-smile.png

    Aastra 480 Telefono VoIP

    Hace unos días adquirí un teléfono Nokia 3500 en plan prepago con Movistar, ya que el plan de renta que tengo con Telcel se me está haciendo cada vez más caro, lo lindo de este teléfono no solo fué su precio de apenas $ 900.00 si no también sus características como soporte de J2ME, Bluetooth, USB y en Linux es posible enviar SMS a traves de Gnokii, por lo que aprovechando estas característica me he puesto a jugar con esta chunche haciendo mis pininos con java y también unas pruebas de bluejacking que dejé pendientes que más tarde postearé aquí, pero ahora este post va relacionado con el envío de SMS usando GNokii a traves de una página con PHP mediante pipes.

    Requisitos:

  • PHP
  • Apache
  • Gnokii
  • Algún teléfono móvil, los Nokia funcionan bien con Gnokii, de preferencia USB.

    El proyecto aquí comentado puede bajarse de la siguiente url: http://files.mexrom.net
    projects / sms / sms-gnokii-001.zip
    login: invitado
    password: invitado

    Básicamente en Ubuntu Linux instalar Gnokii es simple:

    sudo apt-get install gnokii gnokii-smsd libgnokii3 libgnokii3-dev
     

    Ya teniendo listo Gnokii, en el caso del Nokia 3500 editar en modo super usuario el archivo

    sudo scite /etc/gnokiirc

    Y ahí poner lo siguiente

    [global]
    port = /dev/ttyACM0
    model = AT
    connection = serial
    debug=on
     

    Ahora solo basta poner el siguiente script en un directorio web:

    <?php
    /**
     *
     * Script para enviar SMS desde una pagina web usando PHP como lenguage script y Gnokii como interfaz de conexión entre el teléfono y la aplicación
     *
     * Desarrollado por Filein Rommel León Méndez
     * Script liberado bajo la licencia GPL
     *
     */

     
     echo siteHeader();
     $option = $_POST["status_page"];
     
     switch($option){
            case "":
                          echo showForm();
                   break;
            case "sms_sender":
                          pipes(ValidateNumber( $_POST["phone_number"]), $_POST["sms_message"]);
                   break;
     }
     
     function showForm(){
            $frontEnd =
            "<div align=center>" .
            "<form name=smssender method=post action=\"$_SERVER[PHP_SELF]\" >".
                    "<table  class=MAINFORM>".
                    "<tr> <td colspan=2 >Envia SMS</td> </tr>".
                    "<tr> <td colspan=2></td> </tr>".
                    "<tr> <td class=NAME_FIELD>Telefono:</td>  <td><input type=text name=phone_number size=70 maxlenght=16 class=TEXT_BOX></td> </tr>".
                    "<tr> <td class=NAME_FIELD>Mensaje:</td>  <td><textarea name=sms_message cols=60 rows=5 class=TEXT_AREA></textarea></td> </tr>".
                    "<tr> <td></td>  <td><input type=button name=send_message value='Enviar' onClick='javascript:document.forms[0].submit();' class=TXT_BUTTON></td> </tr>".
                    "<input type=hidden name=status_page value=\"sms_sender\" >".
                    "</table>".
            "</form>" .
            "</div>";
            return $frontEnd;            
     }
     

     
     function siteHeader(){
            $header = "<link rel=stylesheet type=text/css href=estilo.css>";
            return $header;
     }
     
     
            function pipes($number="", $message=""){
     
            if(is_numeric($number)!="" and is_string($message) and $message!=""){
                            error_reporting(E_ALL);
                    //message       
                            $echo_pipe = popen(" echo \"$message\" ", 'r');
                            //echo "'$echo_pipe'; " . gettype($echo_pipe) . "\n";
                    //gnokii       
                            $gnokii_pipe = popen("gnokii --sendsms $number -r", 'w');
                            //echo "'$gnokii_pipe'; " . gettype($gnokii_pipe) . "\n";
                    //pipes validate     
                        if ((!$echo_pipe) || (!$gnokii_pipe)) {
                                    fprintf(stderr, "One or both pipes failed.\n");
                                    return EXIT_FAILURE;
                        }
                        $bytes_read = 0;
                    //execute pipes
                        while ($buffer = fread($echo_pipe, 2096)) {
                                    fwrite($gnokii_pipe, $buffer);
                                    $bytes_read += strlen($buffer);
                        }
                    //close pipes
                        //printf("Total bytes read = %d\n", $bytes_read);
                        $status_function = 0;
                        if (pclose($echo_pipe) != 0) {
                                    fprintf(stderr, "Could not run 'echo', or other error.\n");
                                    $status_function++;
                        }
                        if (pclose($gnokii_pipe) != 0) {
                                    fprintf(stderr, "Could not run 'festival', or other error.\n");
                                    $status_function++;
                        }
                        if($status_function>=2){
                            echo sms_successful($number, $message);
                        }
                            echo sms_successful($number, $message);
                        
                    }
            }
            
            
            function sms_successful($number="", $message=""){
                   return "<div align=center>" .
                   "<table class=MAINFORM><tr class=successful><td colspan=2>Mensaje enviado exitosamente</td></tr>" .
                   "<tr><td class=name_field>Telefono: </td><td class=value_field>$number</td></tr>" .
                   "<tr><td class=name_field>Mensaje: </td><td class=value_field>$message</td></tr>" .
                   "</table>" .
                   "</div>";     
            }
            
            function ValidateNumber($number ){
                   return eregi_replace("[^0-9]", "", $number);
            }
     
    ?>
     

    De ahí solo basta ir a Firefox al directorio dónde se instaló el script para ejecutarlo:

    http://localhost/sms/

    Dar un número de teléfono y mensaje a enviar.. si todo salió bien debería enseguida verse el mensaje enviado desde la página, en el teléfono destino.

  • Im starting a project to integrate many technologies in Linux and to create a Home Multimedia Center, using Asterisk VoIP, Video and Audio players, Bluetooth devices, IrDA devices and Remote Control, Voice Recognition and Text to Speech, Home Security, Motion Detection and another things that I want concentrate in a PC with Linux. For motion detection I will use a WebCam, then I bought a Creative Webcam, the model is Creative Live! Cam Chat, searching info in internet about drivers for creative webcam, I found one open source driver in creative website http://opensource.creative.com/webcam.html, in this webpage I cannot see the model, but running lsubs -l in linux I could get the Vendor Id : 0x041E and Product ID : 0x405F of the WebCam, then with this info searching in the drivers webpage of Creative I could to know that WebCam Vista has the same values that Live! Cam Chat.

    Result of the search

    WebCam Vista (D) VF0330 0x041e 0x405f http://www.rastageeks.org/ov51x-jpeg/index.php/Main_Page

    Creative Live! Cam running in Linux

    Part of the result of run lsusb -v

    Bus 003 Device 012: ID 041e:405f Creative Technology, Ltd
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         8
      idVendor           0x041e Creative Technology, Ltd
      idProduct          0x405f
      bcdDevice            1.00
      iManufacturer           1
     

    To install the drivers of the webcam I downloaded the drivers from : http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-1.5.9.tar.gz

    I untar the package in /usr/src

    cd /usr/src
    wget http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-1.5.9.tar.gz
    tar -xzvf ov51x-jpeg-1.5.9.tar.gz
    cd ov51x-jpeg-1.5.9
     

    After unload ov511 driver this if this module had loaded in the memory and remove ov511 drivers from /lib/modules/'uname -r'

    rmmod ov511
    sudo rm -rf /lib/modules/2.6.22-14-generic/kernel/drivers/media/video/ov511*

     

    And to compile and install the drivers

    sudo make clean
    sudo make
    sudo make install

     

    Previously you will need load the videodev module modprobe videodev

    Only rest load the module modprobe ov51x-jpeg

    And with camorama or another app for webcams you will can see the image of your webcam.

    La semana pasada fuí a Guadalajara, Jal., a entregar un proyecto que me gustó mucho desarrollar, ya que en este proyecto que duró varios meses de desarrollo, se mezclaron varias tecnologías por lo cuál el aprendizaje y la experiencia fué grata pues el desarrollo se comenzó desde cero.

    El proyecto consistió en hacer módulos de cotizaciones, gestión de cortes de pedidos, devoluciones y generación de facturación electrónica para dispositivos móviles con PocketPC 2003 y Windows Mobile 2005, este proyecto se desarrolló como complementó a un ERP existente que hace uso la empresa Grupo Venta Internacional S.A de C.V., una empresa especializada desde 1990 en el suministro de equipo y material quirúrgico para Cirugía Plástica y Reconstructiva, Neurocirugía, Cirugía Maxilofacial, Traumatología, Otorrinolaringología y Antienvejecimiento.

    La aplicación en el dispositivo móvil permite descargar catálogos de la base de datos del ERP, a la cuál se accede vía GPRS desde algún lugar dónde haya cobertura de telefonía celular GSM/GPRS, por cuestiones de seguridad se hizo a traves de un tunel VPN, para lo cuál se implementó un servidor VPN libre por software el cuál hace la función de redireccionamiento entre la red local de la empresa y la red VPN de los móviles.

    Ya descargada la información se almacena en una base de datos SQLite versión 3 la cuál tiene un rendimiento bastante eficiente en la terminal portátil, y a partir de ahí se pueden realizar cotizaciones en modo batch, no requiriendo tener conexión GPRS con el servidor para poder generar las cotizaciones de los clientes, y así en algún momento enviar la información al servidor para que las cotizaciones generadas sean atendidas de forma inmediata por el personal de Servicio a Clientes y asi rápidamente convertirlas a órdenes para luego surtirlas.

    Otro proceso que permite realizar la terminal portátil es el corte de pedidos que básicamente es llevar un control sobre los productos pedidos por los clientes, de tal forma que es posible generar devoluciones, registrar que productos mantiene el cliente y que productos va a facturar, en el caso de facturación aquí se hace uso de facturación electrónica que está basado en el estándar legal de SAT(secretaría de Administración Tributaria) en México. De tal forma que la terminal al momento de estar facturando los productos hace una conexión a un webservice para poder extraer el sello digital en base al resultado de la cadena original y del XML generado previamente, para luego poder ser impresa la factura en una impresora portátil Zebra RW420 mediante Bluetooth.

    Lo interesante del desarrollo fué hacer las conexiones remotas y hacer que toda la información se guardara en las correspondientes tablas del ERP, ya que hay muchas dependencias en varias tablas por lo que había que llevar un control minucioso sobre los registros actualizados en el ERP. También fué interesante realizar las conexiones VPN desde un móvil a un servidor OpenVPN usando conexiones GPRS, así como también la impresión de reportes usando conexiones bluetooth.

    Detalles del desarrollo:

  • Plataforma: PocketPC 2003 & Windows Mobile 2005
  • Base de datos móvil: SQLite 3.0
  • Conexiones: GPRS, OpenVPN, Bluetooth, ActiveSync.
  • Desarrollo: C# .Net Compact Framework & OpenNet CF
  • Facturación Electrónica: XML, OpenSSL & WebService.
  • Impresión: Bluetooth.
  • Impresora:Zebra RW420
  • Terminal portátil: Symbol Motorola MC70
  • Código de barras: PDF-417

  • Tonight I was programming in my computer, but my neighbor was listening a song called "Night In Bangkok", this song some years ago when I was adolescent it sounded a lot in the radio, for that I enter to youtube to search this song and to listen it in my computer, but in a part of the song I listened Thailand music so call my attention and I began to search thailand music, but the first video that I could find was Nepal Music, seeing this video in the right side of the youtube yo can see another videos and one of them I found curious, the title of this video is "Mars Civilization: Evidence by European Space Agency".

    The author of this video is Sean David Ryan, he show in the video mars photographs taken by European Space Agency, where he can found rare shapes in the photograph increasing the contrast and lowering the brightness of the photograph.

    In Mexico there a chatterer called Jaime Maussan making business with UFO, Aliens and other rare things, then I didn't believe what I saw in the the video, because it could be a trick using an images editor.

    But searching the Hale Crater photographs in the ESA website I can to get three photographs and I downloaded it.

    Making the same process that Sean Dadiv Ryan made with the photographs I saw the same shapes in the picture and I put the final result.

    ¿ What do you think that it is ?

    The shapes that appear in the low part of the photograph are very interesting, I thought that this shapes were created by an error by JPEG Compresion Algorithm, but processing the three photographs that have a different angle and perspective I can saw the same shapes curiosly..

    You can see the video of Sean Davi Ryan in youtube : http://www.youtube.com/watch?v=qcR7VX-FwDY

    And to download the Mars Hale Crater photograph from ESA Website http://esamultimedia.esa.int/images/marsexpress/137-021104-0533-6-3d2-01-HaleCrater_H.jpg

    Or going to the ESA Website and download another Hale Crater photographs.. http://www.esa.int/esa-mmg/mmg.pl?topic=&subtopic=&subm1=GO&keyword=Hale+Crater

    if you make the same procedure described in the video, you could see the shapes in the "Hale Crater" , this is very interesting because the photographs are downloaded directly of the ESA Website.

    I have my doubts about of the shapes, but I leave it to your approach..

    Hace algunas semanas se liberó un script en Python que permite descargar videos de youtube a tú computadora en formato FLV para despues poder visualizarlos con el reproductor multimedia VideoLAN(VLC) ó pasarlos a otro formato de video con FFMPEG.

    De tal forma que aprovechando este script desarrollado en Python he hecho un script en PHP que utilizando el script hago una interfaz para poder obtener la url del video y así pueda descargarse, esto para los usuarios que no tienen instalado Python en su computadora y no sepan mucho del manejo de consola.

    Solo basta introducir en el siguiente campo de texto la liga del video que aparece en youtube, luego presionar el botón get video, esperar unos segundos y abajo aparecerá el video para visualizarlo así como la liga para que pueda descargarse.

    Cuándo se descargue el video de youtube almacenará en la computadora un archivo llamado get_video.flv solo renombrarlo con el titulo del video por ejemplo, y visualizarlo con VideoLan.

    Introduce la url del video por ejemplo http://www.youtube.com/watch?v=gkOW6OvqsxY

    Source Code

    El código fuente de esta interfaz para PHP que he hecho puede descargarse desde http://files.mexrom.net

  • login: invitado
  • password: invitado

    Path: /youtube/youtube.zip

  • phyl3vn | Tecnología, Software, Cine, Entretenimiento | 21 Septiembre, 6:08pm | Comentar acerca de esto

    In image processing, computer graphics, and photography, high dynamic range imaging (HDRI) is a set of techniques that allows a greater dynamic range of exposures (the range of values between light and dark areas) than normal digital imaging techniques. The intention of HDRI is to accurately represent the wide range of intensity levels found in real scenes ranging from direct sunlight to shadows. [ Wikipedia]

    To Create HDR images exists many applications that can help us with this technique, but many times that is commercial software and we need a license to use it, and also this software only can run in Microsoft Windows, for example Photoshop CS3, Photomatix, etc. Exist an image manipulator software called GIMP, but with this software, we can't to create HDR, only Exposure blended images, first because GIMP only work with 8 bits images and a HDR image require more than 8 bits.

    In Linux you can to create HDR Images with QTPFSGUI, if you use ubuntu linux, only executing sudo apt-get install qtpfsgui you will have installed this software to create HDR Images, but is recommended download the software from http://qtpfsgui.sourceforge.net/download.php, it available for Windows, Linux and MacOSX.

    The result with qtpfsgui is for example like the following images..

    Image created by janthepic

    Image created by nko999nko

    In youtube you can see a video about of how to use qtpfsgui to create HDR Images..

    phyl3vn | Tecnología, Software, Fotografia | 20 Septiembre, 6:27pm | Comentar acerca de esto

    Hace unos días fuí a Oaxaca a visitar a mi familia, platicando con mi padre quién es un profesor de educación primaria me comentó que este año le tocó dar clases a alumnos de 6° año de primaria, y con eso de la "Alianza por la Educación" para este nuevo ciclo escolar que va del 2008 es necesario enseñarle ingles a los niños de primaria, mi padre se mostró algo preocupado, ya que el no tiene nociones de ingles, mas que unas solas palabras, por lo que mostró preocupado de como enseñaría a sus alumnos la pronunciación de las palabras que venían en el texto de ingles para el grado asignado.

    Por lo que para ayudarle con esto, recordé que ya desde hace tiempo ya vengo trabajando con un sistema sintetizador de voz llamado Festival, este software permite leer textos y reproducirlos con diversos parlantes los cuáles pueden ser en ingles, italiano, frances, español, alemán, sueco, etc. dependiendo de la configuración seleccionada, de tal forma que es posible leer textos en ingles con la pronunciación adecuada usando un parlante ingles, o leer textos en italiano usando en festival un parlante italiano.

    El primer detalle que salió fué que festival está creado para Linux el cuál es un sistema operativo de código abierto, pero buscando en internet encontré la forma de compilar Festival para windows gracias a Benjamin L. Brown. Lo que se me ocurrió hacer es algo similar a una aplicación llamada ksayit que funciona bajo linux, esta aplicación lo que hace es reproducir el texto que se copia en cualquier programa, de tal forma que presionando el botón de ksayit ubicado en la barra de tareas de KDE lo reproduce a traves de Festival.

    Por lo que haciendo uso de Visual C++, C y Festival sobre Windows pude crear un pequeño plugin para Festival que podría ser de utilidad a alguien que quiera tener una ayuda sobre el aprendizaje de la pronunciación del idioma ingles y otros lenguajes.

    Instalación del Plugin para la pronunciación del ingles

    (También ver más abajo el video del procedimiento aquí indicado)

    Para poder descargar el plugin de Festival para Windows XP ir al siguiente link:

    http://files.mexrom.net/index.php

    El login y password de acceso es :

    user: invitado
    password: invitado

    Despues de acceder al sistema ir a la carpeta

  • FestivalSysTray/

    Y desde ahí seleccionar el archivo

  • FestivalTTS.exe

    Despues de que se descargue el arhivo ejecutarlo e instalarlo en el directorio raiz C:\ ya que se haya descomprimido se creará en automático el directorio C:\FestivalTTS, enseguida ir al directorio C:\FestivalTTS\festival\src\main\

    Y ejecutar FestivalXPSysTray.exe

    Una vez ejecutado FestivalXPSysTray.exe, se verá un ícono con forma de boca en la barra de tareas de Windows.

    Ahora solo seleccione un texto en ingles en alguna página de internet, documento, ventana, etc y luego vaya a presionar el ícono de la boca, seleccionado la opción hablar.

    Enseguida el sistema de Festival comenzará a leer el texto copiado.

    Codigo Fuente

    El código fuente también puede descargarse mediante PHPFileManager, solo ir al directorio source code y descargar los 2 archivos listados:

  • FestivalXPSysTray_src.exe
  • festival_piped.c

    Aquí pongo un video que indica los pasos para la instalación del plugin de Festival, esto por si hay algún profesor de educación primaria en nuestro pais que le fuera útil el plugin.

    Cualquier comentario, error o duda sobre el plugin desarrollado pueden hacérmelo saber en:

    fileinleon [arroba] gmail [punto] com

    Saludos..

  • Festival es un proyecto Open Source desarrollado por el centro de investigación de la universidad de Edimburgo, el cuál permite procesar texto a voz, de tal forma que ha sido posible tener un sistema que lee en diversos idiomas un texto, de tal forma que seleccionando un tipo de lector predeterminado(ingles,español, italiano, aleman, etc) es posible leer un texto respetando las reglas gramaticales de ese idioma.

    Festival inicialmente está desarrollado para usarse sobre un entorno Unix, por lo cuál nativamente está desarrollado bajo Linux, pero debido a que ha sido programado en C/C++ es posible compilarlo en otras plataformas como puede ser el caso de Windows.

    Hace unos días vine a Oaxaca y platicando con mi padre que es maestro de educación primaria, me comentó que ahora en la SEP le están pidiendo a los maestros de primaria de 5 y 6 grado que enseñen ingles a sus alumnos, por lo que su preocupación fué como enseñar ese idioma si no tiene el más mínimo conocimiento sobre la lengua anglosajona, mucho menos conoce la pronunciación, por lo que decidí buscar una solución y en este caso como ya había trabajado con Festival para alkgunas aplicaciones de Voz sobre IP que he desarrollado para asterisk , busque si había algun port para Windows, pero no encontré nada, por lo que busqué como compilar Festival para windows y encontré el siguiente tutorial.

    http://flame.cs.dal.ca/~lalita/festival/festivalXP.htm

    Ese tutorial me ha sido bastante efectivo y me sirvió para tener ya Festival trabajando sobre Windows.

    Solo es requerido tener un compilador de Visual C/C++ Las fuentes de Festival y Speech tools. El entorno unix para Windows cygwin Las herramientas de desarrollo con MinGW

    Y Seguir el procedimiento de instalación que sigue el tutorial.

    Vale la pena echarle un ojo.. face-smile.png

    En la mañana un conocido tuvo un descuido al asignar la contraseña de Windows XP y tuvo un error al copiar el password asignado a esa PC, por lo que no podía entrar al sistema y continuar con sus labores habituales, por lo que me llamó para que le echara la mano con este asunto.

    Lo primero que me pasó por la mente fué usar algún live cd de Linux y desde ahí de alguna forma intentar crackear la contraseña de Windows XP, por lo que investigando en google encontré información sobre la herramienta chntpw , la cuál es una utilería que funciona bajo Linux y permite romper el sistema de seguridad de Windows XP.

    Afortunadamente tenía un live cd de Knoppix, la cuál ya trae esa utilería instalada en el CD, por lo que segui el procedimiento descrito para poder usar chntpw.

    Lo primero que hay que hacer es montar la particion NTFS dónde se encuentra el directorio C:/windows, esta particion hay que montarla como de escritura y lectura.

    Por ejemplo suponiendo que /dev/sda1 sea el directorio de Windows, entonces se montaría la partición de la siguiente manera:

    sudo mount -t ntfs -o rw /dev/sda1 /mnt/windows
     

    ya montada la particion ir al directorio

    cd /mnt/windows/windows/system32/config
     

    Y listar los archivos

    ls -l
     

    Lo que nos regresaría algo como esto

    -rwxrwxrwx 1 root root   524288 2008-08-28 00:28 AppEvent.Evt
    -rwxrwxrwx 1 root root   524288 2008-08-28 00:29 default
    -rwxrwxrwx 1 root root     1024 2008-08-28 00:28 default.LOG
    -rwxrwxrwx 1 root root    94208 2006-08-24 05:35 default.sav
    -rwxrwxrwx 1 root root   262144 2008-08-28 00:29 SAM
    -rwxrwxrwx 1 root root     1024 2008-08-28 00:27 SAM.LOG
    -rwxrwxrwx 1 root root    65536 2008-02-05 17:46 SecEvent.Evt
    -rwxrwxrwx 1 root root   262144 2008-08-28 00:29 SECURITY
    -rwxrwxrwx 1 root root     1024 2008-08-28 00:28 SECURITY.LOG
    -rwxrwxrwx 1 root root 42991616 2008-08-28 00:29 software
    -rwxrwxrwx 1 root root     1024 2008-08-28 00:28 software.LOG
    -rwxrwxrwx 1 root root   667648 2006-08-24 05:35 software.sav
    -rwxrwxrwx 1 root root   524288 2008-08-28 00:28 SysEvent.Evt
    -rwxrwxrwx 1 root root  5505024 2008-08-28 00:29 system
    -rwxrwxrwx 1 root root     1024 2008-08-28 00:29 system.LOG
    drwxrwxrwx 1 root root     4096 2008-04-25 09:54 systemprofile
    -rwxrwxrwx 1 root root   479232 2006-08-24 05:35 system.sav
    -rwxrwxrwx 1 root root     1024 2006-08-24 05:35 TempKey.LOG
    -rwxrwxrwx 1 root root   262144 2006-08-24 05:35 userdiff
    -rwxrwxrwx 1 root root     1024 2006-08-24 05:35 userdiff.LOG

     

    De esa lista hay 3 archivos importantes SAM SECURITY system

    Por lo que comenzaremos a editar los archivos de seguridad de windows

    sudo chntpw -l  SAM system SECURITY           
     

    Al ejecutar el comando anterior nos regresara lo siguiente:

    chntpw version 0.99.3 040818, (c) Petter N Hagen
    Hive's name (from header): <\SystemRoot\System32\Config\SAM>
    ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c <lf>
    Page at 0x9000 is not '
    hbin', assuming file contains garbage at end
    File size 262144 [40000] bytes, containing 8 pages (+ 1 headerpage)
    Used for data: 336/30560 blocks/bytes, unused: 4/1952 blocks/bytes.
    Hive'
    s name (from header): <SYSTEM>
    ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
    Page at 0x535000 is not 'hbin', assuming file contains garbage at end
    File size 5505024 [540000] bytes, containing 1215 pages (+ 1 headerpage)
    Used for data: 94421/5375528 blocks/bytes, unused: 2544/41464 blocks/bytes.
    Hive's name (from header): <emRoot\System32\Config\SECURITY>
    ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c <lf>
    Page at 0xf000 is not '
    hbin', assuming file contains garbage at end
    File size 262144 [40000] bytes, containing 14 pages (+ 1 headerpage)
    Used for data: 1216/55008 blocks/bytes, unused: 5/1888 blocks/bytes.

    * SAM policy limits:
    Failed logins before lockout is: 0
    Minimum password length        : 0
    Password history count         : 0
    RID: 03f2, Username: <ACTUser>
    RID: 01f4, Username: <Administrador>
    RID: 03ec, Username: <Asistente de ayuda>, *disabled or locked*
    RID: 03eb, Username: <ASPNET>
    RID: 01f5, Username: <Invitado>, *BLANK password*
    RID: 03ee, Username: <IUSR_MEXROM>
    RID: 03ef, Username: <IWAM_MEXROM>
    RID: 03ed, Username: <phylevn>, *disabled or locked*
    RID: 03f3, Username: <SQLDebugger>, *disabled or locked*
    RID: 03ea, Username: <SUPPORT_388945a0>, *disabled or locked*

    Hives that have changed:
     #  Name
    None!
     

    Posteriormente seleccionamos el usuario y procedemos a cambiar el password con el siguiente comando:

    sudo chntpw -u phylevn SAM system SECURITY           
     

    Y al ejecutar este comando tendríamos que contestar las siguientes preguntas:

    Do you really wish to disable SYSKEY? (y/n) [n]
     
    [seleccionar (n) y presionar ENTER]
    Please enter new password: *
     
    [Aqui introducir solo * y presionar ENTER, esto limpiara el password, hay un error en la utilería que en teoría debería poderse cambiar el password pero no lo hace, solo permite poner en blanco el password]
    Do you really wish to change it? (y/n) [y]
     
    [Seleccionar y y presionar ENTER]
    Write hive files? (y/n) [y]
     
    [Seleccionar (y) y presionar ENTER]

    Al final indicará que se ha cambiado el password.

    Solo bastaría reiniciar a Windows nuevamente y se tendría en blanco el password del usuario seleccionado.

    phyl3vn | Tecnología, Software | 28 Agosto, 1:09am | Comentar acerca de esto

    Buscando informacion sobre donde aplican los examenes para obtener la certificacion de Linux Professional Institute aqui en Mexico, encontré este interesante Link:

    http://www.linux-praxis.de/lpisim/lpi101sim/index.html

    El cual es un simulador del examen LPI 101 que va mostrando preguntas de forma consecutiva, la utilidad de este simulador la veo en que al hacerte las preguntas van saliendo comandos o te preguntan caracteristicas de linux que quiza en algun momento no has usado con mayor profundidad, por lo que el uso de este simulador se vuelve practico si estas usando linux, pues al mismo tiempo que vas revisando pregunta por pregunta vas haciendo pruebas con tu maquina y asi conociendo un poco mas sobre este versatil y poderoso sistema operativo que es linux.

    phyl3vn | Software | 26 Agosto, 8:25am | 1 comentarios

    Hace unos días desempolvando unos archivos de mi máquina de escritorio encontré una aplicación que estuve desarrollando sobre PHP a principios del 2005 para la empresa en la que trabajaba en ese momento, en ese tiempo mis conocimientos sobre PHP eran intermedios y no conocía mucho sobre Frameworks de desarrollo como ahora puede ser CakePHP, cosa que en ese momento me hubiera ayudado mucho en el tiempo de desarrollo. Pero revisando el código encuentro un conjunto de funciones que hice, entre las cuáles hice una para generar consultas avanzadas, ya que la aplicación que desarrollaba era administrativa y requería generación de múltiples reportes.

    He puesto aquí en mi blog el código para poder generar consultas y reportes avanzados, por lo que el funcionamiento demo es aplicado a las tablas de Blog y Comentarios de la base de datos de este blog, el demo puede verse en esta url:

    http://phylevn.mexrom.net/busqueda/

    Y el código de esta función puede obtenerse de

    http://phylevn.mexrom.net/busqueda/busqueda.zip

    Explicación:

    El código contiene los siguientes archivos:

    index.php : Script que manda configura el generador de busquedas y aqui se va programando el generador de consultas que se adecuara a las tablas de la base de datos.

    includes(Dir)

    1. >busqueda.php: Funciones del generador de busquedas
    2. >system.php: Contiene las rutas de el módulo
    3. >functions.php: Funciones requeridos por el modulo
    4. >configdb.php: Aqui se configura el acceso a la base de datos
    5. >estilo.css: Hoja de estilo del generador de busquedas
    6. >CalendarPopup.js: Codigo javascript para mostrar un calendario
    7. >idioma(Dir)

      1. >espanol.php : Contiene los textos en espaniol para el generador de busquedas

    Para usar este módulo es requerido editar los archivos configdb.php system.php

    Lo que hace este módulo es permitir generar cuadros de diálogo personalizados que se relacionan a campos de una tabla, de acuerdo a la configuración y activación de estos campos, se va generando una condición SQL, que al final puede aplicarse para generar un listado de información o también desde la misma interfaz crear un reporte en formato CSV de ciertos campos seleccionados.

    También en base al conjunto de condiciones generados puede crearse un reporte en formato CSV, clickeando en la parte de abajo la opción de reporte y seleccionando los campos que se quieren agregar al reporte, para que al final el script regrese un reporte en formato CSV de acuerdo a las condiciones de la consulta creadas.

    De todos las opciones disponibles hay que "clickear" en el nombre del campo de la condición para activar la consulta sobre ese campo, si se quiere hacer un AND presionar el checkbox requerido, si se quiere hacer una condición tipo OR sobre el campo deseleccionar el campo requerido.

    El cuadro de dialogo se puede configurar para hacer consultas sobre diversas tablas ya que al final lo que regresa es la condición que se va generando.

    En el código se puede observar como se configura el generador de consultas y reportes para mostrar un cuadro de diálogo que se pueda adaptar alguna tabla de base de datos y como se configura cada uno de los campos para mostrar el tipo de cuado diálogo correspondiente.

    Solo es requerido editar el archivo index.php que es dónde se definen los campos y cuados de diálogo a usar, así como también los campos que el reporteador CSV tiene disponibles para generar.

    Mi código no es tan limpio como quisiera, pero lo pongo a su disposición por si alguien pudiera servirle. Cabe mencionar que este código presenta algunos errores .

    Cualquier comentario, crítica, mejora, etc.. será bienvenida.

    Hace un par de semanas atras comencé a incursionar con CakePHP, el cuál es un Framework de desarrollo para PHP. Llevo años haciendo diversas aplicaciones con PHP, pero admito que no ha sido de la forma correcta, despues de conocer más sobre CakePHP he quedado interesado de la forma en que CakePHP lleva el desarrollo de aplicaciones de una manera más fácil, rápida, elegante y bien organizada.

    Para empezar CakePHP utiliza MVC(Modelo-Vista-Controlador) que es un método de desarrollo de software que permite separar la lógica y reglas del negocio, de la vista de la información, así como de los datos del sistema, lo cuál permite tener una mejor organización en el desarrollo del sistema y generar software de calidad.

    CakePHP tiene varias características aun más interesantes como el manejo de componentes, helpers, behaviors, librerías y utilerías que hacen el desarrollo más fácil proveyendole una potencialidad en el uso de diversas tecnologías tales como Ajax, XML, RSS.

    Algo interesante de CakePHP es la generación de código para listados de información, formularios, validación de usuarios, paginación que en algún momento pueden ser prácticas, pero en mi caso prefiero personalizar estas partes.

    Algo que me gusto de CakePHP es la implementación de permisos para usuarios lo que ellos llaman AROs y ACOs, antes el manejo de permisos lo hacía a traves de una matriz de permisos, pero que en sistemas dónde la cantidad de usuarios es enorme, simplemente usar este método es obsoleto e impráctico, por lo que la idea de CakePHP es fabulosa pues todo se maneja a traves de perfiles, acciones y solicitantes.

    Entre las cosas que también suelen ser muy prácticas a la hora del desarrollo de aplicaciones es la validación de datos en la creación y actualización de registros en la base de datos, CakePHP a traves de sus métodos permite hacer múltiples validaciones de tipos de datos en los campos permitiendo personalizar esta información y mostrando en las vistas los errores de una forma bastante práctica y personalizable.

    Otra de las cosas interesantes de CakePHP que pueden hacer el desarrollo más fácil, entendible y bastante organizado son las inflecciones del Framework. Por diseño CakePHP no usa la petición tradicional de las urls, si no adopta una forma especial para el uso de estas de tal forma que es fácil entender cuál es el controlador, la acción y las variables de la petición lo que dentro de MVC se vuelve bastante útil.

    También CakePHP tiene un conjunto de helpers interesantes tal es el caso del helper de Ajax el cuál junto con scriptauculus hacen mucho más fácil la generación de aplicaciones web 2.0.

    Puedo seguirme alabando a CakePHP, pero creo que lo mejor para el desarrollador interesado en probar esta tecnología que junto con PHP y demas herramientas libres pueden hacer que el desarrollo de aplicaciones web sea mucho más fácil, rápido y bastante atractivo a nivel usuario y desarrollador.

    Manual de CakePHP:
    href=http://book.cakephp.org/complete/3/the-manual>http://book.cakephp.org/complete/3/the-manual

    Hace unos días me encontraba buscando un manual sobre C/C++ para poder ir reforzando mis conocimientos sobre este lenguaje, ya que tiene más de 4 años que dejé de usarlo, por lo que algunas cosas se me fueron olvidando en especial la parte de apuntadores, por lo que buscando información sobre este lenguaje, encontré información en la siguiente url:

    http://www.programatium.com/c.htm

    El cuál contiene información desde las bases de C hasta cosas avanzadas como son sockets, sin dejar pasar la parte de apuntadores por supuesto.

    Por lo que despues de un día prácticamente sentado siguiendo lección por lección me animo a recomendarlo ya que desde mi punto de vista está muy completo, puesto que abarca las características esenciales de este lenguaje de programación.

    phyl3vn | Programacion, Software | 6 Agosto, 12:37am | 1 comentarios

    Hace unos días platicando con un amigo sobre soluciones de servidores multimedia me puse a investigar de alguna solución que pudiera satisfacer estas necesidades que pudieran ser para uso personal o incluso aplicarse en otros campos, por lo que investigando me encontré LinuxMCE el cuál es un proyecto desarrollado para implementar Centros Multimedia y Automatización de Casas.

    LinuxMCE permite hacer una integración con varios componentes de software y hardware para realizar todo esto, tal como dispositivos de video, audio, voz sobre ip, controles remotos, cámaras, relevadores, luces, dvd, vcrs, tv satelital, intercomunicadores, soporte de videoconferencias, etc.

    LinuxMCE también tiene una integración interesante con diversos controladores remotos, desde controles vía infrarrojo, bluetooth como el Wii remote, vía ethernet, wifi e incluso a traves de una página web puede monitorearse y controlarse el sistema de LinuxMCE.

    Una de las principales funciones de LinuxMCE es funcionar como servidor de Audio y Video, lo cuál permite enviar Audio y video a uno o más dispositivos de TV, Estereos ó computadoras. De tal forma que es posible tener un catálogo integrado dentro de LinuxMCE dónde se pueden seleccionar los videos, audio a reproducir en los dispositivos.

    LinuxMCE también permite realizar videoconferencias, llamadas a través de servidores de voz sobre ip, correo de voz y de video, redigir llamadas telefónicas, asi como también enlazar porteros con telefonía celular para siempre estar atentos a quién llega a tocar a la puerta de la casa estando nosotros desde algún lugar remoto.

    LinuxMCE también permite controlar el encendido y apagado de las luces de la casa, reproducir música y video automáticamente, controlar otros aspectos desde controles remotos o desde el mismo teléfono móvil.

    Lo mejor de todo es que LinuxMCE corre desde una PC y su implementación no es tan complicada, aunque eso si requiere de otros componentes para poder explotarse al máximo la alta tecnología que provee Linux Media Center and Home Automation.

    Aquí un video de LinuxMCE que funciona como servidor multimedia.

    Hace algunos meses empezó a gustarme esto de la fotografía y yendo algunos fototours con algunos flickeros del D.F. he aprendido poco a poco a sacarle más provecho a una cámara que tengo Fujifilm S5600.

    Y una de las cosas que he aprendido es usar el formato RAW, el cuál permite manipular la imagen de una forma mucho más versátil que con archivos en formato JPG. El formato Raw(crudo en ingles) no tiene soporte nativo para visores de imágenes para Linux o Windows, por lo que hay que instalar manualmente los visores y editores tales como UFRaw y Rawstudio que están disponibles tanto para Windows como para Linux.

    Rawstudio es un visor múltiple de archivos en formato Raw y es compatible con gran cantidad de cámaras, incluso con la mía aunque no del todo bien, pues mi cámara genera los archivos en con extensión .RAF por lo que al momento de seleccionar el directorio en Rawstudio este no abre los archivos de mi cámara, por lo que hay 2 cosas que hacer..

    una que cada vez que se descarguen las fotos de la cámara a un directorio de la PC hacer un script que cambié la extensión de .RAF a .RAW para que pueda ser leída por Rawstudio. Solo que tendría que correr el script cada vez que descargue las fotos.

    La otra opción es abrir el código fuente y añadir el soporte para el formato .RAF que fué lo que hice para no tener que estar ejecutando un script cada x tiempo y así olvidarme de eso.

    Para esto descargue el código de Rawstudio de la siguiente página.

    http://rawstudio.org/files/release/rawstudio-1.0rc1.tar.gz

    Lo pasé a descomprimir en /usr/src

    Ahí posteriormente revisando el código encontré el archivo rawstudio.c

    Y despues de el siguiente código

    static void
    rs_init_filetypes(void)
    {
            filetypes = NULL;

     

    Agregué lo siguiente

    rs_add_filetype("raf", FILETYPE_RAW, ".raf", _("Fujifilm raw"),
                    rs_photo_open_dcraw, rs_tiff_load_thumb, NULL, NULL);

     

    Con esto solo tuve que descargar las dependecias de gtk2 y libconf2-dev para poder compilar RawStudio, por lo que en ubuntu solo bastó ejecutar lo siguiente:

     sudo apt-get install libgtk2.0-common libgtk2.0-dev libgconf2-dev
    sudo cd /usr/src/rawstudio-1.0rc1
    sudo ./configure
    sudo make
    sudo make install
    sudo make clean
     

    Y con esto ya pude abrir en automático mis archivos .RAF con rawstudio

    phyl3vn | Programacion, Software, Fotografia | 25 Julio, 6:38pm | Comentar acerca de esto

    Documentándome un poco sobre cosas interesantes que se pueden hacer con Asterisk encontré un video dónde muestran como mover una cámara desde un teléfono que está conectado a Asterisk.

    En ese video se puede observar que cuándo el usuario presiona algunas teclas, la cámara se va moviendo de un lado para otro..

    ¿ Cómo funciona ? Primeramente se tiene un conmutador telefónico implementado con Asterisk PBX. Al servidor de Asterisk está conectado vía una interfaz rs232 una interfaz que mandándole ciertas señalizaciones por el puerto rs232 puede girar, tal como lo pudiera hacer un relevador. Remotamente un teléfono podría entraral conmutador y marcar a una extensión que este enlazada a un AGI, el agi recibiría los comando DMTF y dependiendo de la tecla pulsada en el teléfono manda las señalizaciones a una aplicación que bien pudiera ser escrita en C que sirva de