Recientemente hemos adquirido un televisor Samsung B651 capaz de reproducir archivos de vídeo desde un dispositivo USB, como por ejemplo un disco duro externo (otro día hablaremos más de este televisor, de momento, más info aquí).

La cuestión es que no es capaz de reproducir audio DTS y tengo algunos ficheros de vídeo que solamente tienen el audio en DTS así que la única solución de momento es recodificar el audio en AC3. No hay que preocuparse mucho por la diferencia de formatos, pues ambos son bastante similares en cuanto a prestaciones y la posible pérdida en la recodificación es mínima.

El proceso lo realizaremos en linux, en debian por ejemplo es necesario instalar los paquetes mkvtoolnix, mkvtoolnix-gui, aften y libdca-utils

El fichero que contiene este tipo de audios suele ser un mkv así que lo primero es extraer la pista DTS del MKV.

$ mkvmerge -i fichero-de-video.mkv

Al hacerlo aparecerá el contenido del fichero mkv, las pistas de vídeo, audio, subtítulos, ficheros adjuntos, etc. En concreto, veremos algo así:

File ‘fichero-de-video.mkv’: container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_DTS)
Track ID 3: audio (A_DTS)
Track ID 4: audio (A_VORBIS)
Track ID 5: subtitles (S_TEXT/ASS)
Track ID 6: subtitles (S_TEXT/ASS)
Track ID 7: subtitles (S_TEXT/ASS)

Como podemos observar, hay dos pistas de audio en formato DTS. En un principio vamos a pasar la pista 2, de DTS a AC3. Primero hay que extraer la pista del fichero mkv con el siguiente comando:

$ mkvextract tracks fichero-de-video.mkv 2:spanish.dts

Esto lo que hace es sacar la pista 2 del fichero mkv, que en este caso es una pista de audio en castellano, en DTS, y lo guarda con el nombre “spanish.dts”.

A continuación, para convertir de DTS a AC3 primero hay que decodificar el DTS en WAV y finalmente pasar el WAV a AC3, pero podemos hacerlo todo directamente con el siguiente comando:

$ dcadec -o wavall spanish.dts | aften - spanish.ac3

Una vez finalizado el proceso ya tendremos el audio en AC3. Ahora solo queda introducir el audio de nuevo en el mkv. En mi caso, necesitaba que la pista AC3 fuese la primera pista de audio, es decir, la posición 2 del fichero mkv, pero no fui capaz de hacerlo mediante comandos, así que recomiendo lanzar el GUI de mkvtoolnix para meter el AC3 en el fichero mkv. La gui se puede lanzar mediante el comando “mmg”.

screenshot-mkvmerge

Una vez abierta la ventana del mkvmerge hay que añadir (botón add) tanto el fichero mkv original como el fichero .ac3 resultante. En el apartado de “tracks” podemos ordenar cada una de las pistas del fichero. En mi caso he puesto el AC3 como la pista 2. Por cada pista podemos editar sus opciones, indicar el lenguaje, si es el audio preferido, etc. Por último, en “Output Filename” indicamos el fichero donde queremos que se guarde el mkv final y pulsamos en “Start muxing”.

Eso es todo, una vez finalizado el proceso tendremos un fichero mkv con una nueva pista de audio en AC3.

En estos tiempos de Web 2.0 las aplicaciones online requieren cada vez un mejor rendimiento por parte del servidor. El mundo de la optimización de aplicaciones es un tema que da mucho para hablar, hay soluciones complejas que requieren replantear gran parte del proyecto y otras que se pueden aplicar en unos pocos minutos.

Una de esas optimizaciones rápidas de aplicar es mejorar la manera en la que son ejecutadas las aplicaciones PHP, para webs desarrolladas en este lenguaje, obviamente.

