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


Trabajo y Proyectos

Investigando acerca de como implementar e integrar la tecnologia domótica en un proyecto personal me metí a buscar información sobre protocolos para control de dispositivos caseros desde Linux, para ello he encontrado los protocolos X10, KNX/EIB, entre otros, de los cuáles X10 me pareció muy interesante aparte que es un estándar de fácil implementación y que tiene soporte en Linux a traves de diversos proyectos.

X10 es un protocolo que permite enviar y recibir señales a traves de las líneas eléctricas, de tal forma que existen "appliances" de diversas marcas que usan el protocolo X10 para recibir y enviar señalizaciones con lo que es posible enviar desde una PC una señal de apagado, encendido usando el protocolo X10 a traves de un convertidor de señal que convierte la información enviada a señales electricas que pasan por la red eléctrica hasta llegar al destino especificado para prender un aparato, apagarlo, aumentar su velocidad ó brillo.

Los appliances es posible configurarles un ID que se basa en un identificador de casa y un identificador adicional de 5 bits con los cuáles es posible identificarlos dentro de una red X10 casera, así es posible enlazarlos y desde un convertidor Serial-PLC es posible enviar diversas señalizaciones, de tal forma que es posible enviar el encendido y/o apagado de un dispositivos específico en cierto tiempo.

Lo interesante de esta tecnología es que con los convertidores de PC a PLC(Power Line Communication) es posible hacer infinidad de aplicaciones, una de ellas es que se pueden hacer interfaces usando AGIs para conectar Asterisk a un convertidor con lo cuál con una llamada poder encender o apagar dispositivos tales como alarmas, videocamaras, etc.

La tecnología X10 para muchos no es tan eficiente, ya que es suceptible a interfencias y a variaciones de voltajes y para ello los detractores de esta tecnología recomiendan hacer uso de del protocolo KNX el cuál no solo permite hacer señalizaciones por PLC si no también por TCP/IP y RF lo cuál resulta mucho más interesante.

Buscando información de RED5 para implementar un servidor de VideoConferencias y otras cosas más para un curso en línea que voy a dar en próximos días, me encontré entre la lista de quienes han implementado RED5 a DimDim, el cuál es una plataforma para comunicaciones y videoconferencias vía web.

DimDim está basado en RED5 el cuál es un proyecto OpenSource, DimDIm aunque tiene una versión libre disponible para la comunidad, también tiene otra 2 versiones de cobro las cuáles tienen ventajas adicionales.

Entre las características de DimDim es el soporte de comunicaciones multimedia en tiempo real lo que implica transmitir video, audio, texto, imágenes y documentos entre múltiples usuarios a traves de una aplicación flash que comúnmente puede llamarse chat, otra de las cosas interesantes de DimDim es la capacidad de proyectar documentos de OpenOffice y Officeen la página web(chat) para que pueda ser vista por todos los asistentes, pero lo que sin duda es de llamar la atención es el WhiteBoard que trae incluído con lo que la interacción entre los usuarios del chat es simplemente toda una experiencia, pues a traves del WhiteBoard se pueden plasmar ideas y soluciones que muchas veces es complicado explicar o entender con textos o palabras, esto cuándo se está en un videoconferencia.

Puede echársele un ojo a un video que muestra lo que es DimDim en su versión OpenSource, la cuál sin duda es una aplicación muy práctica para lo que es el eLearning y otras cosas más.

http://www.dimdim.com/opensource/dimdim_open_source_community_edition.html

OpenVPN es un software basado en la filosofía de software libre, que permite crear conexiones VPN entre equipos Linux, Windows, MacOSX, *BSD, *nix y Dispositivos móviles como Windows Mobile a traves de redes inseguras como internet o redes inalámbricas.

