<?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>Bosque Viejo &#187; noticia</title>
	<atom:link href="http://bosqueviejo.net/tag/noticia/feed/" rel="self" type="application/rss+xml" />
	<link>http://bosqueviejo.net</link>
	<description>Sitio web sobre programación, software libre, redes, servidores, ofimática... y todo lo relacionado con la informática que nos rodea</description>
	<lastBuildDate>Wed, 08 Feb 2012 10:14:54 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>¡Debian Squeeze 6.0 liberada!</title>
		<link>http://bosqueviejo.net/2011/02/14/debian-squeeze-liberada/</link>
		<comments>http://bosqueviejo.net/2011/02/14/debian-squeeze-liberada/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 18:11:32 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[squeeze]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=573</guid>
		<description><![CDATA[ Hace aproximadamente una semana se liberó la nueva versión de una de las distribuciones de GNU/Linux más usadas y respetadas del sector: Debian 6.0 Squeeze.
La nueva versión viene con un instalador mejorado, la instalación gráfica recuerda a las primeras instalaciones de RedHat, tiene un buen acabado y es bastante rápida, además de configurable. Destacar que esta versión está disponible en soporte Blu-Ray (además de DVD y CD-ROM, como siempre), y USB.
Como novedad, se puede elegir, en la instalación, el sistema de ficheros ext4 (aunque por defecto nos da la opción de ext3), además del uso de LVM, que también estaba disponible en Lenny.
Otra de las novedades es la posiblidad de poder usar el kernel de FreeBSD en lugar del kernel de Linux. Realmente no son, aún, intercambiables 100%, puesto que no hay soporte completo desde la interfaz de usuario a todas las opciones que puede brindar FreeBSD, pero poco a poco todo llegará.
El software que trae, y que destaca la noticia de su liberación es el siguiente:

KDE 4.4.5, el cual no termino de verlo con tan buenos ojos porque sigo siendo de los que prefieren la versión 3.5, pero he de admitir que esta es menos buggy que la [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/a944e0_squeeze-150x150.jpg" alt="Squeeze" title="a944e0_squeeze" width="150" height="150" class="alignleft size-thumbnail wp-image-576" /> Hace aproximadamente una semana se liberó la nueva versión de una de las distribuciones de GNU/Linux más usadas y respetadas del sector: <strong>Debian 6.0 <em>Squeeze</em></strong>.</p>
<p>La nueva versión viene con un instalador mejorado, la instalación gráfica recuerda a las primeras instalaciones de RedHat, tiene un buen acabado y es bastante rápida, además de configurable. Destacar que esta versión está disponible en soporte <em>Blu-Ray</em> (además de DVD y CD-ROM, como siempre), y USB.</p>
<p>Como novedad, se puede elegir, en la instalación, el sistema de ficheros ext4 (aunque por defecto nos da la opción de ext3), además del uso de LVM, que también estaba disponible en Lenny.</p>
<p>Otra de las novedades es la posiblidad de poder usar el kernel de FreeBSD en lugar del kernel de Linux. Realmente no son, aún, intercambiables 100%, puesto que no hay soporte completo desde la interfaz de usuario a todas las opciones que puede brindar FreeBSD, pero poco a poco todo llegará.</p>
<p>El software que trae, y que destaca la <a href="http://www.debian.org/News/2011/20110205a">noticia de su liberación</a> es el siguiente:</p>
<ul>
<li>KDE 4.4.5, el cual no termino de verlo con tan buenos ojos porque sigo siendo de los que prefieren la versión 3.5, pero he de admitir que esta es menos <em>buggy</em> que la distribución de Ubuntu en la que probé esta versión de KDE.</li>
<li>Gnome 2.30, que tiene muy buen acabado y del cual no puedo decir gran cosa porque no soy usuario aférrimo de este escritorio, pero lo que he visto me ha gustado.</li>
<li>OpenOffice 3.2.1</li>
<li>Gimp 2.6.11</li>
<li>Iceweasel 3.5.16</li>
<li>Icedove 3.0.11</li>
<li>PostgreSQL 8.4.6</li>
<li>MySQL 5.1.49</li>
<li>Linux 2.6.32</li>
<li>Apache 2.2.16</li>
<li>Samba 3.5.6</li>
<li>Python 2.6.6, 2.5.5 y 3.1.3</li>
<li>Perl 5.10.1</li>
<li>PHP 5.3.3</li>
<li>Asterisk 1.6.2.9</li>
<li>Nagios 3.2.3</li>
<li>Xen 4.0.1</li>
<li>OpenJDK 6b18</li>
<li>Tomcat 6.0.18</li>
<li>&#8230;</li>
</ul>
<p>Mucho por ver&#8230; ya iremos catándolo a través del tiempo, de momento, desde la versión Sarge de Debian no hay ninguna que me haya dejado con mal sabor de boca, y van: Sarge, Etch, Lenny y ahora Squeeze <img src='http://bosqueviejo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2011/02/14/debian-squeeze-liberada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3</title>
		<link>http://bosqueviejo.net/2009/08/19/php-5-3/</link>
		<comments>http://bosqueviejo.net/2009/08/19/php-5-3/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:02:57 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=181</guid>
		<description><![CDATA[Llego algo tarde, cosas del verano, pero voy a comentar algunas de las mejoras que vienen incluidas en la nueva liberación de PHP, la 5.3.
Para mi, esta versión, además de corregir fallos de la anterior, aporta características que le hacen acercarse aún más a la forma de programación profesional que viene dada con otros lenguajes como Java, C#, C++, Python, Ruby&#8230;

Espacios de nombres (namespaces)
Los espacios de nombres, llamados en otros lenguajes: paquetes, módulos, &#8230;; con esto, podemos tener organizado nuestro código, no solo en directorios, sino también bien delimitado su espacio de nombres mediante el uso del namespace.
Por ejemplo, si tenemos dos directorios: File y BD; que pertenecen a un programa y cada uno de ellos tiene un archivo para contener la clase Output, en las versiones anteriores de PHP habría que incluir uno u otro, o modificar el nombre para que fuese FileOutput y DBOutput, redundando la ruta con el nombre de la clase.
Ahora, con el uso de namespaces, se puede delimitar con solo agregar una sección de código como esta:

namespace File &#123;
&#160;
    class Output &#123;
        /* ... */
    &#125;
&#125;
&#160;
namespace &#123;
    $f = [...]]]></description>
			<content:encoded><![CDATA[<p>Llego algo tarde, cosas del verano, pero voy a comentar algunas de las mejoras que vienen incluidas en la nueva liberación de PHP, la 5.3.</p>
<p>Para mi, esta versión, además de corregir fallos de la anterior, aporta características que le hacen acercarse aún más a la forma de programación profesional que viene dada con otros lenguajes como Java, C#, C++, Python, Ruby&#8230;</p>
<p><!--TOC--></p>
<h3>Espacios de nombres (namespaces)</h3>
<p>Los <a href="http://es.php.net/namespaces">espacios de nombres</a>, llamados en otros lenguajes: paquetes, módulos, &#8230;; con esto, podemos tener organizado nuestro código, no solo en directorios, sino también bien delimitado su espacio de nombres mediante el uso del <em>namespace</em>.</p>
<p>Por ejemplo, si tenemos dos directorios: <em>File</em> y <em>BD</em>; que pertenecen a un programa y cada uno de ellos tiene un archivo para contener la clase <em>Output</em>, en las versiones anteriores de PHP habría que incluir uno u otro, o modificar el nombre para que fuese <em>FileOutput</em> y <em>DBOutput</em>, redundando la ruta con el nombre de la clase.</p>
<p>Ahora, con el uso de namespaces, se puede delimitar con solo agregar una sección de código como esta:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">namespace</span> <span style="color: #990000;">File</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">class</span> Output <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">/* ... */</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">namespace</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$f</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #990000;">File</span>\Output<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Static&#8230; ahora sí</h3>
<p>En las versiones anteriores de PHP, los valores <em>static</em> no eran tratados del todo bien, no permitiéndose algunos usos que parecían lógicos y no produciéndose, sobre todo en la herencia, los resultados que se esperaban.</p>
<p>Ahora, <a href="http://es.php.net/manual/en/language.oop5.static.php">ya se permite el uso de variables</a> para contener el nombre de la clase a la que llamar de forma estática, es decir, ya se permite este uso:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> A <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> say<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Hola<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$clase</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;A&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$clase</span><span style="color: #339933;">::</span><span style="color: #004000;">say</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Así mismo, el uso del <a href="http://es.php.net/lsb"><em>late state binding</em></a>, es posible mediante la palabra clave <em>static</em>, de modo que, si se llama a un método estático como <em>static::metodo()</em> en lugar de como <em>self::metodo()</em>, se llama al método de la clase hija que haya sobrecargado al método que se llama. Un ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> A <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> who<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #009900; font-weight: bold;">__CLASS__</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        static<span style="color: #339933;">::</span><span style="color: #004000;">who</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Here comes Late Static Bindings</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> B <span style="color: #000000; font-weight: bold;">extends</span> A <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> who<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">echo</span> <span style="color: #009900; font-weight: bold;">__CLASS__</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
B<span style="color: #339933;">::</span><span style="color: #004000;">test</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// output: B</span></pre></div></div>

<p>Por último, la función especial <em>__call</em> no se llama cuando no hay un método de clase que no exista, en su lugar se llamará a <a href="http://es.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods"><em>__callStatic</em></a>, de modo que se pueda hacer diferencia de cuando se está llamando a un método de objeto y cuando se llama a un método de clase.</p>
<h3>Más de Late State Binding</h3>
<p>Hasta ahora, cuando se quería hacer una clase abstracta que llamase a funciones de sus clases hijas, que aún no han sido declaradas, éstas debían ser abstractas. Pero si la clase no era abstracta y el método a llamar no constaba como abstracto, la llamada no se realizaba a esa función, sino a la del padre.</p>
<p>El sistema de <em>late state binding</em>, asegura que la llamada a métodos se hará siempre de abajo a arriba, es decir, si existe un método en la clase hija que se instanció, aunque el método en ejecución sea el del padre, el método que se llama es el de la clase hija. Más o menos lo que se vió con los métodos estáticos, pero esta vez con métodos.</p>
<h3>Funciones anónimas</h3>
<p>El uso de <a href="http://es.php.net/manual/en/functions.anonymous.php">funciones anónimas</a> (<em>closures</em> o lambda) es una técnica de programación que permite completar código escrito, mediante el desarrollo parcial de algún algoritmo. Imagina que quieres hacer un código en el que tengas que hacer algo, un paso inicial, un paso intermedio y, en cada iteración una ejecución específica, para terminar con un último paso tras esa iteración.</p>
<p>El código concreto dentro de la iteración puede variar&#8230; y de hecho variará en cada implementación, pero el resto no, el resto se mantiene de forma fija. Pues, se puede implementar el esqueleto del programa, y aceptar como parámetro de la función que se haga, una variable que contenga el código a ejecutar. La función que completaría nuestro código se puede hacer así:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$dato1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dato2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dato1</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;--&quot;</span> <span style="color: #000088;">$dato2</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
algoritmo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> algoritmo<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$func</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$func</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #339933;">*</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>También se pueden emplear funciones como <em>array_walk</em>, <em>preg_replace_callback</em>, <em>uasort</em>, etc.</p>
<p>Esto permite realizar códigos como los que se realizan en Ruby o en los lenguajes funcionales y declarativos.</p>
<h3>Recolector de Basura de Referencias Circulares opcional</h3>
<p>Se deja al programador la decisión de si quiere activar el recolector de referencias circulares del <em>garbage collector</em>, o no. Por defecto viene activado y actúa de la siguiente forma, con este código:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> A <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> __construct <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">b</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> B<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> B <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> __construct <span style="color: #009900;">&#40;</span><span style="color: #000088;">$parent</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parent</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$parent</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1000000</span> <span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> A<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">number_format</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">memory_get_usage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Si se ejecuta desde consola, con una versión de PHP anterior a la 5.3, se verá en pantalla un error fatal, de que el límite de memoria se ha superado.</p>
<p>Esto es debido a que la liberación de memoria, cuando se va a proceder a liberar la clase B, ve que tiene una referencia a A, que ya va a ser liberada y crea un ciclo, con lo que, para evitarlo, no libera B. En las versiones de PHP 5.3 en adelante, se detecta este ciclo como tal y se liberan ambas.</p>
<p>También existe la posibilidad de desactivar este comportamiento o ver si está activo, con las funciones <em>gc_enable</em>, <em>gc_enabled</em> y <em>gc_disable</em>.</p>
<h3>Nowdoc y Heredoc</h3>
<p>Hasta ahora, los bloques de tipo <em>heredoc</em> eran los únicos que permitían escribir de forma libre un texto para después usarlo como variable. Ahora también disponemos de los <em>nowdoc</em>, que son iguales, salvo que no se hace <em>parseo</em> de variables. Un ejemplo:
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$hola</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Hi, &quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$hd</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;&lt;</span>END
texto <span style="color: #000088;">$hola</span>
<span style="color: #990000;">END</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$nd</span> <span style="color: #339933;">=</span> <span style="color: #0000cc; font-style: italic;">&lt;&lt;&lt;'END'
texto $hola
END</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$hd</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// output: texto Hi,</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$nd</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// output: texto $hola</span></pre></div></div>

<h3>Constantes</h3>
<p>Ahora, la palabra clave <em>const</em> puede ser empleada fuera del alcance de una clase, con lo que, en lugar de usar <em>define</em> se puede emplear esta forma:</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// antes</span>
<span style="color: #666666; font-style: italic;">// define(&quot;CONSTANTE&quot;, &quot;Hola mundo!&quot;);</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// ahora</span>
<span style="color: #000000; font-weight: bold;">const</span> CONSTANTE <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Hola mundo!&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Operador Ternario simplificado</h3>
<p>El operador ternario <em>(expr1)?(expr2):(expr3)</em> ahora permite dejar vacío el espacio correspondiente a <em>(expr2)</em> de modo que si <em>(expr1)</em> es verdadero, se retorna <em>(expr1)</em> y si es falso, se retorna <em>(expr3)</em>.</p>
<h3>Nuevos Módulos</h3>
<h4>PHPar</h4>
<p>Al igual que JAR, <a href="http://es2.php.net/manual/en/intro.phar.php">PHPar</a> sirve para empaquetar los PHP en un solo fichero, con lo que se mejora el despliegue de las aplicaciones, la organización del código, etc.</p>
<h4>Intl</h4>
<p>Mejores funciones de <a href="http://es2.php.net/intl">internacionalización para PHP</a>. Hasta ahora, en PHP el único soporte de internacionalización que había disponible era <em>gettext</em>, ahora, con el uso de Intl y sus clases, se facilita internacionalizar una aplicación web, ya que tiene soporte para numeración, fecha, etc.</p>
<h4>FileInfo</h4>
<p>Da <a href="http://es.php.net/manual/en/function.finfo-file.php">información sobre ficheros</a>, usando la cabecera <em>magic</em> del propio fichero, intenta localizar de forma heurística su tipo, pudiendo retornarlo en formato MIME.</p>
<h3>Etiquetas de Salto</h3>
<p>Bueno, como en todo, hay avances y <em>retrocesos</em>, esto de proporcionar a PHP un elemento de código <em>spaguetti</em> como es el <a href="http://es.php.net/manual/en/control-structures.goto.php">goto</a>, no hace sino potenciar los malos usos, por lo que yo descartaría su uso.</p>
<h3>Migración</h3>
<p>Como cualquier liberación de lenguaje, PHP viene con mejoras, agregados y, además, cambios que implican que códigos anteriores puedan dejar de funciona, con lo que es aconsejable leerse bien la <a href="http://es.php.net/migration53">guía de migración</a>, para ver los cambios que se introducen, lo que llega a ser <em>deprecated</em>, etc.</p>
<h3>Conclusiones</h3>
<p>Con esta liberación, PHP da varios matices que le hacen acercarse más a lenguajes como C++ y Java, agregando cosas como PHPar y los namespaces, así como mejorando su implementación de POO.</p>
<p>Considero que el cambiar a esta versión y desarrollar con las nuevas implementaciones hará que los códigos desarrollados sean más claros y, sobre todo, más organizados, por lo que es una buena baza para realizar el cambio.</p>
<p>Además, viendo la guía de migración, se deja entrever que los cambios de la versión anterior, 5.2.x, a esta nueva rama, son mínimos, con lo que, si se ha desarrollado código acorde a la versión anterior, realizar los cambios para adecuarse a esta versión, no es nada complicado.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/08/19/php-5-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¡Debian Lenny 5.0 ya es estable!</title>
		<link>http://bosqueviejo.net/2009/02/16/%c2%a1debian-lenny-50-ya-es-estable/</link>
		<comments>http://bosqueviejo.net/2009/02/16/%c2%a1debian-lenny-50-ya-es-estable/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 01:19:29 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[noticia]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=88</guid>
		<description><![CDATA[ La liberación de etch se produjo el 8 de abril de 2007, ya hace 20 meses de eso, en informática es mucho tiempo, pero sin embargo, es un tiempo de liberación muy corto, teniendo en cuenta los lapsos a los que nos tenía acostumbrados Debian.
Desde entonces, en el mundo de GNU/Linux ha habido muchos cambios y, la distribución, se estaba quedando atrás en pro de otras más dinámicas como Ubuntu.
No obstante, en este fin de semana, el día de los enamorados, San Valentín, el Proyecto Debian nos ha brindado una nueva liberación de Debian, la correspondiente a la versión 5.0, con el nombre clave lenny.
Los avances:

Kernel de linux 2.6.26
Escritorios Gnome 2.22.2, Xfce 4.4.2, KDE 3.5.10, LXDE 0.3.2.1, GNUstep 7.3&#8230;
Base de Datos PostgreSQL 8.3.6, MySQL 5.0.51a
Lenguajes GCC 4.3, Python 2.5.2 y 2.4.6, Perl 5.10.0, PHP 5.2.6&#8230;
Servidor Apache 2.2.9, Samba 3.2.5&#8230;
Xen Hypervisor 3.2.1
OpenJDK 6b11
&#8230;

Ver: http://www.debian.org/News/2009/20090214
]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/lenny-150x150.jpg" alt="" title="lenny" width="150" height="150" class="alignleft size-thumbnail wp-image-578" /> La <a href="http://www.debian.org/News/2007/20070408">liberación de <em>etch</em></a> se produjo el 8 de abril de 2007, ya hace 20 meses de eso, en informática es mucho tiempo, pero sin embargo, es un tiempo de liberación muy corto, teniendo en cuenta los lapsos a los que nos tenía acostumbrados Debian.</p>
<p>Desde entonces, en el mundo de GNU/Linux ha habido muchos cambios y, la distribución, se estaba quedando atrás en pro de otras más dinámicas como Ubuntu.</p>
<p>No obstante, en este fin de semana, el día de los enamorados, San Valentín, el Proyecto Debian nos ha brindado <a href="http://www.debian.org/News/2009/20090214">una nueva liberación de Debian</a>, la correspondiente a la versión 5.0, con el nombre clave <em>lenny</em>.</p>
<p>Los avances:</p>
<ul>
<li>Kernel de linux 2.6.26</li>
<li>Escritorios Gnome 2.22.2, Xfce 4.4.2, KDE 3.5.10, LXDE 0.3.2.1, GNUstep 7.3&#8230;</li>
<li>Base de Datos PostgreSQL 8.3.6, MySQL 5.0.51a</li>
<li>Lenguajes GCC 4.3, Python 2.5.2 y 2.4.6, Perl 5.10.0, PHP 5.2.6&#8230;</li>
<li>Servidor Apache 2.2.9, Samba 3.2.5&#8230;</li>
<li>Xen Hypervisor 3.2.1</li>
<li>OpenJDK 6b11</li>
<li>&#8230;</li>
</ul>
<p>Ver: <a href="http://www.debian.org/News/2009/20090214">http://www.debian.org/News/2009/20090214</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/02/16/%c2%a1debian-lenny-50-ya-es-estable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documentos en bosqueviejo.org</title>
		<link>http://bosqueviejo.net/2009/02/16/documentos-en-bosqueviejoorg/</link>
		<comments>http://bosqueviejo.net/2009/02/16/documentos-en-bosqueviejoorg/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 00:52:49 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[noticia]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=81</guid>
		<description><![CDATA[Después de unos días desarrollando un sitio apto para incluir mis manuales y documentos más largos, puesto que considero que el blog está bien para vivencias y experiencias, descubrimientos y &#8220;recetas&#8221;, pero, para los manuales, tutoriales y documentos, en sí, de mayor calado, es mejor tener algo un poco más orientado a la gestión documental.
Tras probar muchos wikis, me he dado cuenta de que el entorno web está bien, pero es insuficiente, al menos para mi. No me gusta el hecho de tener que trabajar siempre en una ventana de navegador tirando de javascript, para tener comandos óptimos para edición, o tener que copiar y pegar de un editor más completo y complejo a la web.
Por lo que me decidí a emplear DocBook. Este sistema de escribir documentos es como SGML o HTML, con la diferencia de que la riqueza sintáctica para la confección de documentos, es más cercana a LaTeX que a los anteriores.
Todo lo he montado en bosqueviejo.org, mi sitio de gestión documental, en el que iré actualizando e introduciendo, espero que a buen ritmo, documentos, libros, tutoriales, manuales y todo lo que pueda generar.
En principio, y para probar la sintaxis básica, he eliminado los artículos de redes [...]]]></description>
			<content:encoded><![CDATA[<p>Después de unos días desarrollando un sitio apto para incluir mis manuales y documentos más largos, puesto que considero que el blog está bien para vivencias y experiencias, descubrimientos y &#8220;recetas&#8221;, pero, para los manuales, tutoriales y documentos, en sí, de mayor calado, es mejor tener algo un poco más orientado a la gestión documental.</p>
<p>Tras probar muchos wikis, me he dado cuenta de que el entorno web está bien, pero es insuficiente, al menos para mi. No me gusta el hecho de tener que trabajar siempre en una ventana de navegador tirando de javascript, para tener comandos óptimos para edición, o tener que copiar y pegar de un editor más completo y complejo a la web.</p>
<p>Por lo que me decidí a emplear DocBook. Este sistema de escribir documentos es como SGML o HTML, con la diferencia de que la riqueza sintáctica para la confección de documentos, es más cercana a LaTeX que a los anteriores.</p>
<p>Todo lo he montado en <a href="http://bosqueviejo.org">bosqueviejo.org</a>, mi sitio de gestión documental, en el que iré actualizando e introduciendo, espero que a buen ritmo, documentos, libros, tutoriales, manuales y todo lo que pueda generar.</p>
<p>En principio, y para probar la sintaxis básica, he eliminado los artículos de <a href="http://bosqueviejo.net/wordpress/2007/08/06/redes-en-linux/">redes en gnu/linux</a> y <a href="http://bosqueviejo.net/wordpress/2007/08/05/asterisk-configuracion-de-zapata/">asterisk y zaptel</a>, por el hecho de que eran artículos muy extensos e incómodos de leer en el blog. Ahora están en formato HTML, un poco mejor organizado, y en formato PDF.</p>
<p>Espero comentarios <img src='http://bosqueviejo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/02/16/documentos-en-bosqueviejoorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lenguajes: nuevas versiones</title>
		<link>http://bosqueviejo.net/2009/02/04/lenguajes-nuevas-versiones/</link>
		<comments>http://bosqueviejo.net/2009/02/04/lenguajes-nuevas-versiones/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 03:14:02 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=67</guid>
		<description><![CDATA[En estos últimos días he visto los nuevos lanzamientos, o lo que se espera lanzar en varios &#8220;mundos&#8221; del desarrollo del software. Por un lado, hay varios puntos donde la interfaz pasado-futuro corre bastante peligro. 
Los desarrolladores de ciertos lenguajes han creído conveniente romper con el pasado de uso de dichos lenguajes para acogerse a los progresos y prácticas más usadas actualmente. Haremos repaso.
Perl 6
El lanzamiento de esta versión de Perl ha traído de cabeza a varios programadores, en algunos sitios ya existen guías de migración de Perl 5 a Perl 6 a modo de poder ayudar a los programadores a pasar a esta nueva versión y aprovechar sus nuevas características. Entre ellas, cabe destacar:

Tipificación
Parámetros en subrutinas
Orientación a Objetos
Comparaciones encadenadas
Evaluación perezosa
Macros

Larry Wall mencionó que la versión 5 era su reescritura de Perl, su visión de cómo debía de ser y que, la versión 6, debía de ser la reescritura de Perl para lo que quiera que sea la comunidad.
PHP 6
La versión de PHP 5, trajo consigo una orientación a objetos muy mejorada. Pero aún hoy, con la versión 5.2 estable y la 5.3 en inestable, se echa en falta una versión más completa del lenguaje, características avanzadas como las que [...]]]></description>
			<content:encoded><![CDATA[<p>En estos últimos días he visto los nuevos lanzamientos, o lo que se espera lanzar en varios &#8220;mundos&#8221; del desarrollo del software. Por un lado, hay varios puntos donde la interfaz pasado-futuro corre bastante peligro. </p>
<p>Los desarrolladores de ciertos lenguajes han creído conveniente romper con el pasado de uso de dichos lenguajes para acogerse a los progresos y prácticas más usadas actualmente. Haremos repaso.</p>
<h3>Perl 6</h3>
<p>El lanzamiento de esta versión de Perl ha traído de cabeza a varios programadores, en algunos sitios ya existen guías de <a href="http://www.programmersheaven.com/2/Perl6-FAQ-Migration">migración de Perl 5 a Perl 6</a> a modo de poder ayudar a los programadores a pasar a esta nueva versión y aprovechar sus nuevas características. Entre ellas, cabe destacar:</p>
<ul>
<li>Tipificación</li>
<li>Parámetros en subrutinas</li>
<li>Orientación a Objetos</li>
<li>Comparaciones encadenadas</li>
<li>Evaluación perezosa</li>
<li>Macros</li>
</ul>
<p>Larry Wall mencionó que la versión 5 era su reescritura de Perl, su visión de cómo debía de ser y que, la versión 6, debía de ser la reescritura de Perl para lo que quiera que sea la comunidad.</p>
<h3>PHP 6</h3>
<p>La versión de PHP 5, trajo consigo una orientación a objetos muy mejorada. Pero aún hoy, con la versión 5.2 estable y la 5.3 en inestable, se echa en falta una versión más completa del lenguaje, características avanzadas como las que se encuentran en otros lenguajes como Ruby, Java, Python o C++. </p>
<p>Por ello, la <a href="http://www.programania.net/category/php/php-6/">versión de PHP 6</a>, nos aportará mejoras considerables como:</p>
<ul>
<li>Closures y lambda</li>
<li>Traits</li>
<li>Namespaces</li>
<li>Más mejoras en la orientación a objetos</li>
</ul>
<p>Por otro lado, hay que mencionar que esta versión ya no asegura la compatibilidad hacia atrás, es decir, con scripts programados para versiones de PHP 3.x, 4.x o incluso algunas del 5.x.</p>
<h3>Python 2.6 y 3.0</h3>
<p>El último lanzamiento de la versión 2.x se hizo con la versión 2.6, la cual incluye características y corrección de fallos, además herramientas para migrar a la versión 3, e incluso comenzar a usar elementos específicos de la versión 3 incluídos en la 2.6, a través del comando <tt>future</tt>.</p>
<p>La versión 3.0 de Python rompe también la interfaz pasado-futuro al no ser compatible con la rama anterior a nivel de scripts. No obstante, se han incluido herramientas para facilitar su transición.</p>
<p>Las <a href="http://docs.python.org/3.0/whatsnew/3.0.html">mejoras incluidas</a>:</p>
<ul>
<li>Print es una función</li>
<li>Views e Iterators en lugar de Lists</li>
<li>Nueva sintaxis de anotaciones, argumentos y literales</li>
<li>Cambios en las librerías estándares (reorganización)</li>
<li>&#8230;</li>
</ul>
<p>Conviene realizar una migración y estudiar un poco los cambios, si se desea realizar el salto a esta nueva versión.</p>
<h3>Ruby 1.9.1</h3>
<p>El comentario más sonado sobre esta versión es: el más rápido que la 1.8; y es que, parece que, aún no habiendo cambiado mucho la forma del lenguaje, sí han cambiado los procedimientos internos para hacerlos más óptimos.</p>
<p>Lea las <a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_rc2/NEWS">características</a> para más información.</p>
<h3>Conclusiones</h3>
<p>Aprender un lenguaje no es una seguridad en cuanto a dejar de aprender se refiere. Dentro de cada uno de los lenguajes de programación existentes, se han observado cambios patentes que se realizan con una periodicidad de pocos años, con lo que es bueno mantenerse al tanto de las nuevas versiones, otros lenguajes y, sobre todo, las necesidades y entornos, sus progresos y cómo se adaptan los lenguajes a ellos, puesto que determinarán si estamos eligiendo adecuadamente nuestra herramienta de trabajo o no.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/02/04/lenguajes-nuevas-versiones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La nueva revisión de C++ se llama C++0x</title>
		<link>http://bosqueviejo.net/2008/10/29/la-nueva-revision-de-c-se-llama-c0x/</link>
		<comments>http://bosqueviejo.net/2008/10/29/la-nueva-revision-de-c-se-llama-c0x/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 14:40:28 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[noticia]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=25</guid>
		<description><![CDATA[Las últimas revisiones de este lenguaje fueron en 1998 (C++98) y en 2003 (C++03). Ahora se ha presentado el nuevo borrador para lo que será la siguiente revisión C++0x.
Las novedades, muy numerosas, se listan al completo en la wikipedia. Listo las que más me han llamado la atención:

Inicialización uniforme: se trata de que las estructuras y otros datos se inicialicen de una forma única y coherente.
Autodeterminación de tipos: se pueden declarar variables con la palabra auto de forma que el compilador elija el tipo que mejor convenga, según su uso.
Nuevos tipos de for: se podrán especificar con la palabra for al sintaxis típica, una que tome valores de un array y los deposite en un elemento (int x : my_array) y otra, en las funciones estándares, que será tipo for_each.
Funciones Lambda: una forma de decir que se permite la declaración de funciones anónimas (como se llamaría en Java) dentro del código de otra función.
Concepts: es un tipo más avanzado que las Templates.
Mejoras en la declaración de clases: se han agregado facilidades y mejoras al declarar el prototipo de las clases.
Nuevas formas de declarar los literales: se pueden declarar texto de tipo Unicode con solo agregar una u antes de las [...]]]></description>
			<content:encoded><![CDATA[<p>Las últimas revisiones de este lenguaje fueron en 1998 (<a href="http://en.wikipedia.org/wiki/ISO/IEC_14882">C++98</a>) y en 2003 (C++03). Ahora se ha presentado el <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf">nuevo borrador</a> para lo que será la siguiente revisión C++0x.</p>
<p>Las novedades, muy numerosas, se listan al completo en la <a href="http://en.wikipedia.org/wiki/C++0x">wikipedia</a>. Listo las que más me han llamado la atención:</p>
<ul>
<li><strong>Inicialización uniforme</strong>: se trata de que las estructuras y otros datos se inicialicen de una forma única y coherente.</li>
<li><strong>Autodeterminación de tipos</strong>: se pueden declarar variables con la palabra <em>auto</em> de forma que el compilador elija el tipo que mejor convenga, según su uso.</li>
<li><strong>Nuevos tipos de <em>for</em></strong>: se podrán especificar con la palabra <em>for</em> al sintaxis típica, una que tome valores de un array y los deposite en un elemento (int x : my_array) y otra, en las funciones estándares, que será tipo <em>for_each</em>.</li>
<li><strong>Funciones Lambda</strong>: una forma de decir que se permite la declaración de funciones anónimas (como se llamaría en Java) dentro del código de otra función.</li>
<li><strong>Concepts</strong>: es un tipo más avanzado que las <em>Templates</em>.</li>
<li><strong>Mejoras en la declaración de clases</strong>: se han agregado facilidades y mejoras al declarar el prototipo de las clases.</li>
<li><strong>Nuevas formas de declarar los literales</strong>: se pueden declarar texto de tipo Unicode con solo agregar una <em>u</em> antes de las comillas dobles.</li>
<li><strong>Modelo de memoria multitarea</strong>: una serie de optimizaciones y mejoras para el multihilo y la gestión de memoria.</li>
<li><strong>Almacenamiento local de hilos</strong>: cada hilo tiene sus propias variables.</li>
<li><strong>Tablas hash</strong>: la posiblidad de introducir arrays donde los índices, en lugar de ser números, sean textos, como parte de la librería estándar de C++.</li>
<li><strong>Expresiones Regulares</strong>: también agregado en la librería estándar de C++, la posibilidad de usar expresiones regulares sin problemas.</li>
</ul>
<p>Y muchas más cosas. Recomiendo leer el borrador a quién realmente le interese. Microsoft parece que ya planea agregar muchas de estas características en Visual Studio, para su versión <a href="http://blogs.msdn.com/vcblog/archive/2008/10/28/lambdas-auto-and-static-assert-c-0x-features-in-vc10-part-1.aspx">MVC++2010</a>, y en <a href="http://gcc.gnu.org/projects/cxx0x.html">gcc</a> se tendrá en cuenta para futuras versiones.</p>
<p>Vía: <a href="http://yapw.blogspot.com/2008/10/completado-el-borrador-de-c0x.html">Yet Another Programming Weblog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2008/10/29/la-nueva-revision-de-c-se-llama-c0x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

