domingo, diciembre 30, 2012

Streaming de contenidos a un Samsung SmartTV desde Mac

Las televisiones de Samsung que vienen con el sistema SmartTV permiten conectarse a redes de ordenadores y recibir contenidos en streaming desde otros dispositivos conectados a la red. Hace unos días, para enseñar unas fotos, intenté hacer streaming de las mismas desde un Mac. Lo primero que averigüe fue que la televisión soporta DLNA, un conjunto de especificaciones que permite compartir información entre dispositivos multimedia.

Mi primera opción fue instalar en MacOS X uShare, un programa que en principio no debería tener muchos problemas para compilar y ejecutar. Sin embargo, para poder compilarlo había que usar The Yasm Modular Assembler Project, ffmpeg , libupnp y libdlna, con diferencia este último el más complicado de compilar, puesto que es capaz de poner bien los flags de compilación.

A pesar de todo, tras un buen rato enredando con los configure, puede compilar toda la suite sin problemas. Lo malo, es que no funcionaba demasiado bien. Esto no me desanimó demasiado, así que decidí buscar otro software que me permitiera hacer esta labor.

Di con PS3 Media Server un software escrito en Java que tenía soporte para los protocolos necesarios para hacer el streaming. Tras ejecutarlo, parecía que la televisión no iba a ser capaz de recibir el streaming, pero el server DLNA apareció tras apagar y encender ésta. Al menos, las pruebas que hecho - sólo estaba interesado en el streaming de fotografías - ha funcionado bien.


Technorati Tags: macosx, smarttv

jueves, diciembre 27, 2012

Invalidar las cachés de disco en Linux

Cuando se está haciendo medidas de rendimiento de programas que hacen un uso intensivo de disco, es necesario tener en cuenta que el sistema operativo tiene un caché donde están disponibles los bloques que más recientemente se han usado. Para que posibles problemas de rendimiento que no queden disimulado por los efectos de dicho cachés, es necesario vaciarlo.

Para vaciar las cachés se escriben ciertos valores en el fichero /proc/sys/vm/drop_caches. Eso sí, hay que tener en cuenta que el kernel sólo descarta aquellos cachés que no han sido modificados, no los que han sido modificados y todavía no se han escrito a disco. Para ello primero hay que ejecutar el comando sync para que el kernel escriba la información que conserva en memoria modificada. Luego, en función del valor que se escriba se vaciará la caché de página o la cache de dentries e inodos - que afecta al cacheo de componentes de disco -. Para vaciarlos todo escribimos un 3: sync;echo 3 > /proc/sys/vm/drop_caches. Se puede también escribir 1 para vaciar la caché de páginas o 2 para vaciar la cache de i-nodos y dentries.



Technorati Tags:

jueves, diciembre 20, 2012

¿Por qué no se pinchó la burbuja inmobiliaria?

Estos últimos años en los que he leído bastante sobre economía, siempre me ha dado vueltas en la cabeza dos preguntas relativamente simples:

  • ¿Los economistas no tenían herramientas que permitieran intuir lo que estaba pasando, en especial tras estudiar los casos de Suecia o Japón?
  • Dicho esto, si las autoridades encargadas de supervisar todo el sistema financierio, en especial, el Banco de España, tenían respuesta para la primera pregunta, ¿Por qué ningún gobierno con independencia del color del mismo tomó medidas para pinchar la burbuja?

Con el paso del tiempo, tuve claro las respuestas a ambas preguntas: La primera es que si, si existían indicios bastante claros que se estaba formando una gran burbuja que cuando estallara se llevaría parte del sistema financierio por delante. Y lo peor, es que la respuesta para la segunda pregunta, es que el gran beneficiado por la burbuja eran las administraciones públicas, que recibían una ingente cantidad de dinero, que ya hemos visto cual ha sido su uso. Ayer encontré un interesante resumen en de la vaca lechera inmobiliaria, de qué impuestos se pagan y porqué todo el mundo en España, desde las administraciones públicas piensa en ladrillo como solución a todos los males.

