blog del equipo de tecnología de 11870.com

Convertir vídeos en H.264 para dispositivos sin flash en Ubuntu

La versión de ffmpeg que viene por defecto en los repositorios de Ubuntu no tiene soporte para x264, así que tenemos que compilar este programa desde el código fuente.

Los pasos básicos son los siguientes:

Instalar las dependencias

sudo apt-get remove ffmpeg x264 libx264-dev
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
Instalar x264

cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall –pkgname=x264 –pkgversion “2:0.`grep X264_BUILD x264.h -m1 | cut -d’ ‘ -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`” –backup=no –default
Instalar FFmpeg

cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure –enable-gpl –enable-version3 –enable-nonfree –enable-postproc –enable-pthreads –enable-libfaac –enable- libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libx264 –enable-libxvid –enable-x11grab
make
sudo checkinstall –pkgname=ffmpeg –pkgversion “4:SVN-r`svn info | grep Revisión: | awk ‘{ print $NF }’`” –backup=no –default
hash x264 ffmpeg

Parámetros de conversión

Los parámetros recomendados y usados para convertir los vídeos bajo el contenedor mp4 compatible con dispositivos sin flash (toda la gama de dispositivos Apple) dependen del dispositivo al que van destinados, por lo que os dejamos algunos enlaces interesantes sobre el tema:

Un buen conjunto de parámetros de conversión de cara a visionar vídeos en un Ipad puede ser este:

ffmpeg -y -i ficheroentrada -acodec libfaac -ar 48000 -ab 128k -ac 2 -vcodec libx264 -b 500k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 1 -refs 5 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 500k -maxrate 500k -bufsize 500k -rc_eq ‘blurCplx(1-qComp)’ -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 480:360 -r 30 -g 90 -async 2 -threads 4 ficheroSalida

En este  caso se usan 4 hilos de procesos aprovechando las 4 cpus de la máquina con el parámetro threads 4, el cual se debe ajustarse al número de cpus de la máquina.

Los vídeos convertidos se pueden reproducir mediante HTML5 pero debido a la guerra de formatos que ha iniciado Google y ha secundado Mozilla, en el navegador Firefox no se soporta de forma nativa, siendo necesario un plugin para su correcta visualización. El plugin en cuestión es para los usuarios de Firefox sobre Windows y se puede instalar desde aquí http://www.interoperabilitybridges.com/wmpff/wmpff.1.0.xpi

Tags: , ,

Trac; Gestor de seguimiento de proyectos de desarrollo

Hoy os presentamos un gestor de proyectos que destaca por su sencillez y utilidad en desarrollos ágiles; Trac.


Escrito en Python y con compatibilidad con los motores de bases de datos más usados(PostgreSQL, MySQl, sqlLite…) y con servidores web como  Apache y todos los compatibles con ajp y fastcgi.

Asimismo se integra a la perfección con Subversion 1.5 y 1.6

Para realizar una instalación estándar con MySQL como base de datos y Apache como servidor web mediante  AJP podemos seguir los siguientes pasos:

  • Bajarse la última versión estable de la página del proyecto
  • Tener instalados los siguientes paquetes:
  • Descomprimir las fuentes:
$ tar zxvf Trac-0.12.2.tar.gz
  • Ejecutamos la instalación:
$ python ./setup.py install
  • Creamos la base de datos, comprobamos que tenga el character-set UTF8 y le damos permisos a un usuario para administrar la base de datos

mysql> CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

Query OK, 1 row affected (0.00 sec)
mysql> use trac;

Database changed

mysql> SHOW VARIABLES WHERE variable_name IN (‘character_set_database’, ‘collation_database’);

Variable_name          | Value    |

character_set_database | utf8     ||

collation_database     | utf8_bin |

2 rows in set (0.05 sec)
mysql> GRANT ALL ON trac.* TO tracuser@localhost IDENTIFIED BY ‘xxxxxxxx’;

Query OK,0 rows affected (0.16 sec)

  • A continuación se crea el proyecto en Trac
$ trac-admin /home/proyectoTrac/ initenv

Creating a new Trac environment at /home/proyectoTrac
Trac will first ask a few questions about your environment in order to initialise and prepare the project database.
Please enter the name of your project. This name will be used in page titles and descriptions.
Project name [My Project]> Prueba

Please specify the connection string for the database to use. By default, a local SQLite database is created in the environment directory. It is also possible to use an already existing PostgreSQL database (check the Trac documentation for the exact connection string syntax).
Database connection string [sqlite:db/trac.db]> mysql://tracuser:password@localhost/trac

Tras esto se creará el proyecto en Trac y podremos probar que todo ha ido bien arrancando el servidor ligero en el puerto deseado, por ejemplo:

$ tracd --port 8000 /home/proyectoTrac

Con lo que se arrancará en el puerto 8000 el servidor ligero escrito enPython de Trac.