Aunque PHP sea un lenguaje interpretado, es decir, que no necesitamos más que subir los ficheros .php y directamente el intérprete se encarga de ejecutarlos, sin necesidad de haberlos compilado previamente. Pero en realidad, lo que hace el intérprete es “parsear” el código, compilarlo en bytecode y por último ejecutar este bytecode. Estas operaciones se realizan una y otra vez por una petición que se hace a un script PHP. Viendo esto, sin mucho esfuerzo podemos pensar que lo más lógico sería “parsear” y compilar en bytecode el código fuente una sola vez, mantener en memoria el bytecode mientras no se modifique el código fuente y ejecutar solamente el bytecode por cada petición.

Pues bien, esto es lo que hace APC. Este sistema reserva una zona de la memoria para cachear bytecodes. Cuando llega una petición a un fichero PHP, APC revisa si ese fichero ya está en la cache, si está en cache y el fichero no se ha modificado desde la última vez que se cacheó, entonces se ejecuta el bytecode que hay en cache. Si no, APC se encargará de actualizar el bytecode en cache para que las próximas peticiones sean más rápidas.

¿Por qué APC? Hay otros sistemas que implementan el mismo concepto, algunos de ellos se pueden ver comparados en la Wikipedia, pero APC se ha convertido en el acelerador oficial de PHP, ya que va a ser integrado su desarrollo a partir de PHP 6. Además, es muy fácil de instalar como podemos comprobar a continuación.

Para instalar APC en Debian se pueden seguir los pasos siguientes. Aunque en otras distribuciones el procedimiento es muy similar.

1 - Instalamos los paquetes necesarios

# apt-get install apache2-prefork-dev php5-dev php-pear

2 - Ejecutamos pecl, el instalador de extensiones de php

# pecl install apc

3 - Modificamos el fichero /etc/php5/apache2/php.ini y añadimos al final:

extension=apc.so

4- Reiniciar apache

# /etc/init.d/apache2 restart

Listo. Para comprobar que todo ha funcionado correctamente tan solo tenemos que crear un fichero con la instrucción phpinfo(); para ver si aparece la extensión APC.

APC phpinfo

Por último, para monitorizar el funcionamiento de APC podemos copiar el script que hay en /usr/share/php/apc.php a un directorio accesible desde http y al entrar en él http://xx.xx.xx.xx/apc.php, se pueden ver varios gráficos y tablas de información con el estado de APC. También es posible modificar el archivo apc.php para indicar una contraseña y así acceder a la zona privada con algunos datos más sobre el cacheo de scripts.

Después de haber instalado el APC en algunos servidores, la impresión es que la carga se ha reducido notablemente. Es una impresión personal, ya que no he tenido tiempo de hacer mediciones más serias.

Cualquier usuario mínimamente experimentado en linux sabe que mediante el comando “uptime” podemos ver, además del tiempo que lleva arrancado el sistema, cómo está de cargado. Cuando ejecutamos “uptime” nos devuelve algo así:

20:30:26 up 29 days, 21:36,  1 user,  load average: 0.42, 0.51, 0.62

Todo está bastante claro excepto los tres últimos números, 0.42, 0.51, 0.62. Sabemos que es un valor que indica la carga del sistema, mientras más alto sea el número mayor es la carga del sistema.

¿Pero por qué hay tres números?

El primero es la carga media durante el último minuto, el segundo es la carga media de los últimos 5 minutos y el tercero indica la carga media de los últimos 15 minutos.

Bien, sólo queda saber una cosa, ¿qué significa realmente el número? ¿Por qué un 0.42 y no un 2, o un 50, o cualquier otra numeración?

Aunque el origen del valor viene dado por el número de procesos que entra o espera entrar en la “cpu” en un cierto intervalo de tiempo resulta que su interpretación es mucho más intuitiva de lo que parece.

En un sistema con una sola CPU (y un único núcleo) un valor de 1.0 signica que el sistema se está utilizando al 100% de su capacidad.  Si por ejemplo en el mismo sistema tenemos un valor de 2.0 significa que para no tener ningún proceso en espera necesitaríamos una máquina el doble de rápida.