¿De verdad alguien pensaba que se iba a estropear la fiesta desde las administraciones del Estado?


Technorati Tags: economía

jueves, noviembre 22, 2012

Usar screen para tener ventanas divididas (regiones)

Actualmente multitud de personas utilizan entornos gráficos bajo Unix para realizar sus tareas. Sin embargo, muchos todavía usamos múltiples terminales de texto y herramientas en líneas de comando para realizar nuestro trabajo, puesto que con esta interfaz se puede ser muy productivo. Desde hace muchos años existe una utilidad que nos permitía tener ventanas bajo una interfaz basada en aplicaciones de terminal en modo texto que es GNU Screen.

Esta utilidad nos permite crear ventanas y navegar entre ellas. Dentro de cada ventana se ejecuta una shell donde vamos realizando nuestras tareas, todo en una terminal en modo texto. Además, se puede dejar la aplicación corriendo en segundo plano, pudiendo recuperar más tarde la sesión completa. Normalmente, la tecla de control (configurable) que utiliza screen para sus comandos es control-a , que voy a abreviar como C-a.

Una característica que tiene screen es el el uso de regiones, que permite mostrar más de una ventana en la terminal que se esté usando. Este funcionalidad es muy útil, por ejemplo, cuando se está conectado a un sistema remoto, se están ejecutando ciertas órdenes y queremos ver los ficheros de registro que se van generando. Si, esto se puede hacer usando varias conexiones contra el sistema remoto, pero con la ayuda de screen sólo se neceita una conexión y la utilidad.

Los comandos que nos permiten crear estas regiones son:

  • C-a S Divide una ventana en dos regiones
  • C-a X Elimina la región actual.
  • C-a <tab>Pasa a la siguiente región.
  • C-a C-cCrea una nueva ventana con un shell en la región actual.

Por ejemplo, tengamos la siguiente captura de pantalla:

Para llegar a esta configuración:


  1. Ejecutamos screen
  2. Dividimos la ventana actual en dos regiones: C-c S
  3. Pasamos a la región nueva: C-c <tab>
  4. Creamos una nueva ventana en la región con C-a C-c


Technorati Tags: ,

miércoles, noviembre 14, 2012

vim: Quickfix

Quickfix es un modo de funcionamiento del vim que permite acelerar el ciclo de edición, compilación, edición para aquellas personas que utilicen este editor para desarrollar.

Lo primero que hay que tener configurado es el comando :make, que ejecutará el programa especificado en la variable makeprg, que por defecto es make. La salida de dicho programa será almacenada en un fichero, el cual será posteriormente leído por vim cuando deseemos activar el modo quickfix. Para ello basta con usar el comando :copen, pudiéndose configurar el número de líneas que se desea que tenga la ventana. Para cerrar la ventana se puede hacer uso del comando :cclose. Para moverse de un error a otro, se puede uno ir a la ventana y usar los comandos para moverse entre líneas. Tener en cuenta que cada línea de la misma representa un error. Existen los comandos :cnext y :cprevius que permiten moverse por la lista de errores. Se puede ir a un error determinado con ayuda de :cc nr. La la lista asociada al modo de quickfix es única a todo el sistema. Hay que tener en cuenta que si nos movemos de un error a otro usando :cnext y :cprevius, si se ha modificado un buffet, es necesario usar '!' en el comando, es decir, :cnext! o :cprevius!. También si el foco está en la ventana quickfix, se puede mover con las teclas de desplazamiento de cursor a la línea donde este el error y pulsar enter, para que vim nos lleve directamente a la línea en el fichero con el error.

Como todo comando del vim, si éste está compilado con el soporte de autocomandos, se pueden usar éstos para adaptar el comportamiento de la ejecución de los mismos de acuerdos a nuestros intereses.

Directamente relacionado con el modo de quickfix, en vim toda ventana puede tener asociada una lista de localización, independiente de la lista de quickfix y que contiene una serie de posiciones dentro de un fichero. Los comandos para trabajar con la lista de localización puede consultarse en la documentación del vim



Technorati Tags: