<?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>Carlos Cordero - BlogPHP&#187;Carlos Cordero - Blog</title>
	<atom:link href="http://www.carloscordero.com/blog/category/software/php-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.carloscordero.com/blog</link>
	<description>I&#039;ve got faith to believe I can do anything</description>
	<lastBuildDate>Thu, 06 Oct 2011 06:45:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Filtrado de contenidos por taxonomías en los panels de nodos (Drupal)</title>
		<link>http://www.carloscordero.com/blog/2011/02/28/filtrado-de-contenidos-por-taxonomias-en-los-panels-de-nodos-drupal/</link>
		<comments>http://www.carloscordero.com/blog/2011/02/28/filtrado-de-contenidos-por-taxonomias-en-los-panels-de-nodos-drupal/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 18:58:13 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[panels]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[taxonomia]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=1209</guid>
		<description><![CDATA[Hoy vamos con un truco para todas aquellas personas que utilizan el módulo de Panels en Drupal y quieren limitar la visualización de distintos widgets de contenidos en paneles de tipo nodo, dependiendo de la taxonomía a la que pertenezca el nodo visualizado. Dentro del panel que estemos configurando (supongo que todos nuestros nodos tiran [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblogs.lainformacion.com%2Fzoomboomcrash%2F2011%2F07%2F11%2Fguia-para-entender-las-crisis-financieras-sin-tener-idea-de-finanzas%2F" scrolling="no" frameborder="0" style="height: 62px; width: 100%" allowTransparency="true"></iframe></p>
<p>Hoy vamos con un truco para todas aquellas personas que utilizan el módulo de <a href="http://drupal.org/project/panels" target="_blank">Panels </a>en <a class="zem_slink" title="Drupal" rel="homepage" href="http://www.drupal.org/" target="_blank">Drupal</a> y quieren limitar la visualización de distintos widgets de contenidos en paneles de tipo nodo, dependiendo de la taxonomía a la que pertenezca el nodo visualizado.</p>
<p>Dentro del panel que estemos configurando (supongo que todos nuestros nodos tiran de un mismo panel), añadimos un contenido nuevo, pongamos un banner que solo queremos que salga en los nodos que pertenecen a la taxonomía/taxón &#8220;XYZ&#8221;. Para limitarlo, solo tenemos que añadir a dicho widget una nueva regla de visibilidad (Visibility rules), seleccionar que será de tipo &#8220;code <a class="zem_slink" title="PHP" rel="homepage" href="http://www.php.net/" target="_blank">PHP</a>&#8221; e introducir el siguiente código:</p>
<blockquote>
<pre>$clave = 'XYZ';
$q = explode("/", $_GET['q']);if(count($q) &gt; 1)
{$node = node_load($q[1]);
$terms = taxonomy_node_get_terms($node);
foreach($terms as $term) {if($term-&gt;name == $clave)
 {return TRUE;}}}return FALSE;</pre>
</blockquote>
<p>Por supuesto, no olvidéis indicar que el tipo de contenido introducido es PHP. Cambiamos &#8220;XYZ&#8221; por el nombre de la categoría en la cual queremos que salga y&#8230; listo!</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=42ffbb32-0ec5-4f21-94ae-78d410bab379" alt="" /><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2011/02/28/filtrado-de-contenidos-por-taxonomias-en-los-panels-de-nodos-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un proyecto más para recordar</title>
		<link>http://www.carloscordero.com/blog/2010/02/27/un-proyecto-mas-para-recordar/</link>
		<comments>http://www.carloscordero.com/blog/2010/02/27/un-proyecto-mas-para-recordar/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 11:21:18 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Enlaces]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[practicopedia]]></category>
		<category><![CDATA[proyecto]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=791</guid>
		<description><![CDATA[Ha costado, ha sido más duro de lo esperado, pero finalmente el jueves lanzamos la nueva versión de Practicopedia. Ha sido bastante más de medio año de proyecto, con quizás demasiadas manos metidas dentro en un principio pero que al final ha podido salir a la luz, y bien que lo ha hecho. Este es [...]]]></description>
			<content:encoded><![CDATA[<p>Ha costado, ha sido más duro de lo esperado, pero finalmente el jueves lanzamos la nueva versión de <strong><a href="http://www.practicopedia.com/" target="_blank">Practicopedia</a><span style="font-weight: normal;">. Ha sido bastante más de medio año de proyecto, con quizás demasiadas manos metidas dentro en un principio pero que al final ha podido salir a la luz, y bien que lo ha hecho.</span></strong></p>
<p><strong><span style="font-weight: normal;">Este es un claro ejemplo de </span><a href="http://drupal.org/" target="_blank">Drupal</a> </strong>llevado al extremo de la personalización y &#8220;toqueteo&#8221;, pero no ha hecho más que volver a demostrar el potencial que tiene este <strong>CMS</strong> para crear verdaderas aplicaciones que puedan ser utilizadas como base de negocio de una empresa.</p>
<p>Ya es la hora de que entren aquellas personas que van a dedicarse al mantenimiento evolutivo del proyecto, y sólo puedo esperar que lo traten con mucho mimo.</p>
<p style="text-align: center;"><img class="aligncenter" title="Practicopedia" src="http://www.practicopedia.com/sites/all/themes/practicopedia/img/verde/logo_practicopedia_home.png" alt="Practicopedia" width="396" height="78" /></p>
<p>Cesar y Alex han tenido una gran parte de la &#8220;culpa&#8221; de que esta nueva versión viese la luz, al segundo de ellos, Alex, mucha suerte en Asturias, vas a vivir como un rey y a ser muy feliz.</p>
<p>Ahora, como corresponde a este negocio (al igual que muchos otros), tocará cerrar un libro y después de un par de días de vacaciones (que creo que me merezco <img src='http://www.carloscordero.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), empezaremos con un nuevo proyecto, todo nuevo, y a seguir aprendiendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2010/02/27/un-proyecto-mas-para-recordar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilizando JasperReports con PHP</title>
		<link>http://www.carloscordero.com/blog/2010/02/23/utilizando-jasperreports-con-php/</link>
		<comments>http://www.carloscordero.com/blog/2010/02/23/utilizando-jasperreports-con-php/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:50:18 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[jasperreports]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=788</guid>
		<description><![CDATA[JasperReports es una de las librerías de generación de informes más populares y versátiles, bajo tecnología Java, incluyendo iReports, la herramienta visual para la generación de los informes. Es una lástima, pero hay que admitir que actualmente bajo PHP no existe ninguna librería que esté minimamente a la altura, teniendo que recurrir a librerías del [...]]]></description>
			<content:encoded><![CDATA[<p><strong>JasperReports</strong> es una de las librerías de generación de informes más populares y versátiles, bajo tecnología Java, incluyendo <strong>iReports</strong>, la herramienta visual para la generación de los informes.</p>
<p>Es una lástima, pero hay que admitir que actualmente bajo <strong>PHP</strong> no existe ninguna librería que esté minimamente a la altura, teniendo que recurrir a librerías del estilo <strong>FPDF</strong> para la exportación en PDF&#8230; y por supuesto diseñando los informes &#8220;a manini&#8221;.</p>
<p>Por lo tanto, pongámonos manos a la obra y busquemos una forma de unir <strong>PHP </strong>y <strong>Java</strong>, así podremos utilizar <strong>JasperReports</strong> desde una aplicación <strong>PHP</strong>. Usaremos una librería llamada <strong><a href="http://php-java-bridge.sourceforge.net/pjb/" target="_blank">php/Java Bridge</a><span style="font-weight: normal;">, que nos permitirá realizar llamadas a métodos Java desde el código PHP de la aplicación. Aunque no es la única existente en el mercado y podamos encontrar otros bridges como </span>Quercus</strong>, será la que utilice en este post por ser gratuita y cumplir la funcionalidad que necesitamos, utilizar <strong>JasperReports</strong> desde <strong>PHP</strong>.</p>
<p><span id="more-788"></span></p>
<p>No voy a reinventar la rueda, por lo que os invito a leer este <strong><a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jasperreportPHP" target="_blank">tutorial</a></strong> de <a href="http://www.adictosaltrabajo.com" target="_blank">adictosaltrabajo.com</a> sobre el cual realizaré algunas anotaciones.</p>
<p>Os recomiendo bajaros desde el website de <strong>JasperReports </strong>el paquete completo (son unos 70 y pico megas), dado que incluye todas las librerías de las que puede depender su funcionalidad. De esa forma evitamos tener que bajarlas a mano una por una.</p>
<p>Con respecto al <strong>bridge</strong>, no es necesario que para realizar algunas pruebas os descarguéis ningún contenedor de aplicaciones como <strong>tomcat</strong> o <strong>resin</strong>, el mismo paquete incluye un pequeño contenedor que podréis ejecutar con el siguiente comando:</p>
<p><br class="spacer_" /></p>
<div id="_mcePaste">java -jar ./ext/JavaBridge.jar</div>
<p>Os pedirá que seleccionéis el socket y puerto y estará listo para funcionar.</p>
<p>En los próximos días haré algunas pruebas de rendimiento, cuando tenga algo de tiempo, a ver si realmente merece la pena y puede ser útil en un entorno de producción.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2010/02/23/utilizando-jasperreports-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal o Joomla, ¿es sólo cuestión de gustos?</title>
		<link>http://www.carloscordero.com/blog/2010/02/21/drupal-o-joomla-es-solo-cuestion-de-gustos/</link>
		<comments>http://www.carloscordero.com/blog/2010/02/21/drupal-o-joomla-es-solo-cuestion-de-gustos/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 13:07:28 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=779</guid>
		<description><![CDATA[Drupal o Joomla, los dos gestores CMS más conocidos en el mundo &#8220;open source&#8221; bajo plataforma PHP. Los dos son de libre distribución, no tienen costes de licencias, se instalan facilmente y tienen una gran comunidad que los avala. Dicho así, puede parecer que la elección de uno u otro se puede basar en una [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://drupal.org/" target="_blank">Drupal</a> o <a href="http://www.joomla.org/" target="_blank">Joomla</a>, los dos gestores CMS más conocidos en el mundo &#8220;open source&#8221; bajo plataforma PHP. Los dos son de libre distribución, no tienen costes de licencias, se instalan facilmente y tienen una gran comunidad que los avala. Dicho así, puede parecer que la <strong>elección de uno u otro se puede basar en una simple decisión de gustos o estética</strong>&#8230; pero nada más lejos de la realidad, <strong>tomar esa decisión a la ligera puede significar perder tiempo y dinero</strong>.</p>
<p>Como es habitual, basándonos en que los dos buscan resolver una funcionalidad definida, en este caso ser un CMS, podemos resumir sus diferencias de la siguiente forma: <strong>Joomla busca ser un gestor sencillo</strong>, intuitivo y fácil de implementar mientras que <strong>Drupal sacrifica sencillez a cambio de una flexibilidad</strong> y posibilidad de ampliación infititamente superior a la de su homólogo.</p>
<p>Y en este punto nos encontramos, a lo largo de los años me he encontrado ya con demasiados proyectos que han sufrido el mismo problema, lo que los anglosajones definen como &#8220;<strong>hit the wall</strong>&#8221; al utilizar Joomla: una mala planificación incita al uso de este gestor pensando en &#8220;lo bonito que es&#8221; y lo &#8220;fácil que resulta utilizarlo&#8221;. La pesadilla ocurre cuando <strong>se intenta ampliar la funcionalidad de la página</strong> y empiezan los dolores de cabeza: limitaciones en la lógica de tratamiento de los datos, limitaciones en las modificaciones visuales&#8230; resulta que lo que en un principio parecía sencillo se vuelve en contra del usuario.</p>
<p style="text-align: center;"><a href="http://www.carloscordero.com/blog/wp-content/uploads/2010/02/joomlaodrupal.jpg" rel="lightbox[779]"><img class="size-full wp-image-780 aligncenter" title="Joomla o Drupal" src="http://www.carloscordero.com/blog/wp-content/uploads/2010/02/joomlaodrupal.jpg" alt="Joomla o Drupal" width="540" height="270" /></a></p>
<p><span id="more-779"></span></p>
<p>Es fácil encontrar ejemplos, entre ellos los que tengo más cercanos ahora mismo: en Joomla entras en el administrador, creas tus secciones y categorías y publicas contenidos. A partir de ese momento ya tienes el portal. Por un momento pensemos que queremos definir taxonomías (por ejemplo varios árboles de categorización), distintos tipos de contenidos, vistas personalizadas&#8230; paremos de contar, con Joomla es &#8220;casi&#8221; <strong>imposible</strong>, y digo casi porque existir, existen módulos que intentan crear esa funcionalidad&#8230; aunque sin demasiado éxito por el momento.</p>
<p>Este resulta ser un grave problema que deja muy tocado al proyecto, y además es una &#8220;enfermedad&#8221; que se repite constantemente. Son proyectos que en un inicio <strong>buscan tener un coste menor</strong> y con un periodo de desarrollo más corto&#8230; pero que en algún momento de su vida por su crecimiento necesitan incorporar nuevas funcionalidades, y ahí se acabó lo bueno.</p>
<p>Sin embargo, <strong>no vayamos a pensar que Drupal</strong> es la panacea y que el uso de Joomla es un error en todos los casos. <strong>Drupal no es intuitivo</strong>, ni para el usuario ni para el desarrollador. Necesita mucho más trabajo que Joomla para crear un portal &#8220;comestible&#8221;, algo que los usuarios y editores puedan utilizar sin problemas&#8230; y eso por supuesto implica tiempo y dinero. Es bastante lógico que se dé esta situación si pensamos que Drupal intenta <strong>no poner limitaciones de ningún tipo</strong> al desarrollo de un proyecto con el fin de que pueda ser ampliado sin encontrarse con paredes que impidan la creación de funcionalidades.</p>
<p>¿Entonces qué hacemos? Respuesta rápida: <strong>pararse a pensar</strong>. Respuesta larga: analizar correctamente las necesidades actuales y la previsión de las <strong>necesidades en un futuro medio</strong> (1-2 años). Si tenemos claro que el portal no va a cambiar, que sólo mostraremos contenidos con una categorización simple, que no querremos incluir funcionalidades más allá de lo que los módulos pueden hacer y que no resultará un problema encontrarse con limitaciones, Joomla es la respuesta: saldrá más barato y se tendrá en menos tiempo.</p>
<p>Si no tenemos claro que lo anterior se vaya a cumplir, <strong>mi consejo será el de utilizar Drupal</strong>. Si, el desarrollo será sensiblemente más caro (aunque sólo sensiblemente), y a cambio de sacrificar un poco de usabilidad, en el futuro nos habrá salido más rentable. ¿Rentable? Si, ya son unos cuantos los proyectos que he visto en los que después de pocos meses hay que &#8220;tirar&#8221; la plataforma Joomla y volver a hacer el desarrollo en Drupal, incluyendo los costes de la migración de todos los contenidos.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2010/02/21/drupal-o-joomla-es-solo-cuestion-de-gustos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cliente SOAP bajo PHP</title>
		<link>http://www.carloscordero.com/blog/2009/09/28/cliente-soap-bajo-php/</link>
		<comments>http://www.carloscordero.com/blog/2009/09/28/cliente-soap-bajo-php/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 19:16:08 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[wsdl]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=500</guid>
		<description><![CDATA[Un apunte muy rápido para consumir WSDL desde PHP, que hoy me he tenido que pegar con ello para llamar a un servidor bajo .net y lo he solucionado al final de la forma más tonta del mundo. Nos descargamos wsdl2php desde aqui. Esta pequeño script parseará el WSDL que le indiquemos y nos creará [...]]]></description>
			<content:encoded><![CDATA[<p>Un apunte muy rápido para consumir WSDL desde PHP, que hoy me he tenido que pegar con ello para llamar a un servidor bajo .net y lo he solucionado al final de la forma más tonta del mundo.</p>
<p>Nos descargamos <strong>wsdl2php</strong> desde <a href="http://www.urdalen.no/wsdl2php/index.php" target="_blank">aqui</a>. Esta pequeño script parseará el WSDL que le indiquemos y nos creará una fichero con la clase SoapClient de PHP5 lista para usar junto a todas las clases que ofrezca el servicio, es decir, nos quita todo el trabajo de encima.</p>
<p>Sólo nos faltará crear un script para lanzar la ejecución:</p>
<blockquote><pre style="font-size: 1.3em;">&lt;?php
require_once 'ClasesCreadas.php';
$client = new ClasesCreadas();
print_r($client-&gt;LlamadaAEjecutar($parametros);
?&gt;</pre>
</blockquote>
<p>A veces las cosas fáciles son las que mejor funcionan <img src='http://www.carloscordero.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div align="center"><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/V1mF8GQh9GE&#038;hl=es&#038;fs=1&#038;color1=0x234900&#038;color2=0x4e9e00"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/V1mF8GQh9GE&#038;hl=es&#038;fs=1&#038;color1=0x234900&#038;color2=0x4e9e00" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2009/09/28/cliente-soap-bajo-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servicios Web REST</title>
		<link>http://www.carloscordero.com/blog/2009/09/25/servicios-web-rest/</link>
		<comments>http://www.carloscordero.com/blog/2009/09/25/servicios-web-rest/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 21:42:50 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jersey]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[quercus]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[webservice]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=478</guid>
		<description><![CDATA[Me encantan esos días en los que puedes dedicarte a investigar, el hecho de poder leer mucha documentación para encontrar la mejor solución a un problema, sin presiones, sin plazos de entrega&#8230; Para ponernos en situación, tenemos una especie de modelo editorial donde se almacenan cantidades más ó menos importantes de datos, desarrollado en java [...]]]></description>
			<content:encoded><![CDATA[<p>Me encantan esos días en los que puedes dedicarte a investigar, el hecho de poder leer mucha documentación para encontrar la mejor solución a un problema, sin presiones, sin plazos de entrega&#8230;</p>
<p>Para ponernos en situación, tenemos una especie de modelo editorial donde se almacenan cantidades más ó menos importantes de datos, desarrollado en java con toda la pesca incluída: <strong>Spring</strong>, <strong>Hibernate</strong> y usando MySQL como BD. Meses atrás se hizo a toda prisa una aplicación web de consulta, en este caso en PHP. Si, se que alguno querrá arrancarse los ojos al leer esto pero: el código de PHP lanza querys directas contra la BD (es decir, se pasa el modelo de ORM de Hibernate por los santos)&#8230; que queréis, se hizo en día y medio, cosas de los plazos.</p>
<p>Por si alguno todavía no se ha dado cuenta, eso tiene un grave problema (dejando de lado que es una chapuza increíble) y es que requiere trasladar todos los cambios que se hagan en el modelo a nuestra aplicación PHP (y normalmente suele pasar que se olvida y falla en el peor momento). A la hora de cambiar esto, se podría optar por utilizar algún tipo de implementación PHP sobre JAVA tipo Quercus (que ya utilizamos en otra rama), pero viendo los dolores de cabeza que ha dado, prefería evitarlo&#8230;</p>
<p>¿Solución? Servicios Web. ¿<a href="http://en.wikipedia.org/wiki/SOAP" target="_blank">SOAP</a>? ¡Mucho lio! &#8230; Mejor solución: <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank"><strong>REST</strong></a> (Representational state transfer): una solución de arquitectura &#8220;parida&#8221; para las necesidades justas que tenemos, y en este caso, limitadas a peticiones GET y algún POST (quizás para las búsquedas&#8230;). Ya tenemos nuestra solución: servicios web REST que den una salida <a href="http://en.wikipedia.org/wiki/JSON" target="_blank">JSON</a>. El motivo de dar una salida JSON es evidente: queremos que sea interpretado por PHP, el cual tiene las funciones específicas para ello, y de esa forma no nos limitamos a ninguna arquitectura (nunca se sabe&#8230;).</p>
<p>Ahora viene el lado servidor, tenemos que implementar los servicios web en JAVA y sobre todo, tenemos que mantener y aprovechar la arquitectura existente. Ah! Una última cosa&#8230; no podemos depender de un contenedor específico, por si acaso <img src='http://www.carloscordero.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>De nuevo, solución: <strong>JAX-RS</strong>, la solución más sencilla que nos aporta JAVA para montar servicios REST. En este caso hemos utilizado una implementación que se llama <strong><a href="https://jersey.dev.java.net/" target="_blank">Jersey</a></strong><strong> </strong>(que queréis que haga si le ponen esos nombres&#8230;). Utilizando <strong>maven</strong> se ha vuelto muy sencillo, unas dependencias por aquí, otras por allá, y todo ready! Aqui os dejo el &#8220;<a href="https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-1.1.2-ea/jersey/getting-started.html" target="_blank">getting started</a>&#8221; de Jersey, si miráis el código os quedaréis muy sorprendidos, al fin y al cabo utiliza <strong>POJO</strong>s.</p>
<blockquote><pre> 1    // The Java class will be hosted at the URI path "/helloworld"
 2    @Path("/helloworld")
 3    public class HelloWorldResource {
 4
 5        // The Java method will process HTTP GET requests
 6        @GET
 7        // The Java method will produce content identified by the MIME
 8        // type "text/plain"
 9        @Produces("text/plain")
10        public String getClichedMessage() {
11            // Return some cliched textual content
12            return "Hello World";
13        }
14    }</pre>
</blockquote>
<p>Admito que he estado un par de horas pegándome con un conflicto de versiones de dependencias que tenían jersey e hibernate, causados por la librería <a href="http://asm.ow2.org/" target="_blank"><strong>asm</strong></a>, cosa de tener ya un sistema montado por detrás. Ahora mismo no lo recuerdo exáctamente, pero creo que hibernate utilizaba la rama 1.x de asm y jersey la 2.x, algunos métodos han cambiado y&#8230; POUM! Las últimas versiones de hibernate ya no tienen esa dependencia así que sólo había que incluirla en el ignore de maven para hibernate y todo solucionado. ¿Veis? Si hubiese mirado los foros de hibernate antes&#8230; me hubiese evitado ese tiempo de pelea con el tomcat (si, lo he montado sobre un tomcat, aunque supongo que termine en un resin).</p>
<p>Si alguno monta un servicio con esto, ya me enviará la URL para probarlo (si es público claro <img src='http://www.carloscordero.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2009/09/25/servicios-web-rest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Desarrollando con Joomla</title>
		<link>http://www.carloscordero.com/blog/2007/08/14/desarrollando-con-joomla/</link>
		<comments>http://www.carloscordero.com/blog/2007/08/14/desarrollando-con-joomla/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 10:01:10 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/2007/08/14/desarrollando-con-joomla/</guid>
		<description><![CDATA[Describir las ventajas de un CMS me llevaría varios posts, pero si quisiese entrar en detalle sobre lo que aporta el CMS Joomla, tendría que dedicar la mitad de este Blog a ello. Tengo que admitir que el &#8220;Open Source&#8221; me encanta y cuando puedo me encanta colaborar (ya sea en análisis, desarrollo, documentación ó [...]]]></description>
			<content:encoded><![CDATA[<p>Describir las ventajas de un CMS me llevaría varios posts, pero si quisiese entrar en detalle sobre lo que aporta el CMS Joomla, tendría que dedicar la mitad de este Blog a ello. Tengo que admitir que el &#8220;Open Source&#8221; me encanta y cuando puedo me encanta colaborar (ya sea en análisis, desarrollo, documentación ó testeo&#8230;), y sin embargo, me encuentro muchos proyectos con una &#8220;grave enfermedad&#8221;: El código es intratable, hay tantos parches sobre parches de otros parches que al final tardarías menos en crear una solución desde cero que intentar modificar lo que ya hay. No es el caso de Joomla.</p>
<p>Hace tiempo trabajé con sus primeras versiones, cuando se hizo el fork desde Mambo, pero en estas últimas semanas por motivos profesionales he tenido que estudiar todo su código y estructura: ¡Que maravilla! Ya no sólo es que tenga una buena documentación, si no es que además su estructura modular es una maravilla. Una lectura más bien rápida de su API y ya estaba programando módulos y componentes. En el apartado de diseño y maquetado no son menos las ventajas del sistema, un simple fichero en el cual se incluyen a elección del diseñador los espacios organizados para módulos, y todo ello controlado por CSS (adaptable igualmente según módulos desde el administrador). <strong>Tengo cronometrado mi tiempo de instalación de Joomla en 4 minutos</strong>, aunque automatizando un script bash para la configuración de permisos, el tiempo todavía se podría reducir un par de minutos.</p>
<p>Aunque se supone que esto es compartido por cualquier CMS (y por desgracia no es siempre así), ahí va una lista de aquellos puntos que considero como verdaderos puntos fuertes de Joomla, y que lo hacen una solución que supera lo puramente amateur, pudiendo pasar a un entorno corporativo:</p>
<ul>
<li>Alta seguridad (nos olvidamos de los problemas de las &#8220;Variables Globales&#8221; de PHP), así como configuración de los permisos para evitar intrusiones.</li>
<li>Modularidad Total de sus componentes: Joomla es como el &#8220;Lego&#8221;, te dan una base y a partir de ahí lo que necesites</li>
<li>Gran comunidad de desarrolladores: Hay varios cientos de módulos de buena calidad listos para ser usados</li>
<li>Diseño: Nos olvidamos de los diseños cuadrados. Si se desea, se puede realizar un diseño de cualquier tipo, incluso utilizando tecnología Web 2.0 (lo que tanto está de moda vamos&#8230;)</li>
<li>Programación: Un programador habitual de PHP no tendrá problema alguno en programar módulos, mambots ó componentes. Una lectura de su documentación y API será suficiente para saber las bases.</li>
<li>Integración de Componentes actuales: Basándome en el punto anterior, adaptar un software existente para su funcionamiento bajo Joomla será cuestión de poco cambio en muchos casos (siempre y cuando el software ya existente no sea un &#8220;montón de basura compilada&#8221;).</li>
<li>Disminución de Tiempos de Desarrollo: Algo imprescindible en estos tiempos de competencia tan brutal. Hablamos de menos de 1 hora para tener una web funcionando en Internet (y aún menos automatizando parte del proceso).</li>
</ul>
<p>Con más tiempo dedicaré otro post para hablar de la programación bajo Joomla, aunque poco podré aportar a la gran documentación existente.</p>
<p>Manual de Desarrollo: <a href="http://help.joomla.org/content/section/12/125/" target="_blank">http://help.joomla.org/content/section/12/125/ </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2007/08/14/desarrollando-con-joomla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sistema E-Commerce para el mercado Español</title>
		<link>http://www.carloscordero.com/blog/2006/09/10/mejorando-y-adaptando-lo-ya-existente/</link>
		<comments>http://www.carloscordero.com/blog/2006/09/10/mejorando-y-adaptando-lo-ya-existente/#comments</comments>
		<pubDate>Sun, 10 Sep 2006 19:08:24 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/2006/09/10/mejorando-y-adaptando-lo-ya-existente/</guid>
		<description><![CDATA[Hace tiempo que trabajamos en Veliris Soluciones en el desarrollo de un sistema E-Commerce para el segmento de tiendas españolas. Existen soluciones gratuitas y de pago, pero a la vista del estudio realizado, ó no están adaptadas a las necesidades de fiscalidad española, ó tienen opciones a todas luces insuficientes. Cuando empezamos a trabajar en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que trabajamos en <a href="http://www.veliris.es">Veliris Soluciones</a> en el desarrollo de un sistema E-Commerce para el segmento de tiendas españolas. Existen soluciones gratuitas y de pago, pero a la vista del estudio realizado, ó no están adaptadas a las necesidades de fiscalidad española, ó tienen opciones a todas luces insuficientes.</p>
<p>Cuando empezamos a trabajar en ello, decidimos utilizar una base ya conocida y con varios años de funcionamiento, OsCommerce. Se trata de una solución &#8220;<em>Open Source</em>&#8220;, que ofrecen lista para ser utilizada y empezar una tienda, sin embargo, tiene bastantes carencias cuando hablamos de montar una tienda en territorio español:</p>
<ul>
<li>No es intuitivo para los impuestos</li>
<li>No permite introducir los datos fiscales (DNI/CIF/NIE)</li>
<li>Falta un sistema de Facturación</li>
<li>Formas de Envío, Formas de Pago</li>
</ul>
<p>A día de hoy ya tenemos un sistema casi finalizado, y ahora empieza la etapa de testeo, muy necesaria para evitar problemas posteriores. Estoy orgulloso por lo que estamos terminando, sobre todo el sistema de facturación integrado que estoy terminando de programar (gráficas incluídas).</p>
<p><img id="image66" src="http://www.carloscordero.com/blog/wp-content/uploads/2006/09/facturacion_grafanualphp.thumbnail.png" alt="Grafica Fact 1" /><img id="image67" src="http://www.carloscordero.com/blog/wp-content/uploads/2006/09/facturacion_grafanual2php.thumbnail.png" alt="Grafica Fact 2" /><img id="image68" src="http://www.carloscordero.com/blog/wp-content/uploads/2006/09/facturacion_grafanual3php.thumbnail.png" alt="Grafica Fact 3" /></p>
<p>P.D.: No hay que olvidarlo, tecnología AJAX incluída en el sistema de facturación y gráficas</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2006/09/10/mejorando-y-adaptando-lo-ya-existente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TPV de La Caixa y osCommerce&#8230; He ganado la Guerra</title>
		<link>http://www.carloscordero.com/blog/2006/04/26/tpv-de-la-caixa-y-oscommerce-he-ganado-la-guerra/</link>
		<comments>http://www.carloscordero.com/blog/2006/04/26/tpv-de-la-caixa-y-oscommerce-he-ganado-la-guerra/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 17:23:53 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=40</guid>
		<description><![CDATA[Después de mucho pelear, de estar todo el fin de semana dándole a la tecla, probando, reprobando y finalmente REREprobando, he logrado hacer un módulo completamente funcional y ahora a la espera de obtener la aprobación de La Caixa. Toda la info en este foro]]></description>
			<content:encoded><![CDATA[<p>Después de mucho pelear, de estar todo el fin de semana dándole a la tecla, probando, reprobando y finalmente REREprobando, he logrado hacer un módulo completamente funcional y ahora a la espera de obtener la aprobación de La Caixa.</p>
<p>Toda la info en <a target="_blank" href="http://oscommerce.qadram.com/modules.php?name=Forums&#038;file=viewtopic&#038;t=10035">este foro</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2006/04/26/tpv-de-la-caixa-y-oscommerce-he-ganado-la-guerra/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Generando PDFs dinámicos&#8230;</title>
		<link>http://www.carloscordero.com/blog/2006/04/07/generando-pdfs-dinamicos/</link>
		<comments>http://www.carloscordero.com/blog/2006/04/07/generando-pdfs-dinamicos/#comments</comments>
		<pubDate>Fri, 07 Apr 2006 21:52:17 +0000</pubDate>
		<dc:creator>Carlos Cordero</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.carloscordero.com/blog/?p=32</guid>
		<description><![CDATA[Empiezo a pensar que me da &#8220;cierto morbo&#8221; estarme peleando con todas las librerías que generan PDFs de forma dinámica a través de web. Hace meses, por motivos laborales (había que crear un sistema de facturación específico, y nada mejor que las facturas en PDF) me vi &#8220;obligado&#8221; a empezar a jugar con librerías de [...]]]></description>
			<content:encoded><![CDATA[<p>Empiezo a pensar que me da &#8220;cierto morbo&#8221; estarme peleando con todas las librerías que generan PDFs de forma dinámica a través de web.</p>
<p>Hace meses, por motivos laborales (había que crear un sistema de facturación específico, y nada mejor que las facturas en PDF) me vi &#8220;obligado&#8221; a empezar a jugar con librerías de generación de PDFs dinámicas. Siempre que puedo, rechazo aquéllas soluciones que requieren instalar módulos en un servidor&#8230; ya sabéis, las migraciones son horribles.</p>
<p><img align="left" alt="Logo FPDF" id="image31" title="Logo FPDF" src="http://www.carloscordero.com/blog/wp-content/uploads/2006/04/logofpdf.gif" />Buscando y buscando, encontré una solución que satisface mis necesidades&#8230; la FPDF Library; permite la generación de PDFs sin tener ningún módulo en el servidor. Su mayor desventaja es que tiene menor velocidad&#8230; pero esto sólo se nota en PDFs de decenas de páginas, vamos, para generar facturas, por ejemplo, es perfecto. Como siempre, y siguiendo mis gustos (por suerte así puedo hacerlo), es específico para PHP.</p>
<p><span id="more-32"></span></p>
<p><em>FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La ventaja es que, mientras PDFlib es  <a target="_blank" href="http://www.pdflib.com/purchase/license.html">de pago</a> para usos comerciales, la F de FPDF significa </em><em>Free (gratis y libre): puede usted usarla para cualquier propósito y modificarla a su gusto para satisfacer sus necesidades.</em></p>
<p><em>FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales características:</em></p>
<ul style="margin-left: 0.7em; padding-left: 0.7em">
<li><em>Elección de la unidad de medida, formato de página y márgenes </em></li>
<li><em>Gestión de cabeceras y pies de página </em></li>
<li><em>Salto de página automático </em></li>
<li><em>Salto de línea y justificación del texto automáticos </em></li>
<li><em>Admisión de imágenes (JPEG y PNG) </em></li>
<li><em>Colores </em></li>
<li><em>Enlaces </em></li>
<li><em>Admisión de fuentes TrueType, Type1 y codificación </em></li>
<li><em>Compresión de página</em></li>
</ul>
<p>Su uso es bastante sencillo para cualquier persona que se mueva con soltura bajo PHP, y la verdad, permite hacer verdaderas &#8220;virguerías&#8221;. Se trata de una clase creada para ser utilizada sin módulos de terceros, totalmente gratuita, y que puede ser utilizada en cualquier tipo de software, ya sea comercial ó no.</p>
<p><em> FPDF es freeware (tal y como se afirma al principio del fichero fuente). No hay limitaciones de uso. Puede usarlo libre y gratuitamente en su aplicación (comercial o no), con o sin modificaciones. </em></p>
<p>Por otro lado, exíste otra clase, que técnicamente utiliza fpdf (un pelín modificado) que permite crear al vuelo PDFs desde ficheros HTML, HTML 2 PDF, aunque la verdad, no es tan automático como dicen&#8230; en fin, es para mantener la gracia del juego.</p>
<p>Si queréis ver su resultado, sólo tenéis que comprar un móvil en <a title="Telecom Libre" href="http://www.telecomlibre.net">www.telecomlibre.net</a>, contratar un hosting en <a title="Veliris Hosting" href="http://www.veliris.com">www.veliris.com</a> ó porqué no&#8230; un diseño web, tienda virtual&#8230; bla bla bla (un poquito de publicidad&#8230; )</p>
<p><a href="http://www.fpdf.org">http://www.fpdf.org</a></p>
<p><a href="http://html2fpdf.sourceforge.net/">http://html2fpdf.sourceforge.net/</a></p>
<p>Un Saludo,</p>
<p>Carlos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carloscordero.com/blog/2006/04/07/generando-pdfs-dinamicos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

