Ver la televisión TDT en linux (Mandriva 2010 y Fedora 12) con VLC

1.- Instalar la tarjeta TDT en linux.

En mi caso utilizo “avermedia volarx”. Un TDT parecido a una memoria USB.
Web oficial: http://www.avermedia.com/avertv/product/productdetail.aspx?id=39

Primero me voy a www.linuxtv.org para buscar mi tarjeta y saber si esta
reconocida por linux.

En linuxtv.org vamos a dispositivos TDT por USB.
http://www.linuxtv.org/wiki/index.php/DVB-T_USB_Devices

Buscamos “avermedia Volar X” y la encontramos. Vamos a la página de la tarjeta:
http://www.linuxtv.org/wiki/index.php/AVerMedia_AVerTV_Digi_Volar_X_%28A815%29

Ahora ejecutamos un comando para comprobar si nuestra tarjeta esta reconocida por
nuestra distribución, tal y como nos dicen en la página.

Comando:
#lsusb

Y obtengo:
Bus 001 Device 003: ID 07ca:a815 AVerMedia Technologies, Inc.

Tal y como indican en la página de linuxtv.org.

Seguimos leyendo y nos indican que tenemos que añadir el firmware de la tarjeta.
Por lo tanto, realizamos lo que nos indican.

- Bajar firmware.
- Copiar firmware a /lib/firmware

Comando (Teniendo en cuenta que estamos en la carpeta donde esta el firmware):
#cp dvb-usb-af9015.fw /lib/firmware/

2.- Reniciar

Reiniciamos el ordenador.

3.- Creamos un archivo con los canales del TDT utilizando w_scan

- Descargar w_scan
http://wirbel.htpc-forum.de/w_scan/index2.html

- Descomprimir
Comando (Estamos en el mismo directorio que w_scan):
$tar -xjf w_scan-20091230.tar.bz2.bz

- Entramos en el directorio que se acaba de crear de w_scan
Comando (Estamos en el mismo directorio que w_scan):
$cd w_scan-20091230

- Realizamos una busqueda de canales. Los datos de la busqueda de canales
se guardara en un fichero llamado “canalesTDT.conf”.
Comando (Estamos dentro de la carpeta creada al descomprimir w_scan):
$./w_scan -c ES -X >> /home/felipe/canalesTDT.conf

OJO! la opciones son: -c en minúscula y -X en mayúscula.

4.- Instalamos VLC

Este paso dependera muchos de nuestra distribución. En mi caso es Mandriva 2010 Free.
Esta distribución utiliza paquetes *.RPM.

Para instalar VLC en esta distribución utilizo el comando:
#urpmi vlc

Despues de ejecutarlo me indica que es necesario instalar paquetes dependientes y me
pregunta si realmente quiero instalarlo, contestamos que sí.

5.- Distrutar de la televisión TDT con VLC.

Ahora abrimos VLC, vamos a “Medio”, “Abrir archivo”. Seleccionamos “Todos los archivos” para ver
el archivo “canalesTDT.conf” y lo seleccionamos.

Para ver la lista de canales, vamos a “view”, “playlist” y ya veremos todos los canales de TDT que
w_scan detecto.

Obtener el día de la semana correspondiente a una fecha especificada con php (mktime y date).

A continuación dejo una simple función que permite realizar lo ya indicado en el titulo. Es algo realmente simple, pero cuando yo necesite este dato, tuve que buscar durante unos minutos en la documentación de php y después preparar la función.

Como es un trozo muy pequeño de código, es posible que este se pierda. Para evitar que esto ocurra y para aquellos usuarios que lo necesiten expongo el código.

<?php
/**
 * Obtener el día de la semana para una fecha concreta.
 */
function diaSemana($ano,$mes,$dia)
{
	// 0->domingo	 | 6->sabado
	$dia= date("w",mktime(0, 0, 0, $mes, $dia, $ano));
		return $dia;
}
 
/**
 * Ejemplo de uso
 */
$diaSemana = diaSemana("2009", "12", "10");
echo $diaSemana;
 
/**
 * Imprime:
 * 4 | El cuatro corresponde a Jueves
 */
?>

Buscar enlaces en una cadena y convertirlos en enlaces HTML con php (preg_replace_callback).

Actualmente casi todos los sitios webs tiene algún método para reconocer enlaces. Da igual donde dejemos un comentario. Puede ser un foro, un chat, un blog, etc. Seguro que cuando enviemos un mensaje, si este contiene algún enlace, una vez publicado podremos pinchar sobre él.

