<?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>Blog de German &#187; Programación</title>
	<atom:link href="http://geoks.com.ar/blog/archives/category/programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://geoks.com.ar/blog</link>
	<description>SL = SL (Software Libre = Software Legal)</description>
	<lastBuildDate>Thu, 13 May 2010 14:07:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Clase PHP para Conectar a MySQL (mas que facil es simple)</title>
		<link>http://geoks.com.ar/blog/archives/German/clase-php-para-conectar-a-mysql-mas-que-facil-es-simple</link>
		<comments>http://geoks.com.ar/blog/archives/German/clase-php-para-conectar-a-mysql-mas-que-facil-es-simple#comments</comments>
		<pubDate>Thu, 17 Dec 2009 14:57:24 +0000</pubDate>
		<dc:creator>German</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[clase]]></category>
		<category><![CDATA[conectar]]></category>
		<category><![CDATA[facil]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://geoks.com.ar/blog/?p=553</guid>
		<description><![CDATA[Hola a todos, tanto tiempo que no publicaba algo hoy les quiero dejar una clase que acabo de hacer es muy simple y facil de usar, sirve para:

Conectar a una base de datos
Si hubo un error podemos saberlo mediante un metodo
Contar resultados ejecutados
Contar resultados de una tabla con una condición o ninguna
Agregar datos mediante un [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a todos, tanto tiempo que no publicaba algo hoy les quiero dejar una clase que acabo de hacer es muy simple y facil de usar, sirve para:</p>
<ul>
<li>Conectar a una base de datos</li>
<li>Si hubo un error podemos saberlo mediante un metodo</li>
<li>Contar resultados ejecutados</li>
<li>Contar resultados de una tabla con una condición o ninguna</li>
<li>Agregar datos mediante un simple metodo que se le pasa un arreglo</li>
<li>Borrar datos pasandole como referencia la tabla, una condición (puede ser nula) y el limite de resultados a borrar (Si es 0 borra todo)</li>
<li>Editar datos: Edita X datos de cierta tabla, se le puede pasar la condición a borrar y el limite.</li>
<li>Obtener un arreglo de datos de una tabla.</li>
<li>Obtener un arreglo de cualquier dato mediante query de SQL</li>
</ul>
<p>El código de la clase es el siguiente pero abajo les dejo un link para bajarlo directamente:</p>
<blockquote><p>
<?php</p>
<p>	/* </p>
<p>    * mysql_db: Constructor recibe como parametros</p>
<p>    *    *El host de la base de datos</p>
<p>    *    *El user de la base de datos</p>
<p>    *    *La password de la base de datos</p>
<p>    *    *La base de datos a conectar </p>
<p>    * </p>
<p>    * Metodos:</p>
<p>    *    open() conecta con la base de datos y devuelve falso si no</p>
<p>    *    get_error() obtiene el error de la coneccion</p>
<p>    *    query() ejecuta cualquier query de base de datos y luego se deben procesar</p>
<p>    *    last_id() Obtiene el ultimo id que fue procesado por la clase</p>
<p>    *    num_rows() obtiene la cantidad de resultados que fueron procesadas por la clase</p>
<p>    *    count($tabla, $cond = '') Cuenta todos los resultados de una tabla y con x Condicion (puede ser nulo)</p>
<p>    *    get_array($tabla, $datos = '*', $cond = '') Obtiene un arreglo de datos (se pueden elegir) de una tabla y con x Condicion</p>
<p>   **    get_array_query($query) Obtiene un arreglo de cualquier consulta SQL</p>
<p>   *     delete($tabla , $cond = '', $limit = '1') Elimina x Datos (Por defecto 1) de una tabla con X condicion (puede ser nulo)</p>
<p>         add($tabla, &#038;$datos, $nomb_id = 'id'){ //agrega datos en una tabla recibiendo un arreglo de datos (las keys tienen que tener el mismo nombre que los campos de la tabla</p>
<p>      Ademas se le tiene que pasar el nombre del campo del ID</p>
<p>      * </p>
<p>      * edit($tabla, &#038;$datos, $cond, $limit = 1) Edita x Datos si se establece la condicion</p>
<p>      * recibe un arreglo de datos</p>
<p>      * un ejemplo de cond es 'id = 1' edita el arreglo de datos donde el id = 1</p>
<p>    */</p>
<p>define('DB_NO_LINK', 0);</p>
<p>define('DB_NO_DB', 1);</p>
<p>define('DB_NO_Q_RESULT', 2);</p>
<p>define('DB_NO_Q_ROWS', 3);</p>
<p>class mysql_db{</p>
<p>	var $errtype;</p>
<p>	var $errstr;</p>
<p>	var $host;</p>
<p>	var $user;</p>
<p>	var $pass;</p>
<p>	var $link;</p>
<p>	var $database;</p>
<p>   var $result;</p>
<p>	function mysql_db($host,$user,$pass,$database){</p>
<p>		/* Set error properties to initial values. */</p>
<p>		$this->errtype = false;</p>
<p>		$this->errstr = &#8221;;</p>
<p>		$this->host = $host;</p>
<p>		$this->user = $user;</p>
<p>		$this->pass = $pass;</p>
<p>		$this->database = $database;</p>
<p>      $this->result = NULL;</p>
<p>	}</p>
<p>	function open(){</p>
<p>		$this->link = mysql_connect($this->host,$this->user,$this->pass);</p>
<p>		if(!$this->link){</p>
<p>			$this->errtype = DB_NO_LINK;</p>
<p>			$this->errstr = &#8216;Connection failed for host: &#8216; . $this->host;</p>
<p>			return false;</p>
<p>		}</p>
<p>		if(!mysql_select_db($this->database, $this->link)){</p>
<p>			$this->errtype = DB_NO_DB;</p>
<p>			$this->errstr = mysql_error($this->link);</p>
<p>			return false;</p>
<p>		}</p>
<p>		return true;</p>
<p>	}</p>
<p>	function query($sql){ // INICIO METODO</p>
<p>		/* Determinamos que tipo de consulta es */</p>
<p>		if(eregi(&#8220;^delete&#8221;, $sql) || eregi(&#8220;^insert&#8221;, $sql) || eregi(&#8220;^update&#8221;, $sql)){</p>
<p>			$qtype = &#8216;a&#8217;;</p>
<p>		}</p>
<p>		elseif(eregi(&#8220;^select&#8221;, $sql)){</p>
<p>			$qtype = &#8216;n&#8217;;</p>
<p>		}</p>
<p>		/* Sabemos cuando la consulta falla o cuando no*/</p>
<p>		$result = mysql_query($sql, $this->link);</p>
<p>		if(!$result){</p>
<p>			$this->errtype = DB_NO_Q_RESULT;</p>
<p>			$this->errstr = mysql_error($this->link);</p>
<p>			return false;</p>
<p>		}</p>
<p>		/* Checkeamos por filas afectadas */</p>
<p>		if($qtype == &#8216;n&#8217;){</p>
<p>			if(mysql_num_rows($result) == 0){</p>
<p>				$this->errtype = DB_NO_Q_ROWS;</p>
<p>				$this->errstr = &#8216;NO se seleccionaron las filas&#8217;;</p>
<p>				return false;</p>
<p>			}</p>
<p>		}</p>
<p>		elseif($qtype == &#8216;a&#8217;){</p>
<p>			if(mysql_affected_rows($this->link) <= 0){</p>
<p>				$this->errtype = DB_NO_Q_ROWS;</p>
<p>				$this->errstr = &#8216;No se afectaron las filas.&#8217;;</p>
<p>				return false;</p>
<p>			}</p>
<p>		}</p>
<p>      $this->result = $result;</p>
<p>		return $this->result;</p>
<p>   } // FIN METODO query</p>
<p>	function last_id(){</p>
<p>		$id = mysql_insert_id($this->link);</p>
<p>		return $id;</p>
<p>	}</p>
<p>   function num_rows(){</p>
<p>      $num_rows = mysql_num_rows($this->result);</p>
<p>      return $num_rows;</p>
<p>   }</p>
<p>   function count($tabla, $cond = &#8221;){</p>
<p>         if ($cond) {</p>
<p>               $cond = &#8216;WHERE&#8217;.&#8217; &#8216;.$cond;</p>
<p>         }</p>
<p>         $this->query(&#8220;SELECT COUNT( * ) AS count FROM $tabla $cond &#8221; );</p>
<p>         return mysql_result( $this->result, 0 );</p>
<p>   }</p>
<p>   /*Get Array Obtiene un arreglo de datos desde una tabla, los datos que quieras</p>
<p>    * y la condicion que quieras</p>
<p>    **/</p>
<p>   function get_array($tabla, $datos = &#8216;*&#8217;, $cond = &#8221;) { </p>
<p>         if ($cond) {</p>
<p>            $cond = &#8216;WHERE&#8217;.&#8217; &#8216;.$cond;</p>
<p>         }</p>
<p>         $this->query(&#8220;SELECT $datos FROM $tabla $cond&#8221;);</p>
<p>         $rows = array();</p>
<p>    	   while($row = mysql_fetch_assoc($this->result)){</p>
<p>				$rows[] = $row;</p>
<p>		   }</p>
<p>		   return $rows;</p>
<p>   } //Fin Get_Array</p>
<p>      function get_array_query($query) { // OBTIENE UN ARREGLO CON CUALQUIER CONSULTA</p>
<p>         $this->query($query);</p>
<p>         $rows = array();</p>
<p>    	   while($row = mysql_fetch_assoc($this->result)){</p>
<p>				$rows[] = $row;</p>
<p>		   }</p>
<p>		   return $rows;</p>
<p>   } //Fin Get_Array</p>
<p>   function delete($tabla , $cond = &#8221;, $limit = &#8216;1&#8242;){ // Metodo Delete</p>
<p>      if ($limit == 0) $limit = &#8221;;</p>
<p>      else $limit = &#8220;LIMIT $limit&#8221;;</p>
<p>      if ($cond) {</p>
<p>         $cond = &#8216;WHERE&#8217;.&#8217; &#8216;.$cond;</p>
<p>      }</p>
<p>      $sql = &#8220;DELETE FROM $tabla $cond $limit&#8221;;</p>
<p>      return $this->query($sql); </p>
<p>   } // Fin metodo delete</p>
<p>   function add($tabla, &#038;$datos, $nomb_id = &#8216;id&#8217;){ //agrega datos en una tabla</p>
<p>      $donde = &#8220;`$nomb_id` &#8220;;</p>
<p>      $valor = &#8216;NULL&#8217;;</p>
<p>      foreach ($datos as $key => $value) {</p>
<p>            $donde .= &#8220;, `$key` &#8220;;</p>
<p>            $valor .= &#8220;, &#8216;$value&#8217;&#8221;;</p>
<p>      }</p>
<p>      return $this->query(&#8220;INSERT INTO $tabla ($donde) VALUES ($valor);&#8221;);</p>
<p>   }// Fin agregar</p>
<p>   function edit($tabla, &#038;$datos, $cond, $limit = 1){</p>
<p>      foreach ($datos as $key => $value) {</p>
<p>         if(!empty($value))</p>
<p>            $donde .= &#8220;`$key` = &#8216;$value&#8217; ,&#8221;;</p>
<p>      } </p>
<p>      if ($limit == 0) $limit = &#8221;;</p>
<p>      else $limit = &#8220;LIMIT $limit&#8221;; </p>
<p>      $donde = substr($donde, 0, strlen($donde)-1);</p>
<p>      $sql = &#8220;UPDATE `$tabla` SET $donde WHERE $cond $limit;&#8221;;</p>
<p>      return $this->query($sql);</p>
<p>   }</p>
<p>	function close(){</p>
<p>		mysql_close($this->link);</p>
<p>	}</p>
<p>   function get_error() {</p>
<p>         return $this->errstr;</p>
<p>   }</p>
<p>}</p>
<p>?></p>
</blockquote>
<p>Más adelante les dejo un par de ejemplos.</p>
<p>Pueden bajarla desde aqui: <a href="http://geoks.com.ar/blog/wp-content/uploads/class_db.php.zip">http://geoks.com.ar/blog/wp-content/uploads/class_db.php.zip</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgeoks.com.ar%2Fblog%2Farchives%2FGerman%2Fclase-php-para-conectar-a-mysql-mas-que-facil-es-simple&amp;linkname=Clase%20PHP%20para%20Conectar%20a%20MySQL%20%28mas%20que%20facil%20es%20simple%29">Compartir/Guardar</a>]]></content:encoded>
			<wfw:commentRss>http://geoks.com.ar/blog/archives/German/clase-php-para-conectar-a-mysql-mas-que-facil-es-simple/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Tema para NetBeans 6.7 &#8211; DarkyNerd</title>
		<link>http://geoks.com.ar/blog/archives/German/tema-para-netbeans-67-darkynerd</link>
		<comments>http://geoks.com.ar/blog/archives/German/tema-para-netbeans-67-darkynerd#comments</comments>
		<pubDate>Thu, 23 Jul 2009 03:52:16 +0000</pubDate>
		<dc:creator>German</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[black]]></category>
		<category><![CDATA[darky]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[netbean]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://geoks.com.ar/blog/?p=408</guid>
		<description><![CDATA[Hola a todos, les queria dejar este tema que modifique para NetBeans, tiene la caracteristica de ser un fondo negro con letras suaves asi no te hace mal a la vista cuando estas mucho tiempo en frente del PC mirando el monitor  
Les dejo un screenshot.



 


NetBeans 6.7 Screenshot


Para bajarlo tienen que hacer click [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a todos, les queria dejar este tema que modifique para NetBeans, tiene la caracteristica de ser un fondo negro con letras suaves asi no te hace mal a la vista cuando estas mucho tiempo en frente del PC mirando el monitor <img src='http://geoks.com.ar/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Les dejo un screenshot.</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 296px;">
<dt class="wp-caption-dt">
<form action="?"> <a href="http://img339.imageshack.us/img339/7449/pantallazo3.png" target="_blank" rel="lightbox[408]"><img style="border: 0pt none;" title="NetBeans 6.7 Screenshot" src="http://img339.imageshack.us/img339/7449/pantallazo3.th.png" border="0" alt="Screenshot NetBeans 6.7" width="286" height="243" /></a></p>
<p><a title="Screenshot NetBeans 6.7" href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img339/7449/pantallazo3.png" rel="lightbox[408]"></a><a></a></p>
</form>
<dd class="wp-caption-dd">NetBeans 6.7 Screenshot</dd>
</dt>
</dl>
<h3 style="text-align: center;"><strong>Para bajarlo tienen que hacer <a title="Download Theme for NetBeans" href="http://geoks.com.ar/blog/wp-content/uploads/tema-netbeans.zip">click aqui</a></strong></h3>
<p style="text-align: left;">
<p>Espero que les haya servido, gracias a los lectores.</p>
<p style="text-align: left;">Saludos</p>
</div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgeoks.com.ar%2Fblog%2Farchives%2FGerman%2Ftema-para-netbeans-67-darkynerd&amp;linkname=Tema%20para%20NetBeans%206.7%20%26%238211%3B%20DarkyNerd">Compartir/Guardar</a>]]></content:encoded>
			<wfw:commentRss>http://geoks.com.ar/blog/archives/German/tema-para-netbeans-67-darkynerd/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simple Server y Proxy</title>
		<link>http://geoks.com.ar/blog/archives/German/simple-server-y-proxy</link>
		<comments>http://geoks.com.ar/blog/archives/German/simple-server-y-proxy#comments</comments>
		<pubDate>Mon, 20 Apr 2009 12:56:41 +0000</pubDate>
		<dc:creator>German</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[simple]]></category>

		<guid isPermaLink="false">http://geoks.com.ar/blog/?p=59</guid>
		<description><![CDATA[La otra vez navegando me encontre con un simple código en Python que permite compartir archivos via web, esta muy bueno cuando no tenes ganas de configurar el samba o bien si queres que tu amigo de China vea lo que tenes en dicho directorio.
Lo que hace es montarte un mini servidor en la carpeta [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:left;" src="http://geoks.com.ar/blog/wp-content/uploads/2009/04/python-logo.jpg" alt="Python Logo" />La otra vez navegando me encontre con un simple código en Python que permite compartir archivos via web, esta muy bueno cuando no tenes ganas de configurar el samba o bien si queres que tu amigo de China vea lo que tenes en dicho directorio.</p>
<p>Lo que hace es montarte un mini servidor en la carpeta que lo pongas y configurandole el puerto de ejecución.</p>
<p>A continuación les paso un par de ejemplos</p>
<p><span id="more-59"></span></p>
<p>Se dirigen a una carpeta y luego typean en su consola bash preferida:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">python <span style="color: #660033;">-m</span> SimpleHTTPServer <span style="color: #000000;">8000</span></div></div>
<p>Nótese el último parámetro, el 8000 es el puerto donde lo quieren abrir, si ya tienen ocupado el 8000 basta cambiar de puerto y listo.</p>
<p>Bien ahora hagamos un mini script que nos permita hacer lo mismo.</p>
<p>Creamos un archivo <strong><em>compartir.py</em></strong> y le copiamos lo siguiente.</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">##Montando un mini servidor de archivos</span></div></div>
<p>import SimpleHTTPServer<br />
import SocketServer</p>
<p>PORT = 8000 #cambiar de puerto si lo desean</p>
<p>Handler = SimpleHTTPServer.SimpleHTTPRequestHandler</p>
<p>httpd = SocketServer.TCPServer((&#8220;&#8221;, PORT), Handler)</p>
<p>print &#8220;Escuchando el puerto: &#8220;, PORT<br />
httpd.serve_forever()</p>
<p>Ahora lo ejecutamos:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ python compartir.py<br />
Escuchando el puerto: <span style="color: #000000;">8000</span><br />
localhost - - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">11</span><span style="color: #000000; font-weight: bold;">/</span>Oct<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1999</span> <span style="color: #000000;">15</span>:07:<span style="color: #000000;">44</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> code <span style="color: #000000;">403</span>, message Directory listing<br />
not supported<br />
localhost - - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">11</span><span style="color: #000000; font-weight: bold;">/</span>Oct<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1999</span> <span style="color: #000000;">15</span>:07:<span style="color: #000000;">44</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #ff0000;">&quot;GET / HTTP/1.1&quot;</span> <span style="color: #000000;">403</span> -<br />
localhost - - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">11</span><span style="color: #000000; font-weight: bold;">/</span>Oct<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1999</span> <span style="color: #000000;">15</span>:07:<span style="color: #000000;">56</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #ff0000;">&quot;GET /samples/sample.htm HTTP/1.1&quot;</span> <span style="color: #000000;">200</span> -</div></div>
<p>Ahora para ver que funciona, solo tenemos que abrir un navegador cualquiera y tipear http://ip_compartida_con_archivo:PUERTO</p>
<p>Con esto ya terminamos la parte del servidor, pero como el titulo lo indica tambien les voy a explicar como hacer un mini servidor proxy, asi se pueden conectar desde su trabajo con la IP de su casa, o bien su amigo de China que les filtran los puertos pueden hacerlo conectar desde la Ip de Uds. y asi el puede navegar Felizmente.</p>
<p>Otra utilidad interesante es para compartir internet desde dos PCs conectadas por LAN.</p>
<p>El código es el siguiente.</p>
<p>Creamos un archivo <strong><em>proxy.py</em></strong> que va a contener:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">SocketServer</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">SimpleHTTPServer</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span><br />
<br />
PORT = 1337<br />
<br />
<span style="color: #ff7700;font-weight:bold;">class</span> Proxy<span style="color: black;">&#40;</span><span style="color: #dc143c;">SimpleHTTPServer</span>.<span style="color: black;">SimpleHTTPRequestHandler</span><span style="color: black;">&#41;</span>:<br />
<span style="color: #ff7700;font-weight:bold;">def</span> do_GET<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
<span style="color: #008000;">self</span>.<span style="color: black;">copyfile</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">path</span><span style="color: black;">&#41;</span>, <span style="color: #008000;">self</span>.<span style="color: black;">wfile</span><span style="color: black;">&#41;</span><br />
<br />
httpd = <span style="color: #dc143c;">SocketServer</span>.<span style="color: black;">ForkingTCPServer</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span>, PORT<span style="color: black;">&#41;</span>, Proxy<span style="color: black;">&#41;</span><br />
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;serving at port&quot;</span>, PORT<br />
httpd.<span style="color: black;">serve_forever</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></div>
<p>Para probrar esto solo hace falta configurar el navegador con el IP de donde se este ejecutando el archivo python y el puerto&#8230;.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgeoks.com.ar%2Fblog%2Farchives%2FGerman%2Fsimple-server-y-proxy&amp;linkname=Simple%20Server%20y%20Proxy">Compartir/Guardar</a>]]></content:encoded>
			<wfw:commentRss>http://geoks.com.ar/blog/archives/German/simple-server-y-proxy/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Script para generar passwords</title>
		<link>http://geoks.com.ar/blog/archives/German/script-para-generar-passwords</link>
		<comments>http://geoks.com.ar/blog/archives/German/script-para-generar-passwords#comments</comments>
		<pubDate>Sun, 19 Apr 2009 18:43:11 +0000</pubDate>
		<dc:creator>German</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[aleatoriamente]]></category>
		<category><![CDATA[generar]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://geoks.com.ar/blog/?p=37</guid>
		<description><![CDATA[En este artículo voy a publicar como se hace un mini generador de passwords en php, es fácil de entender y lo bueno es que la version básica del script ocupa solo 5 lineas de código, la otra version ocupa un par de lineas más pero te va a permitir poder agregar caracteres con mayúsculas&#8230;.

Bien [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:left;" src="http://geoks.com.ar/blog/wp-content/uploads/2009/04/php_logo.jpg" alt="Php Logo" />En este artículo voy a publicar como se hace un mini generador de passwords en php, es fácil de entender y lo bueno es que la version básica del script ocupa solo 5 lineas de código, la otra version ocupa un par de lineas más pero te va a permitir poder agregar caracteres con mayúsculas&#8230;.</p>
<p><span id="more-37"></span></p>
<p>Bien ahora lo básico, vamos a generar un script que nos permita generar arbitrariamente una clave.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$cant</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cantidad de caracteres de la pass</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//genera un codigo de caracteres unico para ese valor random</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> <span style="color: #000088;">$cant</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//truncamos la palabra al maximo de caracteres deseados</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Ahora por ejemplo si hacemos un &#8220;<strong>echo $password</strong>&#8221; vamos a poder observar la clave generada de 8 caracteres de largo, como lo habíamos definido anteriormente en la variable <em>$cant</em>, y el resultado es: &#8220;<strong>de61b5b9</strong>&#8221;</p>
<p>Pero si lo que queremos es generar passwords con mayúsculas incluidas, podríamos utilizar el siguiente script.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #000088;">$cant</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cantidad de caracteres de la pass</span><br />
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//genera un codigo de caracteres unico para ese valor random</span><br />
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> <span style="color: #000088;">$cant</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//truncamos la palabra al maximo de caracteres deseados</span><br />
<br />
<span style="color: #000088;">$cant_mayus</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cantidad de mayusculas en la cadena</span><br />
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$cant_mayus</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$mayus</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span>7<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//selecciona un caracter de la password</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$car</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_numeric"><span style="color: #990000;">is_numeric</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$car</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// si no es un valor numerico entonces convertir</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strtoupper"><span style="color: #990000;">strtoupper</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//convertir a mayuscula</span><br />
&nbsp; &nbsp; <br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$password</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//muestra una password aleatoria, como por ejemplo d7B9d3E2</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Con este ejemplo podemos ver algunas de las letras convertidas a mayúsculas,notar la variable de $cant_mayus, que lo que hace es definir cuantas mayúsculas queremos en la cadena.<br />
Pero si lo que queremos es obligar al script para que las convierta podemos utilizar la siguiente mejora.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$cant</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cantidad de caracteres de la pass</span><br />
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//genera un codigo de caracteres unico para ese valor random</span><br />
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> <span style="color: #000088;">$cant</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//truncamos la palabra al maximo de caracteres deseados</span><br />
<br />
<span style="color: #000088;">$cant_mayus</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cantidad de mayusculas en la cadena</span><br />
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$cant_mayus</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$mayus</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span>7<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//selecciona un caracter de la password</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$car</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_numeric"><span style="color: #990000;">is_numeric</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$car</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// si no es un valor numerico entonces convertir</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strtoupper"><span style="color: #990000;">strtoupper</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$mayus</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//convertir a mayuscula</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #000088;">$i</span><span style="color: #339933;">--;</span> <span style="color: #666666; font-style: italic;">//resta el indice asi sigue buscando</span><br />
&nbsp; &nbsp; <br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$password</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//muestra la password, ejempo 59daF5CF</span><br />
&nbsp;<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>En este último ejemplo, lo único que cambia es el &#8220;else&#8221; en el if, que estamos obligando al script en volver a checkear y asi poder tener un mejor resultado.</p>
<p>Esto es todo, espero que les haya servido, cualquier cosa pueden dejar comentarios, opiniones o dudas a través de comentarios.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgeoks.com.ar%2Fblog%2Farchives%2FGerman%2Fscript-para-generar-passwords&amp;linkname=Script%20para%20generar%20passwords">Compartir/Guardar</a>]]></content:encoded>
			<wfw:commentRss>http://geoks.com.ar/blog/archives/German/script-para-generar-passwords/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.850 seconds -->
