Programación y sistemas

Icono del ide de Selenium en Firefox

Integración continua: Instalando la herramienta Selenium para ejecutar test funcionales

0

Selenium (http://www.seleniumhq.org/) es un conjunto de herramientas que permiten automatizar ciertas acciones en los navegadores. Esta automatización nos permite crear test funcionales, para probar formularios, enlaces, etc., tareas muy repetitivas y muy poco agradables de llevar a cabo.

Si lo único que necesitas es saber como crear y automatizar en local los test funcionales puedes usar el plugin de Firefox que explico en el apartado «Creando los test funcionales».

(más…)

Digital Ocean, servidores privados virtuales con discos SSD

0

Es curioso cómo ha avanzado el alojamiento web en los últimos diez años: de pasar a ofertas de hostings y servidores dedicados desatendidos o no, a disponer de una amplia oferta en la que tú decides cuántos núcleos del microprocesador quieres tener, cuanta RAM, cuanto espacio de almacenamiento, etc.

Si nos retrotraemos, podremos ver como la virtualización ha cambiado completamente la forma de ver y entender tanto el negocio del alojamiento web, como el desarrollo y despliegue de aplicaciones web.

Aplicaciones. Cuando yo empecé a programar eran páginas web o sites. Hasta el vocabulario que usamos en el día a día no está exento de evolución.

Nos profesionalizamos.

Y esa profesionalización implica adaptarse a los nuevos cambios, ya que o evolucionas o te extingues.

(más…)

Cron Job WordPress

Cómo remplazar el cron de WordPress con un cron job real

0

Es posible que alguna vez hayas programado un post para ser publicado en un momento del día concreto y cuando has entrado a tu blog has visto como el post aun no se había publicado. Esto es algo que puede ocurrir de forma habitual, y puede resultar muy frustrante, además de perder una oportunidad de obtener las visitas que se esperaba tener al programar la publicación del post a una hora concreta.

Para comprender por qué ocurre, necesitamos saber que el WP-Cron no es un cron job real. De hecho es un cron virtual que solo se ejecuta cuando una página se carga (por ejemplo cuando accede un usuario al blog o a una página o post). Esta forma de ejecutar el cron virtual tiene un problema de rendimiento si tienes muchos eventos que ejecutar, o tardan demasiado en terminar.

(más…)

Integración continua: Instalar y configurar nuestra máquina virtual con VirtualBox, por consola

2

Este post veremos como crear una máquina virtual utilizando el software de virtualización VirtualBox. Esta máquina nos permitirá automatizar la configuración inicial de los proyectos (creación de bases de datos, configuración de crms, etc.). Además nos permitirá poder realizar test funcionales y otras tareas que nos ahorrarán gran cantidad de tiempo.

(más…)

Integración continua: Automatizando la descarga del código fuente de WordPress, Drupal, etc. y sus plugins, módulos y temas

0

Antes de mejorar la automatización de la creación de los repositorios que vimos en el post Integración continua: Automatizando la creación de repositorios con Git y Subversion para poder crear proyectos en WordPress, Drupal, Symfony, o cualquier otro cms o framework, primero necesitamos obtener el código fuente, creando en nuestro servidor una pequeña biblioteca de código fuente desde la que copiaremos lo que necesitamos para los proyectos.

En esta biblioteca guardaremos el código fuente de los cms y frameworks que usemos, además de los módulos, plugins, bundles y temas que utilicemos habitualmente.

(más…)

Gráfico de datos estructurados

Corregir los errores de microformatos en WordPress

0

Como ya os comente en otro post, estoy haciendo una actualización del tema Mystique, el cual lleva sin actualizarse cerca de dos años. Esto me ha llevado a descubrir algunos fallos en el tema que hay que corregir. Uno de ellos es un problema con los microformatos.

Al utilizar la herramienta para Webmaster de Google, en la sección «Aspecto de la búsqueda«, apartado «Datos estructurados» nos aparecerá algo como lo de la siguiente imagen:

Gráfico de datos estructurados

Gráfico de datos estructurados

(más…)

Integración continua: Automatizando la creación de repositorios con Git y Subversion

0

La automatización de procesos es una de las tareas esenciales en integración continua, ya que permite estandarizar los procesos (que siempre sean iguales) y ahorrar muchísimo tiempo en el desarrollo de los proyectos.

Lo primero que vamos a automatizar es la creación de repositorios. Para ello vamos a utilizar un script en Bash para poder ejecutarlo en consola a través de ssh. Es posible crear algo parecido con otros lenguajes de programación y además, con una interfaz web que facilite la gestión; pero de momento vamos con lo más básico.

(más…)

Integración continua: Metodologías y convenciones

0

Ahora que ya tenemos gran parte del software instalado, vamos a tratar algo un poco más aburrido, pero necesario: las Metodologías.

Una metodología en programación, es el conjunto de métodos que se utilizan para llevar a cabo un desarrollo. Estos métodos se acuerdan y/o definen antes de empezar un proyecto. Y van desde la organización de la estructura del proyecto, al despliegue y futuro mantenimiento, pasando por el reparto de tareas, las reuniones de producción, etc.

Muchas de estas tareas ya están integradas en metodologías ágiles como XP o Scrum, que seguro conoceréis. Si por el contrario, no conocéis estas metodologías, os recomiendo la lectura de los dos enlaces anteriores, y a partir de ahí la lectura de varios libros.

No os voy a recomendar ninguna metodología, ya que es algo personal y que cada uno debe estudiar cuál es la más conveniente para sus proyectos o empresa.

Las convenciones son un conjunto de reglas aceptadas por los desarrolladores, que, por ejemplo, permiten que el código tenga siempre la misma estructura independientemente de quién haya programado qué. Aquí entrarían los Coding Standards de los que hablamos en otro post.

Dentro de las convenciones también se acuerdan las versiones que tendrá el proyecto, las ramas del repositorio, la estructura de directorios del proyecto, etc. Infinidad de detalles que permiten que podamos trabajar en equipo sabiendo que todo sigue las mismas reglas, de esta forma ahorramos muchísimo tiempo.

Una vez que se dispone de una metodología y/o un conjunto de convenciones definidas podremos aplicarlas a todos los proyectos que vayamos desarrollando. Pero para evitar tener que hacerlo a mano, podemos automatizar todo el proceso, desde la creación del repositorio hasta la elección de los plugins o módulos del CMS que elijamos (o el framework).

Tema Mystique para WordPress provoca el error child pid XXXXX exit signal Segmentation fault (11)

0

Estoy seguro que conoceréis este tema para WordPress, el cual fue uno de los más valorados hace ya algunos años, de hecho este blog lo usa actualmente, aunque por desgracia la empresa que lo desarrolló lleva varios años sin mantenerlo, y eso provoca que aparezcan errores que antes no aparecían, por culpa de los avances en otras aplicaciones de las que depende este tema, como en nuestro caso, de PHP.

Bien, voy al grano: Hace varias semanas cambié el blog de servidor y de pronto, al entrar en un post, el blog se quedaba en blanco. No se mostraba contenido. Y en Chrome aparecía el error: ERR_INCOMPLETE_CHUNKED_ENCODING. Estoy seguro, que si te ha pasado, habrás exclamado la misma frase que yo: ¿Pero que coño es eso?.

Mirando los logs del blog, encontré el error: child pid XXXXX exit signal Segmentation fault (11), a lo que exclamé la misma expresión anterior, pero añadiendo un «¡Ostia puta!» al principio.

El segundo error es el importante. Es el que nos dice que algo se ha jodido en PHP. Pero… ¿Por qué? y lo más importante ¿El qué?.

Después de muchas pruebas, vi que el error se estaba generando en el tema Mystique, y más concretamente en la plantilla single.php.

Indagando más sobre el código conseguí llegar a la fuente del problema: cuatro putos ampersand (&) de los cojones que me han jodido un fin de semana entero con la tontería. El error es debido a la versión de PHP. En el servidor anterior era la 5.2, y en el actual es la 5.4.

 

Solución

Os explico la solución que es bastante sencillita:

En los archivos atom-core.php y AtomObjectPost.php busca la función «separate_comments», te deben aparecer dos resultados en cada archivo. Verás que delante de la función tiene un ampersand (&), elimínalo (con voz de El Padrino: «Que parezca un accidente»). Y con el resto de resultados igual. Guarda y solucionado.

Integración continua: Instalación de Subversion y Git

0

Hoy vamos con algo que supongo ya conoceréis, pero que para esta guía es imprescindible: Los repositorios.

Los repositorios, dicho de una forma sencilla: es un lugar donde guardar y mantener un histórico de los cambios que se realizan en el software o proyecto en el que estás trabajando. De momento solo me centraré en su instalación y en una pequeña configuración que será necesaria para lo que aun queda de esta guía.

 

Instalación de Subversion

Instalar los paquetes necesarios

apt-get install subversion libapache2-svn subversion-tools

Los repositorios los guardaremos en el siguiente directorio:

/var/repos

Se utilizará la url svn.ic.net para obtener los repositorios. Para ello hay que añadir un virtualhost con la siguiente información (etc/apache2/sites-enabled):

ServerName svn.ic.net
DocumentRoot /var/www/svn.ic.net

<Directory />
     Options FollowSymLinks
     AllowOverride None
</Directory>
<Directory /var/repos>
     Options Indexes FollowSymLinks MutiViews
     AllowOverride None
     Order allow,deny
     allow from all
</Directory>

Añadir el dominio al archivo /etc/hosts, si no el sistema devolverá un 200 OK pero no se podrá trabajar con el repositorio.

Todos los repositorios se deberán añadir a este archivo utilizando los tags <Location></Location>, ejemplo:

<Location "/mediawiki">
        DAV svn
        SVNPath /var/repos/mediawiki
</Location>

También se pueden añadir los repositorios en archivos separados en /etc/apache2/repos e incluirlos dentro del virtualhost de svn.ic.net, añadiendo la siguiente línea:

Include /etc/apache2/repos

 

Instalación de Git

Para instalar Git ejecuta el siguiente comando:

apt-get install git

El virtualhost que usaremos será el mismo que el de Subversion, con lo que no tenemos que hacer nada más con git.

Ir arriba