Yo como usuario, lo encuentro bastante útil y cómodo. Por un lado, si soy un visitante, es algo incomodo copiar y pegar el enlace en la barra de direcciones. Es mucho mas fácil hacer “click” sobre el enlace.

Por otro lado, si soy el autor de un comentario y quiero dejar un enlace, solo tengo que escribirlo, no tengo que preocuparme de hacer que sea pinchable.

Por ese motivo, dejo a vuestra disposición una clase en php para leer un texto y convertir en etiquetas HTML todos los enlaces que contenga el texto.

Actualmente solo reconoce los enlaces que comienzan por “http://” pero puede mejorarse para que detecte mas enlaces o realice mas operaciones, esto ya depende de las necesidades de cada uno.

A continuación el código y un ejemplo de uso.

<?php
/**
 * Con esta clase podemos convertir los enlaces de un texto.
 * Por ejemplo si escribirmos:
 * http://www.ejemplo.com
 * se convertirá automáticamente en:
 * <a href="http://www.ejemplo.com">http://www.ejemplo.com</a>
 */
class Enlaces
{
    private $_texto;
    private $_logs;
    private $_debug = false;
    private $_existen = false;
 
    public function __construct($texto = false, $debug = false)
    {
        //Saber si hay que mostar los mensajes de debug por pantalla o no.
        if($debug) {
            $this->_debug = true;
        }
 
        //Verificar que se indicó un texto a parsear
        if(!$texto || empty($texto)) {
            $this->_logs = "Error! Usted no indico la cadena a parsear. \r\n";
        } else {
            $this->_texto = $texto;
        }
 
        //Parsear texto
        if(!$this->parsear()) {
            $this->_logs .= "Error! El texto indicado no se puede parsear o no
        tiene enlaces. \r\n";
        } else {
            $this->_logs .= "Texto parseado correctamente";
        }
    }
 
/*
 * Parsear el texto buscando enlaces. Se buscan las cadenas que comienzan por:
 * "http://" sin comillas.
 *
 * Retorna: true si se parsea correctamente, false si no se parsea o
 * si no existen enlaces en el texto.
 */
    private function parsear()
    {
        $this->_texto = preg_replace_callback("/(http:\/\/[\w\/*\?*\&*\=*\.*]+)/",
                             "Enlaces::enlacesDetectados", $this->_texto);
 
        if($this->_texto == "NULL" || $this->_existen == false) {
            return false;
        } else {
            return true;
        }
    }
 
/**
 * Convierte los enlaces en enlaces HTML. Si queremos añadir atributos a los enlaces generados, debemos
 * hacerlo aquí.
 */
    private function enlacesDetectados($coincidencias)
     {
         foreach($coincidencias as $enlace)
         {
             $this->_existen = true;
             $enlace = "<a href='" . $enlace . "'>" . $enlace . "</a>";
                return $enlace;
         }
     }
 
/**
 * Devuelve el texto con los enlaces convertidos.
 */
    public function getTexto()
    {
        return $this->_texto;
    }
 
/**
 * Devuelve el logs generado durante la ejecución. Solo devuelve el logs si se indico previamente.
 */
    public function getLogs()
    {
        if($this->_debug) {
            return $this->_logs;
        }
    }
}
 
/**
 * EJEMPLO DE USO
 */
 $texto = " Este es un texto de prueba. Con un enlace a http://www.google.es y
otro enlace a http://google.com, &iquest; Que te parece ?";
 
$enlaces = new Enlaces($texto);
echo $enlaces->getTexto();
 
/**
 * Se imprime:
 *
Este es un texto de prueba. Con un enlace a <a href='http://www.google.es'>http://www.google.es</a> y
otro enlace a <a href='http://google.com'>http://google.com</a>, &iquest; Que te parece ?
 
 */
?>

Las “chuletas” (cheat sheet) todas en un mismo sitio

El otro día durante el trabajo, necesite realizar una función para sumar y restar fechas. En ese momento no recordaba el orden de los parámetros de la función “mktime()”, por lo tanto, abrí firefox, teclee www.php.net y utilizando el buscador, encontré la documentación de “mktime()”.

Mientras realizaba todo esto pensé, si tuviera a mano ahora una “chuleta” (cheat sheet) con un simple vistazo habría resuelto mi duda. Entonces en ese mismo instante me cree una nota para buscar al final del día una “chuleta” en php.

Cuando me puse a buscarla me encontré con una grata sorpresa. Existe un sitio llamado http://www.cheat-sheets.org/ que ofrece chuletas de todo tipo.