En el caso de que estemos en un sistema con más de una CPU o con más de un núcleo habrá que dividir el valor por el número de CPUs. Es decir, si tenemos un core duo y al lanzar uptime aparece un 2.0, estaremos usando el sistema al 100%

Yo estuve mucho tiempo sin saber qué significaba realmente este número y después de saberlo me ha sido muy útil para evaluar la carga de los servidores que manejo, por eso he decido compartirlo.

Hace poco sustituí mi decepcionante router D-Link DSL-2740B por un viejo Sagem F@st 1500wg que una vez me dieron. El Sagem tampoco era gran cosa, con él se solucionaron algunos problemas que tiene el 2740B pero llegaron otros. Tiene un problema que se repite bastante a menudo y es que cuando cargas una página (o cualquier otra cosa) se queda en espera, y hasta que no le das a la X de parar la carga y le das a actualizar unas cuantas veces no te carga por completo la página.

Este problema se hace muy pesado sobre todo en páginas con mucho Ajax, como por ejemplo Gmail o Google Analytics, que las peticiones se realizan una sola veces y para “reiniciarlas” tienes que recargar la página entera.

Además estaba el problema de las descargas, algunas descargas funcionaban bien hasta el 99%, y ahí se quedaban. Por ejemplo en firefox podías hacer pausar y continuar para finalizarlas, pero en otras aplicaciones esto no era posible y era un problema muy frustrante ya que te tenías que descargar lo mismo 3 o 4 veces.

Durante unos meses fui reiniciando el router para subsanar temporalmente el problema, ya que al poco tiempo volvía a suceder, hasta que el pasado jueves me dio por buscar un firmware más nuevo para este router.

El firmware que tenía era el  2.2.14.a y el que encontré en la página de Sagem es la versión 2.0.20.a, que se puede descargar desde esta página, que tiene un firmware más actualizado que el que se puede encontrar en la web del fabricante.

Para instalarlo seguí las instrucciones que hay en este hilo de ADSL Zone. Básicamente hay que pulsar el botón de reset que hay detrás del router durante unos 10s, ponerse la ip 192.168.2.2 en un PC que esté conectado directamente por ethernet y entrar a la IP 192.168.2.1 donde cargaremos el firmware como “runtime code”. Desde la interfaz standard no es posible cargarlo ya que da error de “File Verification failed”.

Ahora el router va perfecto, todos los problemas se han solucionado, ninguna página se ha quedado a medio cargar ni una vez más, todo va como debe ser, incluso con los clientes p2p el router se porta muy bien.

A veces resulta molesto llegar a casa después de una dura jornada de trabajo y encontrarse con esa pequeña turbina que es nuestro ordenador. La causa del ruido en un PC puede venir básicamente por los ventiladores (cpu, caja, fuente) y por las unidades de almacenamiento (disco duro, lector de cd/dvd). El lector de cd/dvd no suele ser mucho problema, si se usa es sólo un rato. El disco duro puede llegar a ser realmente molesto si hace ruido, yo tengo uno que emite un ruido agudo bastante molesto. Lamentablemente, para el caso de los discos duros la única solución, hasta donde yo sé, es comprarse uno nuevo que no haga tanto ruido.

El caso en el que más podemos trabajar es en el de los ventiladores, aislando el caso de la fuente. Se pueden cambiar los ventiladores de la fuente, sí, pero es una tarea más compleja y engorrosa, que puede terminar con una fuente todavía más ruidosa de lo que era. Aún así, las fuentes actuales no suelen ser muy ruidosas. Para el nuevo servidor que compré hace poco adquirí una fuente de gama baja (la más barata que había) y apenas hace ruido.

Llegamos por último a los ventiladores de la caja y el de la CPU, aunque también existen GPUs con ventilador que también pueden resultar molestos. La mayoría de placas modernas pueden controlar la velocidad de estos ventiladores para reducir su sonoridad cuando no se necesitan. En concreto mi placa soporta el control de velocidad del ventilador de la CPU, el de la caja en principio no lo puede manipular, o almenos en linux no he conseguido hacerlo.

