<div dir="ltr">Hola Juan, algo debes estar haciendo mal, seria bueno que miraras bien como lo estas haciendo, el código ya funciono, en estos momentos continuo y voy a ver la creación de clientes.<div><br></div><div>Saludos</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">El 17 de noviembre de 2012 18:46, Juan M. Puertas <span dir="ltr"><<a href="mailto:soft.sirius@gmail.com" target="_blank">soft.sirius@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="font-family:tahoma,sans-serif"><span style="color:rgb(7,55,99)">Hola Diego:<br>Tu último código de ejemplo me sigue dando el mismo error. Como dice la "ley de Murfi", "si algo funciona, no le toques", así que seguiré apañándome con Sajax.<br>
¡Suerte! :-)</span></span><br><div class="gmail_extra"><br><br><div class="gmail_quote">El 17 de noviembre de 2012 18:17, Diego Uribe Gamez <span dir="ltr"><<a href="mailto:diego.uribe.gamez@gmail.com" target="_blank">diego.uribe.gamez@gmail.com</a>></span> escribió:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Bueno, como era de esperarse esta parte fue fácil:<div><br></div><div>Este simple formulario lo que hace es mandar un mensaje para que el servidor responda el mismo mensaje, de paso el servidor imprime en terminal el mensaje y cuando el usuario se conecta.<br>
<div><br></div><div>2) Comunicación doble vía entre el navegador y el servidor:</div><div><br></div><div>servidor.py</div><div>-----------------------------------------------------------------------------------------------</div>
<div>
<div><div># -*- coding: utf-8 -*-</div><div>from sockjs.tornado import SockJSRouter, SockJSConnection</div><div><br></div><div>from tornado import web, ioloop</div></div><div><br></div><div>class ConnectionHandler(SockJSConnection):<br>
</div><div><br></div></div><div><div><div> def on_open(self, info):</div><div> print 'new connection'</div><div><br></div></div><div> def on_message(self, msg):</div><div> # Imprimir mensaje entrante en terminal</div>
<div> print str("Servidor recibe: %s" % msg)</div><div> # Cuando entra el servidor responde</div><div> self.send(u"Servidor responde: %s" % msg)</div></div><div><div><br>
</div><div><div>
if __name__ == "__main__":</div><div> onopen = SockJSRouter(ConnectionHandler, r"/websocket")</div><div> </div><div> application = web.Application(onopen.urls)</div><div> </div><div> application.listen(8888)</div>
<div> ioloop.IOLoop.instance().start()</div></div><div><br></div><div><br></div><div><br></div></div><div>cliente.html</div><div>-----------------------------------------------------------------------------------------------<br>
</div><div><br></div><div><div><!DOCTYPE html></div><div><html></div><div> <head></div><div> <title>SockJS</title></div><div><div> </head></div><div> <script src="<a href="http://cdn.sockjs.org/sockjs-0.3.min.js" target="_blank">http://cdn.sockjs.org/sockjs-0.3.min.js</a>"></script></div>
<div> <script></div></div><div> // Abrir conección</div><div> con = new SockJS('<a href="http://localhost:8888/websocket'" target="_blank">http://localhost:8888/websocket'</a>);</div><div>
// Recibir un mensaje del servidor</div>
<div> con.onmessage = function(evt){</div><div> x = document.createElement("p");</div><div> x.innerHTML = evt.data;</div><div> document.getElementById("msgbox").appendChild(x);</div>
<div> }</div><div> // Funcion para despachar el mensaje al servidor</div><div> function DispatchText(){</div><div> var userInput = document.getElementById("message").value;</div>
<div>
document.getElementById("message").value = "";</div><div> x = document.createElement("p");</div><div> x.innerHTML = "Mensaje enviado: " + userInput;</div>
<div> document.getElementById("msgbox").appendChild(x);</div><div> con.send(userInput);</div><div> }</div><div> </script></div><div> <body></div><div> <p style="width: 800px">Usar formulario para comunicarse con el servidor.</p></div>
<div> <div id="msgbox" style="font-size: 14pt; height: 500px; width: 800px; overflow: scroll; border: 1px solid black"></div></div><div> <form id="comunicacion" onsubmit="DispatchText()" action="javascript:void(0);"></div>
<div> <input type="text" id="message" name="message" autocomplete="off" style="width:700px" /></div><div> <input type="submit" id="sub" name="sub" value="Enviar" style="width:90px" /></div>
<div> </form></div><div> </body></div><div></html></div></div></div><div><br></div><div>-----------------------------------------------------------------------------------------------<br></div>
<div><br></div><div>Ahora viene la parte difícil del caso y es, crear clientes, identificar clientes, enviar un mensaje a muchos clientes y enviar un mensaje a un cliente especifico.</div><div><br></div><div>Yo les comente de articulo que habla de esto: <a href="http://blog.y3xz.com/blog/2012/06/08/a-modern-python-stack-for-a-real-time-web-application/" target="_blank">http://blog.y3xz.com/blog/2012/06/08/a-modern-python-stack-for-a-real-time-web-application/</a></div>
<div><br></div><div>Aquí se hace referencia a las librerías brukva y tornado-redis, también hay un ejemplo.</div><div><br></div><div>Yo la verdad no entiendo que hacen estas librerías específicamente, si me pueden ayudar a entender para continuar les agradecería.</div>
<div><br></div><div>Como creen que es la forma mas correcta para continuar?</div><div><br></div><div>Continua:</div><div><br></div><div>3) Actividad de usuarios</div><div><br></div><div>Saludos y anímense a comentar.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">El 16 de noviembre de 2012 15:23, Diego Uribe Gamez <span dir="ltr"><<a href="mailto:diego.uribe.gamez@gmail.com" target="_blank">diego.uribe.gamez@gmail.com</a>></span> escribió:<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Lo que pasa es que el servidor funciona como un router para tu dirección web:<div><span style="font-family:arial,sans-serif;font-size:13px">SockJSRouter(</span><span style="font-family:arial,sans-serif;font-size:13px">ConnectionHandler, r"/websocket")</span></div>
<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">y esta remplaza la entrada de apache a tu carpeta </font><b style="font-size:13px"><span style="color:rgb(7,55,99)"><font face="tahoma, sans-serif">websocket</font></span></b>, entones cuando intentas navegar a esta ruta ya de por si el servidor.py tiene sobrescrita la carpeta, para probar coloca el server y el cliente uno junto al otro en una ruta o carpeta diferente a la que tienes, puedes llamarla html5 o algo así.</div>
<div><br></div><div>Como comentaste el servidor esta bien probando lo como dijiste, no lo pensé y por otra parte ya logre conectar el html:</div><div><br></div><div><div><div><!DOCTYPE html></div><div><html></div>
<div>
<head></div><div> <title></title></div><div> </head></div><div> <script src="<a href="http://cdn.sockjs.org/sockjs-0.3.min.js" target="_blank">http://cdn.sockjs.org/sockjs-0.3.min.js</a>"></script></div>
<div> <script></div></div><div> conn = new SockJS('<a href="http://localhost:8888/websocket'" target="_blank">http://localhost:8888/websocket'</a>);</div><div> </script></div>
<div> <body></div>
<div> </body></div><div></html></div></div><div><br><div>lo que paso es que mi servidor estaba abriendo <span style="font-family:arial,sans-serif;font-size:13px">('http://' + window.location.host + '/websocket')</span><font face="arial, sans-serif"> en localhost:8080 que es como configure mi servidor local, entonces la variable de javascript estaba mal configurada y no estaba abriendo el socket en la dirección correcta </font>localhost:8888<span style="font-family:arial,sans-serif">, ya así lo hace y en terminal muestra que se dio la nueva </span><span style="font-family:arial,sans-serif">conexión</span><span style="font-family:arial,sans-serif">.</span></div>
</div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Lo que sigue es mandar mensajes desde el navegador al servidor y viceversa mas adelante miro esto pero ya tengo de donde trabajar, si tengo adelantos les mando.</font></div>
<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Saludos.</font></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 16 de noviembre de 2012 13:28, Juan M. Puertas <span dir="ltr"><<a href="mailto:soft.sirius@gmail.com" target="_blank">soft.sirius@gmail.com</a>></span> escribió:<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="color:rgb(7,55,99)"><span style="font-family:tahoma,sans-serif"> Hola Diego. Hola Miguel.<br> He probado tu primer ejemplo, utilizando como servidor el "servidor.<span>py</span>" de tu mensaje. Como cliente, el html correspondiente.<br>
"</span><span style="font-family:tahoma,sans-serif"><span style="font-family:tahoma,sans-serif">servidor.<span>py"</span> lo he puesto en una carpeta llamada www, y el cliente lo he puesto en la carpeta "www/websocket". <br>
Estoy utilizando <span>Ubuntu</span> <span>Mint</span> Mate. </span>Hago correr servidor.py, y luego, en el navegador de Firefox 16, en "<a href="http://localhost:8888/websocket" target="_blank">http://localhost:8888/websocket</a></span></span><span style="font-family:tahoma,sans-serif"><span style="color:rgb(7,55,99)"><span style="font-family:tahoma,sans-serif">"</span>. un mensaje en el navegador indica:</span></span> "Welcome to SockJS!<span style="font-family:tahoma,sans-serif"><span style="color:rgb(7,55,99)">" así vemos que el servidor funciona bien. <br>
Luego, intento navegar en "<a href="http://localhost:8888/websocket/cliente.html" target="_blank">http://localhost:8888/websocket/cliente.html</a>", pero obtengo: </span></span>"<span style="font-family:tahoma,sans-serif"><span style="color:rgb(7,55,99)"><b>404: Not Found</b>". Y en consola: </span><b>WARNING:root:404 GET /</b></span><span style="font-family:tahoma,sans-serif"><b><span style="font-family:tahoma,sans-serif"><span style="color:rgb(7,55,99)">websocket</span></span>/cliente.html (127.0.0.1) 0.52ms</b><span style="color:rgb(7,55,99)"><font><br>
¿Por qué será?<br><br> Insisto; con Sajax consigo enviar y recibir partámetros, sean o no sean procedentes de un formulario.<br> En realidad, como comentaba hace unos días, este es el futuro que va a unificar los <span>GUI</span> y el lenguaje gráfico de <span>Python</span> y de todos los lenguajes: HTML5. </font><font><br>
<br> Saludos desde las cercanías de la Alhambra :-)</font></span></span><br>
<div class="gmail_extra"><br><br><div class="gmail_quote">El 16 de noviembre de 2012 12:32, Diego Uribe Gamez <span dir="ltr"><<a href="mailto:diego.uribe.gamez@gmail.com" target="_blank">diego.uribe.gamez@gmail.com</a>></span> escribió:<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bueno Juan, te comento que yo si tengo un ejemplo funcional, pero con esto lo que quiero es estabilidad de alto nivel, y la idea con este correo es poder colocar un codigo que funcione perfectamente para este propósito y que le funcione a cualquiera que lo encuentre, este codigo esta enfocado para que lo pueda adaptar a un MVC o a un MVT como es Django, o a cualquier codigo que se tenga a la mano, pero igual que tu y como yo no encuentro contenido en mi idioma, la mayoría de contenido esta en ingles y pues yo como buen hispano me dirijo a la lista de correo que me corresponde buscando completar esto con personas que tienen mas experiencia que yo.<div>
<br></div><div>En principio es abrir una conexión, luego serán los mensajes para todos y por ultimo mensajes individuales discriminando usuarios y entre usuarios, no se trata solo de un chat, tambien se trata de actualizar contenido dinamico directamente desde la escritura de la base de datos, como escribí en el primer correo, lo que yo voy a hacer es que si me puedes ayudar a echar andar este codigo, lo que yo haga mas adelante lo publicare aquí, de la misma forma que si tu encuentras algo nos ayudaría con tus publicaciones, la meta es una y el codigo tambien, si tienes alguna pregunta de este y crees que se puede mejorar de otra forma, pues hablemoslo y hagamos esto una realidad, pero el enfoque es este y este codigo tambien, para que todos lo vean y a todos le sirva.<span></span></div>
<div><br></div><div>Gracias por tu comentario, espero otros se animen a continuar con nosotros, podríamos pasar a ser muchos.<br><br>El jueves, 15 de noviembre de 2012, Juan M. Puertas escribió:<div><div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span style="color:rgb(7,55,99)"><span style="font-family:tahoma,sans-serif"> Hola Diego y a todo el mundo.<br> En este momento me hallo en la misma búsqueda que tú. No he conseguido que a lo largo y ancho de Google me funcione un sólo programa-ejemplo de Websockets, lo que puede ser normal para un python-aficionado como yo ;-)<br>
De momento seguiré con la opción más fácil que he encontrado para estas cuestiones; Sajax, yo lo estoy utilizando en un simple CGI, y las pruebas que he hecho no están nada mal. Lo más pesado es la depuración del código, lo que he resuelto duplicándolo. Por una parte tengo el CGI en python, y por otra un programa copia del anterior con la salvedad de que en lugar de tomar los datos que tengo en el formulario CGI, ya los incorpora tal y como llegarían del citado formulario en HTML.<br>
Estaré muy atento a tus progresos y a que exista alguien en este foro que ya lo haya conseguido.<br> Saludos :-)<br></span></span><br><div class="gmail_extra"><br><br><div class="gmail_quote">El 15 de noviembre de 2012 23:44, Diego Uribe Gamez <span dir="ltr"><<a>diego.uribe.gamez@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola, les comento: mas que un problema es un desarrollo y la idea es lograr comunicar al servidor usando python con el navegador de forma asícrona, lograr mandar un datos del servidor a muchos clientes, como a un único cliente especifico según su necesidad y también de un cliente a otro cliente como un chat uno a uno.<div>
<br></div><div>Pues en mi camino a realizar este desarrollo me encontré con tecnologías bastante buenas siempre inclinándome a python, pero también esta el tema del navegador donde encontré otras tecnologías en conclusión y después de tanto buscar me encontré con este articulo: <a href="http://blog.y3xz.com/blog/2012/06/08/a-modern-python-stack-for-a-real-time-web-application/" target="_blank">A Modern Python Stack for a Real-time Web Application</a><br>
<div><div><br></div><div>Aquí el autor comento las diferentes tecnologías que encontró muy parecido a mi propia búsqueda y mostró donde y como iniciar este trabajo.</div><div><br></div><div>Pero como mi ingles es un poco corto no logro hacer esto, es por eso que acudo aquí para ver si se animan a documentarlo por este medio y me ayudar a crear una app que para muchos es un tabu, un motor para una pagina que le permita actualizar contenido en vivo y en directo para cualquier persona en cualquier escenario.</div>
<div><br></div><div>Instalar lo necesario:</div><div>pip install tornado</div><div>pip install sockjs-tornado</div><div><br></div><div>1) Conectarme al servidor</div><div>Aquí intento conectarme al servidor desde el navegador e imprimir en terminal 'nueva conexión' sin resultado.</div>
<div><br></div><div>servidor.py</div><div>-----------------------------------------------------</div><div><br></div><div><div># -*- coding: utf-8 -*-</div><div>from sockjs.tornado import SockJSRouter, SockJSConnection</div>
<div><br></div><div>from tornado import web, ioloop</div><div><br></div><div>class ConnectionHandler(SockJSConnection):</div><div><br></div><div> def on_open(self, info):</div><div> print 'new connection'</div>
<div> </div><div>if __name__ == "__main__":</div><div> onopen = SockJSRouter(ConnectionHandler, r"/websocket")</div><div> </div><div> application = web.Application(onopen.urls)</div><div> </div>
<div> application.listen(8888)</div><div> ioloop.IOLoop.instance().start()</div></div><div><br></div><div>inicio.html</div><div>-----------------------------------------------------</div><div><br></div><div><div><!DOCTYPE html></div>
<div><html></div><div> <head></div><div> <title></title></div><div> </head></div><div> <script src="<a href="http://cdn.sockjs.org/sockjs-0.3.min.js" target="_blank">http://cdn.sockjs.org/sockjs-0.3.min.js</a>"></script></div>
<div> <script></div><div> conn = new SockJS('http://' + window.location.host + '/websocket');</div><div> </script></div><div> <body></div><div> </body></div>
<div></html></div></div><div><br></div><div>La idea aquí es simplemente que cuando abra la nueva conexión desde el navegador este me imprima en termina que se logro, sin resultado, saben que me falta?</div><div><br>
</div><div>Gracias.</div><span><font color="#888888"><div><br></div>-- <br><div dir="ltr"><font face="arial, helvetica, sans-serif"><img> <span style="font-size:large"><b>Diego Alonso Uribe Gamez</b></span><span style="border-collapse:collapse"><hr style="font-style:normal;font-weight:400">
<p style="font-style:normal;font-weight:400;margin:0px;text-indent:0px" align="center"></p></span></font><p style="text-align:left;font-style:normal;margin:0px;text-indent:0px"><font face="arial, helvetica, sans-serif"><span><b>Desarrollador web</b></span></font></p>
<p style="text-align:left;font-style:normal;margin:0px;text-indent:0px"><font face="arial, helvetica, sans-serif"><span>Twitter: </span><span style="text-decoration:underline;color:rgb(21,0,255)"><a href="http://www.twitter.com/DiegoUG" style="color:rgb(0,0,204)" target="_blank">@DiegoUG</a></span></font></p>
<p style="text-align:left;font-style:normal;margin:0px;text-indent:0px"><font face="arial, helvetica, sans-serif">Google+: <a href="http://gplus.to/diegoug" target="_blank">http://gplus.to/diegoug</a></font></p><hr style="font-style:normal">
<br><p></p><span style="border-collapse:collapse"><p style="text-indent:0px;font-size:medium;font-style:normal;font-family:'dejavu serif';margin:0px;font-weight:400" align="center"></p></span></div>
<br>
</font></span></div></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a>Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><i><font size="1"><span>Nota: Por problemas con el e-mail. Puede que recibas de nuevo este mensaje
en un tiempo.</span></font></i><br>
</div>
</blockquote></div></div></div><span><font color="#888888"><br><br>-- <br>iPad<br>
</font></span><br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><div><div><br><br clear="all"><br>-- <br><i><font size="1"><span>Nota: Por problemas con el e-mail. Puede que recibas de nuevo este mensaje
en un tiempo.</span></font></i><br>
</div></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><div><div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="arial, helvetica, sans-serif"><img> <span style="font-size:large"><b>Diego Alonso Uribe Gamez</b></span><span style="border-collapse:collapse"><hr style="font-style:normal;font-weight:400">
<p style="font-style:normal;font-weight:400;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px" align="center"></p></span></font><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span><b>Desarrollador web</b></span></font></p><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span>Twitter: </span><span style="text-decoration:underline;color:rgb(21,0,255)"><a href="http://www.twitter.com/DiegoUG" style="color:rgb(0,0,204)" target="_blank">@DiegoUG</a></span></font></p>
<p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><font face="arial, helvetica, sans-serif">Google+: <a href="http://gplus.to/diegoug" target="_blank">http://gplus.to/diegoug</a></font></p>
<hr style="font-style:normal"><br><p></p><span style="border-collapse:collapse"><p style="margin-right:0px;text-indent:0px;font-size:medium;font-style:normal;margin-left:0px;margin-bottom:0px;font-family:'dejavu serif';margin-top:0px;font-weight:400" align="center">
</p></span></div><br>
</div></div></div>
</blockquote></div></div></div><div><div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="arial, helvetica, sans-serif"><img> <span style="font-size:large"><b>Diego Alonso Uribe Gamez</b></span><span style="border-collapse:collapse"><hr style="font-style:normal;font-weight:400">
<p style="font-style:normal;font-weight:400;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px" align="center"></p></span></font><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span><b>Desarrollador web</b></span></font></p><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span>Twitter: </span><span style="text-decoration:underline;color:rgb(21,0,255)"><a href="http://www.twitter.com/DiegoUG" style="color:rgb(0,0,204)" target="_blank">@DiegoUG</a></span></font></p>
<p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><font face="arial, helvetica, sans-serif">Google+: <a href="http://gplus.to/diegoug" target="_blank">http://gplus.to/diegoug</a></font></p>
<hr style="font-style:normal"><br><p></p><span style="border-collapse:collapse"><p style="margin-right:0px;text-indent:0px;font-size:medium;font-style:normal;margin-left:0px;margin-bottom:0px;font-family:'dejavu serif';margin-top:0px;font-weight:400" align="center">
</p></span></div><br>
</div></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><div><div class="h5"><br><br clear="all"><br>-- <br><i><font size="1"><span>Nota: Por problemas con el e-mail. Puede que recibas de nuevo este mensaje
en un tiempo.</span></font></i><br>
</div></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="arial, helvetica, sans-serif"><img src="https://twimg0-a.akamaihd.net/profile_images/1702546033/avatar.jpg"> <span style="font-size:large"><b>Diego Alonso Uribe Gamez</b></span><span style="border-collapse:collapse"><hr style="font-style:normal;font-weight:400">
<p align="center" style="font-style:normal;font-weight:400;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p></span></font><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span style="color:rgb(0,0,0)"><b>Desarrollador web</b></span></font></p><p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">
<font face="arial, helvetica, sans-serif"><span style="color:rgb(0,0,0)">Twitter: </span><span style="text-decoration:underline;color:rgb(21,0,255)"><a href="http://www.twitter.com/DiegoUG" style="color:rgb(0,0,204)" target="_blank">@DiegoUG</a></span></font></p>
<p style="text-align:left;font-style:normal;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><font face="arial, helvetica, sans-serif">Google+: <a href="http://gplus.to/diegoug" target="_blank">http://gplus.to/diegoug</a></font></p>
<hr style="font-style:normal"><br><p></p><span style="border-collapse:collapse"><p align="center" style="font-style:normal;font-weight:400;margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px;font-family:'dejavu serif';font-size:medium;color:rgb(0,0,0)">
</p></span></div><br>
</div>