<?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>TolerantX&#039;s Blog &#187; Internet</title>
	<atom:link href="http://tolerantx.com/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolerantx.com</link>
	<description>Y sin embargo se mueve</description>
	<lastBuildDate>Sat, 21 Aug 2010 04:11:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Google lanza plugin que soporta video y voz en Gmail sobre Linux</title>
		<link>http://tolerantx.com/2010/08/20/google-lanza-plugin-que-soporta-video-y-voz-en-gmail-sobre-linux/</link>
		<comments>http://tolerantx.com/2010/08/20/google-lanza-plugin-que-soporta-video-y-voz-en-gmail-sobre-linux/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 04:07:05 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=354</guid>
		<description><![CDATA[Google está lanzando el plugin que permite el uso de video y voz en el chat de GMail, ésto que ya era soportado sobre otras plataformas como Windows anteriormente. Lamentablemente aún solo está disponibles para sistemas Linux basados en Debian, sin embargo se pretende también tener soporte para otros como los basados en rpm. En [...]]]></description>
			<content:encoded><![CDATA[<p>Google está lanzando el plugin que permite el uso de video y voz en el chat de GMail, ésto que ya era soportado sobre otras plataformas como Windows anteriormente.</p>
<p>Lamentablemente aún solo está disponibles para sistemas Linux basados en Debian, sin embargo se pretende también tener soporte para otros como los basados en rpm.</p>
<p><a href="http://www.google.com/chat/video" target="_blank">En éste enlace está disponible la descarga del plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/08/20/google-lanza-plugin-que-soporta-video-y-voz-en-gmail-sobre-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checkbox: Seleccionar, deseleccionar todos</title>
		<link>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/</link>
		<comments>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 04:16:34 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[funcion]]></category>
		<category><![CDATA[seleccionar todos]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=332</guid>
		<description><![CDATA[Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox. Tenemos 2 funciones javascript, [...]]]></description>
			<content:encoded><![CDATA[<p>Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox.</p>
<p>Tenemos 2 funciones javascript, una que se encarga de seleccionar todos los &#8220;checkbox&#8221; y la otra función que se encarga de verificar si permanece seleccionado nuestro checkbox que selecciona &#8220;todos&#8221;:<span id="more-332"></span></p>
<pre  name="code"  class="javascript">function checkElements(form, elementAll, elementToCheck) {
    var form, checkbox = form.elements[elementToCheck];
    totalElements = checkbox.length;
    checkboxAll = form.elements[elementAll];

    for(var n=0; n&lt;totalElements; n++) {
        checkbox[n].checked = checkboxAll.checked;
    }
}

function checkElementAll(form, elementAll, elementCheck) {
    var form, counter=0;
    checkbox = form.elements[elementCheck];
    checkboxAll = form.elements[elementAll];
    totalElements = checkbox.length;

    for(var n=0; n&lt;totalElements; n++) {
        if (checkbox[n].checked == true) counter++;
    }
    if (totalElements &gt; counter)
        checkboxAll.checked = false;
    else
        checkboxAll.checked = true;
}
</pre>
<p>Y un ejemplo de formulario sería algo como lo siguiente:</p>
<pre name="code" class="xml">&lt;form name="nombreFormulario" method="post" action=""&gt;
    &lt;p&gt;&lt;input type="checkbox" name="selecciona_todos" onclick="checkElements(this.form, this.name, 'frutas[]')" /&gt;&lt;label&gt;Todos&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="manzana" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Manzana&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="mango" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Mango&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="pera" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Pera&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="sandia" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Sandia&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="naranja" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Naranja&lt;/label&gt;&lt;/p&gt;
&lt;/form&gt;</pre>
<p> <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿¿Reactive su cuenta de GMail??</title>
		<link>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/</link>
		<comments>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 13:15:07 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Phishing]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=304</guid>
		<description><![CDATA[¡¡Ave María Purísima!! Ja! el día de ayer me llegó el siguiente correo que disque pára &#8220;reactivar mi cuenta de GMail&#8221;, copio y pego solo edité la dirección de correo INFORMACIÓN IMPORTANTE micorreo@gmail.com Debido a cambios recientes en su cuenta de GMail (contraseña e información personal), por seguridad usted debe confirmarla. Si no confirma su [...]]]></description>
			<content:encoded><![CDATA[<p>¡¡Ave María Purísima!!</p>
<p>Ja! el día de ayer me llegó el siguiente correo que disque pára &#8220;reactivar mi cuenta de GMail&#8221;, copio y pego solo edité la dirección de correo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<blockquote><p><strong>INFORMACIÓN IMPORTANTE</strong></p>
<p><strong><a href="mailto:tolerantx@gmail.com" target="_blank">micorreo@gmail.com</a></strong></p>
<p>Debido a cambios recientes en su cuenta de GMail (contraseña e  información personal), por seguridad usted debe confirmarla. Si no  confirma su cuenta es posible que el Equipo de GMail cierre su cuenta  por seguridad. Recuerde tiene un plazo de 3 dias para realizarlo. Para  confirmar porfavor ingrese al siguiente link:</p>
<p><strong> http://gmail.com/accounts&amp;idinfo=011b1y121b22y121232KJGASEWWA&amp;IDCLASS=nulled&amp;acctype=gmail</strong></p>
<p>Si tienes dudas ingrese a nuestro sistema de ayuda online, clickeando  en la parte superior de la página principal.<br />
&#8212;&#8212;&#8212;&#8212;<br />
El equipo de GMail<span id="more-304"></span></p></blockquote>
<p>Obviamente ese dirección url no es a donde apuntaba la liga sino a un dominio llamado www.gmail7.info (¿de cuándo acá gmail tiene ligas así?), investigué quien dió de alta ese dominio y como soy bien buena onda les dejo el enlace de la información del dueño que el buscador godaddy me hizo el favor de proporcionarme <a href="http://who.godaddy.com/WhoIs.aspx?domain=gmail7.info&amp;prog_id=godaddy">http://who.godaddy.com/WhoIs.aspx?domain=gmail7.info&amp;prog_id=godaddy</a> donde el dueño es nickneeck@gmail.com.</p>
<p>Siempre me han llamado la atención éste tipo de acontecimientos y como soy un poco curioso investigué un poquito más, donde encontré que el correo provenía de Torreón, digo según ésta información (IP obtenida del email):</p>
<blockquote><p>201.132.241.208 &#8211; Geo Information<br />
IP Address 	201.132.241.208<br />
Host 	customer-TOR-241-208.megared.net.mx<br />
Location 	MX MX, Mexico<br />
City 	Torreón, 07 -<br />
Organization 	MegaCable SA de CV<br />
ISP 	MegaCable SA de CV<br />
AS Number 	AS13999<br />
Latitude 	25°55&#8217;00&#8243; North<br />
Longitude 	103°43&#8217;33&#8243; West<br />
Distance 	10673.55 km (6632.24 miles)</p></blockquote>
<p>Del mismo correo obtuve de dónde venía el pseudo xploit www.forosxd.com/xploits/xp/enviar_gmail_confirmar.php y si de hecho pueden encontrar otros tantos xploits en www.forosxd.com/xploits/xp/ que nuevamente si se es más observador no son más que descargados de www.portalhack.us y por obvias razones el propietario de ese portal es el mismo de gmail7.info y forosxd.com.</p>
<p>Alguien de Torreón hizo uso de éstos scripts hacia mi correo, ¿un lammer?, ¿qué opinan?.</p>
<p>Moraleja: siempre revisen hacia donde apuntan las ligas/links/urls que les mandan por correo electrónico y más cuando les piden usar usuarios y contraseñas. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Descargar Videos Youtube en tu navegador Google Chrome</title>
		<link>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/</link>
		<comments>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:38:56 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[descargar]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=300</guid>
		<description><![CDATA[Con las extensiones que están disponibles para Google Chrome me he encontrado con YouTube Downloader que para mucha gente puede ser interesante y es la que nos permite descargar videos de youtube. Ésta extensión nos permite descargar los videos en formatos HD, mp4, 3gp, flv. Solo necesitas entra a la página de YouTube Downloader agregas [...]]]></description>
			<content:encoded><![CDATA[<p>Con las extensiones que están disponibles para Google Chrome me he encontrado con <a title="YouTube Downloader" rel="bookmark" href="http://www.chromeextensions.org/music-videos-photos/youtube-downloader/">YouTube Downloader </a><br />
que para mucha gente puede ser interesante y es la que nos permite descargar videos de youtube. Ésta extensión nos permite descargar los videos en formatos HD, mp4, 3gp, flv.</p>
<p>Solo necesitas entra a la página de <a title="YouTube Downloader" rel="bookmark" href="http://www.chromeextensions.org/music-videos-photos/youtube-downloader/">YouTube Downloader</a> agregas la extensión y cuando estés viendo tu video en la parte de la descripción del video se habilitarán las opciones de descarga. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Para firefox existen muchas soluciones en su biblioteca <a href="https://addons.mozilla.org/en-US/firefox/search?q=youtube&amp;cat=all&amp;advancedsearch=1&amp;as=1&amp;appid=1&amp;lver=any&amp;atype=0&amp;pp=20&amp;pid=5&amp;sort=&amp;lup=">complementos/extensiones.</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">HD</div>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enviar formulario sin recargar la página con Zend Framework y JQuery.</title>
		<link>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/</link>
		<comments>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:57:33 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Guardar]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=163</guid>
		<description><![CDATA[Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso. Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso.</p>
<p>Primero que nada utilizaré Zend Framework, JQuery y MySQL como gestor de base de datos. Para éste ejemplo empezaremos creando una base de datos sencilla llamada clientes donde única y exclusivamente guardaremos el nombre (para no hacer tan extenso ésto).<span id="more-163"></span></p>
<p>Muy bien para crear nuestra tabla primeramente debemos tener creada la base de datos, puedes utilizar phpmyadmin o la línea de comandos, como más te agrade, de todas maneras adjunto el código de la creación de la base de datos como también de la tabla.</p>
<pre name="code" class="sql">CREATE DATABASE `prueba`;

CREATE TABLE `prueba`.`clientes` (
  `id_cliente` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `cliente` VARCHAR( 100 ) NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
</pre>
<p>Si te fijas la base de datos la llamé prueba y la tabla la llamé cliente con dos campos, id_cliente y cliente.<br />
No entraré en detalles en creación de controladores, modulos, vistas, en nuestro árbol de directorios de Zend Framework.</p>
<p>Creo el módulo (application/models/Clientes.php) con un método llamado getClientes, éste método nos devolverá posteriormente los clientes guardados en la base de datos:</p>
<pre name="code" class="php">&lt;?php

class Clientes extends Zend_Db_Table
{
    protected $_name = 'clientes';

    public function getClientes()
    {
        $c = new Clientes();
        $c_select = $c-&gt;select()-&gt;order('cliente');

        return $c-&gt;fetchAll($c_select);
    } // end getClientes

}
</pre>
<p>El controlador lo llamaré Clientes así que queda de la siguiente manera (application/controllers/ClientesController.php):</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

}

?&gt;
</pre>
<p>El método init nos arroja la variable baseUrl, la cual utilizaremos para la llamada de archivos en nuestra vista, como también tiene la acción index y hace una consulta a nuestra base de datos clientes (getClientes) como lo mencionamos anteriormente y dicha consulta la podremos ver en nuestra vista.</p>
<p>Aquí quedaría nuestra vista (application/views/scripts/clientes/index.phtml):</p>
<pre name="code" class="xhtml">&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/guardarCliente.js"&gt;&lt;/script&gt;
&lt;form action="" name="form1" id="form1" method="post"&gt;
    &lt;label&gt;Cliente: &lt;/label&gt;&lt;div id="div_cliente"&gt;
        &lt;select name="cliente" id="cliente"&gt;
            &lt;?php foreach ($this-&gt;clientes as $cliente) : ?&gt;
            &lt;option value="&lt;?php echo $cliente-&gt;id_cliente; ?&gt;"&gt;&lt;?php echo $cliente-&gt;cliente; ?&gt;&lt;/option&gt;
            &lt;?php endforeach; ?&gt;
        &lt;/select&gt;
    &lt;/div&gt;
&lt;/form&gt;

&lt;div id="form_ajax"&gt;
    &lt;form name="guardar_cliente"&gt;
        &lt;p&gt;Cliente:&lt;/p&gt;
        &lt;input type="text" name="nombre_cliente" id="nombre_cliente" value="" /&gt;
        &lt;input type="submit" name="submit" value="Guardar" id="guardarCliente" /&gt;
    &lt;/form&gt;
&lt;/div&gt;
</pre>
<p>En el código anterior hemos agregado la libreria de JQuery que la puedes descargar de Aquí y además el archivo agregarCliente que se encargará de hacer la petición AJAX del guardado del cliente. Este archivo quedaría como lo siguiente (public/scripts/agregarCliente.js):</p>
<pre name="code" class="javascript">$(function() {

    // bloqueamos la tecla enter para que no recargue la página
    $('#form_ajax').bind('keypress', function(e) {
        if (e.keyCode == 13) return false;
    });

    $('#guardarCliente').click(function() {

        var nombre_cliente = $('#nombre_cliente').val();
        var baseUrl = '/prueba';
        var dataString = 'nombre_cliente=' + nombre_cliente;

        $.ajax(
        {
            async: true,
            dataType: 'html',
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded',
            url: baseUrl + '/clientes/guardar-cliente/',
            data: dataString,
            beforeSend: function(data){
                    $('#div_cliente').html('&lt;label&gt;Cargando...&lt;/label&gt;');
            },
            success: function(requestData){
                    $('#div_cliente').html(requestData);
            },
            error: function(requestData, strError, strTipoError){
                    alert('Error ' + strTipoError +': ' + strError);
            },
            complete: function(requestData, exito){
            }
        });

        $('#nombre_cliente').val('');
        return false;
    });
});
</pre>
<p>Ten en cuenta el atributo url de $.ajax ( url: baseUrl + &#8216;/clientes/guardar-cliente/&#8217;) ya que es en donde se ejecuta el script del lado del servidor (PHP) que guardará finalmente nuestro cliente.<br />
La variable baseUrl de nuestro archivo javascript igualmente hace referencia al directorio en el que se encuentra nuestro sistema dentro de nuestro servidor web.</p>
<p>Por último volvemos a modificar nuestro controlador, agregando la acción guardar-cliente y nuestro archivo application/controllers/ClientesController.php será el siguiente:</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

    public function guardarClienteAction()
    {
    if ($this-&gt;getRequest()-&gt;isXmlHttpRequest()) { //Detectamos si es una llamada AJAX

        $this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender();
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();

        // agregamos el estado
        $cliente = $this-&gt;_request-&gt;getPost('nombre_cliente');

        $cliente_data = array ('cliente' =&gt; $cliente);
        $c-&gt;insert($cliente_data);

        // consulta de la nueva lista de clientes
        $clientes = $c-&gt;getClientes();
        if (count($clientes) &gt; 0) {

            echo '&lt;select name="cliente" id="clienteo"&gt;';
            foreach($clientes as $cl):
                $selected = '';
                if ($cl-&gt;cliente == $cliente) { $selected = 'selected="selected"'; }
                echo '&lt;option value="'.$cl-&gt;id_cliente.'" '.$selected.'&gt;'.$cl-&gt;cliente.'&lt;/option&gt;';
            endforeach;
            echo '&lt;/select&gt;';

        } // end if (count($clientes) &gt; 0)

     } // end if ($this-&gt;getRequest()-&gt;isXmlHttpRequest())

    } // end guardarClienteAction

}

?&gt;
</pre>
<p>Y listo ya tienes tu modulo clientes el cual te lista los clientes ya existentes y desde la misma página podrás agregar más sin necesidad de recargar la página como lo hace un formulario normal.</p>
<p>Cabe destacar que yo lo realicé con el Zend Framework, pero si se analiza el código es bastante simple y puede aplicarse sin éste, pero eso ya les toca a ustedes hacerlo.</p>
<p>Cualquier aportación o comentario serán bien recibidos <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Buzz</title>
		<link>http://tolerantx.com/2010/02/10/google-buzz/</link>
		<comments>http://tolerantx.com/2010/02/10/google-buzz/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 17:03:05 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=203</guid>
		<description><![CDATA[Hoy ingresando a mi cuenta de correo me encuentro con la novedad del nuevo servicio que google está ofreciendo, Google Buzz, se asemeja a servicios tipo twitter donde puedes actualizar tu estatus, compartir, fotos, videos etc. Pudiera parecer otro servicio más sin mucha novedad pero tiene detrás a google apostando por entrar cada vez más [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy ingresando a mi cuenta de correo me encuentro con la novedad del nuevo servicio que google está ofreciendo, Google Buzz, se asemeja a servicios tipo twitter donde puedes actualizar tu estatus, compartir, fotos, videos etc.</p>
<p>Pudiera parecer otro servicio más sin mucha novedad pero tiene detrás a google apostando por entrar cada vez más al mundo de las redes sociales, veremos como le va.</p>
<p>Entren a la siguiente liga para más información <a href="http://buzz.google.com" target="_blank">buzz.google.com</a></p>
<p>Y adjunto un video donde muestra lo que es Buzz.</p>
<p style="text-align: center;"><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/yi50KlsCBio&#038;fs=1" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/yi50KlsCBio&#038;fs=1" /><param name="FlashVars" value="playerMode=embedded"/><param name="wmode" value="transparent"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/02/10/google-buzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editar enlaces/links del Widget Meta en WordPress 2.9.1</title>
		<link>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/</link>
		<comments>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 02:00:55 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[widget meta]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=180</guid>
		<description><![CDATA[Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1. Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen: Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1.</p>
<p>Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen:<a href="http://tolerantx.files.wordpress.com/2010/01/11.jpg"><img class="aligncenter size-medium wp-image-196" title="Blog" src="http://tolerantx.files.wordpress.com/2010/01/11.jpg?w=300" alt="" width="300" height="193" /></a></p>
<p><span id="more-180"></span>Primero que nada tendremos que editar el archivo que se encuentra en la ruta wp-includes/default-widgets.php y nos ubicamos por ahí de la línea 295 lo cual verían algo como ésto.<a href="http://tolerantx.files.wordpress.com/2010/01/3.jpg"><img class="aligncenter size-medium wp-image-185" title="Codigo a quitar" src="http://tolerantx.files.wordpress.com/2010/01/3.jpg?w=300" alt="" width="300" height="57" /></a></p>
<p><a href="http://tolerantx.files.wordpress.com/2010/01/4.jpg"><img class="aligncenter size-medium wp-image-186" title="Codigo eliminado" src="http://tolerantx.files.wordpress.com/2010/01/4.jpg?w=300" alt="" width="300" height="40" /></a></p>
<p>Simplemente borramos/editamos los enlaces que no nos gusten y en mi caso quito los tres que marco a continuación para quedar de la siguiente manera.<a href="http://tolerantx.files.wordpress.com/2010/01/5.jpg"><img class="aligncenter size-medium wp-image-187" title="Blog final" src="http://tolerantx.files.wordpress.com/2010/01/5.jpg?w=300" alt="" width="300" height="194" /></a></p>
<p>Y listo, para ello si agregamos el widget a nuestro blog ya no aparecerán esas ligas <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , por cierto también en algunos temas ponen dicho widget por default, si aún haciendo lo anterior no funciona necesitan editar el archivo sidebar.php que se encuentra en la ruta &#8220;wp-content/themes/tu_tema/&#8221; pero eso ya te toca a tí modificarlo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.roxoroxo.com/wp/2010/01/27/bienvenido/">Roxoroxo</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 366px; width: 1px; height: 1px;">Simplemente</div>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Feeds (Fuente Web)</title>
		<link>http://tolerantx.com/2009/06/22/web-feeds-fuente-web/</link>
		<comments>http://tolerantx.com/2009/06/22/web-feeds-fuente-web/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:08:36 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=155</guid>
		<description><![CDATA[Si no sabes que es un web feed has click aquí. ¿Qué cliente de web feeds usas? yo en lo personal uso Google Reader, no entraré en detalles de por qué uso éste y no otro, simplemente me parece práctico y funciona a la perfección. Como todos los días suelo revisar mis feeds para ver [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://es.wikipedia.org/wiki/Fuente_web" target="_blank">Si no sabes que es un web feed has click aquí.</a></p>
<p>¿Qué cliente de web feeds usas? yo en lo personal uso Google Reader, no entraré en detalles de por qué uso éste y no otro, simplemente me parece práctico y funciona a la perfección.</p>
<p>Como todos los días suelo revisar mis feeds para ver las actualizaciones que han ocurrido a los sitios a los cuales quiero &#8220;seguir&#8221;, y me ha surgido la duda de cuales tienen ustedes y que tan frencuente los revisan, yo en lo personal tengo de los sitios como:<span id="more-155"></span></p>
<ul>
<li> eluniversal.com.mx (me gusta estar informado <img src='http://tolerantx.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</li>
</ul>
<ul>
<li>esdebian.org</li>
<li>espaciolinux.com</li>
<li>ubuntips.com.ar</li>
<li>vivalinux.com.ar</li>
<li>slashdot.org</li>
<li>elsyreyes.com</li>
<li>bolsadeideas.cl</li>
</ul>
<p>Entre otros, pero los principales son esos, ¿cuáles tienen ustedes que me puedan recomendar?, desde culturales, ocio, hasta geeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2009/06/22/web-feeds-fuente-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paginar resultados con Zend_Paginator</title>
		<link>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/</link>
		<comments>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 04:51:10 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Paginación]]></category>
		<category><![CDATA[Zend Frame]]></category>

		<guid isPermaLink="false">http://blog.tolerantx.com/?p=88</guid>
		<description><![CDATA[Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra. Primero que nada el árbol de mi sistema lo tengo de la siguiente [...]]]></description>
			<content:encoded><![CDATA[<p>Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra.</p>
<p>Primero que nada el árbol de mi sistema lo tengo de la siguiente manera:<span id="more-111"></span></p>
<ul>
<li>App
<ul>
<li>application
<ul>
<li>controllers</li>
<li>models</li>
<li>views</li>
</ul>
</li>
<li>library
<ul>
<li>Zend</li>
</ul>
</li>
<li>public
<ul>
<li>images</li>
<li>scripts</li>
<li>styles</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Si eres nuevo como yo aquí está una excelente guia para iniciar <a href="http://ajaxcode.net/descargas/Desarrollo_Aplicaciones_ZendFramework.pdf" target="_blank">Desarrolo de aplicaciones con Zend Framework</a> o bien <a href="http://framework.zend.com/docs/screencasts" target="_blank">Multimedia: Tutorial Screencasts</a> (éste último videos en inglés).</p>
<p>Primero cargamos las clases que necesitamos en el Bootstrap (archivo de arranque de configuración):</p>
<p>En mi caso hice una tabla llamada productos donde contiene una columna llamada &#8220;nombre_producto&#8221;, para esto agregamos nuestra tabla productos en la carpeta models/Productos.php con lo siguiente:</p>
<pre name="code" class="php">&lt;?php
class Producto extends Zend_Db_Table
{
	protected $_name = 'productos';
}
?&gt;</pre>
<p>Creamos nuestro controlador en application/controllers/indexController.php y quedaría de la siguiente manera:</p>
<pre name="code" class="php">&lt;?php
class IndexController extends Zend_Controller_Action
{
	public function indexAction()
	{
	Zend_Loader::loadClass('Producto');
	$producto = new Producto();

	// obtenemos la página actual
	$page = $this-&gt;_getParam('page', 1);
	// número de registros a mostrar por página
	$registros_pagina = 20;
	// número máximo de páginas a mostrar en el paginador
	$rango_paginas = 10;

	$productos = $producto-&gt;fetchAll()-&gt;toArray();

	$paginador = Zend_Paginator::factory($productos);
	$paginador-&gt;setItemCountPerPage($registros_pagina)
			  -&gt;setCurrentPageNumber($page)
			  -&gt;setPageRange($rango_paginas);

	$this-&gt;view-&gt;productos = $paginador;
	}
}
?&gt;</pre>
<p>Creamos el archivo en el cual se mostrará nuestra información en application/views/index/index.phtml:</p>
<pre name="code" class="php">&lt;?php
echo $this-&gt;paginationControl($this-&gt;productos,
	'Sliding',
	'index/pagination/pagination_control.phtml');
?&gt;
&lt;table&gt;
&lt;tr&gt;
	&lt;td&gt;Nombre Producto&lt;/td&gt;
&lt;/tr&gt;
&lt;?php foreach($this-&gt;productos as $producto): ?&gt;
&lt;tr&gt;
	&lt;td&gt;&lt;?php echo $producto['nombre_producto']; ?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;?php endforeach; ?&gt;</pre>
<p>Por último añadimos el pagination control, yo lo coloqué en application/views/index/pagination/pagination_control.phtml, <a href="http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.rendering.example-controls" target="_blank">aquí</a> puedes encontrar otros dos tipos o bien crear el tuyo propio:</p>
<pre name="code" class="php">&lt;?php
if ($this-&gt;pageCount): ?&gt;
&lt;div class="paginationControl"&gt;
&lt;!-- Previous page link --&gt;
&lt;?php if (isset($this-&gt;previous)): ?&gt;
  &lt;a href="&lt;?php echo $this-&gt;url(array('page'
  	=&gt; $this-&gt;previous)); ?&gt;"&gt;&lt; Previous&lt;/a&gt; | &lt;?php else: ?&gt;
  &lt;span class="disabled"&gt;&lt; Previous&lt;/span&gt; |
&lt;?php endif; ?&gt;

&lt;!-- Numbered page links --&gt;
&lt;?php foreach ($this-&gt;pagesInRange as $page): ?&gt;
  &lt;?php if ($page != $this-&gt;current): ?&gt;
    &lt;a href="&lt;?php echo $this-&gt;url(array('page'
      =&gt; $page)); ?&gt;"&gt;&lt;?php echo $page; ?&gt;&lt;/a&gt; |
  &lt;?php else: ?&gt;
    &lt;?php echo $page; ?&gt; |
  &lt;?php endif; ?&gt;
&lt;?php endforeach; ?&gt;

&lt;!-- Next page link --&gt;
&lt;?php if (isset($this-&gt;next)): ?&gt;
  &lt;a href="&lt;?php echo $this-&gt;url(array('page'
  =&gt; $this-&gt;next)); ?&gt;"&gt;Next &gt;&lt;/a&gt;
&lt;?php else: ?&gt;
  &lt;span class="disabled"&gt;Next &gt;&lt;/span&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
<p>Ésta entrada la hice basándome en la documentación oficial de <a href="http://framework.zend.com/manual/en/zend.paginator.html" target="_blank">Zend Framework</a>, espero les sea de utilidad <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Respaldos automáticos en MySQL y Windows</title>
		<link>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/</link>
		<comments>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 20:25:44 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[automático]]></category>
		<category><![CDATA[Respaldo]]></category>

		<guid isPermaLink="false">http://blog.tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/</guid>
		<description><![CDATA[Tuve la necesidad de hacer respaldos de forma automática en un servidor web montado en Windows la solución fue hacer un script .bat y éste mandarlo ejecutar con la herramienta de &#8220;Tareas programadas&#8221; El script quedó de la siguiente manera: for /f &#8220;tokens=1-4 delims=/ &#8221; %%a in (&#8216;date/t&#8217;) do ( set dia=%%a set mes=%%b set [...]]]></description>
			<content:encoded><![CDATA[<p>Tuve la necesidad de hacer respaldos de forma automática en un servidor web montado en Windows la solución fue hacer un script .bat y éste mandarlo ejecutar con la herramienta de &#8220;Tareas programadas&#8221;</p>
<p>El script quedó de la siguiente manera: <span id="more-97"></span></p>
<blockquote><p> for /f &#8220;tokens=1-4 delims=/ &#8221; %%a in (&#8216;date/t&#8217;) do (<br />
set dia=%%a<br />
set mes=%%b<br />
set anio=%%c<br />
)<br />
mysqldump -u user -p<em><strong>password</strong> <strong>database_name</strong></em> &gt; respaldo-%dia%-%mes%-%anio%.sql</p></blockquote>
<p>Esto generará un archivo .sql con el nombre &#8220;respaldo-fecha.sql&#8221;.</p>
<p>Este código lo guardas con extensión .bat y lo mandas llamar como decía con las Tareas Programada, esto en <em>Inicio &#8211; Programas &#8211; Accesorios &#8211; Herramientas de Sistema &#8211; Tareas programada. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
	</channel>
</rss>
