<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Tema: Especiales | Sentido Web</title>
<link>http://sentidoweb.com/</link>
<description>Actualidad y maneras de hacer en Internet (programación, diseño, tendencias, negocios...)</description>
<language>es</language>
<copyright>Copyright 2008</copyright>
<lastBuildDate>Mon, 24 Jul 2006 16:00:00 +0000</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.2</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>Laboratorio: creando documentos PDF con Zend Framework</title>
<description><![CDATA[<p>El otro día <a href="http://sentidoweb.com/2006/07/19/zend-framework-creando-documentos-pdf.php">contábamos</a> cómo eran las clases del framework de Zend para crear documentos PDF, también decíamos que el ejemplo de uso iría otro día, pues aquí vamos a explicar cómo realizar un PDF con una imagen como cabecera y un texto que se indique por un formulario.</p>
<p>También comentaba que según lo visto, el framework de Zend me gustaba bastante, pero debo decir que la documentación está un poco verde y que algunas de las opciones que parecen activadas no lo están (para darme cuenta de esto tuve que indagar por el código fuente).
</p>

<p>
<a href="http://sentidoweb.com/lab/pdf/php/pdf.html"><img alt="pdf-ejemplo.png" src="http://sentidoweb.com/img/2006/07/pdf-ejemplo.png" width="250" height="232" class="center"/></a></p>

<p>El crear un PDF parece a primera vista algo sencillo a simple vista (¡qué optimista!), pensaba que sería algo como: crear documento, crear página y ponerte a escribir. Todo bien hasta que tienes que escribir, porque más que escribir tienes que maquetar, decir que texto va en tal lugar, no vale con escribir un párrafo que directamente y que el Acrobat Reader lo coloque como pensamos que debería ir. No, tenemos que ir calculando lo que va a ocupar la línea, y si no se sale de la página, escribirla.</p>]]></description>
<link>http://sentidoweb.com/2006/07/24/laboratorio-creando-documentos-pdf-con-zend-framework.php</link>
<guid>http://sentidoweb.com/2006/07/24/laboratorio-creando-documentos-pdf-con-zend-framework.php</guid>
<category>Especiales</category>
<pubDate>Mon, 24 Jul 2006 16:00:00 +0000</pubDate>
</item>
<item>
<title>Zend Framework: creando documentos PDF</title>
<description><![CDATA[<p>Avanzando en el framework de Zend, hoy vamos a ver cómo crear documentos PDF. Quizás a muchos no les vaya a ser útil, pero un documento PDF es un formato bastante extendido.</p>
<p>De forma sencilla, ya que la librería del framework es algo extensa, vamos a explicar que métodos son necesarios para crear un PDF.</p>
<p>Para cargar la librería:</p>
<pre><code>require_once 'Zend/Pdf.php';</code></pre>
<p>Para crear un nuevo documento PDF:</p>
<pre><code>$pdf = new Zend_Pdf();</code></pre>
<p>Para crear una nueva página:</p>
<pre><code>$pdf->pages[] = ($page = $pdf->newPage('A4'));</code></pre>
<pre><code>$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);</code></pre>
<pre><code>$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);</code></pre>
<p>Obtener ancho y alto de la página:</p>
<pre><code>$ancho  = $page->getWidth();
$alto = $page->getHeight();</code></pre>
<p>Usar estilos:</p>
<pre><code>$estilo = new Zend_Pdf_Style();
$estilo->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
$font = Zend_Pdf_Font::fontWithPath('/path/fuente.ttf');
$estilo->setFont($font, 10);
$estilo->setStyle($style);</code></pre>
<p>Escribir texto:</p>
<pre><code>$page->drawText("Hola Mundo", $x, $y);</code></pre>
<p>Insertar imágenes:</p>
<pre><code>$img = Zend_Pdf_ImageFactory::factory('sentidoweb.png');
$page->drawImage($img, $x, $y, $x+&ancho, $y+$alto);</code></pre>
<p>Devolver la salida:</p>
<pre><code>echo $pdf->render();</code></pre>
<p>Eso sí, antes hay que tener en cuenta que tenemos que devolver al inicio del script el Content-Type:</p>
<pre><code>header("Content-Type: application/pdf");
// Si queremos que se devuelva como un fichero adjunto
header("Content-Disposition: attachment; filename=\"prueba.pdf\"");</code></pre>
<p>Si, se que parece muy resumido, pero otro día habrá un ejemplo más completo, mejor ir paso a paso.</p>
<p><a href="http://framework.zend.com/manual/en/zend.pdf.html">Zend Framework : PDF</a></p>]]></description>
<link>http://sentidoweb.com/2006/07/19/zend-framework-creando-documentos-pdf.php</link>
<guid>http://sentidoweb.com/2006/07/19/zend-framework-creando-documentos-pdf.php</guid>
<category>Especiales</category>
<pubDate>Wed, 19 Jul 2006 17:00:00 +0000</pubDate>
</item>
<item>
<title>Zend Framework: uso básico de la base de datos</title>
<description><![CDATA[<p>Algo que siempre se usa que realmente solo se debería crear una vez en nuestras aplicaciones web es el gestor de la base de datos. Y si seguimos con el estudio del framework de Zend, nos encontramos con unas funcionalidades sobre la BD bastante aceptables, aunque ellos mismos digan que deben añadir cosas.</p>
<p>La principal característica es olvidarnos de la BD en cuestión y usarla, sea cual sea, de forma genérica. Por ahora este framework admite entre otras Microsoft SQL Server, MySQL, PostgreSQL y SQLite, estando basado en <a href="http://us2.php.net/pdo">PDO</a>. Lo siguiente, es que mediante una clase, el uso que normalmente le damos a una base de datos (selección, inserción y borrado) queda perfectamente resuelto.</p>]]></description>
<link>http://sentidoweb.com/2006/07/17/zend-framework-uso-basico-de-la-base-de-datos.php</link>
<guid>http://sentidoweb.com/2006/07/17/zend-framework-uso-basico-de-la-base-de-datos.php</guid>
<category>Especiales</category>
<pubDate>Mon, 17 Jul 2006 16:00:00 +0000</pubDate>
</item>
<item>
<title>Zend Framework: métodos estáticos</title>
<description><![CDATA[<p>Antes de meternos a estudiar los componentes que nos facilita el <a href="http://sentidoweb.com/2006/07/13/introduccian-al-zend-framework.php">framework de Zend</a>, es necesario ver los métodos estáticos, los cuales a parte de sernos útiles, también se usan dentro de los distintos componentes.</p>
<ul><li><a href="http://framework.zend.com/manual/en/zend.loadfile.html">loadFile()</a>: carga cualquier archivo con código php, envuelve a la funcion <em>include()</em>. Tiene 3 parámetros, el nombre del archivo, el directorio dónde se situa, si es <em>NULL</em> buscará solamente en el <em>include_path</em> y un flag para indicar si se usa <em>include</em> o <em>include_once</em>. Si se produce cualquier error lanza una excepción <em>Zend_Exception</em>.</li>
<li><a href="http://framework.zend.com/manual/en/zend.loadclass.html">loadClass()</a>: carga una clase, la cual se indica como parámetro, a parte se puede decir el directorio donde se encuentra. Si el directorio es <em>null</em> y el nombre de la clase tiene guiones bajos (_), usará los subrayados para localizar los directorios: p.e. Paquete_Componente_Clase lo sustituirá por Paquete/Componente/Clase.php. Si se produce algun error, se lanza una <em>Zend_Exception</em>.</li>
<li><a href="http://framework.zend.com/manual/en/zend.loadinterface.html">loadInterface()</a>:  funciona igual que <em>loadClass</em> pero para interfaces.</li>
<li><a href="http://framework.zend.com/manual/en/zend.isreadable.html">isReadable()</a>: es igual que la función <em>is_readable</em> de PHP pero con la posibilidad de buscar en el <em>include_path</em>.</li>
<li><a href="http://framework.zend.com/manual/en/zend.dump.html">dump()</a>: ejecuta la función <em>var_dump</em> de PHP pero usando etiquetas <em>pre</em> de HTML y seleccionando se si realiza un <em>echo</em> o no.</li>
<li><a href="http://framework.zend.com/manual/en/zend.register.html">register()</a>: registra un objeto en el espacio de la aplicación, una vez registrado, cuando se recupera, siempre será la misma instancia. Se le debe pasar por parámetro el nombre y la variable.</li>
<li><a href="http://framework.zend.com/manual/en/zend.registry.html">registry()</a>:  devuelve una variable del registro cuando se le pasa su nombre por parámetro o una lista de todas las variables del registro cuando se pasa <em>null</em>.</li>
</ul>
]]></description>
<link>http://sentidoweb.com/2006/07/14/zend-framework-metodos-estaticos.php</link>
<guid>http://sentidoweb.com/2006/07/14/zend-framework-metodos-estaticos.php</guid>
<category>Especiales</category>
<pubDate>Fri, 14 Jul 2006 17:00:00 +0000</pubDate>
</item>
<item>
<title>Introducción al Zend Framework</title>
<description><![CDATA[<p><img alt="zendframework.png" src="http://sentidoweb.com/img/2006/07/zendframework.png" width="150" height="99" class="right"/>Los creadores de PHP tambien son los autores de uno de los mejores frameworks de PHP (¿hay alguno más?), su filosofía es clara, la ley del mínimo esfuerzo, ¿para qué vas a crearte unas librerías cuando ya existen?.</p>

<p>Este framework está formado por una serie de métodos estáticos y componentes (que usarán estos métodos). Los componentes son varios y variados y aunque alguno es posible que no lo usemos nunca (aplicaicones que tiren de Amazon o de Flickr no es algo que solemos necesitar con frecuencia), hay otras que puede que las usemos hasta la saciedad, por ejemplo el componente para la BD. Entre los componentes que destacaría se encuentran: Zend_Config para temas de configuración de aplicaciones web, Zend_Db para tratar con bases de datos, Zend_Search o Zend_Feed entre otros.</p>

<p>La instalación es sencilla, tan solo tendremos que añadir en el fichero de configuracion <em>php.ini</em>, el path hasta la carpeta <em>library</em> del framework con la instruccion <a href="http://www.php-es.com/ini.core.html#ini.include-path">include_path</a>.</p>

<p>En entradas posteriores intentaremos ir presentando cada uno de los componentes.</p>

<p><a href="http://framework.zend.com">Zend Framework</a></p>

<p><a href="http://framework.zend.com/download">Descarga</a></p>

<p><a href="http://framework.zend.com/manual">Manual</a></p>]]></description>
<link>http://sentidoweb.com/2006/07/13/introduccion-al-zend-framework.php</link>
<guid>http://sentidoweb.com/2006/07/13/introduccion-al-zend-framework.php</guid>
<category>Especiales</category>
<pubDate>Thu, 13 Jul 2006 16:30:00 +0000</pubDate>
</item>
<item>
<title>Comet paso a paso: pizarra colaborativa para páginas web</title>
<description><![CDATA[<p>Hoy vamos a ver otro ejemplo de Comet, que a los que trabajamos en desarrollo web, nos puede venir muy bien, para cuando queremos testear una aplicación web de forma conjunta y online. También puede ser útil para realizar presentaciones.</p>
<p>Se trata de una pizarra colaborativa, para dibujar sobre páginas web. Cada usuario dibuja sobre el navegador y el resto de los usuarios ven lo que ha dibujado. Nada mejor para entenderlo que el siguiente video.</p>
<embed style="width:400px; height:326px;" id="VideoPlayback" align="middle" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=3123987441325639434" allowScriptAccess="sameDomain" quality="best" bgcolor="#ffffff" scale="noScale" wmode="window" salign="TL"  FlashVars="playerMode=embedded"> </embed>
<p>Se van a usar sobre todo tres cosas: <a href="http://sentidoweb.com/2006/05/19/comet-paso-a-paso-hola-mundo.php">comet</a>, <a href="http://sentidoweb.com/2006/05/29/laboratorio-elemento-canvas-en-firefox.php">canvas</a> y  <a href="http://www.php.net/xml">http://www.php.net/xml</a>, todo sobre <strong>Firefox</strong>.</p>]]></description>
<link>http://sentidoweb.com/2006/06/05/comet-paso-a-paso-pizarra-colaborativa-para-paginas-web.php</link>
<guid>http://sentidoweb.com/2006/06/05/comet-paso-a-paso-pizarra-colaborativa-para-paginas-web.php</guid>
<category>Especiales</category>
<pubDate>Mon, 05 Jun 2006 17:00:00 +0000</pubDate>
</item>
<item>
<title>AJAX paso a paso: validar enlaces</title>
<description><![CDATA[<p>En ocasiones en nuestros blogs o páginas ponemos una referencia a otro sitio, que cuando el visitante intenta acceder, se encuentra con que la página ya no está disponible. Vamos a hacer una pequeña función que una vez cargada la página vaya comprobando mediante AJAX si el enlace es correcto y si no lo es, lo modificaremos para que cuando se pulse en él, aparezca un mensaje indicando que ya no es un enlace válido.</p>]]></description>
<link>http://sentidoweb.com/2006/05/29/ajax-paso-a-paso-validar-enlaces.php</link>
<guid>http://sentidoweb.com/2006/05/29/ajax-paso-a-paso-validar-enlaces.php</guid>
<category>Especiales</category>
<pubDate>Mon, 29 May 2006 13:00:00 +0000</pubDate>
</item>
<item>
<title>Comet paso a paso: &apos;Hola Mundo&apos;</title>
<description><![CDATA[<p>Ya hace tiempo hablamos de <a href="http://sentidoweb.com/2006/03/28/comet-la-siguiente-etapa-de-ajax.php">Comet</a>, la siguiente etapa de AJAX, y al igual que hicimos como <a href="http://sentidoweb.com/2006/05/08/ajax-paso-a-paso-hola-mundo.php">AJAX</a>, vamos a intentar introducirnos en esta técnica y aprender a utilizarla.</p>

]]></description>
<link>http://sentidoweb.com/2006/05/19/comet-paso-a-paso-hola-mundo.php</link>
<guid>http://sentidoweb.com/2006/05/19/comet-paso-a-paso-hola-mundo.php</guid>
<category>Especiales</category>
<pubDate>Fri, 19 May 2006 15:33:21 +0000</pubDate>
</item>
<item>
<title>AJAX paso a paso: autocompletado en cajas de texto</title>
<description><![CDATA[<p>Hace ya tiempo escribí en <a href="http://displaynone.blogspot.com/2006/02/caja-de-texto-con-autocompletado.html">display: NONE</a> cómo hacer que el texto se autocompletara en una caja de texto según se fuera escribiendo en ella. En esa entrada comentaba que la obtención de los datos, que era mediante Javascript, se podía realizar mediante AJAX. Hoy vamos a explicar cómo se haría esa llamada mediante AJAX.
<a href="http://sentidoweb.com/lab/ajax/autocompletado/autocompletado.html"><img alt="ajax-autocompletado.png" src="http://sentidoweb.com/img/2006/05/ajax-autocompletado.png" width="167" height="180" class="center"/></a></p>]]></description>
<link>http://sentidoweb.com/2006/05/18/ajax-paso-a-paso-autocompletado-en-cajas-de-texto.php</link>
<guid>http://sentidoweb.com/2006/05/18/ajax-paso-a-paso-autocompletado-en-cajas-de-texto.php</guid>
<category>Especiales</category>
<pubDate>Thu, 18 May 2006 15:31:22 +0000</pubDate>
</item>
<item>
<title>Ajax paso a paso: el ahorcado</title>
<description><![CDATA[<p>Seguimos con nuestro especial sobre AJAX. Esta vez vamos a intentar dar un ejemplo de interactividad con el usuario y nada mejor para ello que un juego: el ahorcado.
<img alt="ahoracado.png" src="http://sentidoweb.com/img/2006/05/ahoracado.png" width="211" height="110" class="center"/></p>
<p>La verdad es que los juegos de este tipo ya no se estilan, pero es un ejemplo sencillo que podemos usar para otros casos, por ejemplo formularios, encuestas, ... Se trata de que el usuario interactúa sin preocuparse y la aplicación reacciona según lo que haga el usuario.</p>]]></description>
<link>http://sentidoweb.com/2006/05/11/ajax-paso-a-paso-el-ahorcado.php</link>
<guid>http://sentidoweb.com/2006/05/11/ajax-paso-a-paso-el-ahorcado.php</guid>
<category>Especiales</category>
<pubDate>Thu, 11 May 2006 17:30:00 +0000</pubDate>
</item>
<item>
<title>AJAX paso a paso: Información de imágenes</title>
<description><![CDATA[<p>AJAX tiene muchas utilidades, y aunque a veces se abusa de ello, siempre nos puede dar agilidad a la hora de cargar la página, vamos a mostrar un caso de cómo cargar datos nuevos en la página una vez se haya finalizado la carga de la página en sí. Para ello, un ejemplo que nos viene perfecto es una galería de imágenes y cargar los datos de cada imágen de forma asíncrona, que puede ser costoso si se carga la página con los datos de las imágenes y que el usuario tenga que esperar a esta información, cuando es posible que no le interese. A parte, explicaremos otro tipo de método de recibir datos, esta vez mediante el método POST y un XML.
<a href="http://sentidoweb.com/lab/ajax/imagenes/imagenes.html"><img alt="ajax-imagenes.png" src="http://sentidoweb.com/img/2006/05/ajax-imagenes.png" width="246" height="246" class="center"/></a></p>]]></description>
<link>http://sentidoweb.com/2006/05/09/ajax-paso-a-paso-informacion-de-imagenes.php</link>
<guid>http://sentidoweb.com/2006/05/09/ajax-paso-a-paso-informacion-de-imagenes.php</guid>
<category>Especiales</category>
<pubDate>Tue, 09 May 2006 16:09:23 +0000</pubDate>
</item>
<item>
<title>Ajax paso a paso: &apos;Hola Mundo&apos;</title>
<description><![CDATA[<p>Vamos a empezar con una serie de tutoriales sobre AJAX con ejemplos prácticos, menos este que es el típico "Hola Mundo". Antes de nada es necesario que conozcáis algo sobre <a href="http://es.wikipedia.org/wiki/AJAX">AJAX</a> y nada mejor que la lista que os pasamos hace tiempo: <a href="http://sentidoweb.com/2006/04/10/recursos-ajax-para-principiantes.php" title=" Recursos AJAX para principiantes">Recursos AJAX para principiantes</a>.</p>]]></description>
<link>http://sentidoweb.com/2006/05/08/ajax-paso-a-paso-hola-mundo.php</link>
<guid>http://sentidoweb.com/2006/05/08/ajax-paso-a-paso-hola-mundo.php</guid>
<category>Especiales</category>
<pubDate>Mon, 08 May 2006 17:15:00 +0000</pubDate>
</item>
<item>
<title>Especial UTF-8 (I)</title>
<description><![CDATA[<p>El <a href="http://es.wikipedia.org/wiki/UTF-8">UTF-8</a> es un tipo de codificación de caracteres para <a href="http://es.wikipedia.org/wiki/Unicode">Unicode</a> que nos permite escribir nuestras páginas web y no preocuparnos por si se va a ver correctamente o van a aparecer caracteres extraños.</p>
<p>Las veces que he trabajado en proyectos multilenguaje es lo que hemos usado, salvo en el caso de japonés y coreano que es preferible usar el <a href="http://es.wikipedia.org/wiki/UTF-16">UTF-16</a> porque ocupa menos espacio. Eso ha hecho que me haya acostumbrado a realizar siempre los proyectos en UTF-8 y así evitar luego los problemas que puedan surgir en futuras actualizaciones o en testeos y tener luego que cambiar todo el proyecto a UTF-8.</p>]]></description>
<link>http://sentidoweb.com/2006/03/30/especial-utf8-i.php</link>
<guid>http://sentidoweb.com/2006/03/30/especial-utf8-i.php</guid>
<category>MYSQL</category>
<pubDate>Thu, 30 Mar 2006 23:38:22 +0000</pubDate>
</item>


</channel>
</rss>