Si todo ha ido bien veremos un listado de los proyectos creados.

Para que Apache sea quien sirve la página la manera más sencilla es mediante AJP.

Asi pues configuraremos un virtual host de la siguiente manera:
<VirtualHost 10.234.213.66:80>

ServerName trac.xxxx.es

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://127.0.0.1:8000/

<Location />

ProxyPassReverse http://127.0.0.1:8000/

</Location>ProxyPreserveHost On

</VirtualHost>

Pero seguramente querremos tener usuarios para llevar un control de las incidencias y táreas de cada usuario y asignar permisos.

Una manera sencilla de realizar esto es mediante la autenticación básica de Apache, por lo que crearemos un fichero de autenticación de la siguiente manera:
$ htpasswd -cm /path/to/env/.htpasswd username
De esta manera con el parametro -c creamos el fichero(si existe sobreescribe toda su información) y con -m ciframos el password. Para añadir nuevos usuarios ejecutaremos el comando sin -c para que no machaque los usuarios ya creados. Ahora sólo resta arrancar el servidor con la opción –basic-auth y los parámetros correctos
$ tracd -s –port 8000 –basic-auth=”carpetadelproyecto,ficherohtpassword” directoriodondeestanlosproyectos
Arrancamos Apache y podremos acceder a través del puerto 80 con autenticación båsica. Es imprescindible leer la completa documentación disponible para entender y configurar a nuestra medida Trac En próximas entregas ahondaré en la gestión del workflow de los proyectos y sus tareas

Tags: , , , ,

Howto Apache: Mantenimiento de servidores y SEO

Leyendo el blog para webmasters de Google, hemos encontrado una de esas pequeñas buenas ideas de cara a realizar una parada de mantenimiento en una web que se sirva mediante Apache como servidor web.

Normalmente se coloca otra página de inicio y un mensaje de error personalizado para los errores que se producen al intentar visualizar páginas mediante accesos directos de los usuarios por ejemplo.

El problema de esta técnica de cara a los robots de indexación como Google es que estas peticiones mientras se está de mantenimiento devuelven errores 404 o 200, provocando una penalización en las búsquedas posteriores al entender el buscador que el sitio no funciona correctamente.

Mediante el error 503 se lanza un aviso al buscador sobre dicha situación de mantenimiento e incluso se puede indicar cuando se puede volver a escanear el sitio, cuando el mantenimiento haya acabado.

Reseñar que durante el tiempo que tengamos esta configuración activa  todas las peticiones que no excluyamos en la configuración lanzarán un error 503, por lo que excluiremos la pagina que mostraremos durante el mantenimiento así como las imágenes y css que emplea dicha página.

Esto llevado a la práctica se puede realizar con un sencillo .htaccess o en la propia configuración del virtualhost que dejamos durante el mantenimiento.

<IfModule mod_rewrite.c>
ErrorDocument 503 /503.html -> pagina que se mostrara durante el mantenimiento
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/503\.css$ ->Excluimos de la reescritura   el css que usa la página de mantenimiento

RewriteCond %{REQUEST_URI} !^/503\.png$ ->Excluimos de la reescritura   la imagen  que usa la página de mantenimiento
RewriteCond %{DOCUMENT_ROOT}/index.html -f
RewriteCond %{SCRIPT_FILENAME} !index.html ->Excluimos de la reescritura   la pagina que mostraremos
RewriteRule ^.*$  -  [redirect=503,last]
->Indicamos el error 503 a la petición
# Segundos de espera hasta la proxima comprobacion del buscador
<IfModule mod_headers.c>
Header set Retry-After: 36000
</IfModule>
</IfModule>

Los módulos que deben estar activos como ya habréis deducido   que son:

¡Buen mantenimiento!

Tags: , , ,

Programador iOS

Buscamos una persona con experiencia programando sobre iOS.

Su responsabilidad será evolucionar y mantener la actual aplicación de 11870 para iPhone y explorar las posibilidades de presencia de 11870 en la plataforma iOS. Queremos a alguien que haya desarrollado alguna aplicación accesible en la app store, que tenga conocimientos de Atom y Atom Publishing Protocol.

Ofrecemos un contrato indefinido por 30.000€ bruto/año

Si crees que encajas envíanos tu CV a soyesapersona arroba 11870 punto com.

Buscamos sysadmin

Buscamos una persona para nuestro equipo de sistemas. Colaborará tanto en la administración de una red interna y soporte a sus usuarios como en la administración y mejora de nuestro entorno de producción.

Pedimos:

  • Administración GNU/Linux, preferible Ubuntu o Debian
  • Administración de MySQL
  • Servidores de aplicaciones Java, preferible JBoss
  • Administración de Apache
  • Scripting bash y python

Queremos a alguien que sepa qué está ocurriendo ahora y que quiera participar en lo que ocurrirá mañana. Si crees que encajas envíanos tu CV a soyesapersona arroba 11870 punto com.