Cómo llamar al método de una clase con una variable en PHP

Llevo un tiempo currando con Symfony y, hasta ahora, no me habí­a encontrado nunca con el problema de llamar a una clase a través de una variable. El problema me surgió ayer al querer refactorizar unas funciones y tener que llamar a una clase determinada, que tení­a guardada en una variable.

Después de tirarme un buen rato buscando algíºn tipo de sintaxis que funcionara para hacer algo como $clase::metodo(), fui a donde debí­a haber ido desde el principio, a la web de PHP, donde me enteré que hasta la próxima versión 5.3.0 no será posible llamar a los métodos de esa forma. Una posible solución que encontré, por si alguien lo necesita alguna vez (yo mismo, por ejemplo :D), es utilizar la función call_user_func de la siguiente forma:

call_user_func(array($clase,'metodo'), $parametros);

Broken Sword 2.5

Ayy las aventuras gráficas… qué gran género, cuántas horas he pasado delante del ordenador disfrutando con las historias de los juegos de Lucasarts o Sierra (gran Roger Wilco, ¿eh, bisente? :D )

Broken Sword 2.5 retoma la historia de Broken Sword, una de las íºltimas aventuras gráficas decentes que se hicieron. Lo podéis descargar gratuitamente desde los enlaces de su web (los que han desarrollado el juego son fans de las aventuras gráficas: eso sí­ son fans de verdad :D). En principio sólo está para Windows, aunque puede que hagan ports a Mac y Linux. Por tanto, de momento, los que no utilizamos el sistema de Microsoft tendremos que conformarnos con jugarlo utilizando Parallels, VMWare, VirtualBox o cualquier cosa parecida.

Historia de los videojuegos

Si eres un veterano en esto de los ordenadores, sabes lo que es un Spectrum ZX, un Amstrad, un Commodore, un MSX… y estuviste enganchado a más de un juego, tipo Tetris, Donkey Kong… no te pierdas este documental. 45 minutas de revival, de historias poco conocidas, de recuerdos de noches delante del ordenador ¡sin internet!

45 minutos imprescindibles. Como dicen en VidaExtra, donde lo he visto, esperemos que haya una segunda parte con, entre otras cosas, la época dorada de los videojuegos en España y los cientos de grandes tí­tulos que aquí­ se desarrollaron.

Cómo escuchar la línea de entrada en un Mac con Leopard

Esta mañana me he montado el chiringuito en el despacho para pinchar un rato con el Mac. Hasta ahora siempre lo habí­a hecho con el PC, así­ que hoy que no tení­a muchas que hacer, he aprovechado y he probado con el MacBook. Y me he encontrado con un problema, una tonterí­a, que comento por si alguien se encuentra con la misma chorrada algíºn dí­a :D

El tema es que si conectas una señal de audio a la entrada de lí­nea del Mac, no puedes escucharla. Sí­, así­, como lo lees :D Puedes grabarla con cualquier programa, pero no puedes escucharla directamente, es decir, si entra sonido por la entrada, que se oiga por la salida.

Después de pegar mil vueltas por la configuración del sonido y no encontrarlo (porque no me creí­a que no existiera esa opción) he tenido que recurrir a LineIn. Mano de santo: tan fácil como ejecutarlo y pulsar “pass thru” para que desví­e la entrada estándar de sonido a la salida estándar.

[spanish]Instalando ffmpeg en CentOS 5[/spanish][english]Installing ffmpeg on CentOS 5[/english]

[spanish]Esta mañana he tenido que instalar ffmpeg en un servidor dedicado, del cual no sabí­a nada excepto las contraseñas para entrar.

Ayer os contaba cómo generar un pantallazo de un ví­deo .flv. El problema después ha venido con el servidor: no tení­a ffmpeg instalado. Lo primero ha sido saber que distribución de Linux estábamos utilizando en el servidor, para lo cual tenemos varios comandos que nos pueden ir dando información:

cat /proc/version
cat /proc/issue
cat /etc/redhat-release
uname -a 
uname -i

Gracias a estos comandos, he conseguido saber que el servidor tení­a instalado CentOS 5, en versión de 64 bits (x86_64 en “uname -i”, por ej.)

Después, para no cargarme nada en el servidor, he instalado yum-priorites siguiendo esta guí­a del wiki de CentOS, que reproduzco a continuación:

yum install yum-priorities

Tras lo cual nos aseguramos editando el fichero /etc/yum/pluginconf.d/priorities.conf y viendo que está

enabled=1

Una vez tenemos el plugin de yum para prioridades instalado, editamos los repositorios de yum en /etc/yum.repos.d añadiendo la lí­nea

priority=N

siendo N igual a 1 en los modulos [base], [addons], [updates] y [extras], igual a 2 en [centosplus] y [contrib], e igual a 10 en los nuevos repositorios que añadiremos a continuación. Lo que conseguimos con las prioridades es que los paquetes que instalemos de un repositorio externo (el del ffmpeg) no actualicen otros paquetes ya instalados desde los repositorios “oficiales”, y de esta forma evitar cargarnos nada importante en el servidor.

El siguiente paso es añadir el repositorio rpmforge de Dag, en el cual estará ffmpeg. Para hacerlo, primero nos bajamos el rpm correspondiente a nuestra distribución y arquitectura, en nuestro caso CentOS5 y x86_64. Después importamos la clave GPG del repositorio de Dag, comprobamos que el paquete bajado es correcto y lo instalamos:

wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -K rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -i rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Ya tenemos instalado el repositorio rpmforge. Editamos su fichero en /etc/yum.repos.d para añadirle

priority=10

y que, como hemos dicho antes, tenga menos prioridad que los repositorios oficiales y no actualice nada “especial”.

Ya sólo nos queda instalar ffmpeg mediante yum:

yum install ffmpeg

[/spanish]
[english]
Today I’ve had to install ffmpeg on a dedicated server, which I knew nothing except the user and password to login.

Yesterday I wrote you about how to generate a .jpg thumbnail from a .flv video. The problem has come with the server: it hadn’t ffmpeg installed. First I’ve done is to find out what Linux were we using, with some of these commands:

cat /proc/version
cat /proc/issue
cat /etc/redhat-release
uname -a 
uname -i

Thanks to these commands, I’ve founded out we had CentOS 5, with 64 bits (x86_64 with “uname -i”, for examle).

Afterthat, to keep safe the server, I’ve installed yum-priorites following this CentOS HowTo:

yum install yum-priorities

Then, we make sure yum-priorities is enabled by looking at /etc/yum/pluginconf.d/priorities.conf :

enabled=1

Now we have yum-priorities installed and enabled, so now we edit /etc/yum.repos.d repositories adding this line:

priority=N

where N equals 1 on [base], [addons], [updates] and [extras] modules, equals 2 on [centoplus] and [contrib], and equals 10 on new repositories we’ll add later.

Now we have to add Dag’s rpmforge repository, where ffmpeg will be downloaded from. First, we download the rpm according to our distribution and architecture, in this case, CentOS 5 and x86_64. Second, we import Dag’s GPG key. Third, we verify the downloaded package. And fourth, we install the rpm:

wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -K rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -i rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Rpmforge is now installed. Next step is to edit his /etc/yum.repos.d file to add

priority=10

Now, we are sure we won’t crash our server with rpmforge updates.

The final step, to install ffmpeg with yum:

yum install ffmpeg

[/english]