<?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>AVLog - AgeValed</title>
	<atom:link href="http://www.agevaled.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agevaled.com</link>
	<description>Un Geek en Internet!</description>
	<lastBuildDate>Thu, 15 Sep 2011 22:57:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Habemus Google+ API</title>
		<link>http://www.agevaled.com/2011/09/15/habemus-google-api/</link>
		<comments>http://www.agevaled.com/2011/09/15/habemus-google-api/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 21:10:22 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Novedades]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google plus api]]></category>
		<category><![CDATA[google+ api]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=632</guid>
		<description><![CDATA[Luego de esperar un par de meses, y una larga espera, Google decidió hacer publica la primera releace de la API de Google+, es algo que estaba esperando desde el primer día, antes de empezar a ver bien todo lo que se puede hacer, decidí escribir este post para que se enteren, luego vere de escribir [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de esperar un par de meses, y una larga espera, <strong>Google</strong> decidió hacer publica la primera releace de la <strong>API de Google+</strong>, es algo que estaba esperando desde el primer día, antes de empezar a ver bien todo lo que se puede hacer, decidí escribir este post para que se enteren, luego vere de escribir un post con un poco mas de explicación sobre lo que nos ofrece la <strong>API. </strong>En esta primera entrega, Google, enfoco la api a los datos públicos del usuario solamente.</p>
<p>Tambien Google estrena una nueva pagina Google Developer, donde encontraremos informacion sobre los terminos de usos, política de privacidad, documentación y muchas otras cosas mas!</p>
<p>&nbsp;</p>
<p>Google nos ofrece <strong>librerías</strong> para varios lenguajes de programación, tales como:</p>
<ul>
<li><strong>.NET</strong></li>
<li><strong>Java</strong></li>
<li><strong>Objetive C</strong></li>
<li><strong>PHP</strong></li>
<li><strong>Pyton</strong></li>
<li><strong>Ruby</strong></li>
<li><strong>Google Web Toolkit</strong></li>
</ul>
<div>Para algunos nos ofrece una demostración de como usar las <strong>librerías</strong>.</div>
<div>Ahora los dejo que disfruten&#8230;</div>
<div>Link Google Plus API | <a href="https://developers.google.com/+/api/" target="_blank">https://developers.google.com/+/api/</a></div>
<div>Link Google Developer Page | <a title="https://developers.google.com/+/" href="https://developers.google.com/+/" target="_blank">https://developers.google.com/+/</a></div>
<p><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=632&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/09/15/habemus-google-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bootstrap, from Twitter</title>
		<link>http://www.agevaled.com/2011/09/08/bootstrap-from-twitter/</link>
		<comments>http://www.agevaled.com/2011/09/08/bootstrap-from-twitter/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 02:38:08 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Novedades]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[Bootstrap para twitter]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=608</guid>
		<description><![CDATA[Hoy descubrí algo interesante en la web Bootstrap, from Twitter. Bootstrap, From Twitter es un conjunto de herramientas de Twitter diseñado el desarrollo de aplicaciones y sitios webs. Incluye base de CSS y HTML para la tipografía, formas, botones, cuadros, redes, navegación, y mucho más. Bootstrap para twitter fue desarrollado por @mdo y @fat Con [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy descubrí algo interesante en la web <strong>Bootstrap, from Twitter</strong>.</p>
<p><strong>Bootstrap, From Twitter</strong> es un conjunto de herramientas de Twitter diseñado el desarrollo de aplicaciones y sitios webs.</p>
<p>Incluye base de CSS y HTML para la tipografía, formas, botones, cuadros, redes, navegación, y mucho más.</p>
<p>Bootstrap para twitter fue desarrollado por <a href="http://twitter.com/mdo" target="_blank">@mdo</a> y <a href="http://twitter.com/fat" target="_blank">@fat</a></p>
<p>Con la ayuda y los comentarios de muchos ingenieros en Twitter, Bootstrap ha crecido significativamente para abarcar no sólo los estilos básicos, pero más elegante y duradero de front-end patrones de diseño.</p>
<p><img class="size-full wp-image-610 alignright" title="bootstrap-twitter-agevaled-support" src="http://www.agevaled.com/wp-content/uploads/2011/09/bootstrap-twitter-agevaled-support.jpg" alt="" width="173" height="104" />Bootstrap fue testeado y soporta los browsers mas modernos como <strong>Chrome</strong>, <strong>Safari</strong> y <strong>Firefox</strong>, y hasta la porquería de <strong>Internet Explorer</strong>. Por suerte no dicen si soporta <strong>IE6</strong>, no entiendo porque la gente todavía sigue usándolo (que generoso que soy llamando gente a ese tipo de personas). Bueno mejor sigamos antes que uno se haga mala sangre y empiece a romper cosas.</p>
<p>&nbsp;</p>
<h2><strong>Que es lo que contiene Bootstrap:</strong></h2>
<ul>
<li>Los archivos originales .less.</li>
<li>Archivos CSS completos y minified.</li>
<li>Documentación.</li>
<li>Ejemplos.</li>
</ul>
<h2><strong>Diseños :</strong></h2>
<p>Cuadriculas, Layouts, Encabezados, Textos, Citas, Listas, Tablas (distintos tipos, incluye ordenación de tablas), Todo tipo de Inputs para Formularios,  Botones, Mensajes de Alertas y Errores, Bloques de Mensajes, Barra de Navegación, Paginación, Modales, Tool Tips, Popovers, etc&#8230;<br />&nbsp;<br />
<strong>Link Sitio Oficial |</strong> <a href="http://twitter.github.com/bootstrap/" target="_blank">http://twitter.github.com/bootstrap/</a><br />
<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=608&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/09/08/bootstrap-from-twitter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Errores</title>
		<link>http://www.agevaled.com/2011/09/07/php-errores/</link>
		<comments>http://www.agevaled.com/2011/09/07/php-errores/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 17:32:50 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[php errores]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[warning]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=522</guid>
		<description><![CDATA[En este resumen voy a escribir sobre los el control y registro de los errores en PHP. PHP nos permite definir nuestras reglas para controlar los errores, crear errores personificados o como serán registrados/notificados. Tipos de Errores: Existen varios tipos de errores, por lo general se refieran a niveles de error en PHP. Errores de Compilación: [...]]]></description>
			<content:encoded><![CDATA[<p>En este <strong>resumen</strong> voy a escribir sobre los el control y registro de los errores en <strong>PHP</strong>. <strong>PHP</strong> nos permite definir nuestras reglas para controlar los errores, crear errores personificados o como serán registrados/notificados.</p>
<h2><strong>Tipos de Errores:</strong></h2>
<p>Existen varios tipos de errores, por lo general se refieran a<em> niveles de error</em> en <strong>PHP</strong>.</p>
<p><strong>Errores de Compilación:</strong></p>
<ul>
<li>Errores detectados por el <strong>IDE</strong> mientras se compila el script.</li>
</ul>
<div><strong>Errores Fatales:</strong></div>
<div>
<ul>
<li>Errores que detienen la ejecución del script.</li>
</ul>
<div><strong>Errores Recuperables:</strong></div>
<div>
<ul>
<li>Errores que representan fallas, pero se pueden manejar sin problemas.</li>
</ul>
<div><strong>Advertencias:</strong></div>
<div>
<ul>
<li>Errores recuperables que indican una falla en tiempo de ejecución. No detienen la ejecución del script.</li>
</ul>
<div><strong>Noticias:</strong></div>
<div>
<ul>
<li>Indica un error de condición, pero que no es significante. No detiene la ejecución del script.</li>
</ul>
</div>
</div>
</div>
</div>
<h2><strong>Configuración:</strong></h2>
<p>Existen varias opciones en la configuración de los errores y su registro, para ello tenemos el archivo php.ini que es la que se encargará de almacenar todas estas configuraciones.</p>
<p>Nota: Luego de cambiar algo del archivo php.ini es necesario reiniciar el apache para que los cambios surjan efecto, sino no se tomaran estos cambios.</p>
<table>
<thead valign="middle">
<tr valign="middle">
<th>Nombre</th>
<th>Predeterminado</th>
<th>Descripción</th>
<th>Notas</th>
</tr>
</thead>
<tbody valign="middle">
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.error-reporting" target="_blank">error_reporting</a></td>
<td align="left">NULL</td>
<td align="left">Establece el nivel de notificaciones de errores que serán mostradas.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.display-errors" target="_blank">display_errors</a></td>
<td align="left">&#8220;1&#8243;</td>
<td align="left">Determina si los errores serán mostrados en pantalla o se ocultaran.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.display-startup-errors" target="_blank">display_startup_errors</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Determina si los errores de configuración de arranque <strong>PHP</strong> serán mostrados u ocultados.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.log-errors" target="_blank">log_errors</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Determina si los mensajes de los errores deberán registrarse en el registro de log o en error_log.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.log-errors-max-len" target="_blank">log_errors_max_len</a></td>
<td align="left">&#8220;1024&#8243;</td>
<td align="left">Establece la longitud máxima del archivo en bytes.</td>
<td align="left">0 para no crear ninguna longitud máxima.</td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.ignore-repeated-errors" target="_blank">ignore_repeated_errors</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Determina si serán ignorados los mensajes repetidos. Deben ocurrir en la misma linea y en el mismo archivo.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.ignore-repeated-source" target="_blank">ignore_repeated_source</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Ignorara la linea o el archivo de los archivos repetidos, por lo tanto no se registraran los errores repetidos en todos los archivos que se ejecutaran.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.report-memleaks" target="_blank">report_memleaks</a></td>
<td align="left">&#8220;1&#8243;</td>
<td align="left">Mostrará un informe de las perdidas de memorias detectadas en el gestor de memoria Zend.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.track-errors" target="_blank">track_errors</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Si esta activo el ultimo error sera guardado en la variable <a title="PHP Variable phperrormsg" href="http://www.php.net/manual/es/reserved.variables.phperrormsg.php" target="_blank">$phperrormsg</a>.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.html-errors" target="_blank">html_errors</a></td>
<td align="left">&#8220;1&#8243;</td>
<td align="left">Determina si se mostraran los errores de etiqueta HTML en los mensajes de error.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.xmlrpc-errors" target="_blank">xmlrpc_errors</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Desactiva las notificaciones normales y muestra los errores en formato XMLRPC.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.xmlrpc-error-number" target="_blank">xmlrpc_error_number</a></td>
<td align="left">&#8220;0&#8243;</td>
<td align="left">Usado como el valor del elemento faultCode de XML-RPC.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.docref-root" target="_blank">docref_root</a></td>
<td align="left">&#8220;&#8221;</td>
<td align="left">El nuevo formato de error contiene una referencia a la página describiendo el error o a la función que causa el error.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.docref-ext" target="_blank">docref_ext</a></td>
<td align="left">&#8220;&#8221;</td>
<td align="left"><strong>VER</strong> docref_root</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.error-prepend-string" target="_blank">error_prepend_string</a></td>
<td align="left">NULL</td>
<td align="left">Ingresaremos un string que queremos que se imprima antes del un error.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.error-append-string" target="_blank">error_append_string</a></td>
<td align="left">NULL</td>
<td align="left">Ingresaremos un string que queremos que se imprima después del un error.</td>
<td align="left"></td>
</tr>
<tr valign="middle">
<td align="left"><a href="http://www.php.net/manual/es/errorfunc.configuration.php#ini.error-log" target="_blank">error_log</a></td>
<td align="left">NULL</td>
<td align="left">Acá ingresaremos el nombre del archivo en el cual se registraran los errores por defecto.</td>
<td align="left"></td>
</tr>
</tbody>
</table>
<h2>Constantes Predefinidas:</h2>
<p>Un listado de las constantes predefinidas para los distintos tipos de errores, son muy útiles para su reporte, podemos definir esto en nuestro archivo <strong>PHP</strong>.</p>
<p><strong>Ejemplo:</strong></p>
<pre class="brush: php; gutter: true">error_reporting=E_ALL &amp; ~E_NOTICE</pre>
<p>En este caso mostraremos todos los errores, salvo las NOTICE.</p>
<p><strong>E_ERROR</strong></p>
<ul>
<li>Errores fatales que detienen la ejecución del script.</li>
</ul>
<p><strong>E_WARNING </strong></p>
<ul>
<li>Advertencias en tiempo de ejecución, no detienen la ejecución del script.</li>
</ul>
<p><strong>E_PARSE </strong></p>
<ul>
<li>Errores de análisis en tiempo de ejecución.</li>
</ul>
<p><strong>E_NOTICE </strong></p>
<ul>
<li>Avisos que se muestran en tiempo de ejecución. Indica algo que podría ser un error.</li>
</ul>
<p><strong>E_CORE_ERROR </strong></p>
<ul>
<li>Errores fatales que ocurren en el arranque del core de <strong>PHP</strong>. Parecido a  <strong>E_ERROR</strong>, salvo que son generados por el núcleo de <strong>PHP</strong>.</li>
</ul>
<p><strong>E_CORE_WARNING </strong></p>
<ul>
<li>Advertencias que ocurren en el arranque del core de <strong>PHP</strong>. Parecido a  <strong>E_WARNING</strong>, salvo que son generados por el núcleo de <strong>PHP</strong>.</li>
</ul>
<p><strong>E_COMPILE_ERROR </strong></p>
<ul>
<li>Errores fatales en tiempo de compilación. Parecidos a <strong>E_ERROR</strong>, salvo que son generados por el Motor de Script Zend.</li>
</ul>
<p><strong>E_COMPILE_WARNING </strong></p>
<ul>
<li>Advertencias en tiempo de compilación. Parecidos a <strong>E_WARNING</strong>, salvo que son generados por el Motor de Script Zend.</li>
</ul>
<p><strong>E_USER_ERROR </strong></p>
<ul>
<li>Errores generados por el usuario, mediante el uso de la función <strong>trigger_error()</strong>.</li>
</ul>
<p><strong>E_USER_WARNING </strong></p>
<ul>
<li>Advertencias generadas por el usuario, mediante el uso de la función <strong>trigger_error()</strong> .</li>
</ul>
<p><strong>E_USER_NOTICE </strong></p>
<ul>
<li>Mensajes de avisos generadas por el usuario, mediante el uso de la función <strong>trigger_error()</strong>.</li>
</ul>
<p><strong>E_STRICT </strong></p>
<ul>
<li>Habilítelo para que PHP sugiera cambios en su código, lo que asegurará la mejor interoperabilidad y compatibilidad con versiones posteriores de PHP de su código.</li>
</ul>
<p><strong>E_RECOVERABLE_ERROR </strong></p>
<ul>
<li>Errores fatales que son recuperables.</li>
</ul>
<p><strong>E_DEPRECATED </strong></p>
<ul>
<li>Avisos en tiempo de ejecución, que indicara el código que no funcionará en futuras versiones.</li>
</ul>
<p><strong>E_USER_DEPRECATED </strong></p>
<ul>
<li>Avisos generados por el usuario, mediante el uso de la función <strong>trigger_error()</strong>.</li>
</ul>
<p><strong>E_ALL </strong></p>
<ul>
<li>Todos los errores y advertencias de <strong>PHP</strong>, excepto <strong>E_STRICT</strong> (Incluida en 5.4.0).</li>
</ul>
<p>Se pueden combinar todos estos con los siguientes operadores<strong> &#8216;|&#8217;, &#8216;~&#8217;, &#8216;!&#8217;, &#8216;^&#8217; y &#8216;&amp;&#8217;</strong>.</p>
<h2>Link Importante:</h2>
<p>Listado de funciones para Manejo de errores | <a title="Funciones de Manejo de Error" href="http://www.php.net/manual/es/ref.errorfunc.php" target="_blank">Link PHP.NET</a></p>
<p>Espero que les sea útil.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=522&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/09/07/php-errores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear Hangout de Google+ desde YouTube</title>
		<link>http://www.agevaled.com/2011/08/19/crear-hangout-de-google-plus-desde-youtube/</link>
		<comments>http://www.agevaled.com/2011/08/19/crear-hangout-de-google-plus-desde-youtube/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 04:48:32 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Novedades]]></category>
		<category><![CDATA[hangout]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=477</guid>
		<description><![CDATA[En estos ultimo mes, Google esta unificando todos sus servicios, no hice ningún post, pero estuve al tanto de la mayoría de los cambios que se van haciendo día a día, hoy escuchando música en YouTube, y queriendo compartir lo que estaba escuchando me percato que ahora se puede comenzar una Hangout de Google+ desde YouTube, primero tenemos que apretar el botón &#8221;Compartir&#8221; o &#8220;Share&#8221;, luego le [...]]]></description>
			<content:encoded><![CDATA[<p>En estos ultimo mes, <strong>Google</strong> esta unificando todos sus servicios, no hice ningún post, pero estuve al tanto de la mayoría de los cambios que se van haciendo día a día, hoy escuchando música en <strong>YouTube</strong>, y queriendo compartir lo que estaba escuchando me percato que ahora se puede comenzar una <strong>Hangout de Google+</strong> desde <strong>YouTube</strong>, primero tenemos que apretar el botón<strong> &#8221;Compartir&#8221;</strong> o<strong> &#8220;Share&#8221;</strong>, luego le damos click a <strong>&#8220;Start a Google+ Hangout&#8221; </strong>Ahí te abre una nueva ventana para empezar una hangout normalmente, solo que en este caso, empieza el vídeo cuando comienza la <strong>hangout</strong>.</p>
<p>Despues dando vuelta si encontraba algo sobre este tema encontré el perfil de <strong><a title="Brian Glick" href="https://plus.google.com/103515259519634902605/about" target="_blank">Brian Glick</a></strong> (<strong>YouTube Product Manager</strong>) en el cual anunciaba esta novedad.</p>
<p>A mi me parece algo interesante, pero no es algo 100% util, es algo mas que nos ofrece el gran mundo google, para simplificarnos la vida.</p>
<p>Que opinan ustedes sobre este, y otros, addons que van agregando a los demas sitios?<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=477&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/19/crear-hangout-de-google-plus-desde-youtube/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Codecademy</title>
		<link>http://www.agevaled.com/2011/08/19/codecademy/</link>
		<comments>http://www.agevaled.com/2011/08/19/codecademy/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 04:17:40 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[codecademy]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[small]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=490</guid>
		<description><![CDATA[Quería compartir con ustedes esta pagina que me pareció bastante interesante la idea. Codecademy es una pagina que nos enseña en forma divertida a como programar en JavaScript, nos da la posibilidad de compartir y seguir nuestro progreso. Por el momento la pagina contiene 8 cursos: Getting yo Know You Confirm or Deny Variables Letters n&#8217; String Editor and Arrays What [...]]]></description>
			<content:encoded><![CDATA[<p>Quería compartir con ustedes esta pagina que me pareció bastante interesante la idea. <a title="Codecademy" href="http://www.codecademy.com/" target="_blank">Codecademy</a> es una pagina que nos enseña en forma divertida a como programar en <strong>JavaScript</strong>, nos da la posibilidad de compartir y seguir nuestro progreso.</p>
<p>Por el momento la pagina contiene 8 cursos:</p>
<ul>
<li><strong>Getting yo Know You</strong></li>
<li><strong>Confirm or Deny</strong></li>
<li><strong>Variables</strong></li>
<li><strong>Letters n&#8217; String</strong></li>
<li><strong>Editor and Arrays</strong></li>
<li><strong>What if?</strong></li>
<li><strong>Bringing it UP (and Down)</strong></li>
<li><strong>While You Wait</strong></li>
</ul>
<p>Cambien da la posibilidad de Crear una lección, para ello tenes que enviarles un mail.</p>
<p>Este sitio es bastante util para los que quieren aprender a programar cosas básicas con javascript, obviamente les va a faltar mucho camino por delante, pero es un comienzo.</p>
<p><strong>Link al sitio</strong> -&gt; <a href="http://www.codecademy.com/">http://www.codecademy.com/</a></p>
<p>Saludos!<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=490&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/19/codecademy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Funciones</title>
		<link>http://www.agevaled.com/2011/08/19/php-funciones/</link>
		<comments>http://www.agevaled.com/2011/08/19/php-funciones/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 03:42:42 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[argumento funciones]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[funciones variables]]></category>
		<category><![CDATA[php funciones]]></category>
		<category><![CDATA[retorno funciones]]></category>
		<category><![CDATA[sobrecarga funciones]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=466</guid>
		<description><![CDATA[Funciones en PHP, este resumen debería haberlo hecho un par de post antes, pero se me paso, así que mas vale tarde que nunca! Espero que lo sigan disfrutando y que les interese este tipo de post! Mientras alguien lo lea ya estoy feliz. Funciones definidas por el usuario Simplemente son las funciones que nosotros [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Funciones</strong> en <strong>PHP</strong>, este resumen debería haberlo hecho un par de post antes, pero se me paso, así que mas vale tarde que nunca! Espero que lo sigan disfrutando y que les interese este tipo de post! Mientras alguien lo lea ya estoy feliz.</p>
<h2>Funciones definidas por el usuario</h2>
<p>Simplemente son las <strong>funciones</strong> que nosotros vamos a ir definiendo,  cualquier código <strong>PHP</strong> valido puede ser incluido dentro de la función, hasta podemos incluir otra funciones y definiciones de clases (el tema clases lo veremos mas adelante)</p>
<pre class="brush: php; gutter: true">function foo($arg_1, $arg_2, /* ..., */ $arg_n='')
{
    echo "Función de ejemplo.\n";
    return $valordevuelto;
}</pre>
<p>Las reglas para nombres de <strong>funciones</strong> son las mismas que utilizamos en las etiquetas. Comienza con una letra o guión bajo, seguido por letra, numero o guiones bajos, sin importar la cantidad. Se puede validar con la siguiente expresión regular <strong><em>[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*</em></strong></p>
<p>A diferencia de otros lenguajes, en <strong>PHP</strong> no se necesita definir la función antes de que se haga referencia, excepto que dicha función esta condicionada, acá un ejemplo.</p>
<pre class="brush: php; gutter: true">$haceralgo = true;

/* No podemos llamar a foo() desde aquí
   ya que no existe aún,
   pero podemos llamar a bar() */

bar();

if ($haceralgo) {
  function foo()
  {
    echo "No existo hasta que la ejecución del programa llegue hasta mí.\n";
  }
}

/* Ahora podemos llamar de forma segura a foo()
   ya que $haceralgo se evaluó como verdadero */

if ($haceralgo) foo();

function bar()
{
  echo "Existo desde el momento inmediato que comenzó el programa.\n";
}</pre>
<p>No existe <strong>sobrecarga</strong> de <strong>funciones</strong>, tampoco se puede <strong>&#8220;desdefinir&#8221;</strong> ni <strong>predefinir </strong>una función previamente declarada.</p>
<p>También se puede llamar a funciones <strong>recursivas</strong>, acá un ejemplo:</p>
<pre class="brush: php; gutter: true">function recursividad($a)
{
    if ($a &lt; 20) {
        echo "$a\n";
        recursividad($a + 1);
    }
}</pre>
<p>Mas información -&gt; <a title="PHP - Funciones" href="http://www.php.net/manual/es/functions.user-defined.php" target="_blank">Link</a></p>
<h2>Argumentos de funciones</h2>
<p>Se le pueden pasar <strong>argumentos</strong> a las funciones, estos son pasados por una lista separados por coma, se les pueden enviar<strong> por valor</strong> (por defecto), <strong>por referencia</strong> y <strong>valores predeterminados</strong>.</p>
<p><strong><em>Ejemplo enviado por valor: </em></strong>Al pasar los argumentos por valor, si dicho argumento cambia de valor dentro de la función, no sera cambiado fuera de la función.</p>
<pre class="brush: php; gutter: true">function tomar_matriz($entrada)
{
    echo "$entrada[0] + $entrada[1] = ", $entrada[0]+$entrada[1];
}</pre>
<p><strong><em>Ejemplo enviado por referencia: </em></strong>Al pasar un argumento por referencia, si dicho argumento cambia de valor dentro de la función, al salir de la misma la variable contendrá el nuevo valor obtenido dentro de la función.</p>
<pre class="brush: php; gutter: true">function añadir_algo(&amp;$cadena)
{
    $cadena .= 'y algo más.';
}
$cad = 'Esto es una cadena, ';
añadir_algo($cad);
echo $cad;    // imprime 'Esto es una cadena, y algo más.'</pre>
<p><strong><em>Ejemplo valores predeterminados: </em></strong>Los argumentos predeterminados, serán usados si es que dicho argumento no es pasado a la función.</p>
<pre class="brush: php; gutter: true">function hacercafé($tipo = "capuchino")
{
    return "Hacer una taza de $tipo.\n";
}
echo hacercafé();
echo hacercafé(null);
echo hacercafé("espresso");</pre>
<p>Los valores predeterminados, <strong>NO</strong> puede ser una variable,  un miembro de una clase, o una llamada a una función. Ademas, los argumentos con valores predeterminados deberán estar a la derecha de <strong>TODOS</strong> los argumentos con valores no predeterminados.</p>
<p>Mas información -&gt; <a title="PHP - Argumentos" href="http://www.php.net/manual/es/functions.arguments.php" target="_blank">Link</a></p>
<h2>Retorno de Valores</h2>
<p>Las funciones pueden devolver valores, para lograr esto debemos usar la sentencia <strong>return</strong>, esto causa la interrupción inmediatamente de dicha la función</p>
<p><em>Ejemplo:</em></p>
<pre class="brush: php; gutter: true">function cuadrado($núm)
{
    return $núm * $núm;
}
echo cuadrado(4);   // imprime '16'.</pre>
<p>Mas información -&gt; <a title="PHP - Devolver Valores" href="http://www.php.net/manual/es/functions.returning-values.php" target="_blank">Link</a></p>
<h2>Funciones Variables</h2>
<p><strong>PHP</strong> soporta las  <strong>funciones variables</strong>. Si una variable tiene paréntesis anexos a él, <strong>PHP</strong> buscará una función con el mismo nombre e intentará ejecutarla. Las<strong> funciones variables</strong> se puede usar para implementar llamadas de retorno, tablas de funciones, etc.</p>
<pre class="brush: php; gutter: true">function foo() {
    echo "En foo()
\n";
}

function bar($arg = '')
{
    echo "En bar(); el argumento era '$arg'.
\n";
}

// Esta es una función de envoltura alrededor de echo
function hacerecho($cadena)
{
    echo $cadena;
}

$func = 'foo';
$func();        // Esto llama a foo()

$func = 'bar';
$func('prueba');  // Esto llama a bar()

$func = 'hacerecho';
$func('prueba');  // Esto llama a hacerecho()</pre>
<p>Mas información -&gt; <a title="PHP - Funciones Variables" href="http://www.php.net/manual/es/functions.variable-functions.php" target="_blank">Link</a></p>
<h2>Funciones Internas -&gt; <a title="PHP - Funciones Internas" href="http://www.php.net/manual/es/functions.internal.php" target="_blank">Link</a></h2>
<h2>Funciones Anónimas</h2>
<p>Estas funciones, también conocidas como <strong><em>closures</em></strong>,  nos permiten crear funciones que no poseen un nombre especificado. Dichas funciones son útiles como valores de los parámetros de llamadas de retorno, entre otras cosas.</p>
<p><em>Ejemplo:</em></p>
<pre class="brush: php; gutter: true">echo preg_replace_callback('~-([a-z])~', function ($coincidencia) {
    return strtoupper($coincidencia[1]);
}, 'hola-mundo');
// imprime holaMundo</pre>
<p>Dichas funciones tambien se pueden utilizar como valores de una variable, PHP convierte dichas expresiones en instancias de la clase interna.</p>
<p><em>Ejemplo:</em></p>
<pre class="brush: actionscript3; gutter: true">$saludo = function($nombre)
{
    printf("Hola %s\r\n", $nombre);
};

$saludo('Mundo');
$saludo('PHP');</pre>
<p>Las funciones anónimas, también pueden heredar variables de una clase padre.</p>
<p>Las funciones anónimas están disponibles a partir de <strong>PHP 5.3.0</strong></p>
<p><em>Ejemplo:</em></p>
<pre class="brush: php; gutter: true"><!--?php
// Un carro de compras básico que contiene una lista de productos añadidos
// y la cantidad de cada producto. Incluye un método que
// calcula el precio total de los artículos del carro usando un
// cierre como llamada de retorno.
<span class="hiddenSpellError" pre=""-->class Carro
{
    const PRECIO_MANTEQUILLA = 1.00;
    const PRECIO_LECHE       = 3.00;
    const PRECIO_HUEVOS      = 6.95;

    protected $productos = array();

    public function añadir($producto, $cantidad)
    {
        $this-&gt;productos[$producto] = $cantidad;
    }

    public function obtenerCantidad($producto)
    {
        return isset($this-&gt;productos[$producto]) ? $this-&gt;productos[$producto] :
               FALSE;
    }

    public function obtenerTotal($impuesto)
    {
        $total = 0.00;

        $llamadaDeRetorno =
            function ($cantidad, $producto) use ($impuesto, &amp;$total)
            {
                $precioUnidad = constant(__CLASS__ . "::PRECIO_" .
                    strtoupper($producto));
                $total += ($precioUnidad * $cantidad) * ($impuesto + 1.0);
            };

        array_walk($this-&gt;productos, $llamadaDeRetorno);
        return round($total, 2);
    }
}

$mi_carro = new Carro;

// Añadir algunos artículos al carro
$mi_carro-&gt;añadir('mantequilla', 1);
$mi_carro-&gt;añadir('leche', 3);
$mi_carro-&gt;añadir('huevos', 6);

// Imprimir el total con un impuesto de venta del 5%.
print $mi_carro-&gt;obtenerTotal(0.05) . "\n";
// El resultado es 54.29
?&gt;</pre>
<p>Mas información -&gt; <a title="PHP - Funciones Anonimas" href="http://www.php.net/manual/es/functions.anonymous.php" target="_blank">Link</a></p>
<p>Espero que les sea útil este pos explicando todo sobre las funciones en <strong>PHP</strong>.</p>
<p>Saludos! Y espero sus comentarios!<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=466&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/19/php-funciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Constantes</title>
		<link>http://www.agevaled.com/2011/08/11/php-constantes/</link>
		<comments>http://www.agevaled.com/2011/08/11/php-constantes/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 04:36:44 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[constantes]]></category>
		<category><![CDATA[conteste]]></category>
		<category><![CDATA[php const]]></category>
		<category><![CDATA[php constante]]></category>
		<category><![CDATA[php constantes]]></category>
		<category><![CDATA[php define]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=445</guid>
		<description><![CDATA[Vamos a continuar con los resúmenes de PHP, en este post voy a escribir un resumen sobre las constantes. Una constante es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede variar durante la ejecucción del script. Una constante es sensible a mayúsculas por defecto. Por convención, los [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos a continuar con los resúmenes de <strong>PHP</strong>, en este post voy a escribir un resumen sobre las <strong>constantes</strong>.</p>
<p>Una <strong>constante</strong> es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede variar durante la ejecucción del script. Una constante es sensible a mayúsculas por defecto. Por convención, los identificadores de contantes siempre suelen declararse en mayúsculas.</p>
<p>El nombre de una constante sigue las mismas reglas que cualquier otra etiqueta de <strong>PHP</strong>. Un nombre de <strong>constante</strong> válido empieza por una letra o subguión, seguido por cualquier número o letras, números o subguiones. Usando una regular expression, se representaría de la siguiente manera: <strong>[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*</strong></p>
<p><em>Ejemplos de uso y nomenclaturas:</em></p>
<pre class="brush: php; gutter: true">// Nombre de constantes correctos
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

// Nombres de constantes incorrectos
define("2FOO",    "something");

// Esto es válido, pero debería ser evitado:
// Ya que quizá algún día PHP crea una constante mágica
// con el mismo nombre y en ese caso provocaría un error en tu script
define("__FOO__", "something");</pre>
<p>Igual que las superglobals, el acceso a una constante es global. Se puede acceder a constantes desde cualquier sitio del script sin importar desde donde. Para más información en el acceso, lea el manual en la sección acceso a variables.</p>
<h2>Sintaxis &#8211; <a style="color: #0431b4;" title="PHP Sintaxys Constantes" href="http://www.php.net/manual/es/language.constants.syntax.php" target="_blank">Link</a></h2>
<p>Se puede definir una <strong>constante</strong> usando la función <strong>define()</strong> o también declarándola fuera de la clase con <strong><em>const</em> </strong>desde <strong>PHP</strong> 5.3.0. Una vez que la constante está definida, no puede ser cambiada o redifinida en ningún momento.</p>
<p>Solo se puede definir como <strong>constantes</strong> valores escalares (<strong>boolean</strong>, <strong>integer</strong>, <strong>float </strong>y <strong>string</strong>). Se puede definir <strong>resource </strong>en <strong>constantes</strong>, pero debería ser evitado, porque puede causar resultados inesperados. <strong>Para ver los diferentes tipos de datos entra al post de <a style="color: #0431b4;" title="PHP – Tipos de datos" href="http://www.agevaled.com/2011/08/06/php-tipos-de-dato/" target="_blank">PHP &#8211; Tipo de Datos</a>.</strong></p>
<p>Para obtener el valor de una <strong>constante</strong> solo es necesarios especificar su nombre. A diferencia de las variables, <em>no</em> se debe prefijar una <strong>constante</strong> con el signo <em>$</em>. También se puede usar la función <strong>constant()</strong>para leer el valor de una constante si se desea obtener el valor de una constante de forma dinámica. Use <strong>get_defined_constants()</strong> para obtener una lista de todas las constantes definidas.</p>
<p><strong>Nota</strong>: Las <strong>contantes</strong> y las variables (globales) se encuentran en un espacio de nombres distinto. Esto implica que por ejemplo <strong><tt>TRUE</tt></strong> y <var><var>$TRUE</var></var> son diferentes.</p>
<p>Si se usa una <strong>constante</strong> que todavía no está definida, <strong>PHP</strong> asume que se está refiriendo al nombre de la constante en si, igual que si fuera una string (CONSTANT vs &#8220;CONSTANT&#8221;). Cuando esto suceda, se mostrará un error de nivel <strong>E_NOTICE</strong>. Ver también la sección en el manual de porqué $foo[bar] es incorrecto (a no ser que primero define() <em>bar</em> como constante). Si simplemente quiere comprobar si una constante está definida, use la función <strong>defined()</strong>.</p>
<p><span style="text-decoration: underline;"><em>Estas son las diferencias entre <strong>constantes</strong> y <strong>variables</strong>:</em></span></p>
<ul>
<li>Las <strong>constantes</strong> no llevan el signo dólar (<em>$</em>), como prefijo.</li>
<li>Las <strong>constantes</strong> solo pueden ser definidas usando la función <strong>define()</strong>, y no por simple asignación.</li>
<li>Las <strong>constantes</strong> pueden ser definidas y accedidas desde cualquier sitio sin importar las reglas de acceso de variables.</li>
<li>Las <strong>constantes</strong> no pueden ser redefinidas o eliminadas una vez se han definido. Y</li>
<li>Las <strong>constantes</strong> solo deberían contener valores escalares.</li>
</ul>
<p><span style="text-decoration: underline;">Defino una <strong>constante</strong>:</span></p>
<pre class="brush: php; gutter: true">
define("CONSTANT", "Hola mundo.");
echo CONSTANT; // muestra "Hola mundo."
echo Constant; // muestra "Constant" y provoca un error.
</pre>
<p><span style="text-decoration: underline;">Definiendo <strong>constantes</strong> usando el keyword <strong>const</strong>:</span></p>
<pre class="brush: php; gutter: true">
// Funciona desde PHP 5.3.0
const CONSTANT = 'Hola Mundo';

echo CONSTANT;
</pre>
<p><strong>Nota</strong>: A diferencia de definir constantes usando <strong>define()</strong>, las constantes definidas con la palabra clave <strong><em>const</em> </strong>deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución. Esto significa que no pueden declararse dentro de funciones, loops o declaraciones <strong><em>if</em></strong>.</p>
<h2>Constantes predefinidas &#8211; <a style="color: #0431b4;" title="PHP constantes predefinidas" href="http://www.php.net/manual/es/language.constants.predefined.php" target="_blank">Link</a></h2>
<p><strong>PHP</strong> ofrece un largo número de <strong>constantes</strong> predefinidas a cualquier script en ejecución. Muchas de estas constantes, sin embargo, son creadas por diferentes extensiones, y sólo estarán presentes si dichas extensiones están disponibles, bien por carga dinámica o porque han sido compiladas.</p>
<p>Hay siete <strong>constantes</strong> predefinidas que cambian dependiendo de donde son usadas. Por ejemplo el valor de <strong><tt>__LINE__</tt></strong> depende en la línea que se use en el script. Estas constantes especiales son sensibles a mayúsculas y son las siguientes:</p>
<table>
<thead valign="middle">
<tr valign="middle">
<th>Nombre</th>
<th>Descripción</th>
</tr>
</thead>
<tbody valign="middle">
<tr valign="middle">
<td align="left"><strong><tt>__LINE__</tt></strong></td>
<td align="left">Línea actual en el fichero.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__FILE__</tt></strong></td>
<td align="left">Ruta completa y nombre del fichero. Si se usa dentro de un include, devolverá el nombre del fichero del include. Desde PHP 4.0.2, <strong><tt>__FILE__</tt></strong> siempre contiene la ruta absoluta con symlinks resueltos, en otras versiones contenía la ruta relativa en según que circunstancias.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__DIR__</tt></strong></td>
<td align="left">Directorio del fichero. Si se utiliza dentro de un include, devolverá el directorio del fichero include. Esta constante es igual que <em>dirname(__FILE__)</em>. El nombre del directorio no lleva la barra inicial a no ser que esté en el directorio root. (Fue añadida en PHP 5.3.0)</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__FUNCTION__</tt></strong></td>
<td align="left">Nombre de la función. (Añadida en PHP 4.3.0) Desde PHP 5 esta constante devuelve el nombre de la función donde fue declarada (sensible a mayúsculas). En PHP 4 su valor siempre es en minúsculas.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__CLASS__</tt></strong></td>
<td align="left">Nombre de la clase. (Añadida en PHP 4.3.0) Desde PHP 5 esta constante devuelve el nombre de la clase donde fue declarada (sensible a mayúsculas). En PHP 4 su valor siempre es en minúsculas.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__METHOD__</tt></strong></td>
<td align="left">Nombre del método de la clase. (Añadida en PHP 5.0.0.) Nombre del método devuelto donde fue declarada. (sensible a mayúsculas).</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>__NAMESPACE__</tt></strong></td>
<td align="left">Nombre del espacio de nombres actual (sensible a mayúsculas). Esta constante se define en tiempo de compilación (Añadida en PHP 5.3.0) The name of the current namespace (case-sensitive).</td>
</tr>
</tbody>
</table>
<p>Listado con todas las Constantes Reservadas &#8211; <a style="color: #0431b4;" title="PHP Constantes predefinidas" href="http://www.php.net/manual/es/reserved.constants.php" target="_blank">Link</a></p>
<p>Pronto seguiré con mas temas!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=445&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/11/php-constantes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Constructores del Lenguaje</title>
		<link>http://www.agevaled.com/2011/08/07/php-constructores/</link>
		<comments>http://www.agevaled.com/2011/08/07/php-constructores/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 23:30:15 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[constructores]]></category>
		<category><![CDATA[declare]]></category>
		<category><![CDATA[php constructores]]></category>
		<category><![CDATA[php declare]]></category>
		<category><![CDATA[php funciones]]></category>
		<category><![CDATA[php funciones array]]></category>
		<category><![CDATA[php funciones string]]></category>
		<category><![CDATA[php include]]></category>
		<category><![CDATA[php include_once]]></category>
		<category><![CDATA[php require]]></category>
		<category><![CDATA[php require_once]]></category>
		<category><![CDATA[php return]]></category>
		<category><![CDATA[return]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=436</guid>
		<description><![CDATA[Llega el sexto resumen de la serie PHP, en este post haré un resumen de los diferentes constructores que podemos llegar a utilizar. declare El constructor declare es usado para fijar directivas de ejecución para un bloque de código. La sintaxis de declare es similar a la sintaxis de otros constructores de control de flujo: [...]]]></description>
			<content:encoded><![CDATA[<p>Llega el sexto resumen de la serie <strong>PHP</strong>, en este post haré un resumen de los diferentes <strong>constructores</strong> que podemos llegar a utilizar.</p>
<h2>declare</h2>
<p>El <strong>constructor declare</strong> es usado para fijar directivas de ejecución para un bloque de código. La sintaxis de declare es similar a la sintaxis de otros constructores de control de flujo:</p>
<p><em>declare (directive)</em><br />
<em> statement</em></p>
<p>La sección <em>directive</em> permite que el comportamiento de declare sea configurado. Actualmente, sólo dos directivas están reconocidas: <strong>ticks</strong> (Ver abajo para más información sobre la directiva <strong>ticks</strong>) y <strong>encoding</strong> (Ver abajo para más información sobre la directiva <strong>encoding</strong>).</p>
<p>La parte <em>statement</em> del bloque declare será ejecutada &#8211; como se ejecuta y que efectos secundarios ocurran durante la ejecución puede depender de la directiva fijada en el bloque <em>directive</em>.</p>
<p>El constructor <strong>declare</strong> también se puede utilizar en el alcance global, afectando a todo el código que le sigue (sin embargo, si el archivo con el declare fue incluido entonces no afectará al archivo padre).</p>
<pre class="brush: php; gutter: true">// estos son lo mismo:

// se puede usar ésto:
declare(ticks=1) {
    // script entero aquí
}

// o se puede usar ésto:
declare(ticks=1);
// script entero aquí</pre>
<h3>Ticks</h3>
<p>Un <strong>tick</strong> es un evento que ocurre para cada sentencia tickable N de bajo nivel ejecutada por el intérprete dentro del bloque declare. El valor para N se especifica usando ticks=N dentro del bloque de declare de la sección directive.</p>
<p>No todas las sentencias son tickable. Por lo general, expresiones de condición y expresiones de argumento no son tickables.</p>
<p>Los eventos que ocurren en cada <strong>tick</strong> se especifican mediante la <a style="color: #0431b4;" title="Function register_tick_function" href="http://www.php.net/manual/es/function.register-tick-function.php" target="_blank">register_tick_function()</a>. Ver el ejemplo abajo para más detalles. Tener en cuenta que más de un evento puede ocurrir por cada tick.</p>
<pre class="brush: php; gutter: true">declare(ticks=1);

// Una función llamada en cada evento tick
function tick_handler()
{
    echo "tick_handler() llamado\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a &gt; 0) {
    $a += 2;
    print($a);
}</pre>
<h3>encoding</h3>
<p>Una codificación de script puede ser especificada para cada script usando la directiva <strong>encoding</strong>.</p>
<pre class="brush: php; gutter: true">declare(encoding='ISO-8859-1');
// código aquí</pre>
<p>Mas información -&gt; <a style="color: #0431b4;" title="PHP - Declare" href="http://www.php.net/manual/es/control-structures.declare.php" target="_blank">Link</a></p>
<h2>return</h2>
<p>Si se llama desde una función, la sentencia <strong>return()</strong> inmediatamente termina la ejecución de la función actual, y retorna su argumento como el valor de la llamada a la función. <strong>return()</strong> también pondrá fin a la ejecución de una sentencia <strong>eval()</strong> o a un archivo de script.</p>
<p>Si se llama desde el ámbito global, entonces la ejecución del script actual se termina. Si el archivo script actual fue incluido con <strong>include()</strong> o <strong>require()</strong>, entonces el control es pasado de regreso al archivo que hizo el llamado. Además, si el archivo script actual fue incluido, entonces el valor dado a <strong>return()</strong> será retornado como el valor de la llamada <strong>include().</strong> Si <strong>return()</strong> es llamado desde dentro del archivo script principal, entonces termina la ejecución del script. Si el archivo script actual fue nombrado por las opciones de configuración <strong>auto_prepend_file</strong> o <strong>auto_append_file</strong> en <strong>php.ini</strong>, entonces se termina la ejecución de ese archivo script.</p>
<p>Mas información -&gt; <a style="color: #0431b4;" title="PHP - Return" href="http://www.php.net/manual/es/function.return.php" target="_blank">Link</a></p>
<h2>include &amp; include_once</h2>
<p>La sentencia <strong>include()</strong> incluye y evalúa el archivo especificado.</p>
<p>Los archivos son incluidos con base en la ruta de acceso dada o, si ninguna es dada, el <strong>include_path</strong> especificado. Si el archivo no se encuentra en el <strong>include_path</strong>, <strong>include()</strong> finalmente verificará en el propio directorio del script que hace el llamado y en el directorio de trabajo actual, antes de fallar. El constructor <strong>include()</strong> emitirá una advertencia si no puede encontrar un archivo, éste es un comportamiento diferente al de <strong>require()</strong>, el cual emitirá un error fatal..</p>
<p>Si una ruta es definida — ya sea absoluta (comenzando con una letra de unidad o \ en Windows o / en sistemas Unix/Linux) o relativa al directorio actual (comenzando con . o ..) — el <strong>include_path</strong> será ignorado por completo. Por ejemplo, si un nombre de archivo comienza con ../, el interprete buscará en el directorio padre para encontrar el archivo solicitado.</p>
<p>Cuando se incluye un archivo, el código que contiene hereda el ámbito de las variables de la línea en la cual ocurre la inclusión. Cualquier variable disponible en esa línea del archivo que hace el llamado, estará disponible en el archivo llamado, desde ese punto en adelante. Sin embargo, todas las funciones y clases definidas en el archivo incluido tienen el ámbito global.</p>
<p>Si la inclusión ocurre al interior de una función dentro del archivo que hace el llamado, entonces todo el código contenido en el archivo llamado se comportará como si hubiera sido definida dentro de esa función. Por lo tanto, seguirá el ámbito de las variables de esa función. Una excepción a esta regla son las constantes mágicas las cuales son evaluadas por el intérprete antes que ocurra la inclusión.</p>
<p>La sentencia <strong>include_once()</strong> incluye y evalúa el fichero especificado durante la ejecución del script. Es un comportamiento similar al de la sentencia <strong>include()</strong>, siendo la única diferencia que si el código del fichero ya ha sido incluido, no se volverá a incluir. Como su nombre lo indica, será incluido sólo una vez.</p>
<p><strong>include_once()</strong> puede ser usado en casos donde el mismo fichero podría ser incluido y evaluado más de una vez durante una ejecución particular de un script, así que en este caso, puede ayudar a evitar problemas como la redefinición de funciones, reasignación de valores de variables, etc.</p>
<p>Mas información include -&gt; <a style="color: #0431b4;" title="PHP - include" href="http://www.php.net/manual/es/function.include.php" target="_blank">Link</a><br />
Mas información include_once-&gt; <a style="color: #0431b4;" title="PHP - include_once" href="http://www.php.net/manual/es/function.include-once.php" target="_blank">Link</a></p>
<h2>require &amp; require_once</h2>
<p><strong>require()</strong> es idéntico a <strong>include()</strong> excepto que en caso de fallo, además producirá un error de nivel <strong>E_COMPILE_ERROR</strong> fatal. En otras palabras, parará el script mientras que <strong>include()</strong> sólo emitirá una advertencia (<strong>E_WARNING</strong>) lo cual permite continuar el script.</p>
<p>La sentencia <strong>require_once()</strong> es idéntica a <strong>require()</strong> excepto que <strong>PHP</strong> verificará si el archivo ya ha sido incluido y si es así, no se incluye (require) de nuevo.</p>
<p>Mas información require -&gt; <a style="color: #0431b4;" title="PHP - require" href="http://www.php.net/manual/es/function.require.php" target="_blank">Link</a><br />
Mas información require_once -&gt; <a style="color: #0431b4;" title="PHP - require_once" href="http://www.php.net/manual/es/function.require-once.php" target="_blank">Link</a></p>
<h2>goto</h2>
<p>El operador <strong>goto</strong> puede ser usado para saltar a otra sección en el programa. El punto de destino es especificado mediante una etiqueta seguida de dos puntos y la instrucción es dada como goto seguida de la etiqueta del destino deseado. Este <strong>goto</strong> no es completamente sin restricciones. La etiqueta de destino debe estar dentro del mismo fichero y contexto, lo que significa que no se puede saltar fuera de una función o método, ni se puede saltar dentro de uno. Tampoco se puede saltar dentro de cualquier clase de estructura de bucle o switch. Se puede saltar fuera de estos y un uso común es utilizar un goto en lugar de un break multi-nivel.</p>
<p><em>Ejemplo:</em></p>
<pre class="brush: php; gutter: true">goto a;
echo 'Foo';

a:
echo 'Bar';</pre>
<p><em>Ejemplo dentro de un bucle:</em></p>
<pre class="brush: php; gutter: true">
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end;
  }
}
echo "i = $i";
end:
echo 'j alcanzó 17';
</pre>
<p><img class="aligncenter" src="http://www.php.net/manual/es/images/0baa1b9fae6aec55bbb73037f3016001-xkcd-goto.png" alt="" width="580" /></p>
<p>Mas información -&gt; <a style="color: #0431b4;" title="PHP - GOTO" href="http://www.php.net/manual/es/control-structures.goto.php" target="_blank">Link</a></p>
<h2>Exit &amp; Die</h2>
<p><strong>exit</strong> — Imprime un mensaje y termina el script actual, se le puede pasar un string como parámetro para que lo imprima en pantalla.</p>
<p><strong>die</strong> — Equivalente a <strong>exit()</strong></p>
<p>Mas información Exit -&gt; <a style="color: #0431b4;" title="PHP - Exit" href="http://www.php.net/manual/es/function.exit.php" target="_blank">Link</a><br />
Mas información Die -&gt; <a style="color: #0431b4;" title="PHP - Die" href="http://www.php.net/manual/es/function.die.php" target="_blank">Link</a></p>
<h2>echo, print, printf, print_r &amp; var_dump</h2>
<p><strong>echo </strong>— Muestra una o más cadenas<br />
<strong>print </strong>— Mostrar una cadena<br />
<strong>printf </strong>— Imprimir una cadena con formato<br />
<strong>print_r </strong>— Imprime información legible para humanos sobre una variable<br />
<strong>var_dump </strong>— Vuelca información sobre una variable</p>
<p>Mas información echo -&gt; <a style="color: #0431b4;" title="PHP - echo" href="http://www.php.net/manual/es/function.echo.php" target="_blank">Link</a><br />
Mas información print -&gt; <a style="color: #0431b4;" title="PHP - print" href="http://www.php.net/manual/es/function.print.php" target="_blank">Link</a><br />
Mas información printf -&gt; <a style="color: #0431b4;" title="PHP - printf" href="http://www.php.net/manual/es/function.printf.php" target="_blank">Link</a><br />
Mas información print_r -&gt; <a style="color: #0431b4;" title="PHP - print_r" href="http://www.php.net/manual/es/function.print-r.php" target="_blank">Link</a><br />
Mas información var_dump -&gt; <a style="color: #0431b4;" title="PHP - var_dump" href="http://www.php.net/manual/es/function.var-dump.php" target="_blank">Link</a></p>
<h2>empty, eval, isset, unset &amp; list</h2>
<p><strong>empty </strong>— Determina si una variable está vacía<br />
<strong>eval </strong>— Evaluar una cadena como código PHP<br />
<strong>isset </strong>— Determina si una variable está definida y no es NULL<br />
<strong>unset </strong>— Destruye una variable especificada<br />
<strong>list </strong>— Asigna variables como si fuera un array</p>
<p>Mas información empty -&gt; <a style="color: #0431b4;" title="PHP - empty" href="http://www.php.net/manual/es/function.empty.php" target="_blank">Link</a><br />
Mas información eval -&gt; <a style="color: #0431b4;" title="PHP - eval" href="http://www.php.net/manual/es/function.eval.php" target="_blank">Link</a><br />
Mas información isset -&gt; <a style="color: #0431b4;" title="PHP - isset" href="http://www.php.net/manual/es/function.isset.php" target="_blank">Link</a><br />
Mas información unset -&gt; <a style="color: #0431b4;" title="PHP - unset" href="http://www.php.net/manual/es/function.unset.php" target="_blank">Link</a><br />
Mas información list -&gt; <a style="color: #0431b4;" title="PHP - list" href="http://www.php.net/manual/es/function.list.php" target="_blank">Link</a></p>
<p>Existen muchas funciones mas útiles que podemos llegar a utilizar y que nos sean útil, acá les dejo los links para que puedan investigar y utilizar las que mas les sea útil.</p>
<p>Funciones de strings - <a style="color: #0431b4;" title="Funciones de sting" href="http://www.php.net/manual/es/ref.strings.php" target="_blank">Link</a><br />
Funciones de manejo de variables - <a style="color: #0431b4;" title="Funciones de manejo de variables" href="http://www.php.net/manual/es/ref.var.php" target="_blank">Link</a><br />
Funciones de Arrays - <a style="color: #0431b4;" title="Funciones de arrays" href="http://www.php.net/manual/es/ref.array.php" target="_blank">Link</a><br />
Funciones del Intérprete XML - <a style="color: #0431b4;" title="Funciones del Intérprete XML" href="http://www.php.net/manual/es/ref.xml.php" target="_blank">Link</a><br />
Funciones de Manejo de Funciones - <a style="color: #0431b4;" title="Funciones de Manejo de Funciones" href="http://www.php.net/manual/es/ref.funchand.php" target="_blank">Link</a><br />
Funciones varias - <a style="color: #0431b4;" title="Funciones Varias" href="http://www.php.net/manual/es/ref.misc.php" target="_blank">Link</a></p>
<p>Ya iré agregando mas links, son varios!</p>
<p>Espero que les interese estos resúmenes. <img src='http://www.agevaled.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Saludos y espero sus criticas!<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=436&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/07/php-constructores/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>PHP – Estructura de control – Loop</title>
		<link>http://www.agevaled.com/2011/08/07/php-estructura-de-control-loop/</link>
		<comments>http://www.agevaled.com/2011/08/07/php-estructura-de-control-loop/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 21:17:33 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[estructura de control]]></category>
		<category><![CDATA[php break]]></category>
		<category><![CDATA[php continue]]></category>
		<category><![CDATA[php do while]]></category>
		<category><![CDATA[php estructuras de control]]></category>
		<category><![CDATA[php for]]></category>
		<category><![CDATA[php foreach]]></category>
		<category><![CDATA[php while]]></category>
		<category><![CDATA[resumen php]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=430</guid>
		<description><![CDATA[Luego de hacer un resumen de las Estructuras de control condicionales, este es el turno de continuar los resúmenes sobre las Estructuras de control Loops en PHP. While Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La forma básica de una sentencia while es: [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de hacer un resumen de las <a title="PHP – Estructura de control – Condicionales" href="http://www.agevaled.com/2011/08/07/php-estructura-de-control-condicionale/" target="_blank">Estructuras de control condicionales</a>, este es el turno de continuar los resúmenes sobre las<strong> Estructuras de control Loops </strong>en <strong>PHP</strong>.</p>
<h2>While</h2>
<p>Los bucles <strong>while </strong>son el tipo más sencillo de bucle en <strong>PHP</strong>. Se comportan igual que su contrapartida en C. La forma básica de una sentencia <strong>while </strong>es:</p>
<p><em>while (expr)</em><br />
<em>       sentencia</em></p>
<p>El significado de una sentencia <strong>while </strong>es simple. Le dice a <strong>PHP </strong>que ejecute las sentencias anidadas, tanto como la expresión <strong>while </strong>se evalúe como <strong>TRUE</strong>. El valor de la expresión es verificado cada vez al inicio del bucle, por lo que incluso si este valor cambia durante la ejecución de las sentencias anidadas, la ejecución no se detendrá hasta el final de la iteración (cada vez que <strong>PHP </strong>ejecuta las sentencias contenidas en el bucle es una iteración). A veces, si la expresión while se evalúa como <strong>FALSE </strong>desde el principio, las sentencias anidadas no se ejecutarán ni siquiera una vez.</p>
<pre class="brush: php; gutter: true">/* ejemplo 1 */
$i = 1;
while ($i <= 10) {
    echo $i++;  /* el valor presentado sería
                   $i antes del incremento
                   (post-incremento) */
}
</pre>
<p><strong>Sintaxis alternativa</strong></p>
<pre class="brush: php; gutter: true">/* ejemplo 2 */
$i = 1;
while ($i <= 10):
    echo $i;
    $i++;
endwhile;</pre>
<p>Mas información -&gt; <a title="PHP - While" href="http://www.php.net/manual/es/control-structures.while.php" target="_blank">Link</a></p>
<h2>Do-While</h2>
<p>Los bucles <strong>do-while</strong> son muy similares a los bucles <strong>while</strong>, excepto que la expresión verdadera es verificada al final de cada iteración en lugar que al principio. La diferencia principal con los bucles <strong>while </strong>es que está garantizado que corra la primera iteración de un bucle <strong>do-while</strong> (la expresión verdadera sólo es verificada al final de la iteración), mientras que no necesariamente va a correr con un bucle while regular (la expresión verdadera es verificada al principio de cada iteración, si se evalúa como <strong>FALSE</strong> justo desde el comienzo, la ejecución del bucle terminaría inmediatamente).</p>
<p>Hay una sola sintaxis para bucles <strong>do-while</strong>:</p>
<pre class="brush: php; gutter: true">$i = 0;
do {
    echo $i;
} while ($i &gt; 0);</pre>
<p>El bucle de arriba se ejecutaría exactamente una sola vez, ya que después de la primera iteración, cuando la expresión verdadera es verificada, se evalúa como <strong>FALSE</strong> ($i no es mayor que 0) y termina la ejecución del bucle.</p>
<p>Mas información -&gt; <a title="PHP - Do-While" href="http://www.php.net/manual/es/control-structures.do.while.php" target="_blank">Link</a></p>
<h2>For</h2>
<p>Los bucles <strong>for</strong> son los ciclos más complejos en <strong>PHP</strong>. Se comportan como sus contrapartes en C. La sintaxis de un bucle <strong>for</strong> es:</p>
<p><em>for (expr1; expr2; expr3)<br />
sentencia</em></p>
<p>La primera expresión (<em>expr1</em>) es evaluada (<em>ejecutada</em>) una vez incondicionalmente al comienzo del bucle.</p>
<p>En el comienzo de cada iteración, la <em>expr2</em> es evaluada, Si es <strong>TRUE</strong>, el blucle continúa y las sentencias anidadas son ejecutadas. Si se evalúa como <strong>FALSE</strong>, termina la ejecución del bucle.</p>
<p>Al final de cada iteración, la <em>expr3</em> es evaluada (<em>ejecutada</em>).</p>
<p>Cada una de las expresiones puede esta vacía o contener múltiples expresiones separadas por comas. En la <em>expr2</em>, todas las expresiones separadas por una coma son evaluadas pero el resultado se toma de la última parte. Que la <em>expr2</em> esté vacía significa que el bucle deberá ser corrido indefinidamente (<strong>PHP</strong> implícitamente lo considera como <strong>TRUE</strong>, como en C). Esto puede no ser tan inútil como se pudiera pensar, ya que muchas veces se quiere terminar el bucle usando una sentencia condicional break en lugar de ustilizar la expresión verdadera del <strong>for</strong>.</p>
<p>Considere los siguientes ejemplos. Todos ellos muestran los números del 1 al 10:</p>
<pre class="brush: php; gutter: true">//Ejemplo 1
for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
</pre>
<p><strong>Sintaxis Alternativa</strong></p>
<pre class="brush: php; gutter: true">
for ($i = 1; $i <= 10; $i++) :
    echo $i;
endfor;
</pre>
<p>Mas información -&gt; <a title="PHP - For" href="http://www.php.net/manual/es/control-structures.for.php" target="_blank">Link</a></p>
<h2>Foreach</h2>
<p><strong>PHP 4</strong> introdujo un constructor <strong>foreach</strong>, muy parecido al de Perl y algunos otros lenguajes. Simplemente da un modo fácil de iterar sobre arrays. <strong>Foreach</strong> sólo trabaja sólo sobre arrays y resultará en un error al intentar usarlo en una variable con un diferente tipo de datos o una variable no inicializada. Hay dos sintaxis; la segunda es una extensión menor, pero útil de la primera:</p>
<p><em>foreach (array_expression as $value)<br />
sentencias<br />
foreach (array_expression as $key =&gt; $value)<br />
sentencias</em></p>
<p>La primera forma recorre el array dado por array_expression. En cada ciclo, el valor de el elemento actual es asignado a $value y el puntero interno del array es avanzado en uno (así en el próximo ciclo se estará mirando el siguiente elemento).</p>
<p>La segunda manera hace lo mismo, excepto que la clave del elemento actual será asignada a la variable $key en cada ciclo.</p>
<pre class="brush: php; gutter: true">$a = array(1,2,3,4,5);
foreach ($a as $value){
    echo $value
}</pre>
<p>Sintaxis alternativa</p>
<pre class="brush: php; gutter: true">$a = array(1,2,3,4,5);
foreach ($a as $value):
    echo $value
endforeach;</pre>
<p>A partir de <strong>PHP 5</strong>, se pueden modificar fácilmente elementos del array al preceder $value con &amp;. Esto asignará una referencia en lugar de copiar el valor.</p>
<pre class="brush: php; gutter: true">$arr = array(1, 2, 3, 4);
foreach ($arr as &amp;$value) {
    $value = $value * 2;
}</pre>
<p>Mas información -&gt; <a title="PHP - Foreach" href="http://www.php.net/manual/es/control-structures.foreach.php" target="_blank">Link</a></p>
<h2>Break</h2>
<p><strong>Break</strong> termina la ejecución de la estructura actual <strong>for</strong>, <strong>foreach</strong>, <strong>while</strong>, <strong>do-while</strong> o <strong>switch</strong>.</p>
<p>Break acepta un argumento numérico opcional el cual indica de cuantas estructuras anidadas encerradas se debe salir.</p>
<pre class="brush: php; gutter: true">$arr = array('uno', 'dos', 'tres', 'cuatro', 'pare', 'cinco');
while (list(, $val) = each($arr)) {
    if ($val == 'pare') {
        break;    /* Se puede también escribir 'break 1;' aquí. */
    }
    echo "$val\n";
}

/* Usando el argumento opcional. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "En 5\n";
        break 1;  /* Sólo sale del switch. */
    case 10:
        echo "En 10; saliendo\n";
        break 2;  /* Sale del switch y del while. */
    default:
        break;
    }
}</pre>
<p>Mas información -&gt; <a title="PHP - Break" href="http://www.php.net/manual/es/control-structures.break.php" target="_blank">Link</a></p>
<h2>Continue</h2>
<p>Continue se utiliza dentro de las estructuras de bucle para saltarse el resto de la actual iteración del bucle y continuar la ejecución en la evaluación de la condición y entonces el comienzo de la siguiente iteración.</p>
<p>Continue acepta un argumento numérico opcional el cual indica hasta el final de cuantos niveles de bucles cerrados se debe saltar.</p>
<pre class="brush: php; gutter: true">while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // saltar miembros impares
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ &lt; 5) {
    echo "Outer\n";
    while (1) {
        echo "Middle\n";
        while (1) {
            echo "Inner\n";
            continue 3;
        }
        echo "This never gets output.\n";
    }
    echo "Neither does this.\n";
}</pre>
<p>Mas información -&gt; <a title="PHP - Continue" href="http://www.php.net/manual/es/control-structures.continue.php" target="_blank">Link</a></p>
<p>Pronto seguiremos con mas resumenes de PHP! <img src='http://www.agevaled.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=430&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/07/php-estructura-de-control-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Estructura de control &#8211; Condicionales</title>
		<link>http://www.agevaled.com/2011/08/07/php-estructura-de-control-condicionale/</link>
		<comments>http://www.agevaled.com/2011/08/07/php-estructura-de-control-condicionale/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 03:27:25 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[condicionales]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[elseif]]></category>
		<category><![CDATA[estructuras de control]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[php estructuras de control]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=411</guid>
		<description><![CDATA[Es el turno de escribir el tercer post de la serie de PHP, ya escribí sobre Sintaxis básicas, Tipos de datos y los Operadores. Este es el turno de hacer un resumen de las estructuras de control, específicamente de los condicionales. IF El constructor IF, es uno de los mas importantes en casi todos los lenguajes de programación, el constructor evalúa [...]]]></description>
			<content:encoded><![CDATA[<p>Es el turno de escribir el tercer post de la serie de <strong>PHP</strong>, ya escribí sobre <a title="PHP – Sintaxis Básicas" href="http://www.agevaled.com/2011/08/05/php-sintaxis-basicas/" target="_blank">Sintaxis básicas</a>, <a title="PHP – Tipos de datos" href="http://www.agevaled.com/2011/08/06/php-tipos-de-dato/" target="_blank">Tipos de datos</a> y los <a title="PHP – Operadores" href="http://www.agevaled.com/2011/08/06/php-operadores/" target="_blank">Operadores</a>. Este es el turno de hacer un resumen de las estructuras de control, específicamente de los <strong>condicionales</strong>.</p>
<h2><strong>IF</strong></h2>
<p>El constructor <strong>IF</strong>, es uno de los mas importantes en casi todos los lenguajes de programación, el constructor evalúa una expresión dada, si dicha expresión devuelve <strong>TRUE</strong>, PHP ejecutara la sentencia que se encuentra dentro del <strong>IF</strong>, caso contrario se ignorara.</p>
<p>La estructura del <strong>IF</strong> es similar a:</p>
<p>if ({expresión}){</p>
<p>{sentencia}</p>
<p>}</p>
<p><strong>Ejemplo:</strong></p>
<pre class="brush: php; gutter: true">if ($a == $b){
      echo 'La variable a es igual a la variable b';
}</pre>
<p>Mas información -&gt; <a title="PHP - IF" href="http://www.php.net/manual/es/control-structures.if.php" target="_blank">Link</a></p>
<h2><strong>ELSE</strong></h2>
<p>Con frecuencia se desea ejecutar una sentencia si una cierta condición se cumple y una sentencia diferente si la condición no se cumple. Esto es para lo que es <strong>else</strong>. El <strong>else</strong> extiende una sentencia <strong>if</strong> para ejecutar una sentencia en caso que la expresión e la sentencia <strong>if</strong> se evalúa como <strong>FALSE</strong>. Por ejemplo, el siguiente código deberá mostrar a es mayor que b si $a es mayor que $b y a NO es mayor que b en el caso contrario:</p>
<pre class="brush: php; gutter: true">if ($a &gt; $b) {
  echo "a es mayor que b";
} else {
  echo "a NO es mayor que b";
}</pre>
<p>Mas información -&gt; <a title="PHP - ELSE" href="http://www.php.net/manual/es/control-structures.else.php" target="_blank">Link</a></p>
<h2>ELSE IF</h2>
<p><strong>elseif</strong>, como su nombre lo sugiere, es una combinación de <strong>if</strong> y <strong>else</strong>. Del mismo modo que <strong>else</strong>, extiende una sentencia <strong>if</strong> para ejecutar una sentencia diferente en caso que la expresión <strong>if</strong> original se evalúe como FALSE. Sin embargo, a diferencia de <strong>else</strong>, esa expresión alternativa sólo se ejecutará si la expresión condicional del <strong>elseif</strong> se evalúa como TRUE. Por ejemplo, el siguiente código debe mostrar a es mayor que b, a es igual que b o a es menor que b:</p>
<pre class="brush: php; gutter: true">if ($a &gt; $b) {
    echo "a es mayor que b";
} elseif ($a == $b) {
    echo "a es igual que b";
} else {
    echo "a es menor que b";
}</pre>
<p>Mas información -&gt; <a title="PHP - ELSEIF" href="http://www.php.net/manual/es/control-structures.elseif.php" target="_blank">Link</a></p>
<h2>Sintaxis alternativa:</h2>
<pre class="brush: php; gutter: true">if ($a == 5):
    echo "a igual 5";
    echo "...";
elseif ($a == 6):
    echo "a igual 6";
    echo "!!!";
else:
    echo "a no es 5 ni 6";
endif;</pre>
<p>Mas información -&gt; <a title="PHP - Estructura de control alternativa" href="http://www.php.net/manual/es/control-structures.alternative-syntax.php" target="_blank">Link</a></p>
<h2>SWITCH</h2>
<p>La sentencia <strong>switch</strong> es similar a una serie de sentencias <strong>IF</strong> en la misma expresión. En muchas ocasiones, es posible que se quiera comparar la misma variable (o expresión) con muchos valores diferentes, y ejecutar una parte de código distinta dependiendo de a que valor es igual. Para esto es exactamente la expresión <strong>switch</strong>.</p>
<pre class="brush: php; gutter: true">switch ($i) {
    case 0:
        echo "i es igual a 0";
        break;
    case 1:
        echo "i es igual a 1";
        break;
    case 2:
        echo "i es igual a 2";
        break;
}</pre>
<p><strong>Sintaxis Alternativa</strong></p>
<pre class="brush: php; gutter: true">switch ($i):
    case 0:
        echo "i es igual a 0";
        break;
    case 1:
        echo "i es igual a 1";
        break;
    case 2:
        echo "i es igual a 2";
        break;
    default:
        echo "i no es igual a 0, 1 ni 2";
endswitch;</pre>
<p>Mas información -&gt; <a title="PHP - Switch" href="http://www.php.net/manual/es/control-structures.switch.php" target="_blank">Link</a></p>
<p>Espero que les sirva, el próximo post sera dedicado a las <strong>estructuras de control</strong> de <strong>Loops</strong><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=411&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/07/php-estructura-de-control-condicionale/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Operadores</title>
		<link>http://www.agevaled.com/2011/08/06/php-operadores/</link>
		<comments>http://www.agevaled.com/2011/08/06/php-operadores/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 22:34:36 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[operadores]]></category>
		<category><![CDATA[PHP Operadores aritméticos]]></category>
		<category><![CDATA[PHP Operadores bit a bit]]></category>
		<category><![CDATA[PHP Operadores de asignación]]></category>
		<category><![CDATA[PHP Operadores de comparación]]></category>
		<category><![CDATA[PHP Operadores de control de errores]]></category>
		<category><![CDATA[PHP Operadores de ejecución]]></category>
		<category><![CDATA[PHP Operadores de incremento/decremento]]></category>
		<category><![CDATA[PHP Operadores de tipo]]></category>
		<category><![CDATA[PHP Operadores lógicos]]></category>
		<category><![CDATA[PHP Operadores para arrays]]></category>
		<category><![CDATA[PHP Operadores para strings]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=377</guid>
		<description><![CDATA[Este es el tercer post de la serie PHP; es el turno de hacer un breve resumen sobre los Operadores. Existen varios tipos de operadores en PHP, hará un listado y luego explicaré brevemente cada uno de ellos. Operadores aritméticos Operadores de asignación Operadores bit a bit Operadores de comparación Operadores de control de errores Operadores de [...]]]></description>
			<content:encoded><![CDATA[<p>Este es el tercer post de la serie <strong>PHP;</strong> es el turno de hacer un breve resumen sobre los<strong> Operadores</strong>.</p>
<p>Existen varios tipos de <strong>operadores</strong> en <strong>PHP</strong>, hará un listado y luego explicaré brevemente cada uno de ellos.</p>
<ul>
<li><strong>Operadores aritméticos</strong></li>
<li><strong>Operadores de asignación</strong></li>
<li><strong>Operadores bit a bit</strong></li>
<li><strong>Operadores de comparación</strong></li>
<li><strong>Operadores de control de errores</strong></li>
<li><strong>Operadores de ejecución</strong></li>
<li><strong>Operadores de incremento/decremento</strong></li>
<li><strong>Operadores lógicos</strong></li>
<li><strong>Operadores para strings</strong></li>
<li><strong>Operadores para arrays</strong></li>
<li><strong>Operadores de tipo</strong></li>
</ul>
<h2><strong>Operadores aritméticos</strong></h2>
<p>Son, simplemente, las operaciones aritméticas que uno aprendió en el colegio primario.</p>
<table>
<tbody>
<tr>
<td>-$a</td>
<td>Negación</td>
<td>Opuesto de $a.</td>
</tr>
<tr>
<td>$a + $b</td>
<td>Adición</td>
<td>Suma de $a y $b.</td>
</tr>
<tr>
<td>$a &#8211; $b</td>
<td>Sustracción</td>
<td>Diferencia de $a y $b.</td>
</tr>
<tr>
<td>$a * $b</td>
<td>Multiplicación</td>
<td>Producto de $a y $b.</td>
</tr>
<tr>
<td>$a / $b</td>
<td>División</td>
<td>Cociente de $a y $b.</td>
</tr>
<tr>
<td>$a % $b</td>
<td>Módulo</td>
<td>Resto de $a dividido por $b.</td>
</tr>
</tbody>
</table>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operaciones Aritméticas PHP" href="http://www.php.net/manual/es/language.operators.arithmetic.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de asignación</strong></h2>
<p>El operador de asignación es el signo <strong>=</strong> (igual), el cual se encarga de definir el valor de lo que se encuentra a la derecha a lo que esta a la izquierda, siempre y cuando tenga sentido!</p>
<pre class="brush: php; gutter: true">$a = 2; //Defino la variable $a con el valor 2

$b = &$a; // Hago una referencia a $b de $a</pre>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operaciones de Asignación PHP" href="http://www.php.net/manual/es/language.operators.assignment.php" target="_blank">link</a></em></p>
<h2><strong>Operadores bit a bit</strong></h2>
<p>Los operadores bit a bit permiten la evaluación y la manipulación de bits específicos dentro de un <strong>integer</strong>.</p>
<table>
<tbody valign="middle">
<tr valign="middle">
<td style="width: 70px;" align="left"><strong><code>$a &amp; $b</code></strong></td>
<td align="left">And (y)</td>
<td align="left">Los bits que están activos en ambos <var><var>$a</var></var> y <var><var>$b</var></var> son activados.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><code>$a | $b</code></strong></td>
<td align="left">Or (o inclusivo)</td>
<td align="left">Los bits que están activos ya sea en <var><var>$a</var></var> o en <var><var>$b</var></var> son activados.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><code>$a ^ $b</code></strong></td>
<td align="left">Xor (o exclusivo)</td>
<td align="left">Los bits que están activos en <var><var>$a</var></var> o en <var><var>$b</var></var>, pero no en ambos, son activados.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><code>~ $a</code></strong></td>
<td align="left">Not (no)</td>
<td align="left">Los bits que están activos en $a son desactivados, y viceversa. Bits that are set in <var><var>$a</var></var> are not set, and vice versa.</td>
</tr>
<tr valign="middle">
<td align="left"><strong><code>$a &lt;&lt; $b</code></strong></td>
<td align="left">Shift left(desplazamiento a izquierda)</td>
<td align="left">Desplaza los bits de <var><var>$a</var></var>, <var><var>$b</var></var> pasos a la izquierda (cada paso quiere decir &#8220;multiplicar por dos&#8221;).</td>
</tr>
<tr valign="middle">
<td align="left"><strong><code>$a &gt;&gt; $b</code></strong></td>
<td align="left">Shift right (desplazamiento a derecha)</td>
<td align="left">Desplaza los bits de <var><var>$a</var></var>, <var><var>$b</var></var> pasos a la derecha (cada paso quiere decir &#8220;dividir por dos&#8221;).</td>
</tr>
</tbody>
</table>
<p>Hay unos ejemplos muy buenos en la pagina oficial de <strong>PHP</strong>, para entender 100% cómo funcionan los operadores bit a bit</p>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores Bit a Bit PHP" href="http://www.php.net/manual/es/language.operators.bitwise.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de comparación</strong></h2>
<p>Son los operadores que nos dejan comparar dos valores.</p>
<table>
<tbody valign="middle">
<tr valign="middle">
<td align="left">$a == $b</td>
<td align="left">Igual</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es igual a <var><var>$b</var></var> después de la manipulación de tipos.</td>
</tr>
<tr valign="middle">
<td align="left">$a === $b</td>
<td align="left">Idéntico</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es igual a <var><var>$b</var></var>, y son del mismo tipo. (a partir de PHP 4)</td>
</tr>
<tr valign="middle">
<td align="left">$a != $b</td>
<td align="left">Diferente</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es igual a <var><var>$b</var></var> después de la manipulación de tipos.</td>
</tr>
<tr valign="middle">
<td align="left">$a &lt;&gt; $b</td>
<td align="left">Diferente</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es igual a <var><var>$b</var></var> después de la manipulación de tipos.</td>
</tr>
<tr valign="middle">
<td align="left">$a !== $b</td>
<td align="left">No idéntico</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es igual a <var><var>$b</var></var>, o si no son del mismo tipo. (a partir de PHP 4)</td>
</tr>
<tr valign="middle">
<td align="left">$a &lt; $b</td>
<td align="left">Menor que</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es estrictamente menor que <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a &gt; $b</td>
<td align="left">Mayor que</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es estrictamente mayor que <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a &lt;= $b</td>
<td align="left">Menor o igual que</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es menor o igual que <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a &gt;= $b</td>
<td align="left">Mayor o igual que</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> es mayor o igual que <var><var>$b</var></var>.</td>
</tr>
</tbody>
</table>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operaciones Aritméticas PHP" href="http://www.php.net/manual/es/language.operators.arithmetic.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de control de errores</strong></h2>
<p><strong>PHP</strong> soporta un operador de control de errores: el signo de arroba (@). Cuando se antepone a una expresión en <strong>PHP</strong>, cualquier mensaje de error que pueden ser generado por esa expresión será ignorado.</p>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores de control de errores PHP" href="http://www.php.net/manual/es/language.operators.errorcontrol.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de ejecución</strong></h2>
<p><strong>PHP</strong> soporta un operador de ejecución: las comillas invertidas (&#8220;). ¡Note que estas no son las comillas sencillas! PHP intentará ejecutar el contenido entre las comillas invertidas como si se tratara de un comando del shell; la salida será retornada (es decir, no será simplemente volcada como salida; puede ser asignada a una variable). El uso del operador de comillas invertidas es idéntico al de shell_exec().</p>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores de ejecución PHP" href="http://www.php.net/manual/es/language.operators.execution.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de incremento/decremento</strong></h2>
<p>PHP posee operadores pre y post incremento y decremento.</p>
<table>
<thead valign="middle">
<tr valign="middle">
<th>Ejemplo</th>
<th>Nombre</th>
<th>Efecto</th>
</tr>
</thead>
<tbody valign="middle">
<tr valign="middle">
<td align="left">++$a</td>
<td align="left">Pre-incremento</td>
<td align="left">Incrementa <var><var>$a</var></var> en uno, y luego retorna <var><var>$a</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a++</td>
<td align="left">Post-incremento</td>
<td align="left">Retorna <var><var>$a</var></var>, y luego incrementa <var><var>$a</var></var> en uno.</td>
</tr>
<tr valign="middle">
<td align="left">&#8211;$a</td>
<td align="left">Pre-decremento</td>
<td align="left">Decrementa <var><var>$a</var></var> en uno, luego retorna <var><var>$a</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a&#8211;</td>
<td align="left">Post-decremento</td>
<td align="left">Retorna <var><var>$a</var></var>, luego decrementa <var><var>$a</var></var> en uno.</td>
</tr>
</tbody>
</table>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operaciones Aritméticas PHP" href="http://www.php.net/manual/es/language.operators.arithmetic.php" target="_blank">link</a></em></p>
<h2><strong>Operadores lógicos</strong></h2>
<table>
<thead valign="middle">
<tr valign="middle">
<th>Ejemplo</th>
<th>Nombre</th>
<th>Resultado</th>
</tr>
</thead>
<tbody valign="middle">
<tr valign="middle">
<td align="left">$a and $b</td>
<td align="left">And (y)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si tanto <var><var>$a</var></var> como <var><var>$b</var></var> son <strong><tt>TRUE</tt></strong>.</td>
</tr>
<tr valign="middle">
<td align="left">$a or $b</td>
<td align="left">Or (o inclusivo)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si cualquiera de <var><var>$a</var></var> o <var><var>$b</var></var> es <strong><tt>TRUE</tt></strong>.</td>
</tr>
<tr valign="middle">
<td align="left">$a xor $b</td>
<td align="left">Xor (o exclusivo)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> o <var><var>$b</var></var> es <strong><tt>TRUE</tt></strong>, pero no ambos.</td>
</tr>
<tr valign="middle">
<td align="left">! $a</td>
<td align="left">Not (no)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es <strong><tt>TRUE</tt></strong>.</td>
</tr>
<tr valign="middle">
<td align="left">$a &amp;&amp; $b</td>
<td align="left">And (y)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si tanto <var><var>$a</var></var> como <var><var>$b</var></var> son <strong><tt>TRUE</tt></strong>.</td>
</tr>
<tr valign="middle">
<td align="left">$a || $b</td>
<td align="left">Or (o inclusivo)</td>
<td align="left"><strong><tt>TRUE</tt></strong> si cualquiera de <var><var>$a</var></var> o <var><var>$b</var></var> es <strong><tt>TRUE</tt></strong>.</td>
</tr>
</tbody>
</table>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores lógicos PHP" href="http://www.php.net/manual/es/language.operators.logical.php" target="_blank">link</a></em></p>
<h2><strong>Operadores para strings</strong></h2>
<p>Existen dos operadores para datos tipo string. El primero es el operador de concatenación (&#8216;.&#8217;), el cual retorna el resultado de concatenar sus argumentos derecho e izquierdo. El segundo es el operador de asignación sobre concatenación (&#8216;.=&#8217;), el cual añade el argumento del lado derecho al argumento en el lado izquierdo. Por favor consulte Operadores de asignación para más información.</p>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores para strings PHP" href="http://www.php.net/manual/es/language.operators.string.php" target="_blank">link</a></em></p>
<h2><strong>Operadores para arrays</strong></h2>
<table>
<thead valign="middle">
<tr valign="middle">
<th>Ejemplo</th>
<th>Nombre</th>
<th>Resultado</th>
</tr>
</thead>
<tbody valign="middle">
<tr valign="middle">
<td align="left">$a + $b</td>
<td align="left">Unión</td>
<td align="left">Unión de <var><var>$a</var></var> y <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a == $b</td>
<td align="left">Igualdad</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> i <var><var>$b</var></var> tienen las mismas parejas clave/valor.</td>
</tr>
<tr valign="middle">
<td align="left">$a === $b</td>
<td align="left">Identidad</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> y <var><var>$b</var></var> tienen las mismas parejas clave/valor en el mismo orden y de los mismos tipos.</td>
</tr>
<tr valign="middle">
<td align="left">$a != $b</td>
<td align="left">Desigualdad</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es igual a <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a &lt;&gt; $b</td>
<td align="left">Desigualdad</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es igual a <var><var>$b</var></var>.</td>
</tr>
<tr valign="middle">
<td align="left">$a !== $b</td>
<td align="left">No-identidad</td>
<td align="left"><strong><tt>TRUE</tt></strong> si <var><var>$a</var></var> no es idéntica a <var><var>$b</var></var>.</td>
</tr>
</tbody>
</table>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores para arrays PHP" href="http://www.php.net/manual/es/language.operators.array.php" target="_blank">link</a></em></p>
<h2><strong>Operadores de tipo</strong></h2>
<p><strong>instanceof</strong> se utiliza para determinar si una variable de PHP es un objeto instanciado de una cierta clase</p>
<p><em>Mas información -&gt; <a style="color: #0431b4;" title="Operadores de tipo PHP" href="http://www.php.net/manual/es/language.operators.type.php" target="_blank">link</a></em><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=377&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/06/php-operadores/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Tipos de datos</title>
		<link>http://www.agevaled.com/2011/08/06/php-tipos-de-dato/</link>
		<comments>http://www.agevaled.com/2011/08/06/php-tipos-de-dato/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 22:21:43 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[PHP Tipos]]></category>
		<category><![CDATA[PHP Type]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[Tipo Boolean]]></category>
		<category><![CDATA[Tipo Float]]></category>
		<category><![CDATA[Tipo Integer]]></category>
		<category><![CDATA[Tipo String]]></category>
		<category><![CDATA[Tipos de datos]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=392</guid>
		<description><![CDATA[En la segunda entrega de esta seguidilla de post, vamos a hablar en los tipos primitivos que soporta PHP. Este post sera un resumen hecho de la pagina de PHP. Los tipos de datos se dividen en las siguientes categorías: Escalares, Compuestos, Especiales y Pseudo-Tipos; dentro de cada uno de ellos se encuentran los distintos [...]]]></description>
			<content:encoded><![CDATA[<p>En la segunda entrega de esta seguidilla de post, vamos a hablar en los tipos primitivos que soporta <strong>PHP</strong>. Este post sera un resumen hecho de la pagina de <strong><a title="Pagina oficial PHP" href="http://www.php.net" target="_blank">PHP</a>.</strong> Los tipos de datos se dividen en las siguientes categorías: Escalares, Compuestos, Especiales y Pseudo-Tipos; dentro de cada uno de ellos se encuentran los distintos tipos de datos que usaremos con regularidad. Tengan en cuenta que por lo general <strong>PHP</strong> no necesita que se le especifique a una variable que tipo de dato va a ser, en algunos casos particulares si, pero por lo general no es necesario.</p>
<p>Espero que les sea útil, y cualquier cosa me consultan. Por lo menos a mi me es útil para refrescar conocimientos, aprender pequeños detalles que uno no había prestado atención con anterioridad, en fin&#8230; Empecemos! </p>
<ul>
<li><strong>Tipos Escalares:</strong></li>
<ul>
<li><strong>Boolean</strong> &#8211; <a title="Tipos Boolean" href="http://www.php.net/manual/es/language.types.boolean.php" target="_blank">Link</a></li>
<ul>
<li>El <strong>boolean</strong> expresa un valor de verdad, puede ser <strong>TRUE</strong> o <strong>FALSE</strong></li>
</ul>
<li><strong>Integer</strong> &#8211; <a title="Tipo Integer" href="http://www.php.net/manual/es/language.types.integer.php" target="_blank">Link</a></li>
<ul>
<li>Un <strong>entero</strong> o <strong>integer</strong> es un número del conjunto Z = {&#8230;, -2, -1, 0, 1, 2, &#8230;}. Pueden ser especificados en notación decimal (base 10), hexadecimal (base 16) u octal (base 8).</li>
</ul>
<li><strong>Float</strong> &#8211; <a title="Tipo Float" href="http://www.php.net/manual/es/language.types.float.php" target="_blank">Link</a></li>
<ul>
<li>Los números de punto flotante (también conocidos como &#8220;flotantes&#8221;, &#8220;dobles&#8221; o &#8220;números reales&#8221;) pueden ser especificados usando cualquiera de las siguientes sintaxis:<strong> $a = 1.234;  $b = 1.2e3;  $c = 7E-10;</strong></li>
</ul>
<li><strong><strong>String </strong></strong>- <a title="Tipo String" href="http://www.php.net/manual/es/language.types.string.php" target="_blank">Link</a></li>
<ul>
<li>Un <strong>string </strong>es una serie de caracteres, y por lo tanto, un caracter es lo mismo que un byte. Es decir, hay exactamente 256 diferentes caracteres posibles. Esto implica tambien que <strong>PHP</strong> no tiene soporte nativo para Unicode. Consulte <a href="http://www.php.net/manual/es/function.utf8-encode.php" target="_blank">utf8_encode()</a> y <a href="http://www.php.net/manual/es/function.utf8-decode.php" target="_blank">utf8_decode()</a> para informarse de la funcionalidad básica de Unicode.</li>
<li><strong>Sintaxis</strong>, un string puede especificase de cuatro formas diferente.</li>
<ul>
<li><strong>Comillas Simples</strong></li>
<ul>
<li>echo &#8217;Esto es una cadena sencilla&#8217;;</li>
</ul>
<li><strong>Comillas Dobles</strong> &#8211; Si un string está encerrado entre comillas dobles (&#8220;), <strong>PHP</strong> interpretará más sentencias de escape como caracteres especiales:</li>
<ul>
<li>echo &#8221;Esto es una $test&#8221;;</li>
</ul>
<li><strong>Sintaxis Heredoc</strong> - Una tercera forma de delimitar strings es mediante la sintaxis heredoc: <strong>&lt;&lt;&lt;</strong>. Después de este operador, se deberá ofrecer un identificador y después una nueva línea. A continuación va el propio string, y para cerrar la notación se pone el mismo identificador.</li>
<ul>
<li>$str = &lt;&lt;&lt;EOD<br />
Ejemplo de una cadena<br />
expandida en varias líneas<br />
empleando la sintaxis heredoc.<br />
EOD;</li>
</ul>
<li><strong>Sintaxis Nowdoc</strong> - Nowdocs son a las cadenas con comillas simples lo mismo que Heredoc lo es a las comillas dobles. Una cadena nowdoc se especifica de forma análoga a la heredoc, pero <em>no se realiza ningún análisis</em> dentro de nowdoc. Esta construcción es ideal para embeber codigo PHP o grandes fragmentos de texto sin necesidad de escaparlo. Comparte algunas características comunes con la construcción SGML <em>&lt;![CDATA[ ]]&gt;</em>, donde se declara un fragmento de texto que no debe ser analizado.</li>
<ul>
<li>$str = &lt;&lt;&lt;&#8217;EOD&#8217;<br />
Ejemplo de una cadena<br />
expandida en varias líneas<br />
empleando la sintaxis nowdoc.<br />
EOD;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<ul>
<li><strong>Tipos Compuestos:</strong></li>
<ul>
<li><strong>Array</strong> &#8211; <a title="Tipo Array" href="http://www.php.net/manual/es/language.types.array.php" target="_blank">Link</a>
<ul>
<li>Un <strong>array </strong>(<strong>matriz</strong>) en <strong>PHP</strong> es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia <em>valores</em> con <em>claves</em>. Este tipo es optimizado para varios usos diferentes; puede ser usado como una matriz real, una lista (vector), tabla asociativa (caso particular de implementación de un mapa), diccionario, colección, pila, cola y probablemente más. Ya que los valores de un array pueden ser otros arrays, también es posible crear árboles y arrays multidimensionales.</li>
<li><strong>Sintaxis </strong><strong>Asignación</strong>:</li>
<ul>
<li>$arr = array(&#8220;foo&#8221; =&gt; &#8221;bar&#8221;, 12 =&gt; true);</li>
<li>$arr["foo"] = &#8220;bar&#8221;;</li>
<li>$arr[] = &#8220;bar&#8221;;</li>
</ul>
<li><strong>Sintaxis print</strong>:</li>
<ul>
<li>echo $arr["foo"];</li>
<li>print_r($arr);</li>
<li>var_dump($arr);</li>
</ul>
</ul>
</li>
<li><strong>Object</strong> &#8211; <a title="Tipo Object" href="http://www.php.net/manual/es/language.types.object.php" target="_blank">Link</a></li>
<ul>
<li><strong>Nota:</strong> Este es un tema bastante complejo, por lo tanto sera tratado en otro post, cuando sea creado se agregara el link acá!</li>
<li><strong>Inicialización</strong>:</li>
<ul>
<li>Para crear un nuevo object, utilice la declaración <em>new</em> para instanciar una clase.</li>
</ul>
</ul>
</ul>
</ul>
<ul>
<li><strong>Tipos Especiales:</strong></li>
<ul>
<li><strong>Resource</strong> - <a title="Tipo Resource" href="http://www.php.net/manual/es/language.types.resource.php" target="_blank">Link</a></li>
<ul>
<li>Un valor tipo <strong>resource </strong>es una variable especial, que contiene una referencia a un recurso externo. Los recursos son creados y usados por funciones especiales. Vea el <a href="http://www.php.net/manual/es/resource.php" target="_blank">apéndice</a> para un listado de todas estas funciones y los tipos resource correspondientes.</li>
<li><strong>Conversión a recurso:</strong></li>
<ul>
<li>Dado que las variables resource contienen gestores especiales a archivos abiertos, conexiones con bases de datos, áreas de pintura de imágenes y cosas por el estilo, la conversión a tiporesource carece de sentido</li>
</ul>
<li><strong>Liberación de recursos:</strong></li>
<ul>
<li>Gracias al sistema de conteo de referencias introducido con el Motor Zend de <strong>PHP</strong> <strong>4</strong>, un recurso que ya no es referenciado es detectado automáticamente, y es liberado por el recolector de basura. Por esta razón, rara vez se necesita liberar la memoria manualmente.</li>
</ul>
</ul>
<li><strong>NULL </strong>- <a title="Tipo NULL" href="http://www.php.net/manual/es/language.types.null.php" target="_blank">Link</a></li>
<ul>
<li>El valor especial <strong>NULL</strong> representa una variable sin valor. <strong>NULL </strong>es el unico posible valor de tipo <strong>NULL</strong>.</li>
<li><strong>Una variable es considerada null si:</strong></li>
<ul>
<li>Se le ha asignado la constante <strong>NULL</strong>.</li>
<li>No se ha establecido en un valor todavía.</li>
<li>Se ha <strong>unset()</strong>.</li>
</ul>
</ul>
</ul>
</ul>
<ul>
<li><strong>Y también, por razones de legalidad, existen los pseudo-tipos:</strong></li>
<ul>
<li><strong>Mixed</strong>- <a title="Tipo Mixed" href="http://www.php.net/manual/es/language.pseudo-types.php#language.types.mixed" target="_blank">Link</a></li>
<ul>
<li><strong>Mixed</strong> indica que un parámetro puede aceptar múltiples tipos (pero no necesariamente todos).</li>
</ul>
<li><strong>Number</strong>- <a title="Tipo Number" href="http://www.php.net/manual/es/language.pseudo-types.php#language.types.number" target="_blank">Link</a></li>
<ul>
<li><strong>Number</strong> indica que un parámetro puede ser tanto un integer como un float.</li>
</ul>
<li><strong>Callback</strong>- <a title="Tipo Callback" href="http://www.php.net/manual/es/language.pseudo-types.php#language.types.callback" target="_blank">Link</a></li>
<ul>
<li>Algunas funciones como <a href="http://www.php.net/manual/es/function.call-user-func.php" target="_blank">call_user_func()</a> o <a href="http://www.php.net/manual/es/function.usort.php" target="_blank">usort()</a> pueden aceptar como parámetro funciones de devolución de llamada definidas por el usuario. Las funciones de devolución de llamada no sólo pueden ser funciones simples, sino también pueden ser métodos <a href="http://www.php.net/manual/es/language.types.object.php" target="_blank">object</a>, incluyendo métodos de clases estáticas.</li>
<li>Una función de PHP puede ser pasada por su nombre como un <a href="http://www.php.net/manual/es/language.types.string.php" target="_blank">string</a>. Cualquier función incorporada o definida por el usuario puede ser usada, excepto los constructores de lenguaje como:<a href="http://www.php.net/manual/es/function.array.php" target="_blank">array()</a>, <a href="http://www.php.net/manual/es/function.echo.php">echo()</a>, <a href="http://www.php.net/manual/es/function.empty.php" target="_blank">empty()</a>, <a href="http://www.php.net/manual/es/function.eval.php" target="_blank">eval()</a>, <a href="http://www.php.net/manual/es/function.exit.php" target="_blank">exit()</a>, <a href="http://www.php.net/manual/es/function.isset.php" target="_blank">isset()</a>, <a href="http://www.php.net/manual/es/function.list.php" target="_blank">list()</a>, <a href="http://www.php.net/manual/es/function.print.php" target="_blank">print()</a> o <a href="http://www.php.net/manual/es/function.unset.php" target="_blank">unset()</a>.</li>
<li>Un método de un <a href="http://www.php.net/manual/es/language.types.object.php" target="_blank">object</a> instanciado puede ser pasado como un <a href="http://www.php.net/manual/es/language.types.array.php" target="_blank">array</a> conteniendo un <a href="http://www.php.net/manual/es/language.types.object.php" target="_blank">object</a> en el índice 1 y el nombre del método en el índice 1.</li>
<li>Los métodos de clases estáticas también pueden ser pasdos sin instanciar un <a href="http://www.php.net/manual/es/language.types.object.php" target="_blank">object</a> de la clase pasando en el índice 0 el nombre de la clase en lugar del <a href="http://www.php.net/manual/es/language.types.object.php" target="_blank">object</a>.</li>
<li>Junto a las típicas funciones definidas por el usuario, tambien se puede usar <a href="http://www.php.net/manual/es/function.create-function.php" target="_blank">create_function()</a> para crear una función de devolución de llamada anónima. Desde PHP 5.3.0 también es posible pasar un <a href="http://www.php.net/manual/es/functions.anonymous.php" target="_blank">cierre</a> como un parámetro de devolución.</li>
</ul>
<li><strong>Void</strong>- <a title="Tipo Void" href="http://www.php.net/manual/es/language.pseudo-types.php#language.types.void" target="_blank">Link</a></li>
<ul>
<li><strong>void</strong> como un tipo de variable de retorno significa que el valor de retorno no es útil. <strong>void</strong> en una lista de parámetros significa que la función no acepta ningún parámetro.</li>
<li>$&#8230; en el prototipo de funciones significa and so on. Este nombre de variable se usa cuando una función puede tomar un número infinito de argumentos.</li>
</ul>
</ul>
</ul>
<p>Los tipos de una variable usualmente no son declaradas por el programador, es decidido en tiempo de ejecución por PHP dependiendo del contexto en el que se este utilizando la variable.</p>
<p>Espero que les sea util! y espero sus comentarios al respecto&#8230;<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=392&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/06/php-tipos-de-dato/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Sintaxis Básicas</title>
		<link>http://www.agevaled.com/2011/08/05/php-sintaxis-basicas/</link>
		<comments>http://www.agevaled.com/2011/08/05/php-sintaxis-basicas/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 04:32:17 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[php comentarios]]></category>
		<category><![CDATA[php puntuacion]]></category>
		<category><![CDATA[php tags]]></category>
		<category><![CDATA[puntuacion]]></category>
		<category><![CDATA[sintaxis]]></category>
		<category><![CDATA[sintaxis basicas]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=357</guid>
		<description><![CDATA[Estoy preparándome para dar la certificación de PHP, y a medida q vaya leyendo cosas voy a ir escribiéndolas en el blog, ya sean cosas básicas que están en la guía de estudio, o dudas que me vayan surgiendo, mas que nada para ir compartiendo información. Bueno sin mas vueltas vamos a empezar con el tema que [...]]]></description>
			<content:encoded><![CDATA[<p>Estoy preparándome para dar la <strong>certificación de PHP</strong>, y a medida q vaya leyendo cosas voy a ir escribiéndolas en el blog, ya sean cosas básicas que están en la guía de estudio, o dudas que me vayan surgiendo, mas que nada para ir compartiendo información.</p>
<p>Bueno sin mas vueltas vamos a empezar con el tema que comente el post, <strong>Sintaxis Básicas,</strong> lo cual podemos separarlos en 3 temas principales; <strong>Tags,</strong>  <strong>Puntuación</strong> y <strong>Comentarios.</strong></p>
<p><strong>Tags:</strong></p>
<p>Cuando <strong>PHP</strong> interpreta un archivo, el cual, por lo general contiene extensión <strong>PHP, </strong>busca <strong>tags</strong> de apertura y de fin, el cual se encarga de avisarle al interpretador donde comienza el código y donde finaliza. Esto nos permite tener código que sera &#8220;<em>ignorado</em>&#8221; por el interpretador. Esto nos puede llegar a ser útil para poder incluir código <strong>HTML</strong>, <strong>Javascript</strong>, <strong>CSS</strong>, entre otros a nuestro archivo.</p>
<p>Etiqueta de apertura y de fin en un archivo <strong>PHP:</strong></p>
<blockquote><p>Observe también que si se está incrustando PHP con XML o XHTML necesitará usar las etiquetas &lt;?php ?&gt; para seguir los estándares.</p>
<p>Example #2 Etiquetas de apertura y de fin de bloque de PHP<br />
1. &lt;?php echo &#8216;si se quiere mostrar documentos XHTML o XML, debe hacerse así&#8217;; ?&gt;</p>
<p>2. &lt;script language=&#8221;php&#8221;&gt;<br />
echo &#8216;algunos editores (como FrontPage) no les gusta<br />
las instruciones de proceso&#8217;;<br />
&lt;/script&gt;</p>
<p>3. &lt;? echo &#8216;esta es la forma más simple, una instrución de procesado SGML&#8217;; ?&gt;<br />
&lt;?= expression ?&gt; Esto es una forma corta para &#8220;&lt;? echo expression ?&gt;&#8221;</p>
<p>4. &lt;% echo &#8216;Quizá use de forma opcional etiquetas de estilo ASP&#8217;; %&gt;<br />
&lt;%= $variable; # Esto es una forma corta para &#8220;&lt;% echo . . .&#8221; %&gt;</p></blockquote>
<p><em>Mas información -&gt; <a title="Tags - PHP" href="http://www.php.net/manual/es/language.basic-syntax.phpmode.php" target="_blank">link</a></em></p>
<p><strong>Puntuación:</strong></p>
<p><strong>PHP</strong> requiere que las instrucciones terminen con un <strong>punto y coma</strong> al final de cada declaración.</p>
<pre class="brush: php; gutter: true">echo 'Esto es una prueba';</pre>
<p><em>Mas información -&gt; <a title="Puntuación - PHP" href="http://www.php.net/manual/es/language.basic-syntax.instruction-separation.php" target="_blank">link</a></em></p>
<p><strong>Comentarios:</strong></p>
<p>Los comentarios soportados por PHP, son los siguientes!</p>
<pre class="brush: php; gutter: true">// Esto es un comentario estilo c++ de una sola línea

# Esto es un comentario estilo consola de una sola línea

/* Esto es un comentario multi-línea
       si! otra línea de comentarios */</pre>
<p><em>Mas información -&gt; <a title="Comentarios- PHP" href="http://www.php.net/manual/es/language.basic-syntax.comments.php" target="_blank">link</a></em><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=357&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/08/05/php-sintaxis-basicas/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Zend Framework &#8211; Mail Templates usando Zend_Mail &amp; Zend_View</title>
		<link>http://www.agevaled.com/2011/07/18/mail-template-zend-mail-zend-view/</link>
		<comments>http://www.agevaled.com/2011/07/18/mail-template-zend-mail-zend-view/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 19:01:00 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[template mail]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend mail]]></category>
		<category><![CDATA[zend template mail]]></category>
		<category><![CDATA[zend view]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=339</guid>
		<description><![CDATA[Me pareció útil compartir esta función con el resto de los programadores, esta función no es de mi autoría, el creador es Jonathan Street, yo solamente la arregle un poco ya que tenia un par de errores, le agregue una función para que se le pueda pasar los parámetros que uno quiere, y alguna que otra cosita mas. Esta función es muy útil para enviar templates [...]]]></description>
			<content:encoded><![CDATA[<p>Me pareció útil compartir esta función con el resto de los programadores, esta función no es de mi autoría, el creador es <strong><a title="Email templates using Zend_Mail and Zend_View" href="http://jonathanstreet.com/blog/email-templates-using-zend-framework/" target="_blank">Jonathan Street</a></strong>, yo solamente la arregle un poco ya que tenia un par de errores, le agregue una función para que se le pueda pasar los parámetros que uno quiere, y alguna que otra cosita mas.</p>
<p>Esta función es muy útil para enviar <strong>templates</strong> de <strong>mails</strong> en<strong> Zend Framework</strong>, utilizando <strong>Zend</strong> <strong>View</strong> y <strong>Zend</strong> <strong>Mail</strong>, pueden ser archivos con <strong>texto</strong> <strong>plano</strong>, archivos <strong>HTML</strong>, o archivos con <strong>HTML</strong> y <strong>PHP</strong>! Tan solo tienen q hacer lo siguiente..</p>
<p>1) Tienen que agregar al archivo de configuración las siguientes lineas:</p>
<pre class="brush: php; gutter: true">settings.email = "service@sparkboxtoys.com"
settings.template.dir = APPLICATION_PATH "/theme/mail_template/"</pre>
<p>en &#8220;settings.template.dir&#8221; pongan el directorio donde estarán puestos los mail&#8217;s template.</p>
<p>La extensión de los mismos pueden ser:</p>
<ul>
<li><strong>TXT</strong> si van a ser textos planos.</li>
<li><strong>PHTML</strong> si van a ser mails con html y/o php (para enviarles paramentos)</li>
</ul>
<p>2) Dentro de la carpeta <strong>library</strong> crear los directorios y archivo correspondientes (tener en cuenta las mayúsculas)</p>
<p>/App/Mail/Template.php</p>
<p>3) Dentro del archivo Template.php copiar el siguiente código:</p>
<pre class="brush: php; gutter: true">/**
 * A template based email system
 *
 * Supports the sending of multipart txt/html emails based on templates
 *
 */
class App_Mail_Template
{

    /**
     * Variable registry for template values
     */
    protected $templateVariables = array();

    /**
     * Template name
     */
    protected $templateName;

    /**
     * Zend_Mail instance
     */
    protected $zendMail;

    /**
     * Email recipient
     */
    protected $recipient;

    /**
     * Email subject
     */
    protected $subject;

    /**
     * __construct
     *
     * Set default options
     *
     */
    public function __construct ()
    {
        $this-&gt;zendMail = new Zend_Mail();
    }

    /**
     * Set variables for use in the templates
     *
     * Magic function stores the value put in any variable in this class for
     * use later when creating the template
     *
     * @param string $name  The name of the variable to be stored
     * @param mixed  $value The value of the variable
     */
    public function __set ($name, $value)
    {
        $this-&gt;templateVariables[$name] = $value;
    }

    public function setVariables($data)
    {
        foreach($data as $key =&gt; $value){
            $this-&gt;__set($key,$value);
        }
    }

    /**
     * Set the subject to use
     *
     * @param string $subject Subject text
     */
    public function setSubject ($subject)
    {
        $this-&gt;subject = $subject;
    }

    /**
     * Set the template file to use
     *
     * @param string $filename Template filename
     */
    public function setTemplate ($filename)
    {
        $this-&gt;templateName = $filename;
    }

    /**
     * Set the recipient address for the email message
     *
     * @param string $email Email address
     */
    public function setRecipient ($email)
    {
        $this-&gt;recipient = $email;
    }

    /**
     * Send the constructed email
     *
     * @todo Add from name
     */
    public function send ()
    {
        /*
         * Get data from config
         * - From address
         * - Directory for template files
         */
        $config = Zend_Registry::get('config');
        $templateDir = $config-&gt;settings-&gt;template-&gt;dir;
        $fromAddr = $config-&gt;settings-&gt;email;

        //Build template
        //Check that template file exists before using
        $viewConfig = array('basePath' =&gt; $templateDir);
        $subjectView = new Zend_View($viewConfig);

        foreach ($this-&gt;templateVariables as $key =&gt; $value)
        {
            $subjectView-&gt;{$key} = $value;
        }

        $textView = new Zend_View($viewConfig);
        foreach ($this-&gt;templateVariables as $key =&gt; $value)
        {
            $textView-&gt;{$key} = $value;
        }
        try {
            $text = $textView-&gt;render($this-&gt;templateName . '.txt');
        } catch (Zend_View_Exception $e) {
            $text = false;
        }

        $htmlView = new Zend_View($viewConfig);
        foreach ($this-&gt;templateVariables as $key =&gt; $value)
        {
            $htmlView-&gt;{$key} = $value;
        }

        try {
            $html = $htmlView-&gt;render($this-&gt;templateName . '.phtml');
        } catch (Zend_View_Exception $e) {
            $html = false;
        }

        //var_dump($subject);
        //var_dump($text);
        //var_dump($html);

        //Pass variables to Zend_Mail
        $mail = new Zend_Mail();
        //var_dump($fromAddr);
        $mail-&gt;setFrom($fromAddr);
        //var_dump($this-&gt;recipient);
        $mail-&gt;addTo($this-&gt;recipient);

        $mail-&gt;setSubject($this-&gt;subject);

        if ($html !== false) {
            $mail-&gt;setBodyText($text);
        }

        if ($html !== false) {
            $mail-&gt;setBodyHtml($html);
        }

        //Send email
        $mail-&gt;send();
    }

}</pre>
<p>4) Luego en el archivo en el cual vas a enviar el mail copiar el siguiente código:</p>
<pre class="brush: php; gutter: true">$emailObj = new App_Mail_Template;
$emailObj-&gt;setRecipient('test@avlog.com.ar');
$emailObj-&gt;setTemplate('welcome');
$dataArray = array(
    'name' =&gt; 'Pablo',
    'mail' =&gt; 'test@avlog.com.ar',
);
$emailObj-&gt;setSubject('Welcome to AgeValed!');
$emailObj-&gt;setVariables($dataArray);
$emailObj-&gt;send();</pre>
<p>Con esto estamos enviando un mail del archivo welcome.phtml q adentro tiene los parámetros $this-&gt;name y $this-&gt;mail</p>
<p>Espero que les sea útil, cualquier consulta no duden en escribirme!<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=339&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/07/18/mail-template-zend-mail-zend-view/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZendCon 2010 Podcast &#8211; Introducción Zend Framework 2.0</title>
		<link>http://www.agevaled.com/2011/01/26/zendcon-2010-podcast-introduccion-zend-framework-2-0/</link>
		<comments>http://www.agevaled.com/2011/01/26/zendcon-2010-podcast-introduccion-zend-framework-2-0/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 16:33:24 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Novedades]]></category>
		<category><![CDATA[introduccion zend framework]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend framework 2.0]]></category>
		<category><![CDATA[zendcon 2010]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=300</guid>
		<description><![CDATA[Acá les dejo una introducción sobre Zend Framework 2.0, una charla en ZendCom 2010 Podcast, los oradores de la charla fueron Ralph Schindler (Penn) y Matthew Weier O&#8217;Phinney (Teller). Presentación: Audio: Las sesiones ZendCon se distribuye bajo una licencia creative commons Attribution-Noncommercial-No Derivative Works 3.0, por favor cumple con esta licencia y los derechos de [...]]]></description>
			<content:encoded><![CDATA[<p>Acá les dejo una introducción sobre Zend Framework 2.0, una charla en ZendCom 2010 Podcast, los oradores de la charla fueron<strong> Ralph Schindler</strong> (Penn) y <strong>Matthew Weier O&#8217;Phinney</strong> (Teller).</p>
<p><strong>Presentación:</strong></p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/5673722" width="400" height="337" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p><strong>Audio:</strong></p>
<p><!-- Begin MP3 Player for Wordpress Version "1.2.4"--></p>
<div align="left" id="playerMini1">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="73" height="30"><param name="wmode" value="transparent"><param name="movie" value="http://www.agevaled.com/wp-content/plugins/mp3-player-plugin-for-wordpress/player_options/playerMini.swf" /><param name="FlashVars" value="autoPlay=no&amp;soundPath=http://www.eschrade.com/media/podcasts/Introducing%20Zend%20Framework%202.mp3?var1=mp3/no&amp;overColor=#1FBF26&amp;playerSkin=3"/><!--[if !IE]> <--><br />
<script type="text/javascript" src="http://www.agevaled.com/wp-content/plugins/mp3-player-plugin-for-wordpress/swfobject.js"></script></p>
<div id="flashPlayerplayerMini1">
<img src="http://www.agevaled.com/wp-content/plugins/mp3-player-plugin-for-wordpress/img/noflash.gif" alt="Flash required " />
</div>
<p><script type="text/javascript">
   var so = new SWFObject("http://www.agevaled.com/wp-content/plugins/mp3-player-plugin-for-wordpress/player_options/playerMini.swf", "mymovie", "73", "30", "7", "#FFFFFF");  
   so.addParam("wmode", "transparent")
   so.addVariable("autoPlay","no")
   so.addVariable("overColor","#1FBF26")
   so.addVariable("playerSkin","3")
   so.addVariable("soundPath","http://www.eschrade.com/media/podcasts/Introducing%20Zend%20Framework%202.mp3?var1=mp3/no")
   so.write("flashPlayerplayerMini1");
</script><br />
<!--> <![endif]--><br />
</object></div>
<p><!-- End MP3 Player for Wordpress Version "1.2.4"--></p>
<p>Las sesiones ZendCon se distribuye bajo una licencia creative commons Attribution-Noncommercial-No Derivative Works 3.0, por favor cumple con esta licencia y los derechos de nuestros autores.</p>
<p><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/us/80x15.png" alt="creativecommons" /></p>
<p>Espero que les resulte interesante! saludos!</p>
<p>Referencia: <a href="http://devzone.zend.com/article/12955-ZendCon-2010-Podcast---Introducing-Zend-Framework-2.0?goback=.gde_728287_news_340510423"> DevZone Zend </a><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=300&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/01/26/zendcon-2010-podcast-introduccion-zend-framework-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.eschrade.com/media/podcasts/Introducing%20Zend%20Framework%202.mp3" length="51765926" type="audio/mpeg" />
		</item>
		<item>
		<title>Listado de Provincia y Localidades Argentinas &#8211; Base de Datos</title>
		<link>http://www.agevaled.com/2011/01/09/listado-de-provincia-y-localidades-argentinas-base-de-dato/</link>
		<comments>http://www.agevaled.com/2011/01/09/listado-de-provincia-y-localidades-argentinas-base-de-dato/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 04:05:58 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[AVLog]]></category>
		<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[argentina]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[base de datos argentina]]></category>
		<category><![CDATA[base de datos localidades]]></category>
		<category><![CDATA[base de datos provincias]]></category>
		<category><![CDATA[listado de las provincias y localidades argentinas]]></category>
		<category><![CDATA[listado de localidades]]></category>
		<category><![CDATA[listaod de provincias]]></category>
		<category><![CDATA[localidades argentinas]]></category>
		<category><![CDATA[provincias argentinas]]></category>
		<category><![CDATA[provincias y localidades]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=273</guid>
		<description><![CDATA[Les dejo un archivo con un listado de las provincias y localidades argentinas, listo para insertar en nuestra base de datos, la cual cuenta con 2 tablas, una es un listado de las provincias con su respectivo ID y la segunda es un listado de las localidades con su respectiva ID y con el ID [...]]]></description>
			<content:encoded><![CDATA[<p>Les dejo un archivo con un <strong>listado de las provincias y localidades argentinas</strong>, listo para insertar en nuestra base de datos, la cual cuenta con 2 tablas, una es un listado de las <strong>provincias </strong>con su respectivo ID y la segunda es un listado de las <strong>localidades </strong>con su respectiva ID y con el ID de la provincia a la cual pertenece.</p>
<p>Espero que les sirva para su proyecto o para cualquier cosa que lo lleguen a utilizar.</p>
<p><strong>Link de Descarga:</strong></p>
<p><a href="http://www.agevaled.com/wp-content/uploads/provincias y localidades.txt"><img class="aligncenter size-full wp-image-275" title="icono_descargar-150x150" src="http://www.agevaled.com/wp-content/uploads/2011/01/icono_descargar-150x150.png" alt="" width="150" height="150" /></a><img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=273&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/01/09/listado-de-provincia-y-localidades-argentinas-base-de-dato/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android SDK, Solucion: JDK not found, en la instalación.</title>
		<link>http://www.agevaled.com/2011/01/09/android-sdk-solucion/</link>
		<comments>http://www.agevaled.com/2011/01/09/android-sdk-solucion/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 03:37:51 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android SDK R08]]></category>
		<category><![CDATA[error android]]></category>
		<category><![CDATA[instalar android]]></category>
		<category><![CDATA[install andrpod]]></category>
		<category><![CDATA[java SE development kit]]></category>
		<category><![CDATA[jDK]]></category>
		<category><![CDATA[JDK not found]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=265</guid>
		<description><![CDATA[Queriendo instalar Android SDK R08 (descargar), sobre Windows 7 64 Bit y teniendo instalado en la PC JDK 6 64bit, el instalador me tiro el siguiente mensaje: Dando vueltas por Internet encontré la siguiente discusión, como siempre stackoverflow, nos da una mano en todo! Siguiendo unos simples pasos podemos solucionarlo: Correr regedit. Encontrar [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development [...]]]></description>
			<content:encoded><![CDATA[<p>Queriendo instalar <strong>Android SDK R08</strong> (<a title="Android SDK" href="http://developer.android.com/sdk/index.html" target="_blank">descargar</a>), sobre <em>Windows 7 64 Bit</em> y teniendo instalado en la PC<em> JDK 6 64bit</em>, el instalador me tiro el siguiente mensaje:</p>
<p><a href="http://www.agevaled.com/wp-content/uploads/2011/01/jdknotfound.jpg"><img class="aligncenter size-full wp-image-267" title="jdknotfound" src="http://www.agevaled.com/wp-content/uploads/2011/01/jdknotfound.jpg" alt="" width="496" height="360" /></a></p>
<p>Dando vueltas por Internet encontré la siguiente <a title="Android SDK install problem" href="http://stackoverflow.com/questions/4394584/android-sdk-install-problem" target="_self">discusión</a>, como siempre <em>stackoverflow</em>, nos da una mano en todo!</p>
<p>Siguiendo unos simples pasos podemos solucionarlo:</p>
<ol>
<li>Correr regedit.</li>
<li>Encontrar [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]</li>
<li>Click derecho sobre &#8220;Java Development Kit&#8221;, click Export, y guardar el archivo en el desktop.</li>
<li>Click derecho y click en edit</li>
<li>Agregar Wow6432Node al path por cada key en el archivo, ver ejemplo a continuación, y guardar.</li>
<li>Volver al regedit, click en File-&gt;Import y seleccionamos el archivo.</li>
<li>Intentar instalar nuevamente SDK.</li>
</ol>
<p>Antes:</p>
<blockquote><p>Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]<br />
&#8220;CurrentVersion&#8221;=&#8221;1.6&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_23&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6.0_21]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_21&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6.0_23]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_23&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p></blockquote>
<p>Despues:</p>
<blockquote><p>Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit]<br />
&#8220;CurrentVersion&#8221;=&#8221;1.6&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit\1.6]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_23&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit\1.6.0_21]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_21&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Development Kit\1.6.0_23]<br />
&#8220;JavaHome&#8221;=&#8221;C:\\Program Files\\Java\\jdk1.6.0_23&#8243;<br />
&#8220;MicroVersion&#8221;=&#8221;0&#8243;</p></blockquote>
<p>Y listo ya podemos continuar! Espero q les sea util.<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=265&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2011/01/09/android-sdk-solucion/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Introducción a Apache Cassandra</title>
		<link>http://www.agevaled.com/2010/12/31/introduccion-a-apache-cassandra/</link>
		<comments>http://www.agevaled.com/2010/12/31/introduccion-a-apache-cassandra/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 03:58:13 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[apache cassandra]]></category>
		<category><![CDATA[base de dato facebook]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandra español]]></category>
		<category><![CDATA[facebok]]></category>
		<category><![CDATA[Introducción a Apache Cassandra]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=253</guid>
		<description><![CDATA[Hace mucho que no escribo, ya que estoy con bastantes cosas, pero ahora que estamos llegando a fin de año vamos a escribir una ultima nota! Historia: Cassandra es una base de datos NoSQL, hoy en día es un proyecto de Apache. Cassandra fue desarrollado por Facebook (la versión original fue escrita por un ex [...]]]></description>
			<content:encoded><![CDATA[<p>Hace mucho que no escribo, ya que estoy con bastantes cosas, pero ahora que estamos llegando a fin de año vamos a escribir una ultima nota!</p>
<h2><strong>Historia:</strong></h2>
<p><strong>Cassandra </strong>es una base de datos <a title="NoSQL Wikipedia" href="http://es.wikipedia.org/wiki/NoSQL" target="_blank">NoSQL</a>, hoy en día es un proyecto de Apache. <strong>Cassandra </strong>fue desarrollado por Facebook (la versión original fue escrita por un ex empleado de Amazon y otro de Microsoft), en el 2008 fue liberado como un proyecto open source en <a title="Google Code Wikipedia" href="http://es.wikipedia.org/wiki/Google_Code" target="_blank">Google code</a>, en el 2009 se convirtió en un proyecto &#8220;<a title="Apache Incubator wikipedia" href="http://en.wikipedia.org/wiki/Apache_Incubator" target="_blank">Apache Incubator</a>&#8220;, y finalmente en el 2010 se convirtió en un proyecto TOP-LEVEL.</p>
<h2><strong><strong>Información:</strong></strong></h2>
<p>Las la información en las bases de datos relacionales, se almacenan en forma de filas, pero en <strong>Cassandra </strong>la información se almacena en columnas con pares key-value, <em>key-map </em>para múltiples valores, que se agrupan en <em>column families</em> (familia de columnas). Las<em> column families</em> son fijas cunado una base de datos <strong>Cassandra </strong>es creado, pero las <em>columns </em>se pueden agregar a la <em>column families</em> en cualquier momento. Por otra parte, las <em>columns </em>se agregan solo a las <em>keys </em>especificas, por lo tanto diferentes <em>keys </em>pueden tener diferentes números de <em>columns </em>en cualquier <em>columns family</em>.</p>
<p><strong>Cassandra </strong>puede manejar varios <em>terabytes </em>de datos si lo necesita y puede, fácilmente, manejar millones de files, incluso en un <em>cluster </em>pequeño. <strong>Cassandra </strong>puede hacer alrededor de 20k de <em>insert </em>por segundos.</p>
<p>La rendimiento de <strong>Cassandra </strong>es muy alta, y mantener ese rendimiento alto mayormente depende del <em>hardward</em>, la configuración y el numero de nodos en nuestro <em>cluster</em>.</p>
<h2><strong>Terminologia de Cassandra:</strong></h2>
<p><strong>Column:</strong> Es la unidad mas básica de la representación en el modelo de datos <strong>Cassandra</strong>. Una <em>column </em>es un triplete de un <em>key </em>(un nombre) un <em>value </em>(un valor) y un <em>timestamp</em>. Los valores son todos suministrados por el cliente. El tipo de dato del <em>key </em>y el <em>value </em>son Matrices de <em>bytes </em>de Java, el tipo de dato del <em>timestamp </em>es un <em>long</em> <em>primitive</em>. Las <em>column </em>son inmutables para evitar problemas de <em>multithreading</em>. Las <em>columns </em>se organizan dentro de las <em>columns families</em>. Las <em>columns </em>se ordenan por un tipo, que pueden ser uno de los siguientes:</p>
<ul>
<li><em>AsciiType</em></li>
<li><em>BytesType</em></li>
<li><em>LexicalUUIDType</em></li>
<li><em>LongType</em></li>
<li><em>TimeUUIDType</em></li>
<li><em>UTF8Type</em></li>
</ul>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Modelo de datos:</span></p>
<blockquote>
<ol>
<li>Keyspace -&gt; Column Family</li>
<li>Column Family -&gt; Column Family Row</li>
<li>Column Family Row -&gt; Columns</li>
<li>Column -&gt; Data value</li>
</ol>
</blockquote>
<p><strong>Super Column:</strong> Es una <em>column </em>cuyos <em>values </em>no son <em>strings</em>, sino una o mas <em>columns</em>, que en este contexto se llamaran <em>subcolumns</em>. Las <em>subcolumns</em> están ordenadas, y el numero de columnas que se puede definir es ilimitada. las Super <em>columns</em>, a diferencias de las <em>columns</em>, no tienen un <em>timestamp </em>definido. No son recursivas, es decir, solamente tienen un nivel de profanidad.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Modelo de datos:</span></p>
<blockquote>
<ol>
<li>Keyspace -&gt; Super Column Family</li>
<li>Super Column Family -&gt; Super Column Family Row</li>
<li>Super Column Family Row -&gt; Super Columns</li>
<li>Super Column -&gt; Columns</li>
<li>Column -&gt; Data value</li>
</ol>
</blockquote>
<p><strong>Column Family:</strong> Es mas o menos análogo a una tabla en un modelo relacional. Se trata de un contenedor para una colección ordenada de <em>columns</em>. Debido a que cada <em>column family</em> se almacena en un archivo separado, asegúrese de definir las <em>columns </em>que sea probable que acceda juntas en la misma<em> column family</em>. Tenemos que definir las<em> column family</em> de la aplicación en el archivo de configuración.</p>
<p><strong>Keyspace:</strong> Es el contenedor para un <em>column family</em>. Es mas o menos análogo a una base de datos en un modelo relacional, usado en <strong>Cassandra </strong>para separar aplicaciones. Cuando una base de datos relacional es una colección de tablas, un <em>keyspace </em>es una colección ordenada de<em> columns family</em>. Tenemos que definir l<em>os keyspace</em> de la aplicación en el archivo de configuración o usando métodos definidos en la <em>API</em>.</p>
<h2><strong>Caracteristicas de Cassandra:</strong></h2>
<p><strong>Fault Tolerant</strong> (Tolerancia a los fallos)<strong>:</strong> Los datos se replican automáticamente a varios nodos. Perder un nodo no  causa la baja del <em>cluster</em>.</p>
<p><strong>Flexible Schema </strong>(Flexible esquema)<strong>:</strong> Estamos hablando en términos de las <em>columns</em>, <em>super columns </em>y <em>column families </em>en lugar de filas y tablas. Modelo de datos <em>BigTable</em>.</p>
<p><strong>Symmetric </strong>(Simétrica)<strong>:</strong> No hay único punto de fallo, todos los nodos en el <em>cluster </em>son idéntica y no hay cuellos de botella.</p>
<p><strong>Scalable </strong>(Escalable)<strong>:</strong> Lineal con la adición de nuevas máquinas, sin tiempo de inactividad o interrupción de las aplicaciones. Leer y escribir aumentar el rendimiento de forma lineal a medida que las maquinas se van agregando.</p>
<p><strong>Support for Large Data</strong> (Apoyo a grandes de datos)<strong>:</strong> La capacidad para escalar a cientos de gigabytes de datos.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="474" height="379" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://disruptivemedia.23video.com/v.swf" /><embed type="application/x-shockwave-flash" width="474" height="379" src="http://disruptivemedia.23video.com/v.swf"></embed></object></p>
<p style="text-align: center;">
<h2 style="text-align: left;">Links de interés:</h2>
<ul>
<li><a title="Apache Cassandra" href="http://cassandra.apache.org/">Pagina oficial Apache Cassandra</a></li>
<li><a title="Apache Cassandra Wikipedia" href="http://en.wikipedia.org/wiki/Apache_Cassandra" target="_blank">Apache Cassandra Wikipedia</a></li>
<li><a title="Getting Started Cassandra" href="http://wiki.apache.org/cassandra/GettingStarted" target="_blank">Getting Started Cassandra</a></li>
<li><a title="Articles and Presentations" href="http://wiki.apache.org/cassandra/ArticlesAndPresentations" target="_blank">Articles and Presentations</a></li>
</ul>
<p>Cualquier cosa que quiera aclarar sobre el articulo, preguntar, corregir o lo que tengan ganas comenten.</p>
<p>Saludos<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=253&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2010/12/31/introduccion-a-apache-cassandra/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Buenas prácticas de desarrollo PHP</title>
		<link>http://www.agevaled.com/2010/09/23/buenas-practicas-de-desarrollo-php/</link>
		<comments>http://www.agevaled.com/2010/09/23/buenas-practicas-de-desarrollo-php/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 14:08:41 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Buenas Prácticas de Desarrollo de PHP]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[desarrollo php]]></category>
		<category><![CDATA[presentación]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=235</guid>
		<description><![CDATA[Hoy les traigo una presentación muy buena y muy útil para los desarrolladores PHP, muchos de nosotros, en el cual me incluyo por supuesto, tenemos una forma particular de programar. Estos datos son muy útiles tanto para la programación en grupo, como cuando uno esta programando solo, tendrás información mas detallada, mas ordenada y bien [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy les traigo una presentación muy buena y muy útil para los desarrolladores<strong> PHP</strong>, muchos de nosotros, en el cual me incluyo por supuesto, tenemos una forma particular de programar.</p>
<p style="text-align: center;">
<div id="ipaper387099" class="simpler-ipaper-embed"></div>
<p><script type="text/javascript">
iPaper_embed('387099', 'ephjdleyj4430', '600', '450');
</script></p>
<p style="text-align: center;">
<p>Estos datos son muy útiles tanto para la programación en grupo, como cuando uno esta programando solo, tendrás información mas detallada, mas ordenada y bien separada para poder reutilizar código en un futuro o para entender lo que se hizo.</p>
<p>también les dejo un link muy útil <a title="PHP Codign Standar" href="http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+%28draft%29" target="_blank">estándares de programación Zend (Zend Wiki)</a> o <a title="PHP Codign Standar" href="http://framework.zend.com/manual/en/coding-standard.html" target="_blank">estándares de programación Zend (Zend Manual)</a> .</p>
<p>Espero que les sea útil para sus proyectos actuales como futuros.<img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=235&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2010/09/23/buenas-practicas-de-desarrollo-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Concatenar Archivos PDF en PHP y .NET con PDF Toolkit</title>
		<link>http://www.agevaled.com/2010/09/10/concatenar-archivos-pdf-en-php-y-net-con-pdf-toolkit/</link>
		<comments>http://www.agevaled.com/2010/09/10/concatenar-archivos-pdf-en-php-y-net-con-pdf-toolkit/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 02:47:21 +0000</pubDate>
		<dc:creator>AgeValed</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[concatenar]]></category>
		<category><![CDATA[concatenar PDF]]></category>
		<category><![CDATA[concatenar PDF .NET]]></category>
		<category><![CDATA[concatenar PDF PHP]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PDF Toolit]]></category>

		<guid isPermaLink="false">http://www.agevaled.com/?p=175</guid>
		<description><![CDATA[Hoy les traigo una herramienta muy útil para concatenar PDF´s PDF Toolkit. Y de paso les paso un código de ejemplo en PHP y .NET C#, dicha herramienta, no solo sirve para concatenar ya les contare un poco mas de las cosas que se pueden hacer, muy útil para manipulación de archivos PDF Ejemplo en [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy les traigo una herramienta muy útil para concatenar <strong>PDF</strong>´s <strong>PDF Toolki</strong>t. Y de paso les paso un código de ejemplo en<strong> PHP</strong> y <strong>.NET C#</strong>, dicha herramienta, no solo sirve para concatenar ya les contare un poco mas de las cosas que se pueden hacer, muy útil para manipulación de archivos <strong>PDF</strong></p>
<p>Ejemplo en <strong>PHP, </strong>el mas lindo va primero (si si el corazón tira para un lado) <img src='http://www.agevaled.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ejemplo en <strong>.NET C#</strong></p>
<pre class="brush: vbnet; gutter: true">
String patchServer = Server.MapPath("pdf/pdftk.exe");

 Process myProcess = Process.Start(patchServer, "\""+Server.MapPath("pdf/A.pdf") + "\" \"" + Server.MapPath("pdf/B.pdf")+" cat output  \"" + Server.MapPath("pdf/AB.pdf") + "\"  dont_ask");
 if (myProcess != null)
 {
      myProcess.StartInfo.CreateNoWindow = false;
      myProcess.EnableRaisingEvents = true;
      while (!myProcess.HasExited) { }
      Response.Redirect("pdf/AB.pdf");
 }
</pre>
<p>En el código lo que estamos haciendo es decirle que tome el archivo A.pdf y el archivo B.pdf, lo concatene y lo guarde en el archivo AB.pdf, el comando <em>dont_ask</em> sirve para decirle que si el archivo AB.pdf existe lo sobrescribe. La linea de código <em>while (!myProcess.HasExited) { }</em> ,en <strong>.NET</strong>, la utilizo para esperar que el proceso termine y luego redirige para que lo abra.</p>
<p>Noten que es mucho mas lindo <strong>PHP</strong> que <strong>.NET</strong> <img src='http://www.agevaled.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  jeje</p>
<p>Tengan en cuenta que <strong>PDF Toolkit</strong>, no es solamente para concatenar, sino también se pueden utilizar para:</p>
<ul>
<li>Separar paginas del <strong>PDF </strong>en un nuevo documento.</li>
<li>Rotar paginas del <strong>PDF </strong>o un <strong>PDF </strong>entero.</li>
<li>Encrpitar y desencriptar un <strong>PDF</strong>.</li>
<li>Llenar formularios <strong>PDF </strong>con datos FDF o datos XFDF.</li>
<li>Poner un fondo al <strong>PDF</strong>.</li>
<li>entre otras cosas.</li>
</ul>
<p>En la pagina de <a title="PDF Toolkit" href="http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/" target="_blank">PDF Toolkit</a> pueden encontrar <a title="PDF Toolkit Ejemplos" href="http://www.pdflabs.com/docs/pdftk-cli-examples/" target="_blank">ejemplos </a>de como utilizarlo con todos los comandos.</p>
<p><a title="PDF Toolkit" href="http://www.pdflabs.com/docs/install-pdftk/" target="_blank">Link para la descarga!</a> (existe versiones para Linux, Windows y MAC)<a title="PDF Toolkit" href="http://www.pdflabs.com/docs/install-pdftk/" target="_blank"><br />
</a></p>
<p>Espero que les sea útil, cualquier cosa no dejen de preguntarme! <img src='http://www.agevaled.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <img src="http://www.agevaled.com/?ak_action=api_record_view&#038;id=175&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agevaled.com/2010/09/10/concatenar-archivos-pdf-en-php-y-net-con-pdf-toolkit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