En mi caso por defecto el ventilador siempre estaba girando a la máxima velocidad pero es totalmente innecesario. Si es capaz de girar a 3000rpm, con dejarlo girando a un poco más de 1000rpm no hace nada de ruido y cumple con su trabajo. Además, podemos programarlo para que cuando lo necesite suba un poco más de revoluciones para refrigerar el procesador. Para configurar los ventiladores en linux podemos utilizar el servicio fancontrol, que trae una utilidad llamada “pwmconfig”.

En debian es tan sencillo como hacer “apt-get install fancontrol” y seguidamente ejecutar “pwmconfig”. Si tenéis en ejecución el servicio fancontrol antes debéis pararlo (/etc/init.d/fancontrol stop). Al lanzar esta utilidad, si tenemos soporte para el control de potencia de los ventiladores, podremos realizar una serie de pruebas que permitirán al programa almacenar una correlación entre potencia y velocidad de giro.

En mi caso, el resultado es este:

Correlación entre Potencia y Velocidad de Giro (RPM)

Más adelante te deja configurar intervalos de temperatura, pudiendo decidir a qué velocidad debe girar el ventilador cuando el procesador se encuentre a cierta temperatura. Una vez terminada la configuración, no os olvidéis de lanzar de nuevo el fancontrol (/etc/init.d/fancontrol start).

Yo por ejemplo he puesto que para menos de 40º el ventilador reciba una potencia 80, mirando la gráfica, con esto conseguiremos cerca de 1000 rpm. A partir de 40º y hasta 60º el ventilador girará a unas 1500rpm (potencia 120), y de 60º hacia delante girará a la máxima velocidad. Por cierto, para mirar la temperatura podemos utilizar el comando sensors (apt-get install sensord).

Podría haber puesto un poco más de potencia en el segundo intervalo, pero la cpu que uso se calienta muy poco y tras varias pruebas con cpuburn le cuesta subir de 40º con el ventilador girando a 1500rpm, así que lo he dejado así.

Ya sólo queda el de la caja, pero en mi caso la única solución es desconectarlo, o comprar uno más silencioso. No es buena idea desconectarlo ya que los componentes de la placa también se dañan con el calor, pero tampoco es tan grave, otro de mis pc’s lleva un par de años funcionando sin ventilador de caja y de momento sigue vivo ;)

Hoy en día es bastante habitual tener un segundo PC en casa, un PC que antes fue el principal pero que hoy está anticuado y ha quedado relegado a tareas como servidor web, servidor de backups, ordenador de descargas, router, etc. Yo llevo bastantes años teniendo un PC secundario, corriendo Linux Debian. En concreto tenía un Athlon a 750Mhz y casi 1GB de RAM que cumplía perfectamente las funciones ya mencionadas (backups, descargas, web) y además me permitía tener a mano un PC corriendo una distribución Linux y otro con Windows, ideal para probar todo lo que se te ocurra y tener bastante experiencia en ambos SO.

Pero tenía que ocurrir, un día tenía que llegar su fin. Esperaba que duraría más, hasta que mi PC principal quedara un poco más obsoleto, pero no pudo ser. Hacía un tiempo que el ventilador de la CPU no andaba muy bien, pero aún así seguía funcionando perfectamente hasta que la placa empezó a fallar. Hacía falta encenderlo y apagarlo varias veces hasta que la placa conseguía hacer ese típico pitido que predecía al encendido del monitor.  La placa era una Gigabyte GA-7IXEH, con la cual estaba bastante contento. Aunque seguí utilizando el PC pulsando decenas de veces el botón hasta que conseguía arrancarla conseguí un sustituto, me dieron un HP Vectra VEI8, un PIII a 650Mhz. Tuve un par de problemas, la caja era demasiado pequeña, no cabían los 4 discos duros que tenía, así que tuve que cambiar la placa a la otra caja y una cosa que no me había pasado nunca, sólo me cogía la mitad de RAM de cada módulo. Es decir, si le ponía un módulo de 512 la placa me detectaba 256. Buscando un poco de información descubrí que esta placa no soportaba las memorias de alta densidad y sólo detectaba la mitad de la RAM disponible. ¡Bien! tenía un pc más viejo, más lento y con menos RAM que el anterior. Pero bueno, podría servirme de momento.

