#ContraElSilencio

#ContraElSilencio





No a la supresión de la libertad de expresión en internet que pretende realizar el gobierno arbitrario de Enrique Peña Nieto en México

Software

  • Instalando Flash 10 para mejor uso del CPU

    Instalando Red5 como base para instalar un sistema de videoconferencia web, en el tutorial de instalación veo que recomiendan usar Flash 10 en Linux ó MacOS esto para mejor rendimiento del CPU sobre aplicaciones Flash, esto ya que comúnmente al abrir una página de youtube por ejemplo el consumo de CPU se disparaba al monitorearlo en la consola de Linux, por lo que decidí actualizar la versión de flash al pre-release del plugin de Flash 10.
    Lo primero que hay que hacer es obtener el prerelease de Flash 10 de la siguiente url:
    http://www.adobe.com/go/getflashplayer
    mkdir ~/software/
    cd ~/software/software
    wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz
    cd /usr/src
    sudo tar -xzvf ~/software/install_flash_player_10_linux.tar.gz
    cd install_flash_player_10_linux
    whereis firefox
    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz
    #El directorio de firefox es /usr/lib/frefox
    #cerrar firefox ó el navegador que se usa
    #ejecutar el instalador de flash 10
    sh ./install_flash_player
    #Y aceptar la instalación y la licencia
    #luego introducir el directorio de firefox ó el navegador que se usa
    #aceptar nuevamente la instalación y listo
    #reiniciar firefox abrir algunapágina con flash y ya debería verse en propiedades de flash que se usa la versión 10.
     
  • Script AGI para conectar con sistema de tarificacion AsterBilling

    Asterbilling es un software que permite integrar un tarificador a Asterisk basado en prefijos, longitud del número de marcado, entre otras cosas, muy apto para ser usado en casetas telefónicas, aparte que tiene un sistema de monitoreo para cuándo se marque un número muestre el tiempo marcado, el número, etc y de ahi mismo imprimir un ticket.
    Como plugin adicional para Asterbilling hice un script en php que lo que hace es consultar desde un teléfono el costo de las llamadas desde un cabina en específica, de tal forma que usando festival te regresa de forma hablada la fecha marcada, el tiempo de la llamada, el número marcado y el costo total de la llamada en base a la tarifa aplicada.
    Este script también permitiría imprimir un ticket en una impresora de tickets conectada al puerto serial, solo bastaría crear un archivo con la información y mandarlo al puerto lpt.
    #!/usr/bin/php -q
     <?php
    //llamamos a las librerias de phpagi
      require("phpagi/phpagi.php");
    //activamos la bandera de enviar todo lo que se realice a consola como modo depuracion
      error_reporting(E_ALL);
    //creamos una instancia de la clase AGI
     $agi = new AGI();
    //generamos el comando Answer de Asterisk, este comando siempre lo ejecutamos al inicio de un AGI
     $agi->answer();
    //Este demo consultaria informacion en una base de datos y regresaria la informacion de forma hablada por lo que generamos una conexion a la base de datos de sql
     $conexion = mysql_connect("localhost","astercc","astercc") or die("Error: El servidor no puede conectar con la base de datos");
    //Referenciamos el cursor a la base de datos
     mysql_select_db("astercc",$conexion);
    //obtenemos el caller id de quien realiza la llamada
     $_cid = $agi->parse_callerid();
    //enviamos un mensaje de voz por medio de festival que esta configurado en idioma espanol
     $saludo_hora = (date("H")<12)?"Buenos Dias!"<img src="plugins/Emoticons/images/face-sad.png" border="0" alt="face-sad.png " width="16" height="16" />(date("H")<19)?"Buenas tardes!":"Buenas Noches!");
           
             $agi->text2wav("Hola $saludo_hora");
              do{
                    $agi->text2wav('¿Que cabina desea tarificar? 0 para salir');
           
                    //enviamos un beep y esperamos 20 segundos en la espera de una respuesta
                    $_result = $agi->get_data('beep', 5000, 20);
                    //obtenemos la informacion introducida desde el telefono
                    $cabina = $_result['result'];            
                       if($cabina!="" and $cabina!="0"){
                                 $query = "select c.id, c.calldate, c.src, c.dst,  c.didnumber, c.duration, c.billsec, c.disposition, c.calltype,  c.userfield,
                                                            m.dialprefix, m.numlen,  m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock
                                                            from mycdr c, myrate m  
                                                                    where c.src='$cabina' and c.disposition like '%ANSWERED%'
                                                                            and c.userfield='UNBILLED'
                                                                            and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen)
                                                                            and (c.groupid=m.groupid or m.groupid=0)
                                                                            and (c.resellerid=m.resellerid or m.resellerid=0)
                                        order by
                                                    "
    ;
              //select c.id, c.calldate, c.src, c.dst,  c.didnumber, c.duration, c.billsec, c.disposition, c.calltype,  c.userfield,m.dialprefix, m.numlen,  m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock from mycdr c, myrate m where c.src='102' and c.disposition like '%ANSWERED%' and c.userfield=UNBILLED and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen) and (c.groupid=m.groupid or m.groupid=0) and (c.resellerid=m.resellerid or m.resellerid=0)
                    $agi->verbose($query);
                                $_result = mysql_query($query);
                                //verificamos si existe un resultado
                    $total = 0;
                    $subtotal = 0;
                    $ticket = "";
                    $count = 1;
                                 while($_re = mysql_fetch_array($_result)) {
                                           $subtotal = $_re[13];
                           if($_re[6]>$_re[14]){
                                $charge_additional =  (ceil( ($_re[7]-$_re[14])/$_re[16]) )*$_re[15];
                                $subtotal += $charge_additional;
                                           }
                           $total += $subtotal;
                                           $ticket .= " llamada $count.
                                        Fecha: $_re[1].
                                        Tiempo de la llamada: $_re[6] segundos.
                                        Numero Marcado: $_re[4].
                                        Tarifa aplicada: $_re[destination].
                                        Costo: $subtotal pesos.."
    ;
                                 }
                     if($total>0){
                        $agi->text2wav("Total a pagar $total pesos. Desglose : ".$ticket." Total a pagar: $total pesos");
                        $agi->text2wav("Desea imprimir el ticket?Presione 1 para Aceptar. Otro para salir");
                        $_result = $agi->get_data('beep', 5000, 20);
                        $print = $_result['result'];
                        if($print ==1){
                            $ticket = str_replace(".",".\n", $ticket)."\n\nTotal a pagar: ".$total." pesos";
                            //imprimir ticket
                                //guarda archivo
                                //manda archivo a LPT
                                //elimina archivo impreso
                            //guardar registro
                        }
                     }else{
                         $agi->text2wav("No hay llamadas para tarificar en la cabina $cabina!");
                     }
                       }
             }while($cabina != '0');
         $agi->text2wav("Hasta luego. $saludo_hora");
    //al finalizar el script del AGI siempre es recomendable ejecutar esta funcion para no dejar el canal abierto.
      $agi->hangup();
     ?>
    //*****
     
  • Como no ser estafado con ayuda de Google y El Universal

    En los últimos meses, semanas y días he sido estafado desde empresas grandes en la vida real e internet hasta por estafadores callejeros, causándome entre pérdidas económicas, enojos, tristezas, y un sin fin de sentimientos que ya hasta me preocupa que pueda ser diabético de los corajes que este país dónde es una realidad el dicho milenario que reza "el que no tranza no avanza"..
    Bien lo repetían mis maestros de la secundaria que "nadie aprende en cabeza ajena", y si es muy cierto, lástima que en esos ayeres mi cabeza pensaba en cosas ajenas a las que debían ocuparse bajo esas aulas de paredes de ladrillo rojo, pero como no iba a pensar en otras cosas si estaba muy chula la < voice class="clavillazo" > "méeendiga"!< /voice>. Pero volviendo al tema del post, estaba con que "nadie aprende en cabeza ajena" y me refiero a que si antes hubiera investigado un poco más creo que no me hubieran estafado, al menos no me hubieran estafado en algunos casos de manera infantil y tan profesional en otros.
    A lo que voy con esto es que gracias a "Reportero Ciudadano" dónde recogen las quejas, comentarios, experiencias, observaciones, alertas, advertencias de diferentes personas que muchas veces son vejados, estafados y demás, pocas veces tienen un medio para poder sacar sus frustraciones, entonces El Universal les ha acercado este espacio al menos para que externen su sentir que me ha parecido una excelente idea.
    Lo interesante de este proyecto es que a lo largo de varios meses que lleva funcionando, se está convirtiendo en una gran base de datos de experiencias, un medio que desde mi punto de vista debería ser obligatorio consultar antes de hacer una operación riesgosa ó desconocida, ya que puede haber ahí alguna persona desafortunada que haya tenido una mala experiencia con algo que quizá tú estés por hacer y que su comentario te ayude a declinar hacia una estafa premeditadamente anunciada.
    De manera accidental o quizá incidental ese sistema de "El Universal" -un sistema al cuál mis queridos maestros del "Tecnológico de Oaxaca" llamaban un "Sistema Expertos" tongue.png - se está convirtiendo para esta Selva asfáltica dónde predomina la ley del que más tranza, una gran respuesta y posible salvación para el ciudadano.
    Lo único que le está faltando a "El Universal" es un buen sistema de búsquedas que ayude rápidamente a encontrar palabras, frases, etc., de manera rápida, de tal forma que pueda convertirse en una referencia rápida ante una duda.
    Por ejemplo leyendo esta noche sin luna y sin sueño las quejas de algunos usuarios en "Reporte Ciudadano", si alguien quisiera contratar un crédito con "POP BOX", antes podrían conocer las experiencias de otros usuarios que han tenido con esta empresa y de ahí decidir si hacer ó no una transacción. O por ejemplo si quisieran comprar un celular y antes de ir a la plaza del celular buscar información de "Plaza del celular" en "Reporte Ciudadano" para verificar si ya hay una mala experiencia de alguien en ese dichoso lugar. Y así usar "Reporte Ciudadano" como un medio para poder saber algo de.. antes de..
    Por eso digo que "Reporte Ciudadano" con una buena herramienta de búsqueda se convertiría en una herramienta excelente como "Sistema Experto para Inexpertos", y con un poco mayor de promoción igual como la referencia obligada antes de hacer una transacción ó para otros asuntos, hasta podrían ganar más en publicidad los de El Universal si se pusieran las pilas face-wink.png .
    Pero en fin.. a falta de esa herramienta de búsqueda interna de El Universal, Google se vuelve tú mejor aliado, pues "todo lo que no lo sabe, lo redirige", a lo que voy es que siguiendo el ejemplo anterior de "POP BOX" y "Plaza del celular", si alguien deseara saber más sobre "POP BOX" solo bastaría poner en el cajón de búsqueda de google:
    "POP BOX" site:http://interactivo.eluniversal.com.mx/contactanos/n_wcontactanos_vercomentariosEC.html
    Al igual si buscará información de Plaza del Celular bastaría hacer lo siguiente:
    "Plaza del celular" site:http://interactivo.eluniversal.com.mx/contactanos/n_wcontactanos_vercomentariosEC.html
    También podrían ayudarse de los "comandos" de Google para poder encontrar información más precisa, en el caso anterior por ejemplo al introducir en la busqueda una frase entre comillas, le estamos diciendo al navegador que busque la frase completa, si la ponemos sin comillas buscará que una página que contenga las palabras aunque no estén en el mismo orden ó juntas.
    Si ponemos "site:" le estamos diciendo a google que busque dentro de un sitio y directorio específico.
    Como este post va enfocado a los usuarios finales no a informáticos que saben más de "Google Hacking" postearé con calma después como usar los códigos de búsqueda de google para poder encontrar información más precisa dentro de "Reporte Ciudadano del Universal" y en internet en general.
  • Free does not mean Open Source...

    Leyendo la página web de Red5 que es un proyecto Open Source que funciona como servidor de Aplicaciones Flash, hay un documento que habla de la diferencia de Free y Open Source.



    http://osflash.org/free_does_not_mean_open_source



    Free en el idioma anglosajón puede tomar 2 acepciones, Free de Libre.. ó Free de Gratis, cómo en cerveza gratis.



    El documento me gustó porque aclara la diferencia que hay entre Free y Open Source, ya que actualmente hay una diferencia interna entre algunos líderes del Software Libre como Richard Stallman y otros que apoyan al Open Source.
    Básicamente el documento comenta lo siguiente:

    "Free" Refiere a si un desarrollador de una pieza de software requiere ó no remuneración económica( Ej. dinero) por ello. Si el desarrollador(Individuo, Compañía, etc) no quieren dinero ó alguna otra forma de compensación financiera por su software,entonces ese software se dice que es "free" de Gratuito. No implica si el código fuente es abierto ó cerrado.



    Cuándo nos referimos a una pieza de software(aplicación), usualmente nos referimos a los binarios. Estos son los programas de computadora que al final se entregan compilados. En computación moderna, los desarrolladores escriben sus programas(aplicaciones/software) en lenguajes de Alto-Nivel que son entonces compilados dentro de un código que la computadora pueda entender. El código inicial escrito por el programador es llamado "código fuente". Esto es la propiedad intelectual del desarrollador y el ó ella puede escoger si quiere liberar su código fuente separadamente de la aplicación/programa/software misma.



    Si el desarrollador escoge liberar el código fuente de su aplicación, la aplicación se dice ser "Fuente Abierta" ó "Código Abierto" (Open Source). Indicando que el código fuente está disponible para descarga, escrutinio público, mejoramiento, etc. Una aplicación puede ser de Código Abierto (Open Source) y no ser "Free"( de Gratis). Los dos conceptos en el idioma anglosajón no están relacionados (Free y Open Source)



    Pro lo tanto, una aplicación puede ser alguna de las siguientes cosas (ó combinacion de ellas):


  • Free de Gratis, Código Cerrado
  • Free de Libre ó Gratis, Código Abierto
  • Comercial, Código Cerrado
  • Comercial, Código Abierto.



    No es inusual ver una aplicación siendo ofrecida bajo licencias duales (Incluso más que 2 licencias).




    Espero no haber confundido más, pero la idea básicamente es comentar que una aplicación puede ser de código abierto pero no gratis.. muchos piensan que por ser de código abierto tiene que se gratuito hasta el soporte.. así como también que una aplicación sea gratis no significa que pueda entrar a modificar el código..
  • Como montar una red inalambrica de largo alcance con DD-WRT y un Linksys WRT54G .

    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
  • Insertando, Eliminado, Actualizando y Listando Datos usando AJAX con PHP, CSS, Javascript y ODBC

    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.
  • Administrador de Descargas para Linux

    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
  • Deteccion de Movimiento en Linux

    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="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.
  • Rockola Web2.0 Ver 1.0-beta liberado en SourceForge.net

    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
  • Rockola Web 2.0 en Linux..

    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/
  • Anterior página 1 ... 4 5 6 ... 14 Siguiente página
    133 entradas

    Emblemas

    Energizado por Jaws Project
    Soporta RSS2
    Energizado por Software Libre
    Energizado por Mozila Firefox
    Energizado por Ubuntu Linux
    Energizado por PHP
    Energizado por Apache Web Server
    Energizado por MySQL
    Energizado por SQLite

    Comentarios Recientes