<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CuatroXL</title>
	<atom:link href="http://cuatroxl.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cuatroxl.com</link>
	<description>Desarrollo web - Cuatro XL</description>
	<lastBuildDate>Mon, 02 Aug 2010 12:12:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cuatroxl_Controller_Plugin_DataPage :: Un plugin para cargar datos multi-idioma (o no) con ZF</title>
		<link>http://cuatroxl.com/2010/08/cuatroxl_controller_plugin_datapage-un-plugin-para-cargar-datos-multi-idioma-o-no-con-zf/</link>
		<comments>http://cuatroxl.com/2010/08/cuatroxl_controller_plugin_datapage-un-plugin-para-cargar-datos-multi-idioma-o-no-con-zf/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:12:08 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[component]]></category>
		<category><![CDATA[componente_web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[cuatroxl source]]></category>
		<category><![CDATA[zend_controller plugin]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=406</guid>
		<description><![CDATA[Este plugin viene bastante bien para tener todos los datos de texto en un XML. Por norma general se suele guardar en una base de datos; pero muchas veces el sitio no tiene un CMS o es muy pequeño para tener la información en una base de  datos.
Con este plugin cargamos un XML, pasandole [...]]]></description>
			<content:encoded><![CDATA[<p>Este plugin viene bastante bien para tener todos los datos de texto en un XML. Por norma general se suele guardar en una base de datos; pero muchas veces el sitio no tiene un CMS o es muy pequeño para tener la información en una base de  datos.</p>
<p>Con este plugin cargamos un XML, pasandole unos parámetros de configuración para que automáticamente nos seleccione un nodo especifico del XML. Esta configuración utiliza comodines de Zend_Route (Module, Controller, Action, ParamX&#8230;.) para el nombre del archivo y el nodo por defecto:</p>
<pre class="brush: php;">
<?php
/*
 * Cuatroxl
 *
 * LICENSE
 *
 * This file is part of Cuatroxl ( http://code.google.com/p/cuatroxl/ ).
 *
 * Cuatroxl is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Cuatroxl is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Cuatroxl.  If not, see <http ://www.gnu.org/licenses/>.
 *
 *
 * @category   Cuatroxl
 * @package    Cuatroxl_Zf_Action_Helper
 * @autor      Jimmy Collazos <jimmy.collazos@gmail.com>
 * @license    http://www.gnu.org/licenses/gpl.html     GPLv3
 * @version    0.01
 */

/**
 * @see Zend_Controller_Plugin_Abstract
 */
require_once 'Zend/Controller/Plugin/Abstract.php';

/**
 * @category   Cuatroxl
 * @package    Cuatroxl_Controller
 * @subpackage Cuatroxl_Controller_Plugin
 * @license    http://www.gnu.org/licenses/gpl.html     GPLv3
 */
class Cuatroxl_Controller_Plugin_DataPage extends Zend_Controller_Plugin_Abstract
{

    /*
     * Variable de configuración
     *
     * @var Array
     */
    protected       $_config      = array('autoload'  => false
                            ,'filePath'     => 'public/:module/:controller/:action.xml'
                            ,'xpath'        => ''
                            ,'basePath'     => APPLICATION_PATH
                            // esta opción es solo para cuando NO usamos Zend_Application
                            ,'_keyPlugin'   => '');

    /*
     * Ruta del archivo XML a cargar
     *
     * @var string
     */
    protected       $_filePath = null;

    /*
     * Xpath query para poder obteenr el nodo por defecto del XML
     *
     * @var string
     */
    protected       $_xpath = null;

    /*
     * En esta variable se almacena el XML final con el que podemos trabajar
     * desde el controlador
     *
     * @var SimpleXMLElement
     */
    protected       $_data;

    /*
     * Nombre asignado en el archivo de configuración de al aplicación
     *
     * @var string
     */
    private         $_keyPlugin;

    /**
     * Constructor
     *
     * @param  Array
     * @return void
     */

    public function  __construct( array $options = array() ) {

        $this->_setConfig($options);

    }

    /*
     * routeShutdown() es como el constructor ya que se usa para setear el XML
     * en caso de estar activado el "autoload" y también setea la configuración del INI
     *
     * @param Zend_Controller_Request_Abstract
     * @return void
     */
    public function routeShutdown( Zend_Controller_Request_Abstract $request)
    {

        //@TODO cambiar esto por una funcion que setee todas las opciones
        $bootstrap = Zend_Controller_Front::getInstance()
                            ->getParam('bootstrap');
        if(! empty($bootstrap) ){
            $bootstrapOptions   = $bootstrap->getOptions();
            $this->_keyPlugin          = $this->_getKeyPlugin($bootstrapOptions['resources']['frontController']['plugins']);
            if($this->_keyPlugin){
                if(! empty($bootstrapOptions[$this->_keyPlugin]['config'])){
                    $this->_setConfig($bootstrapOptions[$this->_keyPlugin]['config']);
                }
            }
            //@TODO añadir una excepción
            $this->_parseFilePath();
            $this->_parseXPath();

            if( $this->_config['autoload'] ){
                $this->_loadXmlFile();
                $this->_setXPath();
            }
        }
    }

    /*
     * Setea los daots en la variable _data
     *
     * @param SimpleXMLElement
     * @return void
     */
    public function setData ( SimpleXMLElement $data )
    {
        $this->_data = $data;

        if(!empty ($this->_keyPlugin) ){
            Zend_Controller_Front::getInstance()
                    ->setParam($this->_keyPlugin, $this->_data);
        }
    }

    /*
     * Devueble el XML obtenido
     *
     * @return Cuatroxl_Controller_Plugin_DataPage $_data
     *
     */
    public function getData ()
    {
        return $this->_data;
    }

    /*
     * Configura todas las opiones de la clase
     *
     * @var array
     * @return Cuatroxl_Controller_Plugin_DataPage  Provides a fluent interface
     *
     */
    protected function _setConfig( array $config) {
        foreach ($config as $k => $v){
            if(!empty ($v)){
                $this->_config[$k] = $v;
            }
        }
        return $this;
    }

    /*
     * Carga el archivo XML
     *
     * @var string
     * @return Cuatroxl_Controller_Plugin_DataPage Provides a fluent interface
     *
     */
    protected function _loadXmlFile( string $fileName = NULL ) {
        if( $fileName === NULL ){
            $fileName = $this->_filePath;
        }
        if( file_exists( $fileName ) ){
            $data   = simplexml_load_file( $fileName );
            $this->setData( $data );
        }
        return $this;
    }

    /*
     * Ejecuta una query sobre el XML con xpath y devuelve TRUE o FALSE  según el exito de la consulta
     *
     * @var string
     * @return Boolean
     *
     */
    protected function _setXPath( string $path = NULL ) {
        if( $path === NULL){
            $path = $this->_xpath;
        }

        if( empty($this->_xpath) ){
            return false;
        }

        $data = $this->_data->xpath($this->_xpath);

        if( empty ($data[0]) ){
            return false;
        }else{
            $this->setData( array_shift( $data ) );
            return true;
        }

    }

    /*
     * remplaza los comodines en la ruta al XML y devuelve TRUE o FALSE
     * según el exito de la consulta
     *
     * @return Boolean
     *
     */
    private function _parseFilePath() {

        //@TODO indagar para hacer este proceso con con Zend_Controller_Router_Route
        if(! preg_match_all("/:[^\/\.]+/s", $this->_config['filePath'], $matches) ){
            return false;
        }
        $request        = $this->getRequest();
        $values         = array();
        $matches        = $matches[0];
        foreach($matches as $v){
            $values[] = $request->getParam(substr($v, 1));
        }
        $matches[]          = '/';
        $values[]           = DIRECTORY_SEPARATOR;
        $this->_filePath    = str_replace($matches, $values, $this->_config['basePath'].$this->_config['filePath']);

        return true;
    }

    /*
     * remplaza los comodines en la ruta al nodop por defecto del  XML
     * y devuelve TRUE o FALSE  según el exito de la consulta
     *
     * @return Boolean
     *
     */
    private function _parseXPath() {

        //@TODO indagar para hacer este proceso con con Zend_Controller_Router_Route
        if( empty ($this->_config['xpath']) ){
            return false;
        }
        if(! preg_match_all("/:[\d\w_]+/s", $this->_config['xpath'], $matches) ){
            $this->_xpath = $this->_config['xpath'];
            return true;
        }
        $request        = $this->getRequest();
        $values         = array();
        $matches        = $matches[0];
        foreach($matches as $v){
            $values[] = $request->getParam(substr($v, 1));
        }

        $this->_xpath    = str_replace($matches, $values, $this->_config['xpath']);

        return true;
    }

    /*
     * Devuelve el nombre que se designó en el archivo de configuración
     *
     * @return string o false
     */
    private function _getKeyPlugin(array $config)
    {
        foreach ($config as $k => $v){
            if($v === 'Cuatroxl_Controller_Plugin_DataPage'){
                return $k;
            }
        }
        return false;
    }
}
</pre>
<h1>Modo de uso con Zend_Application</h1>
<p>Configuracion:</p>
<pre class="brush: javascript;">
;definimos la clase, en este caso lo asociamos a "dataPage"
resources.frontController.plugins.dataPage = "Cuatroxl_Controller_Plugin_DataPage"
;le decimos que la carga es automática
dataPage.config.autoload = 1
;la ruta del XML utilizando como comodín el parámetro LANG, nombre del controlador y acción
dataPage.config.filePath = ":lang/:controller/:action.xml"
;el nodo, del XML, por defecto que tiene que cargar; también usando la variable PAGE
dataPage.config.xpath = "pages/page[@id=':page']"
;el directorio raíz de donde están los XML
dataPage.config.basePath = APPLICATION_PATH "/../public/data/"
</pre>
<p>Controller:</p>
<pre class="brush: php;">
public function indexAction()
{
    // El parámetro "dataPage" es el mismo nombre con que vinculamos en el archivo de configuración
    var_dump($this->getFrontController()->getParam('dataPage'));
}
</pre>
<p>pdt: tengo que subirlo a Google Code; por lo que pronto colgaré la dirección con un manual más sencillo</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/08/cuatroxl_controller_plugin_datapage-un-plugin-para-cargar-datos-multi-idioma-o-no-con-zf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estudio Uso de Twitter en España</title>
		<link>http://cuatroxl.com/2010/07/estudio-uso-de-twitter-en-espana/</link>
		<comments>http://cuatroxl.com/2010/07/estudio-uso-de-twitter-en-espana/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 13:23:24 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[articulo]]></category>
		<category><![CDATA[enlaces]]></category>
		<category><![CDATA[estudio twitter]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=399</guid>
		<description><![CDATA[(esto me llega por mail)

El pasado mes de Junio lanzamos una encuesta sobre el uso de Twitter por parte de los usuarios españoles con el objetivo de conocer en detalle qué atrae y engancha tanto a sus usuarios y cómo usan esta potente red social.
Ahora, fruto de esa encuesta, tengo el placer de anunciarte la [...]]]></description>
			<content:encoded><![CDATA[<p>(esto me llega por mail)</p>
<p style="text-align: center;"><img class="size-full wp-image-401 aligncenter" title="cap1" src="http://cuatroxl.com/wp-content/uploads/2010/07/estudio_twitter1.jpg" alt="Estudio Uso de Twitter en España" /></p>
<p>El pasado mes de Junio lanzamos una encuesta sobre el uso de Twitter por parte de los usuarios españoles con el objetivo de conocer en detalle qué atrae y engancha tanto a sus usuarios y cómo usan esta potente red social.</p>
<p>Ahora, fruto de esa encuesta, tengo el placer de anunciarte la publicación del <strong>&#8220;Estudio del Uso de Twitter en España&#8221;</strong>, elaborado por adigital, Asociación Española de la Economía Digital.</p>
<p>Entre las principales conclusiones, destacamos que:</p>
<ul>
<li>El perfil de usuario registrado en Twitter en España es el de <strong>hombre joven</strong>,      cuya edad oscila entre los 25 y los 44 años, con <strong>formación de grado superior</strong> y <strong>trabajador por      cuenta ajena</strong>.</li>
<li>El <strong>94%      de los encuestados declara utilizar esta red por motivos profesionales</strong>:      &#8220;Informarse de lo que ocurre en el mundo online&#8221;, &#8220;mejorar      a nivel profesional&#8221;, &#8220;compartir con los demás reflexiones e      ideas&#8221; o &#8220;ampliar la red de contactos&#8221; son los principales      objetivos que persiguen los usuarios cuando utilizan Twitter.</li>
<li><strong>El usuario de Twitter se profesionaliza</strong> ya que el 94% de los usuarios afirma publicar tweets de temática      profesional; casi el 70% de los usuarios está relacionado/a de una manera      u otra con el mundo online a nivel profesional (sólo el 23,3% afirma estar      en Twitter por afición); casi un 80% de los usuarios de Twitter tiene      estudios superiores.</li>
<li><strong>El usuario de Twitter quiere encontrar empresas en Twitter</strong>: el 94,9% de los usuarios declara seguir a alguna empresa en Twitter;      al 73% le gusta encontrar en esta red a aquellas empresas en las que      confía y más del 70% estaría dispuesto a recibir varios tweets al día de      empresas con las que se siente afín y puedan aportarle algún beneficio.</li>
</ul>
<p>Puedes acceder al contenido íntegro del <strong>Estudio</strong> en <a href="http://www.adigital.org/emailing/2010/docs/adigital_Estudio_Uso_Twitter_enEspana_2010.pdf" target="_blank">www.adigital.org/emailing/2010/docs/adigital_Estudio_Uso_Twitter_enEspana_2010.pdf </a></p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/estudio-uso-de-twitter-en-espana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceso a variable del config desde Zend_Controller_Plugin con Zend_Application (solucionado)</title>
		<link>http://cuatroxl.com/2010/07/acceso-variable-config-desde-zend_controller_plugin-con-zend_application/</link>
		<comments>http://cuatroxl.com/2010/07/acceso-variable-config-desde-zend_controller_plugin-con-zend_application/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:15:12 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Application]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/2010/07/acceso-a-variable-del-config-desde-plugin-con-zend_application/</guid>
		<description><![CDATA[Es la primera vez que uso Zend_Application y ando un poco perdido.
Estoy haciendo un plugin ( Zend_Controller_Plugin ) y hay una variable que necesito tener en el archivo de configuración (declarado en Zend_Application). El problema lo tengo a la hora de accedes ésta desde el Plugin.
La única posibilidad que he visto es declarar el config [...]]]></description>
			<content:encoded><![CDATA[<p>Es la primera vez que uso Zend_Application y ando un poco perdido.</p>
<p>Estoy haciendo un plugin ( Zend_Controller_Plugin ) y hay una variable que necesito tener en el archivo de configuración (declarado en Zend_Application). El problema lo tengo a la hora de accedes ésta desde el Plugin.</p>
<p>La única posibilidad que he visto es declarar el config con Zend_Registre desde el Bootstrap; pero para ello estoy obligado a hacerlo cada vez en cada proyecto y me parece un poco &#8220;raro&#8221;:</p>
<pre class="brush: php;">
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initConfig()
    {
        $config = new Zend_Config($this-&gt;getOptions(), true);
        Zend_Registry::set('config', $config);
        return $config;
   }
   ....
</pre>
<p>Otra manera, más fea, es re-declarar el config file desde el plugin; pero estaría en la misma porque tendría que poner la ruta del file.</p>
<p>Alguna idea?</p>
<h2>Update:</h2>
<p>Por fin he encontrado la solución. He podido obtener config del bootstrap a través del controlador; es un poco engorroso pero al final el código es muy cortito:</p>
<pre class="brush: php;">
class myPlugin extends Zend_Controller_Plugin_Abstract
{
    public function routeShutdown($request)
    {
        //optenemos la instancia del Zend_Application_Bootstrap
        $bootstrap = Zend_Controller_Front::getInstance()
                                ->getParam('bootstrap');
        //Ahora si que tenemos acceso al archivo de configuración (application.ini)
        $config = $bootstrap->getOptions();
        var_dump($config)
    }
    ....
}
</pre/>

Al final resultó basante sencillo, aunque ahora tengo que averiguar con que nombre se le ha instanciado el plugin y utilizar ese mismo para la configuración; ejemplo:
<pre class="brush: js;">
resources.frontController.plugins.namePlugin = "ClassPlugin"
namePlugin.options.optionA = 1
</pre>
<pre class="brush: js;">
resources.frontController.plugins.otherNamePlugin = "ClassPlugin"
otherNamePlugin.options.optionA = 1
</pre>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/acceso-variable-config-desde-zend_controller_plugin-con-zend_application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso de Magento para el verano</title>
		<link>http://cuatroxl.com/2010/07/curso-de-magento-para-el-verano/</link>
		<comments>http://cuatroxl.com/2010/07/curso-de-magento-para-el-verano/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 07:10:34 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[enlaces]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=388</guid>
		<description><![CDATA[
El equipo de Magento presenta una oferta veraniega para los que quieran aprender a gestionar e incluso &#8220;desarrollar&#8221; sus Tiendas Virtuales con Magento Commerce
Link en spañol: Curso de Magento para el verano
Oficial de Magento: Magento U &#8211; Summer Webinar Series
Gracias a Sergio Guerrero por el enlace.
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://www.magentocommerce.com/img/magento-u/top-banner.png" alt="Curso de magento para el verano" /></p>
<p><a href="http://www.sergioguerrero.es/tiendas-virtuales/curso-magento-verano/comment-page-1"><cite>El equipo de Magento presenta una oferta veraniega para los que quieran aprender a gestionar e incluso &#8220;desarrollar&#8221; sus Tiendas Virtuales con Magento Commerce</cite></a></p>
<p>Link en spañol: <a href="http://www.sergioguerrero.es/tiendas-virtuales/curso-magento-verano/comment-page-1">Curso de Magento para el verano</a><br />
Oficial de Magento: <a href="http://www.magentocommerce.com/summer-webinar-series">Magento U &#8211; Summer Webinar Series</a></p>
<p>Gracias a <a href="http://www.sergioguerrero.es">Sergio Guerrero</a> por el enlace.</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/curso-de-magento-para-el-verano/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Buscando el negocio</title>
		<link>http://cuatroxl.com/2010/07/buscando-el-negocio/</link>
		<comments>http://cuatroxl.com/2010/07/buscando-el-negocio/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 12:30:24 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=383</guid>
		<description><![CDATA[
Cierto es que en más de una ocasión es dicho que no tomaría partido a la hora de elegir una web social o herramienta ya que creo que la mayoría de estas están más por la labor comercial que por dar una herramienta potente al usuario, algo que Google hace a la perfección.
Pero también es [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-384 aligncenter" title="facebook" src="http://cuatroxl.com/wp-content/uploads/2010/07/facebook.jpg" alt="" width="188" height="36" /></p>
<p>Cierto es que en más de una ocasión es dicho que no tomaría partido a la hora de elegir una web social o herramienta ya que creo que la mayoría de estas están más por la labor comercial que por dar una herramienta potente al usuario, algo que Google hace a la perfección.</p>
<p>Pero también es cierto que para los usuarios comunes y corrientes, les da un poco igual la cantidad de opciones que les pueda dar uno u otro servicio; más bien diría que van donde está la manada y dejan que otros elijan por ellos. Éstos, simplemente, escogen lo que ya escogieron otros sin valor el motivo.</p>
<p>Facebook ha conseguido tener una comunidad de usuarios bastante importante y no me equivoco al decir que ha ganado a Google (Orkut, Wave, &#8230;) en el terreno de aplicaciones sociales. Ahora la pregunta del millón es:</p>
<p><strong>¿cómo nos aprovechamos, económicamente, de estos usuarios?</strong></p>
<p>Está claro que  los usuarios no les podemos sacar nada; pero si podemos usar a éstos para que sean más o menos amigos de <em>&#8220;otros&#8221;</em>. Estos <em>&#8220;otros&#8221; </em>son, nada más y nada menos, que las empresas, las empresas <span style="text-decoration: line-through;">son las que tienen el dinero y a estos si que podemos sacarle el dinero</span>.</p>
<p>Entonces, creo que es el mejor momento (hace mucho que lo es) para poder dar herramientas a las empresas para poder formar sus propios <span style="text-decoration: line-through;">rebaños</span> grupo de amigos.</p>
<p>Con esto quiero anunciar la integración de este blog con comentarios y oficialmente dedicaré mi tiempo libre a jugar con FB y ver que juguetito puedo hacer.</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/buscando-el-negocio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webservices del Catastro Español</title>
		<link>http://cuatroxl.com/2010/07/webservices-del-catastro-espanol/</link>
		<comments>http://cuatroxl.com/2010/07/webservices-del-catastro-espanol/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 12:42:51 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/2010/07/webservices-del-catastro-espanol/</guid>
		<description><![CDATA[Interesante documentación para poder usar los Webservice del castastro español. Muy util si estás trabando con direcciones, nombres de provincias, ciudades y demás.
El próximo post será sobre el uso de este, que tiene unas herramientas bastante útiles:

SERVICIOS WEB DE LA SEDE ELECTRONICA DEL CATASTRO v2.6
]]></description>
			<content:encoded><![CDATA[<p>Interesante documentación para poder usar los Webservice del castastro español. Muy util si estás trabando con direcciones, nombres de provincias, ciudades y demás.</p>
<p>El próximo post será sobre el uso de este, que tiene unas herramientas bastante útiles:<br />
<a href="http://www.catastro.meh.es/ws/webservices_catastro.pdf"><br />
<strong>SERVICIOS WEB DE LA SEDE ELECTRONICA DEL CATASTRO v2.6</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/webservices-del-catastro-espanol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP para Android</title>
		<link>http://cuatroxl.com/2010/07/php-para-android/</link>
		<comments>http://cuatroxl.com/2010/07/php-para-android/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 08:41:08 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[enlaces]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=375</guid>
		<description><![CDATA[Sí, habéis leído bien. Hay un proyecto que hacer correr código PHP en Android y la verdad que está bastante bien conseguido. Imagino que aún tiene limitaciones pero la idea es bastante buena
Aquí tenéis un vídeo de la instalación y unas cuantas pruebas:

más info: http://phpforandroid.net/
]]></description>
			<content:encoded><![CDATA[<p>Sí, habéis leído bien. Hay un proyecto que hacer correr código PHP en Android y la verdad que está bastante bien conseguido. Imagino que aún tiene limitaciones pero la idea es bastante buena</p>
<p>Aquí tenéis un vídeo de la instalación y unas cuantas pruebas:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="693" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13177370&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="693" src="http://vimeo.com/moogaloop.swf?clip_id=13177370&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>más info: <a href="http://phpforandroid.net/">http://phpforandroid.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/php-para-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Navegando entre la basura&#8230;</title>
		<link>http://cuatroxl.com/2010/07/navegando-entre-la-basura/</link>
		<comments>http://cuatroxl.com/2010/07/navegando-entre-la-basura/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 10:32:05 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[errores]]></category>
		<category><![CDATA[codigo basura]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=372</guid>
		<description><![CDATA[
Sobran las palabras tras ver el &#8220;código&#8221;. En estos momentos es cuando creo que estaría mejor haciendo otra cosa&#8230;
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-large wp-image-371" title="Captura 1" src="http://cuatroxl.com/wp-content/uploads/2010/07/cap1.gif" alt="Navegando entre la basura" /></p>
<p>Sobran las palabras tras ver el &#8220;código&#8221;. En estos momentos es cuando creo que estaría mejor haciendo otra cosa&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/07/navegando-entre-la-basura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Style Php y Js: Uso de comas y puntos</title>
		<link>http://cuatroxl.com/2010/06/code-style-php-y-js-uso-de-comas-y-puntos/</link>
		<comments>http://cuatroxl.com/2010/06/code-style-php-y-js-uso-de-comas-y-puntos/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 21:27:17 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[code style]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/?p=367</guid>
		<description><![CDATA[Me estaré volviendo paranoico pero tengo un gran dilema a la hora de utilizar comas &#8220;,&#8221; y puntos.
Por norma general siempre he utilizado:
PHP
$arr = array('a'=&#62;'nueva variable',
           'b'=&#62;'otra variable más',
           'c'=&#62;'la ultima variable'
    [...]]]></description>
			<content:encoded><![CDATA[<p>Me estaré volviendo paranoico pero tengo un gran dilema a la hora de utilizar comas &#8220;,&#8221; y puntos.</p>
<p>Por norma general siempre he utilizado:<br />
PHP</p>
<pre class="brush: php;">$arr = array('a'=&gt;'nueva variable',
           'b'=&gt;'otra variable más',
           'c'=&gt;'la ultima variable'
           );

$str = $arr['a'].
$arr['b'].
$arr['c']
</pre>
<p>Javascript</p>
<pre class="brush: js;">var obj = {
           paramA:'a',
           paramB:'b',
           paramC:'c'
           };

class.
methodA().
methodB().
methodC('.classCss')
</pre>
<p>En principio esto es lo más normal, o por lo menos lo que he solido ver en casi todo los códigos. Mi gran Dilema viene con el Javascript; que en IE si te dejas una coma al final de un objeto &#8220;;}&#8221; te tira un lindo error que no sueles saber de dónde viene.</p>
<p>Para evitar este problema; he decidido hacerlo de la siguiente manera:<br />
PHP</p>
<pre class="brush: php;">$arr = array('a'=&gt;'nueva variable'
           ,'b'=&gt;'otra variable más'
           ,'c'=&gt;'la ultima variable')

$str = $arr['a']
           .$arr['b']
           .$arr['c']
</pre>
<p>Javascript</p>
<pre class="brush: js;">var obj = {
           paramA:'a'
           ,paramB:'b'
           ,paramC:'c'
};

class
.methodA()
.methodB()
.methodC('.classCss')
</pre>
<p>Lo malo de todo este cambio es que ya no soporto ver código con las comas o puntos al final de cada línea.</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/06/code-style-php-y-js-uso-de-comas-y-puntos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Si, ya sé que ha salido la Netbeans 6.9</title>
		<link>http://cuatroxl.com/2010/06/si-ya-se-que-ha-salido-la-netbeans-6-9/</link>
		<comments>http://cuatroxl.com/2010/06/si-ya-se-que-ha-salido-la-netbeans-6-9/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 18:38:50 +0000</pubDate>
		<dc:creator>acido69</dc:creator>
				<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://cuatroxl.com/2010/06/si-ya-se-que-ha-salido-la-netbeans-6-9/</guid>
		<description><![CDATA[Si, ya sé que ha salido la nueva versión de Netbeans 6.9; no hace falta que lo repitan en todos los blogs.
Que manera de repetir todo el mundo la misma noticia todo el rato.
]]></description>
			<content:encoded><![CDATA[<p>Si, ya sé que ha salido la nueva versión de <a href="http://www.netbeans.org">Netbeans 6.9</a>; no hace falta que lo repitan en todos los blogs.</p>
<p>Que manera de <a href="http://www.google.com/search?hl=es&amp;q=">repetir todo el mundo la misma noticia todo el rato</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cuatroxl.com/2010/06/si-ya-se-que-ha-salido-la-netbeans-6-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