No duró mucho, al poco tiempo empezó a dar problemas, a quedarse clavado, a no arrancar. Investigando un poco por los foros de HP vi que esa placa tenía muchos problemas con los condensadores y los más manitas acababan reemplazándolos por otros. Sólo me quedaba una opción para salvar todas las piezas que tenía (gráficas, bastante ram, cpus…), adquirir una placa de segunda mano. Encontré algunas pero tenía que desplazarme un poco lejos y las que encontraba cerca me obligaban a comprar una fuente nueva o ram nueva. Como ya llevaba unos días sin el viejo PC y perdiendo el tiempo mirando foros, páginas de compra venta, montando y desmontando componentes decidí no perder más tiempo y mirar un PC nuevo, barato, económico, que no me diera más quebraderos de cabeza.

Aunque pensé en renovar mi PC actual y dejarlo como servidor decidí no hacerlo, pues creo que aún le queda un tiempo de vida a este PC y tengo piezas que adquirí no hace mucho que no quiero desperdiciar.

Así que manos a la obra, a comprar un PC económico. Una Placa Base, una CPU, RAM, una caja, fuente alimentación y aunque yo no tuve que comprarlo, incluiré un disco duro que unas semanas antes había comprado para mi PC principal. Todo ello por menos de 200€.

Placa Base: Tenía que tener GPU y Audio integrado. Al principio me llamaba la atención una placa base con un procesador Intel Atom integrado. Ahí ya lo tenía casi todo. Placa, GPU, CPU, Audio, sólo tenía que comprar un módulo de RAM y ya tendría un PC. Podría haber aprovechado la caja y fuente de alimentación que ya tenía y hubiese tenido de nuevo un PC. Pero después de mirar algunas reviews sobre el procesador (aquí otra) no me convenció mucho, iba a tener un procesador nuevo pero que rendía muy poco, y realmente no estaba necesitando tan bajo consumo de corriente. Además, van a salir nuevos Atom con doble núcleo, así que creo que estas CPUs aún están un poco verdes (incluso los de doble núcleo son algo lentas). No quería un PC potente, pero tampoco algo “del pasado”. Ojo, me parece una genial opción para hacerte un PC sin ruidos, que “gaste” poco, pero creo que por un precio similar puedes conseguir algo que rinda mucho más. En alguna de las reviews que estuve mirando apareció el Athlon LE, una CPU también de bajo consumo, no tanto como el Atom, pero mucho más potente, y además no va acoplado a la placa, así que puedes actualizarte de cpu si algún día lo necesitas. Así que finalmente me decidí por una placa Gigabyte GA-MA69VM-S2, de tamaño mATX, con una gráfica Radeon X1200, 10 puertos USB, 4 SATA2, hasta 16GB de RAM, 1 PCI-E, 2 PCI. Todo ello por 45.24€. Más información en la web del fabricante.

CPU: Como ya he explicado, me acabó gustando el Athlon LE, un procesador con una buena relación calidad/precio/consumo. Esta CPU almenos es capaz de reproducir vídeo HD sin ningún problema. Iba a cogerme el Athlon LE 1620 a 2.4Ghz pero como la diferencia entre este y el modelo siguiente era de apenas un par de euros cogí el LE1640 a 2.6Ghz, por 38.28€. En total hasta ahora 82.52€, a diferencia de los 75€ del Atom. Con 7€ más tenía una máquina mucho más superior.

RAM: No tengo ninguna necesidad especial, así que me cogí solamente 1GB de RAM DDR2. Lo curioso es que me dieron una RAM mucho más pequeña de lo normal, no las había visto hasta ahora. El precio, 15.65€