Personalmente me descargue las chuletas de php, javascript y mysql. A continuación dejo los enlaces directos:

PHP: http://www.cheat-sheets.org/#PHP
JavaScript: http://www.cheat-sheets.org/#JavaScript
Mysql: http://www.cheat-sheets.org/#MySQL

Notificador de correo electrónico para windows “DynAdvance Notifier”

Hace algunos días decidí buscar un programa simple pero eficaz para estar atento a los correos electrónicos.

Tenía la costumbre de mantener el programa de correo o el navegador abierto continuamente para revisar el correo de forma continua.

Al cabo del día esto supone una cantidad de tiempo perdido considerable, por este motivo, decidí utilizar un programa que me avisará de la llegada de correo. Así solo lo revisaría cuando fuera necesario. Además no solo lo revisaré cuando llegue, si no, cuando lo que ha llegado me interesa.

Gracias a “DynAdvance Notifier” puedo saber cuando tengo correo nuevo y si me interesa, ya que este programa me indica el asunto de los nuevos emails recibidos.

El programa permite la configuración de varias cuentas y que cada X tiempo estas sean revisadas en busca de nuevos emails.

Yo por ejemplo tengo configuradas varias cuentas, una de ellas gmail y funciona de maravilla.

Para terminar, deciros, que entre las opciones del programa podemos añadir un archivo *.wav, para que se reproduzca en el momento que recibimos nuevos correos.

Descargar DynAdvance Notifier

Creación de un widgets para buscar palabras en la RAE (Real Academia Española )

En igoogle podemos utilizar un widgets llamado “Buscón R.A.E” que permite buscar palabras en la R.A.E ( Real Academia Española ).

Este widgets me pareció útil y decidí crear uno para poder utilizarlo en mis proyectos. A continuación os dejo un ejemplo real funcionando, para que podáis ver como es.

Ejemplo real

Esta realizado con javascript y utiliza un iframe para mostrar los resultados. Estos resultados son simplemente una página que devuelve la R.A.E con el significado de la palabra deseada.

El iframe se crea con un ancho del 100% para que se adapte a cualquier lugar donde se inserte. Evidentemente, cada uno puede cambiar las propiedades del iframe, para adaptarlas a sus necesidades.

La única propiedad que no debemos modificar es SRC, porque si cambiamos esta, no obtendremos resultados de búsqueda.

Para terminar dejo el código de este widgets para que podáis insertarlo en vuestra web, blog, …

JavaScript:

 /**
             * Esta funcion busca una palabra en la RAE (www.rae.es)
             *
             * @palabra: la palabra que deseamos buscar.
             * @div: elemento div del documento html donde queremos crear
             * el ifram con el resultado de la busqueda.
             */
            function buscar(palabra, div)
            {
                //codificar la palabra por si lleva acentos
                palabra = encodeURI(palabra);
 
                //Generar url a la que debemos llamar para obtener
                //el resultado de buscar dicha palabra en la RAE
                var url;
 
                    url = "http://buscon.rae.es/draeI/SrvltGUIBusUsual?";
                    url = url + "LEMA=" + palabra + "&origen=RAE&TIPO_BUS=3";
 
               //Generar iframe con la página de la RAE
               var iframe;
 
                    iframe = document.createElement("iframe");
 
                    //Añadir atributos al iframe creado
                    iframe.setAttribute("scroll", "auto");
                    iframe.setAttribute("frameborder", "0");
                    iframe.setAttribute("width", "100%");
                    iframe.setAttribute("height", "300px");
                    iframe.setAttribute("src", url);
 
               //Limpiar el contenido de result
              limpiarDiv(div);
 
               //Guardar el iframe creado dentro del div indicado
               var result;
 
                       result = document.getElementById(div);              
 
                    //Añadir al div el iframe con los resultados
                    result.appendChild(iframe);
            }
 
            /**
             * Limpiar (eliminar) todos los elementos que contenga
             * el div.
             *
             * @id: identificador del elemento div.
             */
            function limpiarDiv(id)
            {
                var div;
 
                    div = document.getElementById(id);
 
                    while(div.hasChildNodes())
                    {
                        div.removeChild(div.lastChild);
                    }
            }

Html:

<!--
            Buscar con Javascript en la web de la RAE
            www.rae.es
        -->
        <p>
            Buscar: &nbsp;
            <input type="text" id="palabra" /> &nbsp;
                <a href="#"
                   onclick="buscar(document.getElementById('palabra').value,
                                   'resultado');"> buscar </a>
        </p>
        <p>
            <div id="resultado"></div>
        </p>