OpenVPN puede funcionar de varias maneras una de ellas de punto a punto, punto a multipunto y en modo bridge.

  • Punto a Punto: solo realiza una conexión segura entre 2 equipos, esta conexión puede usarse para compartir archivos entre 2 equipos en internet.
  • Punto a multipunto: Permite conectar a diversos dispositivos a un servidor OpenVPN el cuál permitirá redigir las peticiones remotas a una red interna a traves de una red como internet. El uso de este modo es factible para dar acceso a aplicaciones dentro de una red local a equipos que se encuentran en alguna parte de internet.
  • Modo Bridge: OpenVPN permite crear conexiones entre 2 redes remotas, de tal forma que OpenVPN funciona como gateway de un punto y otro para poder unificar las redes, esto es muy factible cuándo se tienen oficinas remotas y se desea unificarlas, una de sus ventajas se da para las aplicaciones de Voz sobre IP, Bases de Datos, etc.

    Nuestro caso: Punto a Mutipunto.

    Este tipo de modo de OpenVPN en mi caso es el que más uso, ya que me dedico a desarrollar aplicaciones para dispositivos móviles los cuáles se conectan a internet a traves de conexiones GPRS(Movistar y Telcel en México), de tal forma que les instalo un cliente OpenVPN a los móviles y de esta forma se conectan a un servidor OpenVPN, esto para poder acceder a las bases de datos, a los web services, servidores FTP, etc., de una forma muy segura sin comprometer la información en redes públicas.

    Para comenzar con OpenVPN necesitamos descargar el instalador para Windows de OpenVPN, el cuál puede obtenerse de la siguiente URL:

    http://openvpn.net/release/openvpn-2.0.9-install.exe

    Esto probablemente nos instale el software de OpenVPN en el siguiente directorio: C:\Archivos de Programa\OpenVPN

    Abrir la consola de Windows Inicio->Ejecutar->CMD

    Ya en la consola de Windows ir al directorio easy-rsa de OpenVPN cd C:\Archivos de Programa\OpenVPN\easy-rsa\

    Lo primero que se hará es crear un Certificado de Autoridad (CA) Ejecutar : #Inicia el proceso
    init-config

    #Aqui pedirá valores como Pais, Estado, Ciudad, Organización, Depto, Nombre del Servidor y Correo, todos estos valores se repetirán a excepción del nombre del host que en la parte de configuración de las llaves del cliente en la parte última.
    vars


    clean-all
    build-ca

    #Al finalizar esta parte se crearán varios archivos en directorio
    C:\Archivos de Programa\OpenVPN\easy-rsa\keys

    #Copiar el archivo keys\ca.crt al directorio
    C:\Archivos de Programa\OpenVPN\config
    copy keys\ca.crt ..\config\

    Con lo anterior habremos creado el Certificado de Autoridad.

    El siguiente paso es crear la llave privada y certificado del servidor.

    Ejecutar en el directorio easy-rsa el siguiente comando
    vars
    build-key-server phylevn.mexrom.net

    #dónde phylevn.mexrom.net es el nombre del servidor dónde se está instalando OpenVPN.

    #Aquí de igual pedirá datos, los cuáles deben ser los mismos introducidos anteriormente, también pedirá un password, este mismo password debe ser usado cuándo se creen las llave de los clientes.

    #Luego ejecutar el siguiente comando

    build-dh

    #Con esto se habrán creado otros archivos en el directorio keys.

    #Copiar los siguientes archivos del directorio easy-rsa\keys a ..config\


    C:\Program Files\OpenVPN\easy-rsa> copy keys\phylevn.mexrom.net.crt ..\config\
    C:\Program Files\OpenVPN\easy-rsa> copy keys\phylevn.mexrom.net.key ..\config\
    C:\Program Files\OpenVPN\easy-rsa> copy keys\dh1024.pem ..\config\

    #Ahora hay que configurar el servidor para luego iniciarlo.

    #Dentro del archivo de configuración de OpenVPN
    C:\Program Files\OpenVPN\config

    #Crear un archivo llamado server.ovpn y dentro de ese archivo introducir lo siguiente

    port 1194 proto udp dev tun ca "C:\Archivos de programa\OpenVPN\config\ca.crt" cert "C:\Archivos de programa\OpenVPN\config\phylevn.mexrom.net.crt" key "C:\Archivos de programa\OpenVPN\config\phylevn.mexrom.net.key" # Este archivo debe mantenerse en secreto dh "C:\Archivos de programa\OpenVPN\config\dh1024.pem" server 192.168.20.0 255.255.255.0 #Segmento de red que tomarán los clientes remotos ifconfig-pool-persist ipp.txt push "dhcp-option DNS 208.67.222.222" push "dhcp-option WINS 192.168.20.1" tongue.png ush "route-gateway 192.168.20.1" client-to-client push "route 192.168.1.0 255.255.255.0" #Segmento de la red local interna duplicate-cn #Con esta opción no es necesario crear una llave por cada cliente comp-lzo #Comprime los datos envíados y recibidos max-clients 60 persist-key persist-tun verb 3 status openvpn-status.log keepalive 10 120 suppress-timestamps route-delay 10 10

    #Ya con la configuración realizada solo basta darle click con el botón derecho del mouse al archivo server.ovpn y seleccionar la opción de Start with OpenVPN.

    #Pero antes de lo anterior hay que editar el registro de windows en la siguiente llave y reiniciar Windows. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    #Y en la opción de IPEnableRouter configurarlo a 1, esto para que se le permita a OpenVPN hacer el ruteo del segmento de la red privada a la red local interna.

    #Ahora si iniciar el servidor de OpenVPN

    #Si todo salió bien se abrirá una ventana de comandos y al final indicará
    Initialization Sequence completed

    #Con esto ya tenemos el servidor de OpenVPN echado andara, ahora falta crear las llaves de los clientes, para esto realizar lo siguiente

    #En la consola de comandos ir a :
    C:\Archivos de programa\OpenVPN\easy-rsa

    #Introducir los siguientes comandos
    vars
    build-key phylevn

    #dónde cliente es el nombre del cliente remoto, debe cambiar por cada cliente remoto configurado en caso de que se creen múltiples llaves.

    #Al momento de ejecutar build-key hay que repetir la información anteriormente capturada a excepción del nombre del host que debe ser el nombre del equipo cliente, también en password debe ponerse el password que se dió al crear la llave privada y certificado del servidor de OpenVPN.

    #En seguida hay que crear los archivos al directorio config del servidor OpenVPN
    copy keys\phylevn.crt ..\config
    copy keys\phylevn.key ..\config

    #Y también estos archivo hay que pasarlos a la máquina remota, solo hay que tener un modo seguro para envío de estas llaves a las máquinas remotas, los arhivos que debe tener la máquina remota deben ser los siguientes


    ca.crt
    phylevn.crt
    phylevn.key

    Dónde phylevn es el nombre de la llave para el host especificado, en caso de que se permita la duplicación de llaves, no importaría el nombre del archivo cliente que se pase en caso de que se tengan varios.

    #Ahora en las máquinas clientes también hay que tener instalado el software OpenVPN

    #Y se debe crear un archivo de configuracion llamado cliente.ovpn en el directorio config de OpenVPN


    C:\Archivos de programa\OpenVPN\config\

    #El archivo cliente.ovpn debe contener lo siguiente:

    client proto udp dev tun remote 201.123.42.174 1194 #Dirección IP Pública del servidor OpenVPN resolv-retry infinite nobind persist-key persist-tun ca "C:\Archivos de programa\OpenVPN\config\ca.crt" cert "C:\Archivos de programa\OpenVPN\config\phylevn.crt" key "C:\Archivos de programa\OpenVPN\config\phylevn.key" comp-lzo verb 3

    #Ya que esté guardado el archivo, solo basta presionar el botón derecho del mouse y presionar Start With OpenVPN, con esto el cliente se intentará validar con el servidor remoto, si todo salió bien, entonces el cliente tendra una nueva interfaz de red y le será asignada una IP en el segmento 192.168.20.x, con esto ya podrá hacer ping al servidor remoto, de igual forma a las IPs del segmento de la red local interna dónde se encuentra el servidor de OpenVPN.

    #Con Linux son los mismos pasos, a excepto de las rutas, pero el proceso es el mismo, solo se excluye la parte del registro de windows y se activa el IP Forwarding.

  • 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

    Hace un par de años encontré VoIPJet, un proveedor de Telefonía a traves de Internet, lo interesante de este proveedor es que ofrece su servicio usando el protocolo IAX, que es un protocolo nativo de Asterisk, el cuál IAX permite hacer las comunicaciones de Voz sobre IP de forma transparente aun estando detras de redes NAT, por lo que se volvió mi proveedor de Voz sobre IP favorito para mis implementaciones de conmutadores PBX de Voz sobre IP, aparte sus precios son bastante buenos:

    https://www.voipjet.com/prices.php

    Pero desafortunadamente desde hace algunos meses el servicio de Voz sobre IP con VoIPJet se restringió solo para proveedores de telefonía IP autorizados por los gobiernos locales, por lo que ya no podrá ser contratado este servicio por usuarios finales, a menos que se tenga un permiso por escrito en el caso de México por parte de la COFETEL, el cuál debe ser enviado a VoipJet para que asi activen el servicio.

    Afortunadamente hay otros servicios que si son para usuarios finales, aunque sus precios no son tan bajos como los de VoipJet, pero siguen siendo bastante atractivos para ser implementados en conmutadores de Voz sobre IP.

    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/

  • 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

  • I have had many times problems to execute external applications from another application, for example I want run this command " ls | grep something " from any application, I can execute external applications using C by mean << system >> or better using << CreateProcess >> function, but especially with this format I have problems, because CreateProcess run the first command("ls -a") but dont pass the information generated by "ls command" to grep command, maybe < CreateProcess > function finish the child process after run "ls -a" but dont continue with "grep" command, the < CreateProcess >, < system > or < ShellExecute > functions dont work for this case. Then remembering that C can use pipes by mean programming, I search in google what is the way that I can do it.

    For my good luck only I needed five minutes to resolve my legendary problem.. and the code is the following.

    /*
     * From
     * [url]http://www.crasseux.com/books/ctutorial/Programming-with-pipes.html[/url]
     * but changed to use fgets() instead of the GNU extension getdelim()
     */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main()
    {
        FILE *ps_pipe;
        FILE *grep_pipe;

        int bytes_read;
        char buffer[100];           /* could be anything you want */

        /* Open our two pipes
              ls -a | grep *~
       */

       
        ps_pipe = popen(" ls -a", "r");
        grep_pipe = popen("grep *~", "w");

        /* Check that pipes are non-null, therefore open */
        if ((!ps_pipe) || (!grep_pipe)) {
            fprintf(stderr, "One or both pipes failed.\n");
            return EXIT_FAILURE;
        }

        bytes_read = 0;
        while (fgets(buffer, sizeof(buffer), ps_pipe)) {
            fprintf(grep_pipe, "%s", buffer);
            bytes_read += strlen(buffer);
        }
        printf("Total bytes read = %d\n", bytes_read);

        /* Close ps_pipe, checking for errors */
        if (pclose(ps_pipe) != 0) {
            fprintf(stderr, "Could not run 'ls', or other error.\n");
        }

        /* Close grep_pipe, cehcking for errors */
        if (pclose(grep_pipe) != 0) {
            fprintf(stderr, "Could not run 'grep', or other error.\n");
        }
    getch();
        /* Exit! */
        return 0;
    }

     

    Running the code I didnt have any problem to execute piped external commands, and the best is that it code work for Linux or Windows, but with Windows the code only can be compiled with C, for C++ you will need use another way face-smile.png .

    P.D. Excuse for my bad english.. I know that it Suck, but from now I need to practice my english for personal and professional reasons..

    phyl3vn | Programacion, Trabajo y Proyectos | 10 Septiembre, 1:11am | Comentar acerca de esto

    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 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.

    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 interfaz con el dispositivo serial y así poder mover remotamente la cámara a traves de un canal de telefonía.

    Esto y muchas cosas más se pueden ir haciendo con asterisk, solo basta imaginar cosas para dar soluciones reales.

    Este ultimo mes varios conocidos me han preguntado que computadora les recomiendo para sus hijos ya que comenzaran las clases y quieren comprar una PC que pueda ser muy funcional, no tan cara y al mismo tiempo sea lo suficiente buena para cumplir con las necesidades de sus hijos por uno 3 años mas.

    Por lo que posteo aqui las caracteristicas basicas de una computadora, dando una corta y simple explicacion para aquellas personas que son ajenas al mundo informatico y puedan tener una idea que les ayude a elegir y comprar la mejor computadora para su familia en este regreso a clases.

    CPU: La parte primordial de una computadora sin duda es el CPU y el motherboard(tarjeta madre), el CPU se puede definir como el cerebro y la parte principal, la cual ejecuta las instrucciones y operaciones que realizan los programas(msn, reproductores de video, office, etc). La tarjeta madre(motherboard) se puede decir que es el sistema oseo, nervioso y de articulaciones la cual conecta el cerebro(CPU) con los sentidos como son los perifericos(audio, red, video, memoria, etc).

    Existen varios modelos y marcas de CPUs, pero basicamente el mercado en Mexico esta repartido en 3 opciones Intel AMD Intel Celeron

    Por experiencia me ha convencido mas Intel y AMD, celeron digamos que es una opcion de gama baja y economica. Intel y AMD han desarrollado su tecnologia siendo bastante competitivas, aunque desde mi experiencia me quedaria con Intel. Un CPU Intel Core 2 duo para uso familiar va de los 1,000 a 1,500 pesos, su capacidad se mide en MHZ lo que indica la velocidad de procesamiento de las instrucciones, un buen procesador va desde los 1.8ghz(1800mhz) hacia arriba. Un procesador de 1.8 ghz es capas de dar soporte a un sistema que este ejecutando varios programas al mismo tiempo sin que se vea afectado el rendimiento del sistema.

    Motherboard: Existen infinidad de marcas de motherboards, pero a mi gusto las compatibles con los procesadores Intel van ganando, aunque tambien hay otros aspecto a considerar. Muchas tarjetas madres ya traen incluidas un chip de video, sonido, fax/modem y red: Chip de video: permite conectar un monitor al CPU. Sonido: Chip que contiene un hardware para procesar audio estereofonico, soporte de microfono y linea de entrada de audio adicional. Fax/mode: chip que permite conectar una linea telefonica a la tarjeta madre para conectarse a una red de internet via modem, para recibir fax a traves de un software adicional. Red: Chip que permite conectar la PC a la red cableada ethernet.

    Los precios de los motherboards van de los 0.00 a los 00.00 pesos.

    El que ya traigan incluidos varios chips adicionales puede ser bueno o malo, dependiendo de la perspectiva, si se quiere una computadora de gama media/baja contar con una tarjeta que ya traiga todo integrado supone un ahorro de energia y mejor integracion pero en contra parte esta el rendimiento. Cuando se quiere contar con una computadora con mejor rendimiento es mejor adquirir una computadora que solo traiga incluida la parte de red.

    Tambien es importante saber cuantos puertos USB trae disponibles y de preferencia que sean USB 2.0, actualmente los tarjetas madre ya no traen puertos seriales ni paralelos incluidos, por lo que seria un plus que una tarjeta contara con esos puertos pues nunca sabes cuando puedes sacarle provecho a un puerto serial. Tambien es necesario saber si la motherboard trae los puertos PS/2 para conexion de teclado.

    Tarjeta de Video: Pueden adquirirse tarjetas de video de mayor rendimiento en el procesamiento de los graficos lo que puede beneficiar cuando se tienen programas de edicion como photoshop, gimp o cuando se quiere jugar juegos en 3D, aparte tener una tarjeta grafica permite conectar la computadora a la TV y tener hasta 2 o mas escritorios de trabajo virtuales al mismo tiempo.

    Las tarjetas graficas van de los 0.00, siendo una buena opcion una tarjeta nvidia de al menos 128 mb de memoria.

    Tarjeta de sonido: Una tarjeta de sonido puede venir incluida en una motherboard, aunque su rendimiento seria bajo, puede incluirse una tarjeta de sonido adicional a la tarjeta madre que pueda tener mejores caracteristicas como puede ser sonido 5.1, control de bajos, configuracion de bocinas frontales y traseras, entre otras caracteristicas que pueden hacer mas interesante la experiencia multimedia. El precio de las tarjetas de sonido va de los 0 pesos hacia adelante.

    Discos duros: Son las unidades donde se guarda la informacion de forma permanente, tal como archivos, paginas web, mp3, videos, documentos, fotografias, etc. Actualmente las tecnologias existentes son IDE y ATA, siendo ATA la mas recomendable ya que IDE va de salida. los discos ATA van desde los 40 GB hacia adelante, siendo recomendable adquirir al menos un disco duro de 80gb, asi no se escatimara en borrar viejos archivos por otros nuevos.

    Los discos duros van de los de $ 400.00 pesos en adelante.

    Memoria: la memoria permite almacenar a los programas informacion de forma temporal, por ejemplo cuando se edita una imagen, la imagen se envia a la memoria y desde ahi el software de edicion de imagenes trabaja la imagen, para posteriormente al guardarla pasarla al disco duro y guardarla como archivos. Asi entre mas memoria se tenga mas programas pueden estar ejecutandose y abriendo archivos al mismo tiempo sin sufrir cuelgues del sistema entre otros errores.

    Se recomienda al menos 1 Gb de memoria. El costo de una memoria de 1Gb va desde los 350 pesos hacia adelante, hay que verificar que la memoria adquirir sea compatible con la tarjeta madre a comprar.

    Fuente de poder: Es el hardware que provee energia a la computadora, se mide en Watts. generalmente una fuente de poder de 450 watts puede ser recomendable para una computadora personal, aunque tambien hay que considerar la cantidad de perifericos que se conectaran a una computadora, ya que esta fuente de poder le proveera energia a todos esos perifericos instalados en la computadora y la potencia de la fuente de poder debe ser suficiente para proveer energia a los perifericos.

    El precio de las fuentes de poder va de los 0.00 pesos en adelante.

    Gabinete: Asi se le conoce a la carcasa que protege a las partes de la computadora, estos pueden ser elegidos al gusto, pero es necesario saber que deben ser del formato del tipo de tarjeta que se esta adquiriendo ATX, mini ATX, itx, mini itx, etc. Asi como tambien hay que considerar el tamaño de dispositivos que se introduciran dentro del gabinete.

    El precio va desde los 0.00 en adelante.

    Teclado/Raton: Son de los perifericos mas importantes, estos pueden conectarse a la computadora via un puerto PS/2 los cuales deben estar incluidos en la motherboard, asi como tambien pueden conectarse via usb o de forma inalambrica. Recomiendo que sean PS/2, aunque usb tambien es recomendable aunque depende de la disponibilidad de puertos USB en la motherboard, aunque tambien puede hacerse uso de un concentrador USB en caso de que se tengan pocos USB disponibles. Los teclados y ratones inalambricos no los recomiendo pues muchas veces se te acaba la bateria en el momento menos indicado, pero en caso de que se elija un teclado y mouse inalambrico recomiendo los que trabajan a traves de un adaptador RF, tambien en este caso sugiero que se adquieran baterias recargables y tener una de respaldo para momentos imprevistos.

    Pueden adquirirse teclados multimedia para el control del sonido, video, internet, etc.

    Precio de teclados USB o PS2 va desde los 0.00 Precio de teclados inalambricos va desde los 0.00

    Unidades de CD, DVD y grabado de discos: Actualmente existen grabadoras de CD/DVD bastante economicas, una grabadora de CD podria ser suficiente para una computadora personal, aunque por la corta diferencia de precio puede ser recomendable adquirir una grabadora de DVD pues nunca se sabe cuando se quieren guardar en un disco mas de 700 mb. Tambien es recomendable adquirir una grabadora de discos que sea exclusivamente para eso y un lector de CD/DVD para lectura de discos.

    Los costos de las grabadoras de CD/DVD van desde los 0.00 pesos. Los costos de las lectoras de CD/DVD van desde los 0.00 pesos.

    Dispositivos de red: Generalmente las motherboards ya traen un chip de red, por lo que en caso de que una computadora desee conectarse via cable a una red, no es necesario adquirir otro dispositivo. Pero en caso de que una PC quisiera conectarse a una tarjeta de red inalambrica es necesario adquirir un equipo adicional y estos pueden ser USB o PCI. Los equipos tipo PCI son tarjetas que se conectan de forma internat a la motherboard de la computadora, y los USB solo se conectan de forma externa a un puerto USB. Es recomendable un dispositivos inalambrico b/g ya que la mayor parte de las redes inalmabricas en Mexico son compatibles con esa tecnologia. Estos equipos van desde los 0.00 pesos en adelante

    Monitores: Es una de las partes principales de una PC. En la actualidad existen los monitores CRT y los LCD, siendo los CRT los mas baratos y son aquellas cajas que han existido desde hace ya varios años, mientras que los LCDs son pantallas planas que resultan esteticamente atractivas, aparte que ocupan menos espacio y son mas faciles de colocar.

    En caso de que se adquiera un monitor CRT se recomienda que sea minimo de 17 pulgadas SVGA. Los monitores LCD puede ser recomendable de 15", pero traeria mejores beneficios tener uno de 17" o mas.

    Los precios de los monitores CRT van de los 1,000.00 hacia adelante Los precios de los monitores LCD van desde los edit_entry,900 hacia adelante.

    Bluetooth: Es recomendable contar con un dispositivo bluetooth en la computadora esto ya que existen muchos dispositivos que son compatibles con esta tecnologia por lo que podrian ser conectados de forma facil a una computadora. Equipos con tecnologia bluetooth pueden ser los telefonos celulares, camaras fotografias, audifonos, impresoras, teclados/ratones, etc. Un dispositivo bluetooth va desde los 0.00 pesos en adelante y es recomendable uno con soporte de bluetooth 2.0 con alcance de 100 mts.

    Multi Lector de tarjetas. Estos lectores permiten leer tarjetas SD, XD, minisd, compact flash, etc. que son tarjetas que generalmente se usan con camaras fotografias, pdas, etc., por lo que teniendo un lector de tarjetas integrado provee mayor facilidad en el paso de la informacion entre un dispositivo y otro.

    Tarjeta de TV y capturadora de video. Estas tarjetas permiten a una computadora ver la television, oir la radio, conectar un viejo reproductor de VHS. Por lo que puede ser util en algun momento si es que se quieren grabar programas de television en medios digitales, o si se quieren pasar peliculas en formatos antiguos a un formato digital actual. Tener una tarjeta de TV tambien permitiria a un usuario mas avanzado tener un centro multimedia configurado en su PC. el precio de una tarjeta de TV va desde los 0.00 en adelante.

    Sistema Operativo: Esta es otra de las partes principales de una computadora, actualmente hay varias opciones como Windows Vista, Windows XP o Ubuntu Linux. Desde mi experiencia recomendaria Windows XP o Ubuntu Linux. Ubuntu Linux es un sistema libre el cual tiene mas de 10,000 paquetes de software que pueden ser instalados de forma sencilla y que no tienen restricciones en cuanto a costo o derechos de propiedad, pues son licenciados bajo los terminos de software libre. Windows XP es un sistema que lleva en el mercado mas de 6 años y de las versiones de Widows de Microsoft es de las mas estables, por lo que recomiendo mas Windows XP que Windows Vista.

    Licencia de Windows XP home va desde los edit_entry,200 pesos y la vesion profesional de los edit_entry,800 en adelante Licencia de Windows Vista home va desde los edit_entry,100 pesos. Ubuntu Linux y varios paquetes de software mas(OpenOffice, Editor de imagenes, juegos, reproductores de video, audio., lenguajes de programacion, utilerias de sistema, etc) sin costo y restriccion alguna.

    phyl3vn | Tecnología, Trabajo y Proyectos | 20 Julio, 4:40pm | Comentar acerca de esto

    Hoy revisando mi correo electrónico veo que en mi buzón de gmail un correo solicitándome más información sobre la instalación de Asterisk, revisando el correo me piden que les comente como configurar una tarjeta clon X100P con Asterisk.

    La tarjeta X100p no es más que un clon que salío hace algunos años y que se usó más que nada para hacer pruebas con Asterisk , pero que no es recomendable usarse para un entorno en producción, esta tarjeta tiene un puerto FXO que puede ser usado también como FXS, al ser FXO permite conectar al conmutador de voz sobre ip con asterisk una línea tradicional de la red pública telefónica conocida como PSTN. Esta tarjeta no es más que un modem intel con un chip en específico que permite ser usado con los drivers de Zaptel, aunque en la actualidad este chip ya no tiene soporte pero puede seguir usándose para hacer pininos con Asterisk.

    Por lo que para no compartir solo con una persona esta información, pongo aquí en mi blog la documentación que hice hace algunos años cuándo di un curso de VoIP sobre Asterisk y FreePBX parte de la documentación que trata sobre la instalación y concifugración de la tarjeta X100p a cualquiera que pueda interesar hacer sus pininos con Asterisk.

    #Este procedimiento funciona para todas las tarjetas compatibles con Zaptel como Digium, Sangoma, Clónicas X100p, etc..

    #en este caso se usará una clon x100P, para verificar que sea la correcta, podemos observar el chip que diga ambient md3200 o desde linux teclear lspci y en una de las tarjetas de comunicación observar lo siguiente

    lspci
    0000:00:0b.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface

    #Es recomendable que antes de la compilación de Asterisk se instalen las tarjetas que se van a usar.

    #Si por algún motivo ya está instalado Asterisk y se desean instalar nuevas tarjetas, instalar las tarjetas en el puerto PCI y  recompilar los drivers de Zaptel.

    #compilación de Zaptel
    cd ../zaptel-1.2.5
    make config
    sudo make clean
    sudo make linux26
    sudo make install
    #make config crear un script de inicializacion para tarjetas zaptel en /etc/init.d/zaptel

    #compilación de Asterisk
    cd ../asterisk- 1.2.7.1
    sudo make clean
    sudo make
    sudo make install
    sudo make samples
    sudo make progdocs

    #Verificar que en la compilación de zaptel se haya ejecutado y en el directorio de fuentes de zaptel ejecutar ekl siguiente comando
    make config
    #esto copiará zaptel a init.d

    #configurar /etc/zaptel.conf e introducir lo siguiente
    loadzone=es
    defaultzone=es
    fxsks=1
    #en este caso indicamos que tenemos un puerto fxo, si tuvieramos más solo pondríamos el número de puertos FXO, en este caso corresponde aun puerto FXO de una X100p, loadzone y default zone se refieren a la zona de comunicaciones correspondientes, esto es importante para detección de tonos de marcación, detección de ocupado y de cuelgue.

    #configurar el archivo /etc/asterisk/zapata.conf e introducir lo siguiente
    [channels]
    signalling=fxs_ks
    context=from-zaptel
    channel => 1

    #si fuera una tarjeta digium pondríamos 1-4, si son 2, 1-4,2-8 o 1-4, 5,6,7,8 si son 2 x100p 1,2, que representan los canales a la red PSTN disponibles. para más información ver la refrencia de ejermplo en el archivo default de asterisk

    #cargar las librerías, solo verificar la ruta correspondiente de librerías del kernel
    #2.6.15-server este valor puede cambiar dependiendo el kernel instalado, verificar el directorio /lib/modules y ver que directorio le corresponde.
    #en este caso cargamos zaptel y wcfxo que corresponde al driver de la tarjeta x100p, ver la referencia de Asterisk para los drivers a cargar para otras tarjetas.
    insmod /lib/modules/2.6.15-server/misc/zaptel.ko
    insmod /lib/modules/2.6.15-server/misc/wcfxo.ko

    #ejecutar zaptel
    /etc/init.d/zaptel start

    # si envía un mensaje de error como el siguiente:
     touch: cannot touch '/var/lock/subsys/zaptel': No such file or directory
    #verificar que exista la carpeta
        /var/lock/subsys/
    #si no, crearla
        mkdir /var/lock/subsys/
       
    #Si no envía un mensaje de error la inicialización de Zaptel, se debe observar lo siguiente:
    Loading zaptel framework: .
    Waiting for zap to come online...OK
    Loading zaptel hardware modules:Running ztcfg: done.

    #ejecutar dmesg para ver que el driver  de zaptel reconozca a la tarjeta
    dmesg
    [4407105.555000] Zapata Telephony Interface Registered on major 196
    [4407105.555000] Zaptel Version: 1.2.5 Echo Canceller: KB1
    [4407107.368000] ACPI: PCI Interrupt 0000:00:0b.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
    [4407107.416000] wcfxo: DAA mode is 'FCC'
    [4407107.416000] Found a Wildcard FXO: Generic Clone
    [4407271.680000] Registered tone zone 6 (Spain)

    #ejecutar lo siguiente para verificar que las tarjetas esten correctamente instaladas
    ztcfg -vv
    Zaptel Configuration

    =

    =
    Channel map:
    Channel 01: FXS Kewlstart (Default) (Slaves: 01)
    1 channels configured.
    #si tuvieran más tarjetas deberían verlas ahí..

    #inicializar asterisk en base a la bitácora que les envíe de instalación de Asterisk con FreePBX

    amportart start

    #Entrar a la consola de Asterisk
    asterisk -rvvvv

    #introducir el comando
    zap show channel

    #Y se debería ver algo como esto
    Generic Clone Board 1   

    #A  partir de ahí pueden configurar sus Trunk, junto con sus planes y reglas de marcación para salidas de llamas, DID, DISAs, IVR, FollowME desde el FreePBX sin mayor problema y de manera sencilla..

     

    Hace unos días quise contratar un número telefónico del D.F. con DIDWW pero fué un relajo, pues primero entras a la página de lo lindo te validas y toda la cosa, escoges el número, haces el pago con tú tarjeta de crédito y en teoría ya puedes usarlo.

    Ese proceso si funcionara asi de simple sería una lindura, pero nooo.. no es así :S, pues despues de que haces el pago se supone que ellos todavía no validan el pago, por lo que el número está en modo de pruebas, y si lo quieres redireccionar a tú asterisk, no puedes, pues el DID está bloqueado hasta que se acepté el pago, más sin embargo ya empieza a correr la renta mensual pues al día siguiente ya ves que te quedan 29 días de uso y tú número sigue bloqueado!!!. Ok.. te dices a ti mismo, paciencia, paciencia hay más tiempo que vida por lo que despues de dia y medio de realizadas la "contratación" te llega un mail del departamento de ventas de DIDWW a media madrugada diciéndote que tienes que enviar un FAX a USA con la impresión de tú tarjeta de crédito y de tu identificación que según para eso tienes 48 horas, pero despues te levantas, checas tú correo y ves qe tienes 2 mensajes de DIDWW, piensas que ya lo aprobaron y ya puedes seguir con la configuración pero noo.. lees primero el mail de que tienes que enviar el FAX y el segundo de que por no enviar el FAX en las "48 horas" que te dieron de plazo se ha cancelado la orden del DID.

    Ja.. esos de DIDWW se parecen hacienda.. todo un relajo para nada..

    Total..

    Que despues de buscar y buscar encontré a Callcentric, estos amigos tienen también sus detalles pero son más flexibles, pues con ellos pude contratar un DID para el D.F. con la tarjeta de crédito, aparte también usan PayPal, y al mismo tiempo esa cuenta se le puede agregar crédito para hacer llamadas vía Voz sobre IP, nada más eso si mucho cuidado con dar datos falsos o equivocarse, porqué son bien quisquillosos, pues por ahí me equivoqué al dar el número de validación de la tarjeta al recargar crédito a una cuenta que cree, y pues despues de 3 intentos me bloquearon la cuenta por actividades sospechosas y pues por ahí mis 10 dolares de créditos salieron volando.

    Pero ya con más calma al otro día desde otra IP y borrando ls cookies de firefox ya pude entrar de nuevo a CallCentric para rentar el DID y abonar crédito a una cuenta de VoIP para hacer y recibir llamadas.

    Escribo este post solo para comentar una de las ventajas de Linux y la cuál me ha ayudado a salir de un apuro una vez más, esto ya que ahora ando aquí en la Sierra Juárez de Oaxaca a 4 horas de la ciudad de Oaxaca y en autobus unas 6 horas.

    Sierra Juarez de Oaxaca desde el cerro de Palo Seco al fondo Santo Domingo Cacalotepec

    Pues resulta que tenía que configurar una Laptop Acer Aspire 4315-2744 que trae precargado Linux específicamente la distro Linpus, la cuál no me agrado de inicio porqué solo viene instalado en modo consola en la laptop y aparte no reconoce muchas caracteristicas de hardware de la misma, por lo que se me hizo raro que Acer no precargara Ubuntu que también es libre y gratuito en vez de Linpus la cuál deja mucho que desear, aparte que creo que los usuarios nuevos que compren esta laptop por su precio $ 450.00 dlls quedarían desilusionados al ver un Linux tan poco atractivo. El chiste es que llego aquí al pueblo de la sierra juárez con la laptop confiado de que tuviera precargado un sistema gráfico óptimo para un usuario, pero al ver Linpus tan deficiente quedo sacado de onda, ya que en este momento no traía un disco entre mis chunche de Ubuntu(error fatal), pero afortunadamente si traía un .iso guardado en mi laptop con la última versión de ubuntu 8.04, aunque no traía CDs para quemarlo y el pueblo más cercano dónde posiblemente podría conseguir CDs es Talea de Castro a un par de horas de aquí en auto, por lo que recordé una opción de que había una forma de instalar Linux desde una memoria USB pero que no la había intentando anteriormente, afortunadamente traía una SD Card y un adapatador de SD a USB, por lo que realice el siguiente procedimiento para poder instalar Linux.

    Configuré en la Bios de la laptop la opción de que aceptara bootear desde una memoria USB. #En mi notebook con linux cree una partición FAT32 sobre mi usb usando la herramienta gráfica qtparted
    #En este caso mi memoria usb quedo como /dev/sdb
    #En este caso mi unidad de disco fué montada en Ubuntu como /media/disk
    #A continuación configuré mi dispositivo para que pudiera ser "booteable" mediante el siguiente comando

    sudo parted /dev/sdb set 1 boot on

    #Despues de esta dirección

    http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/hd-media/

    #Descargue los siguientes archivos que corresponder a la versión de Ubuntu 8.04
    boot.img.gz
    initrd.gz
    vmlinuz       

    #Y los coloqué en el directorio /media/disk/install

    #Despues hice una copia del directorio /media/disk/install  /media/disk/casper
    sudo cp -rf /media/disk/install /media/disk/casper

    #Despues de eso monté el .iso de ubuntu en linux
    sudo mkdir /media/iso
    sudo mount ~/descargas/kubuntu-8.04-desktop-i386.iso /media/iso/ -t iso9660 -o ro,loop=/dev/loop0

    #Para luego copiar la carpeta isolinux que está en el iso a la unidad usb y renombrarla como syslinux
    sudo cp -rf /media/iso/isolinux /media/disk/syslinux

    #Posterior a eso renombro el archivo /media/disk/syslinux/isolinux.cfg a /media/disk/syslinux/syslinux.cfg
    sudo mv /media/disk/syslinux/isolinux.cfg /media/disk/syslinux/syslinux.cfg

    #Despues instalo syslinux
    sudo aptitude install syslinux

    #para instalar un sector de arranque en la memoria usb
    sudo syslinux /deb/sdb

    #lo cual me regresa un mensaje indicándome que debo actualizar fstab, pero ignorar el mensaje y continuar.

    #Este comando creará un archivo llamado ldlinux.sys en el directorio root de la memoria usb.

    #Despues de eso copio el archivo .iso al directorio root de la memoria principal
    sudo cp ~/descargas/kubuntu-8.04-desktop-i386.iso /media/disk

    #para luego copiar el resto del .iso a l directorio root de la memoria
    sudo cp -rf /media/iso/*.* /media/disk

    #despues de eso renombro el archivo /media/disk/isolinux.cfg a /media/disk/syslinux.cfg
    sudo mv /media/disk/isolinux.cfg /media/disk/sylinux.cfg

    #luego edito el archivo /media/disk/isolinux/syslinux.cfg y renombrar todo el contenido de "/cdrom/" a "", para que el instalador no busque el cdrom.

     

    Con esto ya tuve lista la memoria usb para que pudiera ser booteable al arrancar la portátil o PC.

    Solo me bastó apagar la laptop primero, despues conectar la memoria usb, seleccionar el arrancador multiple al momento de que la notebook encendiera y seleccioné despues la opción de iniciar desde una memoria usb y con esto el instalador de ubuntu comenzó a ejecutarse y con eso pude instalar Kubuntu Linux 8.04 a mitad de la Sierra Juárez sin un CD de instalación face-smile.png

    Ya como nota final basicamente todo lo anterior también se podría hacer con windows sin problema..pues todo el proceso son copiar y editar archivos al USB, excepto por la parte de activación del usb como partición booteable que podría hacerse sin problema con la herramienta de partition magic.

    Ayer en la noche estuve configurando un conmutador de Voz sobre IP con Asterisk para instalar un servicio de Telefonía IP a traves de una red satelital en la comunidad de Santo Domingo Cacalotepec allá en la Sierra Norte de Oaxaca ya que por la lejanía de la población y la orografía del estado se encuentra marginada, por lo que en la actualidad está incomunicada, motivo por lo cuál nació la idea de un familiar de meter internet satelital y a traves de esa conexión meter telefonía IP, por lo que se me ocurrió usar para este caso Asterisk, combinando el protocolo IAX2, junto con el codec G729 , dispositivos SIP y tecnolog