<?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>Linux, Java y programación &#187; PHP</title>
	<atom:link href="http://casidiablo.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Comprimir archivos con PHP</title>
		<link>http://casidiablo.net/ejemplo-comprimir-zip-bunzip-zlib-php/</link>
		<comments>http://casidiablo.net/ejemplo-comprimir-zip-bunzip-zlib-php/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 04:54:54 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[bunzip]]></category>
		<category><![CDATA[compresión]]></category>
		<category><![CDATA[comprimir]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[zlib]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3847</guid>
		<description><![CDATA[Zlib es una librería que proporciona funciones que nos permiten realizar tareas de compresión y descompresión usando el formato GZIP. En esta entrada vamos a ver algunos ejemplos sencillos de compresión de archivos usando dicha librería, y además veremos cómo funcionan las librerías adicionales para comprimir archivos en ZIP y Bunzip&#8230; aunque también existen otros [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fejemplo-comprimir-zip-bunzip-zlib-php%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fcasidiablo.in%2FcrIjSm%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Comprimir%20archivos%20con%20PHP%22%20%7D);"></div>
<p><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/07/avatardr.png" alt="" title="avatardr" width="108" height="175" style="float: right; margin: 5px;" /><a href="http://php.net/manual/en/book.zlib.php" class="external">Zlib</a> es una librería que proporciona funciones que nos permiten realizar tareas de compresión y descompresión usando el formato GZIP. En esta entrada vamos a ver algunos ejemplos sencillos de compresión de archivos usando dicha librería, y además veremos cómo funcionan las librerías adicionales para comprimir archivos en <code>ZIP</code> y <code>Bunzip</code>&#8230; aunque también existen otros formatos disponibles como <code>rar</code>, <code>lzf</code> y <code>phar</code>.</p>
<h3>Comprimir y descomprimir usando el formato GZIP</h3>
<p>Este es un ejemplo básico en donde se comprime y descomprime un archivo:</p>
<pre class="brush: php; title: ; notranslate">function descomprimir($origen, $destino) {
  $string = implode(&quot;&quot;, gzfile($origen));
  $fp = fopen($destino, &quot;w&quot;);
  fwrite($fp, $string, strlen($string));
  fclose($fp);
} 

function comprimir($origen, $destino) {
  $fp = fopen($origen, &quot;r&quot;);
  $data = fread ($fp, filesize($origen));
  fclose($fp);
  $zp = gzopen($destino, &quot;w9&quot;);
  gzwrite($zp, $data);
  gzclose($zp);
}
comprimir(&quot;archivo.txt&quot;,&quot;archivo.gz&quot;);
descomprimir(&quot;archivo.gz&quot;,&quot;archivo2.txt&quot;);</pre>
<p>Esta es una breve descripción de las funciones para Gzip incluidas en Zlib:</p>
<ul>
<li><code>gzclose</code> — Cierra un puntero gz-file</li>
<li><code>gzcompress</code> — Comprime una cadena de texto</li>
<li><code>gzencode</code> — Crea una cadena de texto comprimida en gzip</li>
<li><code>gzeof</code> — Verifica si es el fin del archivo en un puntero gz-file</li>
<li><code>gzfile</code> — Lee el contenido de un archivo gzip y lo almacena en un arreglo</li>
<li><code>gzgetc</code> — Obtiene el caracter al que apunta un gz-file pointer</li>
<li><code>gzgets</code> — Obtiene la linea a la que apunta un gz-file pointer</li>
<li><code>gzgetss</code> — Obtiene la linea a la que apunta un gz-file pointer y remueve las etiquetas HTML</li>
<li><code>gzinflate</code> — Descomprime una cadena comprimida</li>
<li><code>gzopen</code> — Abre un archivo gzip</li>
</ul>
<h3>Comprimir usando el formato Bunzip</h3>
<p>Aquí un ejemplo muy básico:</p>
<pre class="brush: php; title: ; notranslate">function comprimir_bzip($origen, $destino){
    // abrir el archivo en modo escritura
    $bz = bzopen($destino, &quot;w&quot;);
    // escribir el contenido del origen
    bzwrite($bz, file_get_contents($filename));
    // cerrar el archivo
    bzclose($bz);
}</pre>
<p>Información adicional y lista de las funciones disponibles: <strong><a class="external" href="http://www.php.net/manual/en/book.bzip2.php">PHP: Bunzip</a></strong>.</p>
<h3>Comprimir usando el formato ZIP</h3>
<p>En este caso se utilizan la clase <code>ZipArchive</code>:</p>
<pre class="brush: php; title: ; notranslate">function comprimir_zip($origen, $destino){
    $zip = new ZipArchive();
    if ($zip-&gt;open($destino, ZIPARCHIVE::CREATE)!==TRUE) {
        die(&quot;Error al crear el archivo&quot;);
    }
    $zip-&gt;addFile($origen, &quot;/&quot;.basename($origen));
    $zip-&gt;close();
}</pre>
<h3>Verificar la existencia de las librerías</h3>
<p>Esta es una manera sencilla de verificar si PHP fue compilado con soporte para estas librerías:</p>
<pre class="brush: php; title: ; notranslate">if( class_exists('ZipArchive') )
    echo &quot;ZIP: OK\n&quot;;
if( function_exists('bzwrite') )
    echo &quot;Bunzip: OK\n&quot;;
if( function_exists('gzwrite') )
    echo &quot;gzip: OK\n&quot;;</pre>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ejemplo-comprimir-zip-bunzip-zlib-php/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Convertir XML a Array en PHP</title>
		<link>http://casidiablo.net/parser-xml-php/</link>
		<comments>http://casidiablo.net/parser-xml-php/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 06:10:35 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xml2array]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3614</guid>
		<description><![CDATA[PHP posee una completa API para la manipulación de archivos XML. Sin embargo, algunas veces queremos hacer cosas muy simples y no vale la pena construir manualmente un script que sirva de parser de un archivo XML. En esos casos, podemos hacer uso de una función llamada xml2array. La idea es bastante simple: le pasamos [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fparser-xml-php%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Convertir%20XML%20a%20Array%20en%20PHP%22%20%7D);"></div>
<p style="text-align: justify;">PHP posee una <a href="http://www.php.net/manual/en/book.xml.php">completa API para la manipulación de archivos XML</a>. Sin embargo, algunas veces queremos hacer cosas muy simples y no vale la pena construir manualmente un script que sirva de parser de un archivo XML. En esos casos, podemos hacer uso de una función llamada <a href="http://www.bin-co.com/php/scripts/xml2array/">xml2array</a>.</p>
<p style="text-align: justify;">La idea es bastante simple: le pasamos como argumento el string de un archivo XML y nos retorna un array asociativo con los datos del mismo. Los pasos son los siguientes:</p>
<p style="text-align: justify;">
<h3>0. Descargar la función</h3>
<p style="text-align: justify;">Lo primero es <a href="http://www.bin-co.com/php/scripts/xml2array/">descargar la función de aquí</a>. Copias el código PHP y lo pones en un archivo con nombre xml2array.php</p>
<p style="text-align: justify;">
<h3>1. Ejecutar la función [ejemplo]</h3>
<p style="text-align: justify;">Debemos usar la función <a href="http://php.net/manual/en/function.file-get-contents.php"><code>file_get_contents</code></a> para obtener el string con el XML que pasaremos como parámetro a la función. Suponiendo que tenemos este archivo XML:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
&lt;distros type=&quot;linux&quot;&gt;
    &lt;nombre id=&quot;1&quot;&gt;Gentoo&lt;/nombre&gt;
    &lt;nombre id=&quot;2&quot;&gt;Arch&lt;/nombre&gt;
    &lt;nombre id=&quot;3&quot;&gt;Exherbo&lt;/nombre&gt;
&lt;/distros&gt;</pre>
<p style="text-align: justify;">Podríamos usar xml2array así:</p>
<pre class="brush: php; highlight: [4]; title: ; notranslate">&lt;?php
require(&quot;xml2array.php&quot;);
$contenido = file_get_contents('datos.xml');
$resultado = xml2array($contenido);
var_dump($resultado);
?&gt;</pre>
<p>El resultado sería el dump del array:<span id="more-3614"></span></p>
<pre class="brush: php; title: ; notranslate">array(2) {
  [&quot;distros&quot;]=&gt;
  array(1) {
    [&quot;nombre&quot;]=&gt;
    array(6) {
      [0]=&gt;
      string(6) &quot;Gentoo&quot;
      [1]=&gt;
      string(4) &quot;Arch&quot;
      [&quot;0_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;1&quot;
      }
      [&quot;1_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;2&quot;
      }
      [2]=&gt;
      string(7) &quot;Exherbo&quot;
      [&quot;2_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;3&quot;
      }
    }
  }
  [&quot;distros_attr&quot;]=&gt;
  array(1) {
    [&quot;type&quot;]=&gt;
    string(5) &quot;linux&quot;
  }
}</pre>
<p style="text-align: justify;">Veamos un ejemplo un poco más avanzado. Vamos a procesar un documento XML que proporciona Mercado Libre con productos a la venta; además vamos a mostrar un listado HTML con dichos productos:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
require(&quot;xml2array.php&quot;);
$contenido = file_get_contents('http://www.mercadolibre.com.co/jm/searchXml?as_categ_id=1648');
$resultado = xml2array($contenido);
$items = $resultado['response']['listing']['items']['item'];
foreach($items as $item)
    if(isset($item['title'])){
        echo &quot;&lt;p&gt;&lt;a href='{$item['link']}'&gt;&quot;;
        echo &quot;&lt;img src='{$item['image_url']}'/&gt;&lt;br/&gt;&quot;;
        echo &quot;&lt;b&gt;{$item['title']}&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&quot;;
        echo &quot;&lt;em&gt;{$item['subtitle']}&lt;/em&gt;&lt;br&gt;&quot;;
        echo &quot;&lt;em&gt;{$item['currency']}&lt;/em&gt; {$item['price']}&lt;/p&gt;&quot;;
    }
?&gt;</pre>
<p style="text-align: justify;">Ejecutando el ejemplo anterior obtendremos algo como lo siguiente:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/php-mercado-libre.png" alt="" title="php-mercado-libre" width="512" height="259" class="alignnone size-full wp-image-3620" /></p>
<p style="text-align: justify;">
<h3>Descarga de los ejemplos</h3>
</p>
<p style="text-align: justify;">Puedes descargar los archivos usados en los ejemplos anteriores. Ten en cuenta que la versión de la función que está en la descarga es la última a la fecha (1 de febrero de 2010). Aunque funciona muy bien, los autores tienden a actualizarla, así que podrías echar un vistazo a la página oficial en busca de nuevas versiones.</p>
<p style="text-align: justify;"><a href="http://casidiablo.net/descargar/Ejemplo+Xml2Array" class="descargacodigo">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/parser-xml-php/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>nWordPress, wordpress en Java</title>
		<link>http://casidiablo.net/nwordpress/</link>
		<comments>http://casidiablo.net/nwordpress/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 15:09:37 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[nwordpress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1921</guid>
		<description><![CDATA[Hace un par de días leí en JavaHispano acerca de nWordpress, un porte de WordPress 2.51 a Java que ha sido realizado por Numiton. Lo han logrado utilizando su herramienta PtoJ, que permite traducir de modo automático código PHP a código Java/Java EE. Por supuesto lo he probado por curiosidad, y de primerazo parece funcionar bien: Contras: [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fnwordpress%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22nWordpress%2C%20wordpress%20en%20Java%22%20%7D);"></div>
<p>Hace un par de días <a href="http://www.javahispano.org/contenidos/es/nwordpress__un_porte_de_wordpress_a_java/">leí en JavaHispano acerca de nWordpress</a>, un porte de WordPress 2.51 a Java que ha sido realizado por Numiton. Lo han logrado utilizando su herramienta <a href="http://www.numiton.com/products/ptoj-overview.html">PtoJ</a>, que permite traducir de modo automático código PHP a código Java/Java EE.</p>
<p>Por supuesto lo he probado por curiosidad, y de primerazo parece funcionar bien:</p>
<p style="text-align: center;"><img class="size-full wp-image-1922 aligncenter" title="nwordpress" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/10/nwordpress.png" alt="" width="600" /></p>
<h3>Contras:</h3>
<p>Pues yo le veo bastantes:</p>
<ul>
<li>Puesto que es un proyecto que está en sus inicios: no soporta otros lenguajes mas que el inglés, <strong>no soporta plugins ni nuevos temas</strong>; no más con eso creo que no sirve <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
<li>Es inncesesario (opinión personal)</li>
<li>No deja de ser mas que una simple curiosidad (o broma, como algunos desarrolladores han comentado). Por supuesto no tiene sentido cambiar de una plataforma que puedes montar fácilmente en cualquier servidor (apache+php), por una un poco más difícil de implementar (tomcat+java).</li>
</ul>
<div>Igual, si alguien se ánima a echarle un vistazo, los pasos de instalación son muy breves:</div>
<div>
<ul>
<li>Instalar Tomcat Apache y MySQL; esto te puede ayudar: <a href="http://casidiablo.net/instalacion-del-apache-tomcat-en-linux-y-windows/">clic</a> y <a href="http://casidiablo.net/instalacion-de-un-entorno-web-tomcat-jsp-mysql/">clic</a>.</li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=214436">Descargar los binarios</a></li>
<li>Copiar el archivo .war en la carpeta webapps</li>
<li>Iniciar los servicios de Tomcat y poner en el navegador: http://localhost:puerto/nwp</li>
</ul>
<div><strong><a href="http://www.numiton.org/nwordpress/overview.html">Página oficial del proyecto</a></strong></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/nwordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Enlaces interesantes del blogroll [ago]</title>
		<link>http://casidiablo.net/enlaces-interesantes-blogroll/</link>
		<comments>http://casidiablo.net/enlaces-interesantes-blogroll/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 04:01:31 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[blogsfera]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Boxhead]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OpenArena]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PieDock]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1367</guid>
		<description><![CDATA[Un listado con las entradas que más me han llamado de la atención, de los blogs y webs que suelo leer, ordenados cronológicamente: Sonido de Videos 3gp en Ubuntu PieDock: Un dock con estilo Asignar privilegios a usuarios o grupos con sudoers &#8211; I Hojas de referencia de PHP, MySQL y CSS Como sincronizar el [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fenlaces-interesantes-blogroll%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Enlaces%20interesantes%20del%20blogroll%20%5Bago%5D%22%20%7D);"></div>
<p>Un listado con las entradas que más me han llamado de la atención, de los blogs y webs que suelo leer, ordenados cronológicamente:</p>
<ul>
<li><a href="http://clinuxera.org/elcaminogeek/?p=107">Sonido de Videos 3gp en Ubuntu</a></li>
<li><strong><a href="http://linpodcast.com/blog/2008/08/04/piedock-un-dock-con-estilo/">PieDock: Un dock con estilo</a></strong></li>
<li><a href="http://120linux.com/asignar-privilegios-a-usuarios-o-grupos-con-sudoers-i/">Asignar privilegios a usuarios o grupos con sudoers &#8211; I</a></li>
<li><strong><a href="http://linuxzarpele.blogspot.com/2008/08/hojas-de-referencia-de-php-mysql-y-css.html">Hojas de referencia de PHP, MySQL y CSS</a></strong></li>
<li><a href="http://www.youzone.es/2008/08/09/como-sincronizar-el-iphone-con-ubuntu-710-804/">Como sincronizar el iphone con Ubuntu 7.10 &#8211; 8.04</a></li>
<li><strong><a href="http://ubuntulife.wordpress.com/2008/08/11/acetoneiso2-otro-daemon-tools-para-linux/">AcetoneIso2, otro “Daemon Tools” para Linux</a></strong></li>
<li><a href="http://www.linuxjuegos.com/2008/08/13/openarena-080/">Es lanzada la versión 0.8.0 de OpenArena</a></li>
<li><a href="http://juanip.granahost.com/boxhead-un-juego-adictivo/">Boxhead, un juego adictivo</a></li>
</ul>
<p>Y los dejo con esta joya de imagen&#8230; <strong>Windows dice presente en los juegos Olímpicos, con su muy común Pantallazo Azul</strong>:<a href="http://i270.photobucket.com/albums/jj96/Casidiablo/bluescreenbeijing082.jpg"></a></p>
<p style="text-align: center;"><a href="http://i270.photobucket.com/albums/jj96/Casidiablo/bluescreenbeijing082.jpg"><img class="alignnone" src="http://i270.photobucket.com/albums/jj96/Casidiablo/bluescreenbeijing082.jpg" alt="" width="530" height="367" /></a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/enlaces-interesantes-blogroll/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

