Estas en: Home > código

Entradas etiquetadas con código

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…)

Integración continua: PHP Depend, realizando métricas de nuestras aplicaciones

0

PHP Depend es una aplicación derivada de JDepend para Java, que genera una serie de gráficos de nuestras aplicaciones para poder realizar un seguimiento sobre la calidad de nuestro software. Para que te hagas una idea, esta aplicación nos permite saber la complejidad de un método, a través de la suma de sus estamentos (if, for, etc.), este dato, comparado con el resto del código, nos permite saber si un método está optimizado o es demasiado complejo y habría que factorizarlo.

Veamos como se instala.

Para instalar PHP_depend primero es necesario que PEAR descubra el canal desde donde se descargará la aplicación.

pear channel−discover pear.pdepend.org

A continuación mostramos una lista de los paquetes disponibles:

pear remote−list −c pdepend

Instalamos:

pear install pdepend/PHP_Depend

Es necesario instalar algunos paquetes más. Primero indicamos a PEAR que descubra el siguiente canal:

pear channel−discover pear.xplib.de

A continuación instalamos el siguiente paquete:

pear install xplib/PHP_CodeSniffer_CommentParser2−0.1.5

Que es necesario para instalar el siguiente paquete:

pear install xplib/PHP_CodeSniffer_Standards_Zeta−0.2.0

Que también es necesario para instalar el siguiente paquete:

pear install pdepend/PHP_CodeSniffer_Standards_PDepend2

Por último instalamos un paquete que se comunicará con el issue tracker (o eso indica):

pear install pdepend/PHP_Depend_Log_Arbit

Para probarlo podéis ejecutar este comando desde la consola:

pdepend −−summary−xml=/tmp/summary.xml −−jdepend−chart=/tmp/jdepend.svg −−overview−pyramid=/tmp/pyramid.svg /usr/local/share/pear/PDepend

Os generará varios gráficos y un archivo xml del código de la misma herramienta, pdepend.

Integración continua: phpcpd, detectando el código duplicado

0

PHPCPD es una aplicación que nos permite detectar fragmentos de código duplicado o muy parecido, de tal forma que podamos optimizarlo creando métodos o funciones que eliminen esa duplicidad.

Su instalación es simple:

pear channel−discover pear.phpunit.de
pear channel−discover components.ez.no
pear channel−discover pear.symfony.com
pear channel−discover pear.netpirates.net
pear install phpunit/phpcpd

Para ejecutar usamos:

phpcpd −−log−pmd ruta−donde−se−guardará−el−resultado−del−analisis/cpd.xml directorio−o−archivo−a−analizar
Optimización de WordPress

WP-SynHighlight, plugin para insertar código en tus post

4

Llevaba unos días buscando un plugin que me permitiese añadir trozos de código fuente en los post sobre programación, ya que el que tenía debía trabajar en la vista HTML y, la verdad, es un engorro. Así que buscando y buscando encontré este plugin que permite escribir código fuente en el editor visual.

Este plugin, al igual que la mayoría que permiten añadir código fuente a los post, está basado en Geshi, que es el responsable de procesar el código y darle el formato deseado.

Su instalación es igual que la de cualquier otro plugin de WordPress, pero lo interesante de este plugin es que dispone de un editor visual para añadir el código fuente, donde podrás cambiar muchos aspectos de como se visualizará el código.

Además permite añadir código fuente en los comentarios utilizando para ello los QuickTags de la siguiente manera:

Si quisiéramos añadir código PHP a un comentario escribiríamos lo siguiente:

[*codesyntax lang=»php»]

<?php echo «Hello World!»; ?>

[*/codesyntax]

Eso sí, sin los asteriscos. Así quedaría el fragmento de código:

[codesyntax lang=»php»]

<?php echo «Hello World!»; ?>

[/codesyntax]

 

Geshi permite añadir código de una gran cantidad de lenguajes. Podeis ver un listado en su página principal: http://qbnz.com/highlighter/index.php

Symfony: La vista (I), fragmentos de código

0

Debido a que la parte de Symfony que explicaré hoy es bastante densa no podré resumir en un solo post todo el capítulo referente a la Vista, por tanto este será el primero de una serie de post sobre la Vista en Symfony que se explica en el manual de Symfony.

La vista

Como ya he comentado en anteriores post, Symfony sigue el sistema de Modelo-Vista-Controlador (MVC) para que la realización de nuestros proyectos estén mucho mejor estructurados y sean más fáciles de comprender por otros programadores.

Symfony para crear las vistas o implementar el diseño que hemos creado a nuestro proyecto, utiliza plantillas, esto son trozos de código html que se unen para formar la página que ha pedido el usuario.

En Symfony todo el diseño se divide de la siguiente manera:

  • Layout: Es la parte del diseño que se mostrará en todas las páginas (cabeceras, pie, menú, etc).
  • Elementos parciales: Si el fragmento contiene poca lógica.
  • Componentes: Si el fragmento tiene mucha lógica o debe acceder a la base de datos.
  • Slots: Si el fragmento va a sustituir a una parte del layout y se mostrará una parte por defecto.

En el libro lo explican bastante bien como se dividen las plantillas, los fragmentos de código que se pueden utilizar, cómo pasar variables desde la acción a los fragmentos de código, y algún detalle más que viene bien conocer. Os dejo el link a los Fragmentos de código.

Normalmente cuando trabajamos con plantillas en nuestros proyectos PHP, utilizamos la instrucción include() y en Symfony podríamos añadir a nuestro código algo como lo siguiente:

<?php include(sfConfig::get(‘sf_app_template_dir’).’/miFragmento.php’) ?>

Pero esta forma de añadir fragmentos de código no es muy limpia y, además, la caché de Symfony no reconoce la instrucción include() con lo que ese fragmento no podría ser cacheado. Aquí es donde entran en juego los fragmentos de código que he comentado anteriormente.

ELEMENTOS PARCIALES

Observa un periódico digital, su portada concretamente, verás que las noticias estan encajadas como en recuadros imaginarios y que cada noticia sigue un patrón: un titular y un pequeño avance de la noticia. Eso es un elemento parcial. Podemos poner ese elemento parcial en cualquier parte de ese periódico digital, ya que siempre será importante que el usuario pueda acceder a otras noticias con un pequeño avance.

Symfony sigue esta misma lógica para los elementos parciales. Estos, al igual que las plantillas, se ubican en la carpeta «templates/» del proyecto y son accesibles desde el módulo en el que se encuentre el archivo, desde otro módulo o desde la carpeta raíz de las plantillas «templates/«. Los elementos parciales se diferencian de las plantillas por llevar un guión bajo al principio del nombre del archivo ( _elementoparcial.php). Veamos como llamar a los elementos parciales desde distintas ubicaciones:

// Incluir el elemento parcial de miaplicacion/modules/mimodulo/templates/_miparcial1.php
// Como la plantilla y el elemento parcial están en el mismo módulo,
// se puede omitir el nombre del módulo
<?php include_partial(‘miparcial1’) ?>

// Incluir el elemento parcial de miaplicacion/modules/otromodulo/templates/_miparcial2.php
// En este caso es obligatorio indicar el nombre del módulo
<?php include_partial(‘otromodulo/miparcial2’) ?>

// Incluir el elemento parcial de miaplicacion/templates/_miparcial3.php
// Se considera que es parte del módulo ‘global’
<?php include_partial(‘global/miparcial3’) ?>

PASANDO VARIABLES AL ELEMENTO PARCIAL

Primero definimos la variable en la acción del módulo llamado mimodulo (mimodulo/actions/actions.class.php)

class mimoduloActions extends sfActions
{
public function executeIndex()
{
$this->total = 100;
}
}

En la plantilla llamamos al elemento parcial con la función include_partial() y le pasamos la variable en mimodulo/templates/indexSuccess.php.

<p>¡Hola Mundo!</p>
<?php include_partial(‘miparcial’, array(‘mitotal’ => $total)
) ?>

De esta manera podremos usar la variable en el elemento parcial en mimodulo/templates/_miparcial.php.

<p>Total: <?php echo $mitotal ?></p>

COMPONENTES

Los componentes son como los módulos, pero más rápidos. Siguen la misma lógica que los módulos y tienen una estructura de archivos parecida. Para nombrar un componente se utiliza la palabra execute seguido del nombre del componente, por ejemplo:

La clase de los componentes, en modules/news/actions/components.class.php

<?php

class newsComponents extends sfComponents
{
public function executeHeadlines()
{
$c = new Criteria();
$c->addDescendingOrderByColumn(NewsPeer::PUBLISHED_AT);
$c->setLimit(5);
$this->news = NewsPeer::doSelect($c);
}
}

La parte visual de los componentes se crea utilizando los elementos parciales. Para nombrarlos se usa lo mismo que para los componentes solo que sustituyendo la palabra execute por un guión bajo.

El elemento parcial, en modules/news/templates/_headlines.php

<div>
<h1>Últimas noticias</h1>
<ul>
<?php foreach($news as $headline): ?>
<li>
<?php echo $headline->getPublishedAt() ?>
<?php echo link_to($headline->getTitle(),’news/show?id=’.$headline->getId()) ?>
</li>
<?php endforeach ?>
</ul>
</div>

Cada vez que se quiera añadir el componente a una plantilla, sólo será necesario escribir el siguiente código:

<?php include_component(‘news’, ‘headlines’) ?>

Paso de parámetros a un componente y su plantilla:

// Llamada al componente
<?php include_component(‘news’, ‘headlines’, array(‘parametro’ => ‘valor’)) ?>

// Dentro del componente
echo $this->parametro;
=> ‘valor’

// Dentro del elemento parcial _headlines.php
echo $parametro;
=> ‘valor’

SLOTS

Aquí debería hablaros de los slots que simplemente son una especie de elemento parcial configurable, y para explicároslo solo se me ocurre hacer un copy&paste del libro, así que os dejo el link (al final de la página) y espero que os ayude.

Google sitemap y PHP

0

Acabo de terminar de programar, testear y poner en servicio un pequeño script en php, que me permitire generar un archivo xml para que el robot de google lo procese, y así, indexar las páginas de una web mucho más rápido.

No lo utilizo en el blog, por la sencilla razón de que tengo un plugin que lo realiza automáticamente:http://wordpress.org/extend/plugins/google-sitemap-generator/. Este script sirve para webs o bien hechas desde cero sin cms de ningún tipo, o bien para cms modificados que requieran un sitemap especial.

(más…)

Mootools y position:absolute;

0

Estoy creando un menú desplegable para una web con el framework mootools, el problema surje cuando quería colocar el submenú en una posición absoluta.

La solución es bien sencilla, se crea una capa por encima del código del submenú, y es esa capa la que tendrá la posición como absoluta y a través de las propiedades top y left de esa capa podremos colocar el submenú donde queramos.

Espero haberos ahorrado un par de horas 🙂

Ir arriba