Fuente: Tampoco tenía ninguna necesidad especial. Una fuente genérica, 13€. La mia no servía porque era de 20 pines, y esta placa necesita una fuente de 24 pines.

Caja: Ya que me cogía una placa mATX me hizo gracia coger una caja nueva, un poco más bonita que la que tenía. Se trata de una Asus Vento TM-9, por 40.6€

Disco Duro: No me compré ningún disco duro para este PC porque ya tenía, pero para completar el PC, por si alguien quiere hacerse uno similar,sugiero un disco SATA2 de almenos 320GB, que podéis conseguir por unos 40€.

Si lo sumamos todo: Placa (45.24€) + CPU (38.28€) + RAM (15.65€) + Fuente (13€) + Caja (40.60€) + Disco Duro (40€) tenemos un PC completo (sin monitor, ni ratón, ni teclado, claro) por 192.77€

Todo, excepto la fuente de alimentación y el disco duro, fue comprado en una Life Informática, en Barcelona.

Buzzear 4.0

5 Agosto, 2008

Acabamos de lanzar la cuarta versión de Buzzear, con multitud de novedades que podéis ver en el post de inauguración, pero que os resumo a continuación:

  • Nuevo diseño
  • Posts destacados en la home
  • Imágenes en los posts
  • Nuevos bloques como las imágenes del día, lo último y enlaces del día.
  • Archivo navegable por años y meses
  • Buscador mucho más rápido y útil

Además de otros pequeños detalles, así que os recomiendo que visitéis la nueva versión de Buzzear y si aún no tenéis el sitio agregado, ¡id directamente a la sección de sugerir blog!

Esto es lo que aparecía en la máquina de venta de billetes de metro el pasado 11 de diciembre.

Arranque del sistema de venta del metro

Si ampliamos la imagen (¡sorry por el flash!) veremos que para vender billetes de metro necesitamos como mínimo:

Un Pentium M a 1.6Ghz. Eso sí, que sea M, que consuma poco y 504MB de RAM (sí, 504).

No estaría mal también añadirle una buena tarjeta gráfica para dotar de entornos 3D a las máquinas de venta de billetes :)

 

Suspendiendo procesos

23 Octubre, 2007

No… no se trata de ponerles mala nota a los procesos, se trata de pausar momentáneamente la ejecución de un proceso y reanudarla más tarde.

Esto puede ser útil en varios casos:

  • Uno de tus programas empieza a hacer “trashing” y necesitas realizar alguna acción urgente con el PC.
  • Tienes una aplicación que lleva 5h realizando cálculos, pero que usa el 100% de tu CPU y necesitas pausarlo para realizar otras acciones.
  • Estás compilando una aplicación y no quieres tener que parar el proceso para ponerte ha jugar (te ha entrado mono ;)

Y cualquier otra situación que se te ocurra, la idea es siempre la misma, pausar un proceso que consuma muchos recursos para realizar otras tareas que necesitan menos tiempo, pero necesitan ejecutarse AHORA.

En linux podemos suspender un proceso mediante dos sencillos métodos.

Con kill:

kill -STOP PID

Por ejemplo:

#kill -STOP 39584

Para continuar con la ejecución:

kill -CONT 39584

Otro método es utilizando ctrl+z, si estás ejecutando el programa en la shell actual. Verás que aparece algo como:

[1]+  Stopped                 top

Para recuperarlo tan sólo tienes que ejecutar el comando “fg”.

Esto también es posible en sistemas windows, pero necesitaremos una aplicación adicional. Hay varias, pero una llamada de forma original como “Command Line Process Viewer/Killer/Suspender” está bastante bien y es gratuita.

Lanzado Buzzear España

6 Agosto, 2007

Ya está disponible la versión Española de Buzzear. Acabamos de empezar con esta versión así que tenemos pocos Blogs en nuestro directorio. Ayúdanos a hacer grande el directorio. ¡Añade tu Blog a Buzzear España!

Nota oficial sobre el lanzamiento de Buzzear España en el Blog de Buzzear.