<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4538535577335655952</id><updated>2012-01-26T20:19:23.892-08:00</updated><category term='numenta'/><category term='SubSonic'/><category term='javascript'/><category term='hilos'/><category term='narcos'/><category term='ArrayList'/><category term='seguridad'/><category term='IOException'/><category term='WEKA'/><category term='desarrollo'/><category term='gtk#'/><category term='tortoise'/><category term='selenium'/><category term='open source'/><category term='xml-rpc'/><category term='suse'/><category term='bazaar'/><category term='c#'/><category term='firefox'/><category term='test'/><category term='Redes neuronales'/><category term='JDM'/><category term='negocios'/><category term='la vanguardia'/><category term='python'/><category term='09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63'/><category term='List'/><category term='blobstore API'/><category term='sun'/><category term='gOS'/><category term='windows'/><category term='IO.Ports'/><category term='csv'/><category term='IronPython'/><category term='Android'/><category term='app engine'/><category term='monodevelop'/><category term='hardware'/><category term='codigo'/><category term='apache'/><category term='syscalls'/><category term='debug'/><category term='nupic'/><category term='procesos'/><category term='linq'/><category term='culiacan'/><category term='select'/><category term='ITMG2'/><category term='MySQL'/><category term='ajax'/><category term='pirateria'/><category term='NSL'/><category term='Yale'/><category term='startup'/><category term='Inyeccion'/><category term='ReCaptcha'/><category term='mod-mono'/><category term='django'/><category term='SOAP'/><category term='db4o'/><category term='Datamining'/><category term='ratproxy'/><category term='JOONE'/><category term='bazaar windows gui'/><category term='sql'/><category term='vbox'/><category term='visual studio 2005'/><category term='malecon'/><category term='Linux'/><category term='html'/><category term='HTM'/><category term='Juego'/><category term='server'/><category term='microsoft'/><category term='marketing'/><category term='ubuntu'/><category term='mono'/><category term='IClonable'/><category term='error'/><category term='widget'/><category term='getElementById'/><category term='Intel'/><category term='google'/><category term='subversion'/><category term='svn'/><title type='text'>Golem</title><subtitle type='html'>Una división (minúscula) de KreationTech</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-4138515748710274857</id><published>2010-06-29T10:57:00.000-07:00</published><updated>2010-06-29T11:13:57.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='blobstore API'/><title type='text'>usar blobstore api en app engine</title><content type='html'>El modelo debe definirse así:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from google.appengine.ext import db&lt;br /&gt;from google.appengine.ext import blobstore&lt;br /&gt;&lt;br /&gt;class MiModelo(db.Model):&lt;br /&gt;     ....#algunos campos&lt;br /&gt;     archivo=blobstore.BlobReferenceProperty() #aqui se registrara la llave del archivo&lt;br /&gt;     ....#otros campos&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En la clase que maneja las peticiones se liga la url estática definida en con el resto de las peticiones con la URL que &lt;a href="http://code.google.com/appengine/docs/python/blobstore/overview.html#Uploading_a_Blob"&gt;genera blobstore para la sesion&lt;/a&gt; esta se registra en una variable que se pondrá dentro del formulario html de forma dinámica.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from google.appengine.ext import webapp, db&lt;br /&gt;from google.appengine.ext import blobstore&lt;br /&gt;from google.appengine.ext.webapp import blobstore_handlers&lt;br /&gt;&lt;br /&gt;class MiClase(webapp.RequestHandler):&lt;br /&gt;     pathtemplate = os.path.join(path, 'el_template.html')&lt;br /&gt;     template_values ={ #en esta variable se liga la URL con la direccion de la sesion&lt;br /&gt;                            "upload_url": blobstore.create_upload_url('/upload'),&lt;br /&gt;                        }&lt;br /&gt;      self.response.out.write(template.render(pathtemplate, template_values))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Este sería el código del formulario en el template, ver que en el campo &lt;b&gt;action&lt;/b&gt; se asigna el valor de la variable upload_url&lt;br /&gt;&lt;br /&gt;&lt;textarea&gt;&lt;br /&gt;&lt;form action="{{upload_url}}" method="POST" enctype="multipart/form-data"&gt;&lt;br /&gt;   &lt;INPUT TYPE=FILE NAME="file" id="SeleccionarFile" &gt;&lt;br /&gt; &lt;input type="submit" id="GrabarEstudioFile" name="submit" value="Grabar Estudio" class="widebuttons"&gt;&lt;br /&gt;                &lt;/form&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;La clase que maneja el blob sería la siguiente, donde el blob es almacenado al momento de entrar a la clase y solo se registra la llave para poder instanciarlo despues.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):&lt;br /&gt;    def post(self):&lt;br /&gt;        upload_files = self.get_uploads('file')  &lt;br /&gt;        blob_info = upload_files[0]&lt;br /&gt;        miclase=MiClase()        &lt;br /&gt;        miclase.archivo=blob_info.key()&lt;br /&gt;        miclase.put()&lt;br /&gt;        self.redirect('../OtraPagina' )  &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-4138515748710274857?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/4138515748710274857/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=4138515748710274857' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4138515748710274857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4138515748710274857'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2010/06/usar-blobstore-api-en-app-engine.html' title='usar blobstore api en app engine'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7872991957991560088</id><published>2010-02-16T11:25:00.000-08:00</published><updated>2010-02-16T11:50:10.006-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csv'/><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><title type='text'>Generar archivo CSV para descargar en APPENGINE</title><content type='html'>Para generar un archivo CSV que funcione como una liga que permita descargar el archivo es necesario seguir los siguientes pasos:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;1.- Crear la url&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En el archivo donde se creen las ligas entre las clases y las url (lazy loading)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Lucida,Courier New"&gt;&lt;font color="#000000"&gt;application&lt;/font&gt; &lt;font color="#0000C0"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;webapp&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;WSGIApplication&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#0000C0"&gt;[&lt;/font&gt; &lt;br /&gt;        &lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#004080"&gt;"/csv"&lt;/font&gt;&lt;font color="#0000C0"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;Csv&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#0000C0"&gt;,&lt;/font&gt; &lt;br /&gt;&lt;font color="#0000C0"&gt;]&lt;/font&gt;&lt;font color="#0000C0"&gt;,&lt;/font&gt; &lt;font color="#000000"&gt;debug&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;False&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt; &lt;br /&gt; &lt;br /&gt;&lt;font color="#C00000"&gt;def&lt;/font&gt; &lt;font color="#000000"&gt;main&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#0000C0"&gt;:&lt;/font&gt; &lt;br /&gt;   &lt;font color="#000000"&gt;run_wsgi_app&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;application&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;2.- Generar el CSV&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En la clase Csv se genera el string y el handler para manejar las peticiones get del servidor.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Lucida,Courier New"&gt;&lt;font color="#C00000"&gt;import&lt;/font&gt; &lt;font color="#000000"&gt;wsgiref&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;handlers&lt;/font&gt; &lt;br /&gt;&lt;font color="#C00000"&gt;import&lt;/font&gt; &lt;font color="#000000"&gt;StringIO&lt;/font&gt; &lt;br /&gt;&lt;font color="#C00000"&gt;from&lt;/font&gt; &lt;font color="#000000"&gt;google&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;appengine&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;ext&lt;/font&gt; &lt;font color="#C00000"&gt;import&lt;/font&gt; &lt;font color="#000000"&gt;webapp&lt;/font&gt; &lt;br /&gt; &lt;br /&gt;&lt;font color="#C00000"&gt;class&lt;/font&gt; &lt;font color="#000000"&gt;Csv&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;webapp&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;RequestHandler&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#0000C0"&gt;:&lt;/font&gt; &lt;br /&gt;        &lt;font color="#C00000"&gt;def&lt;/font&gt; &lt;font color="#000000"&gt;get&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;self&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#0000C0"&gt;:&lt;/font&gt; &lt;br /&gt;                &lt;font color="#000000"&gt;out&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;StringIO&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;StringIO&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt; &lt;br /&gt;                &lt;font color="#000000"&gt;cabeceras&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#004080"&gt;"..."&lt;/font&gt; &lt;font color="#008000"&gt;#defino las cabeceras de los campos del csv&lt;/font&gt; &lt;br /&gt;                &lt;font color="#000000"&gt;out&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;write&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;cabeceras&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt; &lt;br /&gt;                &lt;font color="#000000"&gt;MisDatos&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#004080"&gt;"..."&lt;/font&gt;&lt;font color="#008000"&gt;#Obtengo los datos de alguna fuente, muy probablemente del DataStore&lt;/font&gt; &lt;br /&gt;                &lt;font color="#C00000"&gt;for&lt;/font&gt; &lt;font color="#000000"&gt;renglon&lt;/font&gt; &lt;font color="#C00000"&gt;in&lt;/font&gt; &lt;font color="#000000"&gt;MisDatos&lt;/font&gt;&lt;font color="#0000C0"&gt;:&lt;/font&gt; &lt;br /&gt;                        &lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#004080"&gt;""&lt;/font&gt; &lt;br /&gt;                        &lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;+&lt;/font&gt;&lt;font color="#004080"&gt;"..."&lt;/font&gt;&lt;font color="#0000C0"&gt;+&lt;/font&gt;&lt;font color="#004080"&gt;"|"&lt;/font&gt;&lt;font color="#008000"&gt;# obtengo los datos necesarios agregandolos a la variable csv&lt;/font&gt; &lt;br /&gt;                        &lt;font color="#008000"&gt;#continuo asi....&lt;br /&gt;&lt;/font&gt;                        &lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;+&lt;/font&gt;&lt;font color="#004080"&gt;"\n"&lt;/font&gt; &lt;font color="#008000"&gt;#eol&lt;/font&gt; &lt;br /&gt;                        &lt;font color="#000000"&gt;out&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;write&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;csv&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt; &lt;br /&gt;                &lt;font color="#008000"&gt;#agrego los header para que se comporte como archivo&lt;br /&gt;&lt;/font&gt;                &lt;font color="#000000"&gt;self&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;response&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;headers&lt;/font&gt;&lt;font color="#0000C0"&gt;[&lt;/font&gt;&lt;font color="#004080"&gt;"Content-Type"&lt;/font&gt;&lt;font color="#0000C0"&gt;]&lt;/font&gt; &lt;font color="#0000C0"&gt;=&lt;/font&gt; &lt;font color="#004080"&gt;"application/vnd.ms-excel"&lt;/font&gt; &lt;br /&gt;                &lt;font color="#000000"&gt;self&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;response&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;out&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;write&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;out&lt;/font&gt;&lt;font color="#0000C0"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;getvalue&lt;/font&gt;&lt;font color="#0000C0"&gt;(&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#0000C0"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Agrego un link en el template&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Lucida,Courier New"&gt;&lt;font color="#000000"&gt;&amp;#60;a href="/csv"&amp;#62;csv&amp;#60;/a&amp;#62;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;y listo....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7872991957991560088?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7872991957991560088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7872991957991560088' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7872991957991560088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7872991957991560088'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2010/02/generar-archivo-csv-para-descargar-en.html' title='Generar archivo CSV para descargar en APPENGINE'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-6986837813983729296</id><published>2010-01-22T11:21:00.000-08:00</published><updated>2010-01-22T11:23:43.929-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bazaar'/><title type='text'>Conceptos básicos de bazaar</title><content type='html'>&lt;b&gt;Rama (Branch)&lt;/b&gt; - L&amp;iacute;nea de desarrollo de un proyecto&lt;br /&gt;&lt;b&gt;Arbol de trabajo (Working tree)&lt;/b&gt; - Directorio de versiones controlado (por bazaar obviamente)&lt;br /&gt;&lt;b&gt;Repositorio (Repository)&lt;/b&gt; - Almac&amp;eacute;n para las revisiones de bazaar&lt;br /&gt;&lt;b&gt;Revisi&amp;oacute;n &lt;/b&gt;- Version del c&amp;oacute;digo fuente registrada (commited) en el repositorio&lt;br /&gt;&lt;b&gt;Etiqueta (Tag)&lt;/b&gt; - Nombre de la revisi&amp;oacute;n&lt;br /&gt;&lt;b&gt;ramas relacionadas (Related branches)&lt;/b&gt; - Ramas con un ancestro en com&amp;uacute;n&lt;br /&gt;&lt;b&gt;Mezcla (Merge)&lt;/b&gt; - La operaci&amp;oacute;n de aplicar a una rama todos los cambios en el c&amp;oacute;digo fuente que se hicieron en otra rama&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://doc.bazaar.canonical.com/latest/en/quick-reference/index.html"&gt;Bazaar Quick Reference&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-6986837813983729296?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/6986837813983729296/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=6986837813983729296' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6986837813983729296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6986837813983729296'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2010/01/conceptos-b-de-bazaar.html' title='Conceptos b&amp;aacute;sicos de bazaar'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-692990925877074777</id><published>2010-01-22T11:08:00.000-08:00</published><updated>2010-01-22T11:24:14.121-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bazaar'/><title type='text'>Deshaciendo cambios en bazaar</title><content type='html'>Para revertir los cambios de una revisión (commit) a otra es necesario seguir dos pasos (En este orden)&lt;br /&gt;&lt;br /&gt;1.- Deshacer el commit&lt;br /&gt;2.- Revertir los cambios&lt;br /&gt;&lt;br /&gt;En bazaar explorer son las siguientes opciones:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1n46AYlaKI/AAAAAAAAAGw/G5-LKA4y8CU/s1600-h/9.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 193px;" src="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1n46AYlaKI/AAAAAAAAAGw/G5-LKA4y8CU/s320/9.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429644501191059618" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-692990925877074777?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/692990925877074777/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=692990925877074777' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/692990925877074777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/692990925877074777'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2010/01/deshaciendo-cambios-en-bazaar.html' title='Deshaciendo cambios en bazaar'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f42Igf6bkrQ/S1n46AYlaKI/AAAAAAAAAGw/G5-LKA4y8CU/s72-c/9.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-6081926643543163188</id><published>2010-01-22T10:20:00.001-08:00</published><updated>2010-01-22T11:08:09.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bazaar windows gui'/><title type='text'>Tutorial básico de bazaar (GUI)</title><content type='html'>&lt;a href="http://bazaar.canonical.com/en/"&gt;Bazaar &lt;/a&gt;es un &lt;a href="http://es.wikipedia.org/wiki/Sistema_de_control_de_versi%C3%B3n"&gt;SCM &lt;/a&gt;, o mejor dicho, el SCM de canonical, que tiene un conjunto de herramientas GUI (para windows) que lo hacen sumamente atractivo y fácil de usar para desarrolladores independientes.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Instalar bazaar&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Hay que &lt;a href="http://wiki.bazaar.canonical.com/WindowsDownloads"&gt;descargar &lt;/a&gt;el instalador standalone, y hacer el clásico siguiente, siguiente, siguiente. Solo hay que tomar en cuenta instalar TortoiseBzr.&lt;br /&gt;&lt;br /&gt;Una vez instalado es posible que falle &lt;a href="http://doc.bazaar.canonical.com/explorer/en/"&gt;Bazar Explorer&lt;/a&gt; (posiblemente por causa de dependencias lo que hace que se muestre una pantalla de msdos negra y se cierre sin previo aviso), por lo que es necesario &lt;a href="http://doc.bazaar.canonical.com/explorer/en/"&gt;instalar &lt;/a&gt;manualmente esta herramienta; nuevamente siguiente, siguiente, siguiente.&lt;br /&gt;&lt;br /&gt;Lo que sigue es lanzar explorer y registrar los datos del programador (esto no es obligatorio)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1nuTlQ35NI/AAAAAAAAAFw/4SwVuHbFkVc/s1600-h/1.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1nuTlQ35NI/AAAAAAAAAFw/4SwVuHbFkVc/s320/1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5429632845959652562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Crear Proyecto&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En la tercera cejilla ("Iniciar nuevo proyecto") permite seleccionar la carpeta donde estar&amp;aacute; la carpeta principal ("trunk") del proyecto&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1nvN3hPu0I/AAAAAAAAAF4/8NyHmcbj7ME/s1600-h/2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 233px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1nvN3hPu0I/AAAAAAAAAF4/8NyHmcbj7ME/s320/2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429633847292574530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez seleccionada la carpeta se tiene 5 opciones de proyecto:&lt;br /&gt;- &lt;b&gt;Feature branchs:&lt;/b&gt; Crea un repositorio compartido en el directorio seleccionado y crea la rama principal (trunk)&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;Shared tree:&lt;/b&gt; Crea un repositorio compartido, crea la rama principal (trunk) y un arbol de trabajo separado.&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;Plain branchs:&lt;/b&gt; Crea una rama plana en el directorio seleccionado, si es parte (o esta adentro) de un repositorio compartido (Shared repository) las revisiones ser&amp;aacute;n almacenadas allí, de lo contrario (no esta dentro de un repositorio compartido) las revisiones se almacenan en la rama&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;Shared repository:&lt;/b&gt; Crea un repositorio compartido en el directorio seleccionado. Las ramas creadas dentro de este repositorio se usaran para almacenar las revisiones.&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;Shared repo with treeless branch:&lt;/b&gt; Crea un repositorio compartido en el directorio seleccionado, configura al repositorio y sus ramas creandas sin un &amp;aacute;rbol de trabajo. Los repositorios en los servidores suelen estar configurados de esta manera.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1nzJNE2PyI/AAAAAAAAAGA/fbso2v4uVJU/s1600-h/3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 247px; height: 320px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1nzJNE2PyI/AAAAAAAAAGA/fbso2v4uVJU/s320/3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429638165226209058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;¿Cual elegir?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Seg&amp;uacute; la &lt;a href="http://doc.bazaar.canonical.com/explorer/en/visual-tour-windows.html#branch"&gt;documentaci&amp;oacute;n&lt;/a&gt; de bazaar "Para la mayoría de los proyectos pequeños y medianos, se recomienda el modelo de &lt;i&gt;Feature branchs&lt;/i&gt;. Para los proyectos grandes (como GIT)  se prefiere a menudo el m&amp;oacute;delo &lt;i&gt;Shared tree&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Administrando el proyecto&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Hay que copiar el c&amp;oacute;digo (si es que existe) dentro de la carpeta trunk.&lt;br /&gt;Bazaar explorer abrir&amp;aacute; un nuevo tab con el nombre del directorio seleccionado, &lt;br /&gt;se debe cerra esta y entrar a la cuarta cejilla ("Abrir una ubicaci&amp;oacute;n existente") seleccionando la carpeta trunk.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n1fmZ8JoI/AAAAAAAAAGI/m3M0bZRWEUY/s1600-h/4.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 226px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n1fmZ8JoI/AAAAAAAAAGI/m3M0bZRWEUY/s320/4.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429640749005940354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se mostraran todos los archivos "sin versionar" y hay que añadirlos a la rama principal.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n11F0mFnI/AAAAAAAAAGQ/Ak4Z7SOIam0/s1600-h/5.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 233px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n11F0mFnI/AAAAAAAAAGQ/Ak4Z7SOIam0/s320/5.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429641118216492658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n2OhcUTVI/AAAAAAAAAGY/W7ji6M9gG78/s1600-h/6.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n2OhcUTVI/AAAAAAAAAGY/W7ji6M9gG78/s320/6.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429641555127586130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hay que hacer la primera revision (commit) se puede hacer de forma autom&amp;aacute;tica seleccionando la flecha verde que esta en la parte inferior de la pantalla.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1n26YLAzGI/AAAAAAAAAGg/jOqxkWCDBoA/s1600-h/7.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 125px;" src="http://1.bp.blogspot.com/_f42Igf6bkrQ/S1n26YLAzGI/AAAAAAAAAGg/jOqxkWCDBoA/s320/7.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429642308553329762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n3OqokdHI/AAAAAAAAAGo/OeVjUfM461I/s1600-h/8.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 320px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/S1n3OqokdHI/AAAAAAAAAGo/OeVjUfM461I/s320/8.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5429642657106523250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Listo, se tiene el proyecto listo para iniciar a modificar el c&amp;oacute;digo de forma ordenada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-6081926643543163188?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/6081926643543163188/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=6081926643543163188' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6081926643543163188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6081926643543163188'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2010/01/tutorial-basico-de-bazaar-gui.html' title='Tutorial básico de bazaar (GUI)'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f42Igf6bkrQ/S1nuTlQ35NI/AAAAAAAAAFw/4SwVuHbFkVc/s72-c/1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-6029568101512340062</id><published>2009-08-26T16:16:00.001-07:00</published><updated>2009-08-26T16:21:13.021-07:00</updated><title type='text'>Pruebas unitarias con App Engine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gaeunit.googlecode.com/files/gaeuni_1.1.0_screenshot.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 657px; height: 312px;" src="http://gaeunit.googlecode.com/files/gaeuni_1.1.0_screenshot.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;A pesar que voy empezado con las pruebas unitarias de App Engine, encontré una utileria que permite ejecutarlas y obtener resultados visuales inmediatos, se llama &lt;a href="http://code.google.com/p/gaeunit/"&gt;gaeunit &lt;/a&gt; y utilizarla es muy facil.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Se necesita copiar el archivo gaeunit.py a la carpeta raíz del proyecto&lt;br /&gt;&lt;li&gt; Se crea una carpeta "test"&lt;br /&gt;&lt;li&gt; Se crean las pruebas en tantas clases y archivos sean necesarios (siempre en la carpeta test) sin olvidar que los métodos deben iniciar con la palabra test&lt;br /&gt;&lt;li&gt; Para ejecutarlos entrar a http://localhost:puerto/test y listo&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-6029568101512340062?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/6029568101512340062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=6029568101512340062' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6029568101512340062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6029568101512340062'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2009/08/pruebas-unitarias-con-app-engine.html' title='Pruebas unitarias con App Engine'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2366826911919662196</id><published>2009-08-06T09:55:00.000-07:00</published><updated>2009-08-06T10:06:30.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Limitantes App Engine</title><content type='html'>&lt;p&gt;Despues de trabajar un cierto tiempo en un &lt;a href="http://archivo-medico-main.appspot.com/"&gt;proyecto mas completo&lt;/a&gt; encontre las siguientes limitantes en App Engine:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;No existe LIKE para las consultas&lt;/li&gt;&lt;li&gt;No existe OR para las consultas&lt;/li&gt;&lt;li&gt;No es posible concatenar operadores &gt; y/o &lt;&gt; &lt;li&gt;Las consultas son Case Sensitive&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2366826911919662196?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2366826911919662196/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2366826911919662196' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2366826911919662196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2366826911919662196'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2009/08/limitantes-app-engine.html' title='Limitantes App Engine'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-92799708017259403</id><published>2008-11-14T09:51:00.000-08:00</published><updated>2008-11-14T09:59:03.402-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Pasar web django de Windows a Linux</title><content type='html'>Al momento de pasar un proyecto desarrollado en Windows al servidor de producción en Linux (ubuntu 8.04) ocurren dos problemas despues de instalar django, apache, mod-python y el gestor de base de datos.&lt;br /&gt;Al momento de configurar el archivo httpd.conf (que se encuentra en /etc/apache2) e iniciar apache (sudo /etc/init.d/apache2 stop) en el browser ocurren dos tipos de errores:&lt;br /&gt;&lt;br /&gt;1.- Al entrar al sitio no reconoce el archivo de configuración de Django:&lt;br /&gt;ImportError: Could not import settings 'moneyxchange.settings' (Is it on sys.path? Does it have syntax errors?): No module named moneyxchange.settings&lt;br /&gt;&lt;br /&gt;2.- Al tratar de ver las imagenes y/o archivos css o js se presenta el siguiente error:&lt;br /&gt;You don't have permission to access....&lt;br /&gt;&lt;br /&gt;La Solución es poner permisos minimo de 755 en los archivos:&lt;br /&gt;sudo chmod 755 -R  $HOME/web/directorio/applicacion/django&lt;br /&gt;&lt;br /&gt;reiniciar apache y listo...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-92799708017259403?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/92799708017259403/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=92799708017259403' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/92799708017259403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/92799708017259403'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/11/pasar-web-django-de-windows-linux.html' title='Pasar web django de Windows a Linux'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1909409578639372922</id><published>2008-10-17T08:18:00.000-07:00</published><updated>2008-10-17T08:21:57.459-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Relaciones y modelados de objetos con App Engine</title><content type='html'>Finalmente, una luz en el camino, &lt;a href="http://daily.profeth.de/"&gt;Joscha Feth&lt;/a&gt; publico &lt;a href="http://daily.profeth.de/2008/04/er-modeling-with-google-app-engine.html"&gt;una entrada donde se explica&lt;/a&gt; los diferentes tipos de relaciones entre objetos (y su persistencia en el datastore) y lo mejor de todo, ¡¡con ejemplos!!&lt;div&gt;Una joya..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1909409578639372922?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1909409578639372922/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1909409578639372922' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1909409578639372922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1909409578639372922'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/10/relaciones-y-modelados-de-objetos-con.html' title='Relaciones y modelados de objetos con App Engine'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5907213999722182554</id><published>2008-10-13T10:33:00.000-07:00</published><updated>2008-10-13T10:44:53.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Django vs Google App Engine</title><content type='html'>Después de mi enamoramiento de &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;, logre conseguir una cuenta para el servicio &lt;a href="http://appengine.google.com/"&gt;App Engine de google&lt;/a&gt;, con lo cual pensé iniciar &lt;a href="http://ubicanegocios.appspot.com/"&gt;una página como prueba de concepto&lt;/a&gt; de esta tecnología. Pero después de pelearme con la &lt;a href="http://code.google.com/appengine/docs/"&gt;API de google y su básica documentación&lt;/a&gt;, sufrir la curva de aprendizaje y darle vueltas y vueltas al código de Django para buscar porque no puedo serializar los objetos del datastore con el serializers.serialize(obj) (respuesta: porque los modelos del datastore no son compatibles –entiéndase con esto que no tienen todas las propiedades- con los objetos de los modelos de Django) me queda un sabor agridulce, dulce porque me ha permitido conocer un poco más de jquery, json y javascript, pero amargo en el sentido que veo poco Django en App Engine, aparte de los template es poco lo que puedo utilizar, extraño el administrador de Django, la serialización de objetos, el poder crear sesiones y no se si pueda utilizar los shorcuts.&lt;br /&gt;Pero a favor de App engine  esta que tengo un entorno de desarrollo/producción gratuito.&lt;br /&gt;Aún es poco lo desarrollado, pero se puede descargar &lt;a href="http://code.google.com/p/ubicanegocios/"&gt;el código desde google hosting&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5907213999722182554?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5907213999722182554/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5907213999722182554' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5907213999722182554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5907213999722182554'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/10/django-vs-google-app-engine.html' title='Django vs Google App Engine'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2371378664914396637</id><published>2008-09-19T16:33:00.000-07:00</published><updated>2008-09-19T16:42:02.409-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django performance tips (Traducción)</title><content type='html'>&lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;/p&gt;&lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Tomado del blog de Jacob Kaplan Moss del post “&lt;a href="http://www.jacobian.org/writing/2005/dec/12/django-performance-tips/"&gt;Django performance tips&lt;/a&gt;” &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Usa un servidor de medios (imágenes, mp3, etc.) por separado&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;text-align:justify;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Django de forma deliberada no sirve media, y esta diseñado de tal manera que debes de realizarlo tu mismo. Si intentas utilizar la misma instancia de apache para servir media y la aplicación de Django, estarás matando el desempeño. Apache reutiliza procesos entre cada petición, así que una vez que un proceso captura todo el código y librerías de Django, estos se quedan en memoria. Si no usas ese proceso para servir una petición de Django, todo el overhead de memoria se esta desperdiciando.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;text-align:justify;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Así que, configura tus archivos de media para ser servidos por un web Server completamente diferente. Idealmente, este se encontraría físicamente en una máquina diferente corriendo un servidor web de alto desempeño como lighttpd o tux. Si no se puede costear una máquina independiente, al menos las peticiones de los archivos de media debe servirse en un proceso diferente en la misma máquina.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Usa un servidor de base de datos independiente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;text-align:justify;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Si puede ser costeado, instala tu servidor de base de datos en una máquina independiente también. Que Apache y PosgreSQL (o MySQL o cualquier otro) compitan por los recursos del sistema de forma frecuente es una mala idea. Un servidor de base de datos aislado — idealmente, uno con una gran cantidad de RAM y discos rápidos (10k o mayor)— mejorará significativamente el numero de visitas que es posible atender.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Usa PostgreSQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Probablemente esto provoque tumultos en la comunidad MySQL, pero en mi experiencia personal (en este caso de Jacob Kaplan-Moss) PostgreSQL es mucho mas rápido que MySQL en prácticamente cualquier caso.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;No existe “demasiada RAM”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;text-align:justify;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Incluso las memorias RAM más costosas rondan sobre los $200 &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;dólares por gigabyte. Lo cual es mucho mas barato que el costo de horas de programación. Adquiere tanta RAM como puedas, y después, compra un poco más.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;text-align:justify;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Procesadores rápidos realmente no mejoran en gran medida el desempeño; la mayoría de los web servers gastan cerca del 90% de su tiempo en IO. Tan pronto como se inicie el swap, el desempeño caerá. Discos más rápidos mejoran ligeramente la situación, pero son mucho más caros que la RAM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Si tienes múltiples servidores, el primer lugar para colocar la RAM es en el servidor de base de datos. Si puedes costearlo coloca tanta memoria RAM para que pueda colocarse en ella la base de datos completa. &lt;/span&gt;&lt;span lang="EN-US" style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Posteriormente coloca la RAM en tu web server. La situación ideal es aquella donde no sucedan swaps — nunca. Si es posible llegar a este punto, se podrá soportar cargas de tráfico normal sin sobresaltos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Apaga KeepAlive&lt;/span&gt;&lt;span lang="EN-US" style="font-size:15.0pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;No entiendo como trabaja KeepAlive, pero marcado el parametro como off en nuestros servidores Django (nuevamente, son los servidores de Jacob Kaplan-Moss) el desempeño se incrementa en alrededor de 50%. Por supuesto, no hagas esto si el mismo servidor esta proporcionando acceso a los archivos de media … Pero no estas haciendo esto verdad?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l0 level1 lfo2; tab-stops:list 36.0pt"&gt;&lt;span style="font-size:12.5pt; font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol; color:#1F1409"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Agregado del traductor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.2pt;margin-right:0cm;margin-bottom:4.2pt;margin-left: 0cm"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:9.0pt;font-family: Tahoma;color:#666666"&gt;El parámetro KeepAlive de Apache (todas las versiones) controla el que una conexión siga abierta después de que un cliente termine una petición&lt;/span&gt;. &lt;/span&gt;&lt;span style="font-size:9.0pt;font-family:Tahoma; color:#666666"&gt;Normalmente, Apache viene con los siguientes valores:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.2pt;margin-right:0cm;margin-bottom:4.2pt;margin-left: 35.4pt"&gt;&lt;span style="font-size:9.0pt;font-family:Tahoma;color:#666666"&gt;KeepAlive On&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.2pt;margin-right:0cm;margin-bottom:4.2pt;margin-left: 35.4pt"&gt;&lt;span style="font-size:9.0pt;font-family:Tahoma;color:#666666"&gt;KeepAliveTimeout 15&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.2pt;margin-right:0cm;margin-bottom:4.2pt;margin-left: 35.4pt"&gt;&lt;span style="font-size:9.0pt;font-family:Tahoma;color:#666666"&gt;MaxKeepAliveRequest 100&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.2pt;margin-right:0cm;margin-bottom:4.2pt;margin-left: 0cm"&gt;&lt;span style="font-size:9.0pt;font-family:Tahoma;color:#666666"&gt;El primer valor debe quedar como (si, así es) Off en el servidor Apache que sirve las peticiones de Django&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;&lt;span lang="EN-US" style="font-size:15.0pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;   color:#1F1409;mso-ansi-language:EN-US"&gt;Usa&lt;/span&gt;&lt;/st1:place&gt;&lt;/st1:country-region&gt;&lt;span lang="EN-US" style="font-size:15.0pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409;mso-ansi-language:EN-US"&gt; memcached&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Aunque Django tiene soporte para multiples &lt;a href="http://www.djangoproject.com/documentation/cache/#setting-up-the-cache"&gt;backends de cache&lt;/a&gt;, ninguno se desempeña tan bien como &lt;a href="http://www.danga.com/memcached/"&gt;memcached&lt;/a&gt;. Ante la necesidad de cache, hazte un favor y no juegues con los otros backends; ve directamente con memcached.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="margin-top:12.0pt;margin-right:0cm;margin-bottom:0cm;margin-left: 0cm;margin-bottom:.0001pt;line-height:18.4pt"&gt;&lt;span style="font-size:15.0pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409"&gt;Optimiza, optimiza, optimiza&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span style="font-size:12.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;Es probable que las opciones por defecto para tu servidor web, motor de base de datos, o la máquina no están optimizados tan bien como podrían estar. Esta lista esta distante de ser completa, pero estos son algunos de los recursos que han hecho a mis cosas (si, las cosas de Jacob Kaplan-Moss) gritar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                    &lt;a href="http://www.revsys.com/writings/postgresql-performance.html"&gt; &lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="http://www.revsys.com/writings/postgresql-performance.html"&gt;Performance Tuning PostgreSQL&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;by Frank Wiles &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt; font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext;text-decoration:none;text-underline: none"&gt;&lt;a href="http://www.bookpool.com/sm/0596003064"&gt;High Performance MySQL&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                    &lt;a href="http://www.powerpostgresql.com/PerfList"&gt; &lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt; font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext;text-decoration:none;text-underline: none"&gt;&lt;a href="http://www.powerpostgresql.com/PerfList"&gt;Power PostgreSQL performance tips&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.powerpostgresql.com/PerfList"&gt;.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;a href="http://www.powerpostgresql.com/Downloads/annotated_conf_80.html"&gt;The&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt;&lt;a href="http://www.powerpostgresql.com/Downloads/annotated_conf_80.html"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="http://www.powerpostgresql.com/Downloads/annotated_conf_80.html"&gt;annotated postgresql.conf&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.powerpostgresql.com/Downloads/annotated_conf_80.html"&gt;.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;a href="http://archives.postgresql.org/pgsql-performance/"&gt;The&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt;&lt;a href="http://archives.postgresql.org/pgsql-performance/"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="http://archives.postgresql.org/pgsql-performance/"&gt;postgresql-performance&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt;&lt;a href="http://archives.postgresql.org/pgsql-performance/"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;&lt;a href="http://archives.postgresql.org/pgsql-performance/"&gt;mailing list.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2004/02/05/lamp_tuning.html"&gt;ONLamp’s&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2004/02/05/lamp_tuning.html"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2004/02/05/lamp_tuning.html"&gt;Introducing LAMP Tuning Techniques&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2004/02/05/lamp_tuning.html"&gt;.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="EN-US" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="http://alumnus.caltech.edu/~dank/fixing-overloaded-web-server.html"&gt;Fixing an overloaded web server&lt;/a&gt;&lt;/span&gt;&lt;a href="http://alumnus.caltech.edu/~dank/fixing-overloaded-web-server.html"&gt;.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:9.0pt; margin-left:18.0pt;text-indent:-18.0pt;line-height:18.4pt;mso-list:l1 level1 lfo1; tab-stops:list 36.0pt"&gt;&lt;span lang="ES-MX" style="font-size: 10.0pt;mso-bidi-font-size:11.5pt;font-family:Symbol;mso-fareast-font-family: Symbol;mso-bidi-font-family:Symbol;color:#1F1409"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;                     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt; font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:EN-US"&gt;&lt;a href="irc://irc.freenode.net/apache"&gt;The&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US"&gt;&lt;a href="irc://irc.freenode.net/apache"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409; mso-ansi-language:EN-US"&gt;&lt;span style="font-size:12.0pt;font-family:&amp;quot;Times New Roman&amp;quot;;color:windowtext; text-decoration:none;text-underline:none"&gt;&lt;a href="irc://irc.freenode.net/apache"&gt;#apache IRC channel&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="font-size:11.5pt;font-family:&amp;quot;Lucida Sans Unicode&amp;quot;; color:#1F1409"&gt;&lt;a href="irc://irc.freenode.net/apache"&gt;.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left: 0cm;line-height:18.4pt"&gt;&lt;span lang="ES-MX" style="font-size:12.5pt;font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;color:#1F1409;mso-ansi-language:ES-MX"&gt;Nuevamente, sin ser todos, estos recursos ayudaran a &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;cualquiera con la necesidad de optimizar un sitio desarrollado con Django.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2371378664914396637?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2371378664914396637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2371378664914396637' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2371378664914396637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2371378664914396637'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/09/django-performance-tips-traduccin.html' title='Django performance tips (Traducción)'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-459614208216767451</id><published>2008-09-08T16:48:00.000-07:00</published><updated>2008-09-08T16:51:56.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Migrar proyectos de Django 0.96 a 1.0</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Con la &lt;a href="http://www.djangoproject.com/weblog/2008/sep/03/1/"&gt;salida de la versión 1.0 &lt;/a&gt;de Django hay algunos pequeños (y molestos) detalles que hay que modificar en los proyectos para evitar que estos no se puedan ejecutar.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;&lt;a href="http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide/#the-admin"&gt;Aquí esta la guía oficia&lt;/a&gt;l que hay que tomar en cuenta para migrar desde la versión &lt;st1:metricconverter productid="0.96 a" st="on"&gt;0.96 a&lt;/st1:metricconverter&gt; 1.0&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-459614208216767451?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/459614208216767451/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=459614208216767451' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/459614208216767451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/459614208216767451'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/09/migrar-proyectos-de-django-096-10.html' title='Migrar proyectos de Django 0.96 a 1.0'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-911302490825295032</id><published>2008-09-01T11:43:00.000-07:00</published><updated>2008-09-01T11:45:22.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><title type='text'>db4o y Linq</title><content type='html'>Porque no solo de Python y Django vive el hombre, aquí unos links para empaparse de Linq aplicandolo a db4o&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/database/LINQ_for_db4o.aspx"&gt;Introducción al tema&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Querying/LINQ"&gt;Busquedas con Linq&lt;/a&gt; (Detalles más finos)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-911302490825295032?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/911302490825295032/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=911302490825295032' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/911302490825295032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/911302490825295032'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/09/db4o-y-linq.html' title='db4o y Linq'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2612255686223742768</id><published>2008-08-28T12:52:00.000-07:00</published><updated>2008-08-28T12:58:25.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Modificar Password Admin en Django</title><content type='html'>Para cambiar el password del usuario administrador de Django es necesario seguir los siguientes pasos:&lt;br /&gt;&lt;br /&gt;1. Posicionarse en el directorio del sitio web (desde la consola)&lt;br /&gt;2. Ejecutar el Shell de la siguiente manera python manage.py shell&lt;br /&gt;3. Importar la tabla User con la instrucción from django.contrib.auth.models import User&lt;br /&gt;4. Almacenar todos los usuarios en una variable: usuario=User.object.all()&lt;br /&gt;5. Si no recuerdas el nombre de usuario se imprime simplemente escribiendo la variable&lt;br /&gt;6. Modificar el usuario en cuestión: usuario[posición].set_password(‘123’)&lt;br /&gt;7. Almaceno los cambios: usuario[posición].save()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2612255686223742768?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2612255686223742768/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2612255686223742768' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2612255686223742768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2612255686223742768'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/08/modificar-password-admin-en-django.html' title='Modificar Password Admin en Django'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7511679768349381045</id><published>2008-08-18T08:03:00.000-07:00</published><updated>2008-08-18T08:11:53.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='la vanguardia'/><title type='text'>Entre la laptop y el grial</title><content type='html'>El periódico español La vanguardia ha publicado un artículo en su sección cultural sobre los geek, con un titulo bastante acertado “&lt;a href="http://www.lavanguardia.es/lv24h/20080817/53522283776.html"&gt;Entre la laptop y el grial&lt;/a&gt;” Muy recomendable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7511679768349381045?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7511679768349381045/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7511679768349381045' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7511679768349381045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7511679768349381045'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/08/entre-la-laptop-y-el-grial.html' title='Entre la laptop y el grial'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-6089865959553643752</id><published>2008-08-08T21:14:00.000-07:00</published><updated>2008-08-08T21:24:31.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Convertir código c# a html</title><content type='html'>Para convertir código c# y vb se puede utilizar la herramienta online &lt;a href="http://www.manoli.net/csharpformat/"&gt;&lt;span style="font-style: italic;"&gt;code format&lt;/span&gt;&lt;/a&gt;, solo es necesario pegar el código y se genera el código html listo para añadirlo, solo es necesario agregar en la cabecera head el link hacía el archivo &lt;a href="http://www.manoli.net/csharpformat/csharp.css"&gt;css &lt;/a&gt;que otorga los colores a las palabras reservadas&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-6089865959553643752?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/6089865959553643752/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=6089865959553643752' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6089865959553643752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6089865959553643752'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/08/convertir-cdigo-c-html.html' title='Convertir código c# a html'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7856031786246894907</id><published>2008-07-01T21:10:00.000-07:00</published><updated>2008-07-01T21:19:00.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ratproxy'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>ratproxy</title><content type='html'>Google libero su herramienta de seguridad &lt;a href="http://code.google.com/p/ratproxy/"&gt;ratproxy&lt;/a&gt;, con ella se puede analizar el trafico de las aplicaciones web, y buscar agujeros de seguridad como XSS o inyecciones de otro tipo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ratproxy.googlecode.com/files/ratproxy-screen.png"&gt;Aquí un screenshot&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Para interpretar los resultados, la documentación hace mención a las guías de &lt;a href="http://www.owasp.org/"&gt;OWASP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7856031786246894907?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7856031786246894907/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7856031786246894907' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7856031786246894907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7856031786246894907'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/07/ratproxy.html' title='ratproxy'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5496232734279554171</id><published>2008-06-07T09:08:00.000-07:00</published><updated>2008-06-07T09:11:51.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Errata Django book</title><content type='html'>Bueno, no es precisamente una errata, es solo el libro de Django completo traducido de su versión en &lt;a href="http://www.djangobook.com/"&gt;línea &lt;/a&gt;y &lt;a href="http://www.amazon.com/Definitive-Guide-Django-Development-Right/dp/1590597257/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1212855018&amp;amp;sr=1-1"&gt;publicado &lt;/a&gt;por Apress,&lt;a href="http://humitos.homelinux.net/%7Ehumitos/djangobook/"&gt; la liga aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5496232734279554171?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5496232734279554171/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5496232734279554171' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5496232734279554171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5496232734279554171'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/06/errata-django-book.html' title='Errata Django book'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5124830161318817240</id><published>2008-06-04T14:56:00.000-07:00</published><updated>2008-06-04T15:03:16.637-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>libro django</title><content type='html'>He encontrado un interesante (e irreverente) &lt;a href="http://the-geek.org/django-book"&gt;libro de Django&lt;/a&gt; para comenzar a utilizar este framework para python, por cierto, en español.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5124830161318817240?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5124830161318817240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5124830161318817240' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5124830161318817240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5124830161318817240'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/06/libro-django.html' title='libro django'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1233702349652273835</id><published>2008-06-02T21:07:00.000-07:00</published><updated>2008-06-02T21:08:12.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod-mono'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Manual rápido para la configuración de Apache y Mod_mono en Ubuntu Hardy</title><content type='html'>Manual rápido para la configuración de Apache y Mod_mono en Ubuntu Hardy Heron (8.04) asumiendo que ya esta instalado mono y apache&lt;br /&gt;&lt;br /&gt;1.-Bajar e instalar mod-mono&lt;br /&gt;&lt;br /&gt;sudo apt-get install libapache2-mod-monosudo apt-get install libapache2-mod-mono&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.- Bajar e instalar el componente para ASP 2.0&lt;br /&gt;&lt;br /&gt;sudo apt-get install mono-apache-server2&lt;br /&gt;&lt;br /&gt;3.- Activar el modulo&lt;br /&gt;&lt;br /&gt;sudo a2enmod mod_mono&lt;br /&gt;&lt;br /&gt;4.- Selecciona mod_mono2 por default modificando el archivo mod_mono.conf que se encuentra en /etc/apache2/mods-enabled, inhibiendo la linea anterior y quitando la marca de comentario a la siguiente línea&lt;br /&gt;&lt;br /&gt;Include /etc/mono-server2/mono-server2-hosts.conf&lt;br /&gt;&lt;br /&gt;5.- Modifica el Path del archivo mono-server2-hosts.conf que se encuentra en /etc/mono-server2 cambiando "MonoServerPath" con el siguiente valor:&lt;br /&gt;&lt;br /&gt;  MonoServerPath default  /usr/bin/mod-mono-server2&lt;br /&gt;&lt;br /&gt;6.- Reiniciar Apache&lt;br /&gt;&lt;br /&gt;sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;7.- Si todo sale bien el archivo de log de Apache que se ubica en /var/log/apache/error.log tendra la siguiente línea:&lt;br /&gt;&lt;br /&gt;[Fecha y hora] [notice] Apache/2.2.8 (Ubuntu) mod_mono/1.2.5 configured -- resuming normal operations&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1233702349652273835?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1233702349652273835/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1233702349652273835' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1233702349652273835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1233702349652273835'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/06/manual-rpido-para-la-configuracin-de.html' title='Manual rápido para la configuración de Apache y Mod_mono en Ubuntu Hardy'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8728239618410281883</id><published>2008-05-07T08:41:00.000-07:00</published><updated>2008-05-07T08:43:52.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='procesos'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Matar procesos en windows</title><content type='html'>Desde consola (DOS) la manera de matar procesos para windows es la siguiente&lt;br /&gt;&lt;br /&gt;1.- Ejecutar el comando Tasklist.exe para encontrar el ID del proceso&lt;br /&gt;2.- Una vez encontrado el ID ejecutar el comando ntsd.exe de la siguiente manera:&lt;br /&gt;   ntsd -p IDdelProceso -c "q"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8728239618410281883?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8728239618410281883/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8728239618410281883' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8728239618410281883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8728239618410281883'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/05/matar-procesos-en-windows.html' title='Matar procesos en windows'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5049730281996079660</id><published>2008-04-18T07:31:00.000-07:00</published><updated>2008-04-18T07:39:51.243-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Selenium</title><content type='html'>Una gran herramienta para automatizar pruebas es &lt;a href="http://selenium-core.openqa.org"&gt;Selenium&lt;/a&gt;, liberada bajo la licencia Apache 2.0 permite ejecutar (y almacenar) pruebas sobre firefox, ie y safari, además permite depurar las pruebas con breakpoints y reutilizarlas, además es increiblemente sencilla de usar.&lt;br /&gt;&lt;a href="http://wiki.openqa.org/download/attachments/400/Selenium+IDE.swf?version=1"&gt;Aquí &lt;/a&gt;un video de Selenium en acción grabando pruebas.&lt;br /&gt;&lt;br /&gt;Y si, es compatible con mono (corre sobre linux, windows y mac)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5049730281996079660?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5049730281996079660/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5049730281996079660' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5049730281996079660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5049730281996079660'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/04/selenium.html' title='Selenium'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8288560227855802429</id><published>2008-04-01T16:50:00.000-07:00</published><updated>2008-04-01T17:15:10.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><title type='text'>Vitamin d 1.0</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;&lt;a href="http://www.vitamindinc.com/"&gt;Vitamin D&lt;/a&gt;, herramienta para probar (y ahora) diseñar redes HTM ha sido liberada en su versión 1.0, que incluye una licencia de investigación valida hasta 30/Sep/08. Para utilizarla es necesario Nupic 1.5&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Esta herramienta es de gran ayuda para analizar y obtener información más gráfica acerca de las redes que se desarrollan, además ahora permite crearlas sin tocar código d&lt;/span&gt;&lt;span lang="ES-MX"&gt;e python.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Aquí unos screenshots&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.vitamindinc.com/images/icon1_screen1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.vitamindinc.com/images/icon1_screen1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.vitamindinc.com/images/icon1_screen3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.vitamindinc.com/images/icon1_screen3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8288560227855802429?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8288560227855802429/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8288560227855802429' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8288560227855802429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8288560227855802429'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/04/vitamin-d-10.html' title='Vitamin d 1.0'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3363503360477276538</id><published>2008-03-24T11:53:00.001-07:00</published><updated>2008-04-01T08:04:16.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Web services en Python con SOAP y clientes en C#</title><content type='html'>Para poder consumir servicios web que utilizan &lt;a href="http://es.wikipedia.org/wiki/SOAP"&gt;SOAP &lt;/a&gt;desarrollados en Python el primer paso es crear el servicio web. Este servicio simple crea un método para dos números y escucha las peticiones por el puerto 8082.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     //Servidor básico SOAP en python&lt;br /&gt;     import SOAPpy&lt;br /&gt;     def suma(x,y):&lt;br /&gt;       return x+y&lt;br /&gt;     server = SOAP.SOAPServer(("localhost", 8082))&lt;br /&gt;     server.registerFunction(suma)&lt;br /&gt;     server.serve_forever()&lt;br /&gt;     //Fin Servidor básico SOAP en Python&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En el código en C# es necesario conocer la estructura XML que genera el método en python, y si no se domina el protocolo SOAP se puede obtener ejecutando el siguiente script de python&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//script para conocer el XML del método&lt;br /&gt;     &gt;&gt;&gt; from SOAPpy import SOAPProxy&lt;br /&gt;     &gt;&gt;&gt; server = SOAPProxy('http://localhost:8082/modulo') &lt;br /&gt;     &gt;&gt;&gt; server.config.dumpSOAPOut = 1       //imprime el XML que necesitas  &lt;---         &gt;&gt;&gt; server.config.dumpSOAPIn = 1        //el XML con el resultado&lt;br /&gt;     &gt;&gt;&gt; Suma = server.Metodo('27502')//ejecuto el metodo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Esto arroja algo similar a esto:&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/R-f6H9P1NCI/AAAAAAAAAD8/-9bremzPbhk/s1600-h/xml.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 367px; height: 128px;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/R-f6H9P1NCI/AAAAAAAAAD8/-9bremzPbhk/s320/xml.JPG" alt="" id="BLOGGER_PHOTO_ID_5181384910920037410" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Que se utilizará en el archivo Datos.XML en el siguiente código&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;namespace pdcPythonWS&lt;br /&gt;{&lt;br /&gt; class MainClass&lt;br /&gt; {&lt;br /&gt;     public static void Main(string[] args)&lt;br /&gt;     {&lt;br /&gt;            ConexionSOAP conn=new ConexionSOAP();&lt;br /&gt;            //Conexion a traves de SOAP&lt;br /&gt;            conn.Conecto();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public class ConexionSOAP&lt;br /&gt; {&lt;br /&gt;     public void ConectoVer2()&lt;br /&gt;     {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                WebRequest request = WebRequest.&lt;br /&gt;                     Create("http://localhost:8082/");&lt;br /&gt;                request.Method = "POST";&lt;br /&gt;                request.Headers.Add("SOAPAction", "\"\"");&lt;br /&gt;                request.ContentType = "text/xml";&lt;br /&gt;&lt;br /&gt;                Stream stm = request.GetRequestStream();&lt;br /&gt;&lt;br /&gt;                string Archivo =&lt;br /&gt;  "C:\\Documents and Settings\\"+&lt;br /&gt;                      "Administrador\\Mis documentos\\"+&lt;br /&gt;                      "SharpDevelop Projects\\"+&lt;br /&gt;                      "pdcPythonWS\\Datos.xml";&lt;br /&gt;                      //En este archivo se define la&lt;br /&gt;                      //estructura XML del método SOAP&lt;br /&gt;&lt;br /&gt;                XmlDocument doc = new XmlDocument();&lt;br /&gt;                doc.Load(Archivo);&lt;br /&gt;                doc.Save(stm);&lt;br /&gt;                stm.Close();&lt;br /&gt;&lt;br /&gt;                WebResponse respuesta = request.&lt;br /&gt;                    GetResponse();&lt;br /&gt;                stm = respuesta.GetResponseStream();&lt;br /&gt;&lt;br /&gt;                StreamReader sr = new StreamReader(stm);&lt;br /&gt;                Console.WriteLine&lt;br /&gt;                    ("Resultado2:" + sr.ReadToEnd());&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(ex.Message);&lt;br /&gt;            }&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3363503360477276538?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3363503360477276538/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3363503360477276538' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3363503360477276538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3363503360477276538'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/03/web-services-en-python-con-soap-y.html' title='Web services en Python con SOAP y clientes en C#'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/R-f6H9P1NCI/AAAAAAAAAD8/-9bremzPbhk/s72-c/xml.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5859086044309852802</id><published>2008-03-17T13:43:00.001-07:00</published><updated>2008-03-17T13:44:01.781-07:00</updated><title type='text'>Fuera Hugo Sanchez del Tri</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img218.imageshack.us/img218/2719/firmazg0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://img218.imageshack.us/img218/2719/firmazg0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5859086044309852802?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5859086044309852802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5859086044309852802' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5859086044309852802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5859086044309852802'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/03/fuera-hugo-sanchez-del-tri.html' title='Fuera Hugo Sanchez del Tri'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2526481439413259893</id><published>2008-03-04T20:30:00.000-08:00</published><updated>2008-03-04T20:34:09.990-08:00</updated><title type='text'>Revista Software Libre</title><content type='html'>Bajo el slogan "software libre hecho revista" la revista &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.revista-sl.org/"&gt;software libre&lt;/a&gt;&lt;/span&gt; tiene 10 números (muy buenos por cierto) y tres años de antiguedad, una buena lectura alejada de las presiones comerciales.&lt;br /&gt;Altamente recomendable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2526481439413259893?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2526481439413259893/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2526481439413259893' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2526481439413259893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2526481439413259893'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/03/revista-software-libre.html' title='Revista Software Libre'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7308976183043528623</id><published>2008-03-04T07:23:00.000-08:00</published><updated>2008-04-01T08:03:55.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml-rpc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>Comunicando Python y c#</title><content type='html'>Aquí unos ejemplos para comunicar métodos entre Python con interfaces de c# a través de &lt;a href="http://es.wikipedia.org/wiki/XML-RPC"&gt;XML-RPC&lt;/a&gt;&lt;a href="http://es.wikipedia.org/wiki/XML-RPC"&gt;,&lt;/a&gt; para ello es necesario la libería &lt;a href="http://www.xml-rpc.net/"&gt;XML-RPC&lt;/a&gt;&lt;a href="http://www.xml-rpc.net/"&gt; .Net&lt;/a&gt; de Charles Cook&lt;br /&gt;El código de python esta basado en el documento de &lt;a href="http://www.blogger.com/www.sicem.biz/docs/tutoriales/WebServicesPython.doc"&gt;Ernesto Revilla&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;#Inicio código Python&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color: rgb(192, 100, 100);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;multiplica&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y&lt;/span&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;Servidor&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;from&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;SimpleXMLRPCServer&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;SimpleXMLRPCServer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;s&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SimpleXMLRPCServer&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"localhost"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;8082&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;s&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;register_funtion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;multiplica&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;s&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;serve_forever&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;__name__&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;'__main__'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"Iniciando servicio XML-RPC"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Servidor&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;#Fin código de python&lt;br /&gt;&lt;br /&gt;en el proyecto de c# hay que incluir la referencia CookComputing.XmlRpcV2.dll (la versión 1 es para .Net 1.0)&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;//inicio código c#&lt;/span&gt;&lt;br /&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; pdcPythonWS&lt;br /&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;br /&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; MainClass&lt;br /&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    {&lt;br /&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;br /&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                    ConectoVer3 proxy = XmlRpcProxyGen.&lt;br /&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                  Create&amp;lt;ConectoVer3&amp;gt;();&lt;br /&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; res =proxy.Mult(30, 20);&lt;br /&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                    Console.WriteLine(res.ToString());&lt;br /&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    Console.ReadLine();&lt;br /&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        }&lt;br /&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    }&lt;br /&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;       &lt;br /&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;       [XmlRpcUrl(&lt;span class="str"&gt;"http://localhost:8081/multiplica"&lt;/span&gt;)]&lt;br /&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ConectoVer3:IXmlRpcProxy&lt;br /&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;       {&lt;br /&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;           [XmlRpcMethod(&lt;span class="str"&gt;"multiplica"&lt;/span&gt;)]&lt;br /&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; Mult(&lt;span class="kwrd"&gt;int&lt;/span&gt; x, &lt;span class="kwrd"&gt;int&lt;/span&gt; y);&lt;br /&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;       }&lt;br /&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;}&lt;br /&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;//fin código c#&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7308976183043528623?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7308976183043528623/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7308976183043528623' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7308976183043528623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7308976183043528623'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/03/comunicando-python-y-c.html' title='Comunicando Python y c#'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1057387106679841413</id><published>2008-02-15T08:23:00.000-08:00</published><updated>2008-02-15T08:25:14.565-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='HTM'/><title type='text'>Red HTM con la version 1.5 de Nupic</title><content type='html'>Con el cambio de versión fue necesario realizar unas pequeñas modificaciones al (pequeño) código que genera la red para el problema de bolsas de aire.&lt;br /&gt;&lt;br /&gt;Este es el código con los cambios comentados:&lt;br /&gt;&lt;br /&gt; &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color:#004080;"&gt;"""&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span lang="ES-MX"&gt;## @file&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span lang="ES-MX"&gt;Esta clase genera la Red para las bolsas de aire&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;"""&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="color:#C00000;"&gt;from&lt;/span&gt; &lt;span style="color:#000000;"&gt;nupic&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;network&lt;/span&gt; &lt;span style="color:#C00000;"&gt;import&lt;/span&gt; &lt;span style="color:#0000C0;"&gt;*&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="color:#C00000;"&gt;from&lt;/span&gt; &lt;span style="color:#000000;"&gt;nupic&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;network&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;simpledatainterface&lt;/span&gt; &lt;span style="color:#C00000;"&gt;import&lt;/span&gt; &lt;span style="color:#000000;"&gt;WideDataInterface&lt;/span&gt; &lt;span style="color:#008000;"&gt;#Cambio en la version 1.5&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="color:#C00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;CreaRed&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;SimpleHTM&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:#000000;"&gt;levelParams&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;=&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;[&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX"&gt;&lt;span style="color:#0000C0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 0 El Sensor de entrada!!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span lang="ES-MX"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="color:#0000C0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 1&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;         &lt;/span&gt;&lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'bottomUpOut'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'gaussian'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'sigma'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;0.4&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxDistance'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;0.05&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'symmetricTime'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#000000;"&gt;True&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'transitionMemory'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'topNeighbors'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxGroupSize'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;1024&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'temporalPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 2&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;4&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'bottomUpOut'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;4&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'product'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'symmetricTime'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#000000;"&gt;True&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'transitionMemory'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'topNeighbors'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxGroupSize'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;1024&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'temporalPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 3&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'product'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#004080;"&gt;'mapperAlgorithm'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;WideDataInterface&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;span style="color:#004080;"&gt;'Datos/__Categorias__.txt'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'Datos/Datos_Entrenamiento%d.txt'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;numDataFiles&lt;/span&gt; &lt;span style="color:#0000C0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080C0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;#Cambio SimpleDataInterface por WideDataInterface en la version 1.5&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;createNetwork&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;train&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="color:#C00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;__name__&lt;/span&gt; &lt;span style="color:#0000C0;"&gt;==&lt;/span&gt; &lt;span style="color:#004080;"&gt;'__main__'&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:#C00000;"&gt;print&lt;/span&gt; &lt;span style="color:#004080;"&gt;"Creando la red de AirBag"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoPlainText"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:#000000;"&gt;CreaRed&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000C0;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1057387106679841413?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1057387106679841413/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1057387106679841413' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1057387106679841413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1057387106679841413'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/red-htm-con-la-version-15-de-nupic.html' title='Red HTM con la version 1.5 de Nupic'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2804119435488492667</id><published>2008-02-14T21:54:00.000-08:00</published><updated>2008-02-14T21:58:30.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='HTM'/><title type='text'>Version 1.5 de Nupic</title><content type='html'>&lt;a href="http://www.numenta.com/"&gt;Numenta &lt;/a&gt;libero la versión 1.5 de Nupic, framework para crear redes HTM, y en esta versión incluye la capacidad de hacer inferencias basadas en tiempo (las versiones anteriores solo aplicaban el concepto espacial) cuestión importante ya que es la base de la teoría de Jeff Hawkins, además incluye un nuevo ejemplo de reconocimiento de caracteres OCR que habrá que estudiar con detenimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2804119435488492667?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2804119435488492667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2804119435488492667' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2804119435488492667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2804119435488492667'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/version-15-de-nupic.html' title='Version 1.5 de Nupic'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2987119185882008488</id><published>2008-02-13T21:48:00.000-08:00</published><updated>2008-02-13T21:57:47.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='HTM'/><title type='text'>Santas redes HTM batman!!!</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;Este es el primer acercamiento a la posible red que represente el problema de la tesis, donde se muestra una red dividida en dos grandes segmentos, con nodos que tienen sensores para datos individuales de cada grupo (dichos sensores aún están por definirse completamente)&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;En la etapa de entrenamiento se tomaran las compras de algunos clientes, con sus datos y los datos de sus compras, tomando un registro por cada articulo, y en la etapa de inferencias se tomaran un articulo y se obtendrá la posibilidad de compra de cada cliente en base al&lt;i style=""&gt; conocimiento&lt;/i&gt; adquirido por la red.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;Esta primera red me muestra un esquema que no esta balanceado, ya que posiblemente el nodo &lt;i style=""&gt;clientes&lt;/i&gt; tenga más nodos que su contraparte &lt;i style=""&gt;productos&lt;/i&gt; debido a que la primera (al parecer) contara con mas sensores lo que permite realizar más agrupaciones y conseguir &lt;i style=""&gt;mayor sensibilidad&lt;/i&gt; en la red.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/R7PW6uI7mMI/AAAAAAAAAD0/MmJ4NPOxMGA/s1600-h/Primer_acercamiento.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R7PW6uI7mMI/AAAAAAAAAD0/MmJ4NPOxMGA/s320/Primer_acercamiento.JPG" alt="" id="BLOGGER_PHOTO_ID_5166709501830338754" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2987119185882008488?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2987119185882008488/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2987119185882008488' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2987119185882008488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2987119185882008488'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/santas-redes-htm-batman.html' title='Santas redes HTM batman!!!'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f42Igf6bkrQ/R7PW6uI7mMI/AAAAAAAAAD0/MmJ4NPOxMGA/s72-c/Primer_acercamiento.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3637090953904858496</id><published>2008-02-13T15:41:00.000-08:00</published><updated>2008-02-13T15:43:23.548-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>mono hispano</title><content type='html'>La red de &lt;a href="http://www.mono-hispano.org/"&gt;mono hispano&lt;/a&gt; se encuentra nuevamente al aire, buena noticia para aquellos que quieren programar en mono/linux&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3637090953904858496?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3637090953904858496/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3637090953904858496' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3637090953904858496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3637090953904858496'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/mono-hispano.html' title='mono hispano'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-559240097670300772</id><published>2008-02-06T16:45:00.000-08:00</published><updated>2008-02-06T17:04:10.798-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Script para generar código de python a HTML</title><content type='html'>Encontré &lt;a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52298"&gt;un script&lt;/a&gt; desarrollado por Jürgen Hermann que convierte un arhivo .py (de python) y lo convierte a hmtl formateado, respetando los colores de los editores como IDLE.&lt;br /&gt;El código esta liberado bajo GLP.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"""&lt;br /&gt;  MoinMoin - Python Source Parser&lt;br /&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# Imports&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;cgi&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sys&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;cStringIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;keyword&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#############################################################################&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;### Python Source Parser (does Hilighting)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#############################################################################&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_KEYWORD&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NT_OFFSET&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_TEXT&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NT_OFFSET&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_colors&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NUMBER&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;       &lt;span style="color: rgb(0, 64, 128);"&gt;'#0080C0'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OP&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;           &lt;span style="color: rgb(0, 64, 128);"&gt;'#0000C0'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STRING&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;       &lt;span style="color: rgb(0, 64, 128);"&gt;'#004080'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;COMMENT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;   &lt;span style="color: rgb(0, 64, 128);"&gt;'#008000'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;         &lt;span style="color: rgb(0, 64, 128);"&gt;'#000000'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERRORTOKEN&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;   &lt;span style="color: rgb(0, 64, 128);"&gt;'#FF8080'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;_KEYWORD&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;           &lt;span style="color: rgb(0, 64, 128);"&gt;'#C00000'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;_TEXT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;              &lt;span style="color: rgb(0, 64, 128);"&gt;'#000000'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;Parser&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 64, 128);"&gt;""" Send colored python source.&lt;br /&gt;  """&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;__init__&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sys&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stdout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 64, 128);"&gt;""" Store the source text.&lt;br /&gt;      """&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;strip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;expandtabs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;format&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;formatter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;form&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 64, 128);"&gt;""" Parse and send the colored source.&lt;br /&gt;      """&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# store line offsets in self.lines&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lines&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;'\n'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;not&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;break&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lines&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lines&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;len&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# parse the source and write it&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;text&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;cStringIO&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;StringIO&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'&amp;lt;pre&amp;gt;&amp;lt;font&lt;br /&gt;face="Lucida,Courier New"&amp;gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;readline&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;except&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TokenError&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;ex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;msg&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;ex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;line&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;ex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"&amp;lt;h3&amp;gt;ERROR: %s&amp;lt;/h3&amp;gt;%s\n"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;%&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 0, 0);"&gt;msg&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lines&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'&amp;lt;/font&amp;gt;&amp;lt;/pre&amp;gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;__call__&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktext&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;srow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scol&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;&lt;br /&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;erow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ecol&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 64, 128);"&gt;""" Token handler.&lt;br /&gt;      """&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 128, 192);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(192, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"type"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;tok_name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;&lt;br /&gt;   "text"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktext&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(192, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"start"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;srow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scol&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"end"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;erow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ecol&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;&lt;br /&gt;   "&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# calculate new positions&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;oldpos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;newpos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lines&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;srow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;scol&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newpos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;len&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;toktext&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# handle newlines&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NEWLINE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;tokenize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'\n'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(192, 0, 0);"&gt;return&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# send the original whitespace, if needed&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newpos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;oldpos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;raw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oldpos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;newpos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# skip indenting tokens&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;INDENT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DEDENT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pos&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;newpos&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(192, 0, 0);"&gt;return&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# map token type to a color group&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LPAR&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;and&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OP&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OP&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;elif&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;and&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;keyword&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    iskeyword&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;toktext&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;_KEYWORD&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;color&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;_colors&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;_colors&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_TEXT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;style&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;''&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;toktype&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;token&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERRORTOKEN&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;style&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;' style="border: solid 1.5pt #FF0000;"'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;# send text&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'&amp;lt;font color="%s"%s&amp;gt;'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;%&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;color&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;style&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cgi&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;escape&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;toktext&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'&amp;lt;/font&amp;gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;__name__&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"__main__"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;os&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sys&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"Formatting..."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# open own source&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;source&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;open&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'PythonColor.py'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# write colorized version to "python.html"&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;Parser&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;source&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;open&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;'python.html'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;'wt'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;format&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;None&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;None&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# load HTML page into browser&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;os&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;name&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"nt"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;os&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;system&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"explorer python.html"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;os&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;system&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"netscape python.html &amp;amp;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-559240097670300772?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/559240097670300772/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=559240097670300772' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/559240097670300772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/559240097670300772'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/script-para-generar-cdigo-de-python.html' title='Script para generar código de python a HTML'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3356654705236594787</id><published>2008-02-06T16:15:00.000-08:00</published><updated>2008-02-06T16:44:19.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='HTM'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes neuronales'/><title type='text'>Red HTM para bolsas de aire</title><content type='html'>&lt;span lang="ES-MX"&gt;Siguiendo el tema de la tesis cree una red para determinar que bolsa de aire se debería de abrir dependiendo que sensor se active (ver figura 1)&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/R6pS_uerpqI/AAAAAAAAADc/BoN166lvZhk/s1600-h/Esquema_Red.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/R6pS_uerpqI/AAAAAAAAADc/BoN166lvZhk/s320/Esquema_Red.JPG" alt="" id="BLOGGER_PHOTO_ID_5164031177495652002" border="0" /&gt;&lt;/a&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Figura 1. Esquema de la red&lt;/p&gt;La red más o menos se vería así:&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f42Igf6bkrQ/R6pTWOerpsI/AAAAAAAAADs/Pj067FioZ2g/s1600-h/Esquema_jerarquico.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f42Igf6bkrQ/R6pTWOerpsI/AAAAAAAAADs/Pj067FioZ2g/s320/Esquema_jerarquico.JPG" alt="" id="BLOGGER_PHOTO_ID_5164031564042708674" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;De las 3 bolsas de aire (2 frontales que por simplicidad se abren al mismo tiempo y una por cada lado) definí 7 categorías:&lt;/p&gt;&lt;p class="MsoNormal"&gt;Son 3 bolsas de aire (P Prendida, A Apagada)&lt;br /&gt;____________Delanteras&lt;br /&gt;|   __________Lateral Izquierdo&lt;br /&gt;|  |   ________Lateral Derecho&lt;br /&gt;|  |   |&lt;br /&gt;X X X  Categoría&lt;br /&gt;A A A -&gt; 0&lt;br /&gt;P A A -&gt; 1&lt;br /&gt;A P A -&gt; 2&lt;br /&gt;A A P -&gt; 3&lt;br /&gt;P P A -&gt; 4&lt;br /&gt;P A P -&gt; 5&lt;br /&gt;A P P -&gt; 6&lt;br /&gt;P P P -&gt; 7&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color:#004080;"&gt;"""&lt;br /&gt;## @file&lt;br /&gt;Esta clase genera la Red para las bolsas de aire&lt;br /&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#004080;"&gt;"""&lt;br /&gt;#*********************************************************&lt;br /&gt;# la red seria algo así:&lt;br /&gt;#         X         &amp;lt;-&amp;gt; Nivel 3 (Top Level)&lt;br /&gt;#       / | \&lt;br /&gt;#      /  /\ \&lt;br /&gt;#     /  / \  \&lt;br /&gt;#    /  /   \  \&lt;br /&gt;#   X   X   X  X    &amp;lt;-&amp;gt; Nivel 2&lt;br /&gt;#   /\  /\  /\ /\&lt;br /&gt;#   XX  XX  XX XX   &amp;lt;-&amp;gt; Nivel 1&lt;br /&gt;#********************************************************** &lt;br /&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;from&lt;/span&gt; &lt;span style="color:#000000;"&gt;nupic&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;network&lt;/span&gt; &lt;span style="color:#c00000;"&gt;import&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;CreaRed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;SimpleHTM&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;levelParams&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 0 El Sensor de entrada!!&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 1&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'bottomUpOut'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'gaussian'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'sigma'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0.4&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxDistance'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0.05&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'symmetricTime'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#000000;"&gt;True&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'transitionMemory'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'topNeighbors'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxGroupSize'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1024&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'temporalPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 2&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;4&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'bottomUpOut'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;4&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'product'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'symmetricTime'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#000000;"&gt;True&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'transitionMemory'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'topNeighbors'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;'maxGroupSize'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1024&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'temporalPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;{&lt;/span&gt; &lt;span style="color:#008000;"&gt;# Level 3&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'levelSize'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'spatialPoolerAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'product'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#004080;"&gt;'mapperAlgorithm'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#004080;"&gt;'sumProp'&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;}&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;SimpleDataInterface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#004080;"&gt;'Datos/__Categorias__.txt'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#004080;"&gt;&lt;br /&gt;  'Datos/Datos_Entrenamiento%d.txt'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;numDataFiles&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;8&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;createNetwork&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;net&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;train&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;__name__&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;==&lt;/span&gt; &lt;span style="color:#004080;"&gt;'__main__'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;print&lt;/span&gt; &lt;span style="color:#004080;"&gt;"Creando la red de AirBag"&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;CreaRed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3356654705236594787?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3356654705236594787/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3356654705236594787' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3356654705236594787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3356654705236594787'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/red-htm-para-bolsas-de-aire.html' title='Red HTM para bolsas de aire'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/R6pS_uerpqI/AAAAAAAAADc/BoN166lvZhk/s72-c/Esquema_Red.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8964388191879168509</id><published>2008-02-01T14:33:00.000-08:00</published><updated>2008-02-01T14:46:16.137-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>{ciudad} de los héroes</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Vaya que es bueno Microsoft, ahora golpea donde más duele, directito al ego, con su nueva campaña:&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/R6Of6eerppI/AAAAAAAAADU/3zmVEagt-l0/s1600-h/Publicidad.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/R6Of6eerppI/AAAAAAAAADU/3zmVEagt-l0/s320/Publicidad.JPG" alt="" id="BLOGGER_PHOTO_ID_5162145424859702930" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="ES-MX"&gt;De verdad que buenos mercadologos son, y si alguien quiere ser como ellos le recomiendo el libro de Kotler &lt;i style=""&gt;&lt;a href="http://www.gandhi.com.mx/index.cfm/id/Producto/dept/Libros/pid/280493"&gt;dirección de marketing&lt;/a&gt; &lt;/i&gt;junto con &lt;a style="font-style: italic;" href="http://www.amazon.com/Software-Numbers-Low-Risk-High-Return-Development/dp/0131407287"&gt;software by numbers&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Un poco menos de código, un poco más de negocio, la maestría esta haciendo mella….&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8964388191879168509?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8964388191879168509/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8964388191879168509' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8964388191879168509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8964388191879168509'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/02/ciudad-de-los-hroes.html' title='{ciudad} de los héroes'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/R6Of6eerppI/AAAAAAAAADU/3zmVEagt-l0/s72-c/Publicidad.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7419816802144655517</id><published>2008-01-31T21:40:00.000-08:00</published><updated>2008-02-10T17:45:55.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='negocios'/><title type='text'>Negocios open source</title><content type='html'>Gracias a mi clase de Marketing en la maestría tuve que realizar un ensayo acerca de los negocios que se basan en la comercialización de servicios y software open source; he aquí algunas de mis conclusiones:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:12;"  &gt;&lt;span style=""&gt;&lt;/span&gt;Las compañías ven una ventaja competitiva dentro del software libre, ha venido a revolucionar el mercado rompiendo los modelos anteriores y estableciendo retos cada vez más difíciles como lo comenta George Fisher CEO de Kodak “Las compañías actuales tienen un enorme reto: ¿Cómo ser competitivas en un mundo donde (prácticamente) la tecnología es virtualmente gratis?”&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 51);font-family:Arial;font-size:12;"  &gt;En promedio el porcentaje de ventas de software de las compañías es alrededor del 30% mientras que el 70% restante se basa en servicios [Mas 2005] esto conlleva a colocar la imagen de las compañías actuales como &lt;i style=""&gt;generadoras de herramientas&lt;/i&gt; que permiten servir como eje de productos o servicios&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;p class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:Arial;" &gt;Tomando en cuenta que Internet ha logrado disminuir los costos de distribución a prácticamente cero el precio de software tiene a disminuir y se puede desarrollar y distribuir casi de forma inmediata empujando la competencia y reduciendo el margen de ingresos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:12;"  &gt;Las PYMES, proveyeron según el último censo económico el 98.36 % de&lt;span style=""&gt;  &lt;/span&gt;las empresas establecidas legalmente en México, lo que las vuelve un nicho de mercado ideal para el software libre.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;p class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;El presentar modelos offshore&lt;a style="" href="http://www.blogger.com/post-edit.g?blogID=4538535577335655952&amp;amp;postID=7419816802144655517#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=";font-family:Arial;font-size:12;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; de bajo costo para las PyMes representa el método Long Tail [Anderson 2004] donde la suma de ventas pequeñas en grandes cantidades es igual o superior a las ventas de pocos productos con costos elevados.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Como estrategia de marca la empresa tiene que lograr que los siguientes valores sean reconocidos en sus productos:&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Sistemas seguros y      estables&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Corrección mas      rápida y eficiente de fallos&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Alto grado de      innovación&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Requisitos menores      de hardware&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;p class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;  &lt;/p&gt;&lt;span style="font-family:Arial;"&gt;Así mismo la compañía como marca debe ser vista de la siguiente manera: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;/li&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Seriedad y respaldo      continuo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Calidad en la      atención &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify; line-height: 150%;"&gt;&lt;span style="font-family:Arial;"&gt;Alto conocimiento      técnico&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;ul style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;La economía nacional en gran medida se basa en las PyMes, y el software libre es una opción para sus presupuestos y es una gran ventana de oportunidad para aquellos que logren entender la nueva tendencia de los negocios, el offshore, los servicios y el software como servicio permite adecuar la oferta a las necesidades de las micro, pequeñas y medianas empresas, mostrándoles un abanico de posibilidades que anteriormente se les negaba.&lt;br /&gt;&lt;br /&gt;La industria del software ha cambiado, su realidad así lo refleja ahora esta al alcance de todos, por lo que las ventajas que se ofrezcan deben ser de gran valor de lo contrario la feroz competencia eliminara a aquellos que sigan bajo esquemas obsoletos.&lt;br /&gt;&lt;br /&gt;&lt;div style=""&gt;&lt;hr align="left" size="1" width="33%"&gt;  &lt;!--[endif]--&gt;  &lt;div style="" id="ftn1"&gt;  &lt;p class="MsoFootnoteText"&gt;&lt;a style="" href="http://www.blogger.com/post-edit.g?blogID=4538535577335655952&amp;amp;postID=7419816802144655517#_ftnref1" name="_ftn1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; El término se aplica al recorte de gastos mediante el outsorcing del desarrollo de software&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7419816802144655517?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7419816802144655517/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7419816802144655517' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7419816802144655517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7419816802144655517'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/negocios-open-source.html' title='Negocios open source'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5445356260798274489</id><published>2008-01-24T22:04:00.000-08:00</published><updated>2008-01-24T22:07:12.576-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='gtk#'/><title type='text'>Documentación de GTK para mono</title><content type='html'>Yo se que no es algo nuevo, pero acabo de redescubir la documentación de &lt;a href="http://www.gotmono.com/"&gt;got-Mono&lt;/a&gt; y vaya que me hace falta para algunas cuestiones de GTK.&lt;br /&gt;El link &lt;a href="http://docs.gotmono.net/"&gt;aquí&lt;/a&gt;&lt;br /&gt;http://docs.gotmono.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5445356260798274489?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5445356260798274489/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5445356260798274489' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5445356260798274489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5445356260798274489'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/documentacin-de-gtk-para-mono.html' title='Documentación de GTK para mono'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-4758041556729083027</id><published>2008-01-18T15:04:00.000-08:00</published><updated>2008-01-18T15:08:44.751-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><title type='text'>db4o server multi instancias</title><content type='html'>Ahora si el db4o server es multi instancia...&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5156956686825516450" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R5EwyLBPbaI/AAAAAAAAADE/XukJAaTDowQ/s320/Multi.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;Y (casí) permite automatizar tareas administrativas básicas&lt;img id="BLOGGER_PHOTO_ID_5156957129207147954" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/R5ExL7BPbbI/AAAAAAAAADM/VTnRarSanWs/s320/Jobs.JPG" border="0" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-4758041556729083027?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/4758041556729083027/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=4758041556729083027' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4758041556729083027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4758041556729083027'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/db4o-server-multiinstancias.html' title='db4o server multi instancias'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f42Igf6bkrQ/R5EwyLBPbaI/AAAAAAAAADE/XukJAaTDowQ/s72-c/Multi.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-4758647032191746281</id><published>2008-01-17T08:27:00.000-08:00</published><updated>2008-01-17T08:44:33.097-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IClonable'/><category scheme='http://www.blogger.com/atom/ns#' term='List'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='ArrayList'/><title type='text'>List, ArrayList e IClonable</title><content type='html'>Nota mental (o virtual) las estructuras como List, ArrayList pasan los objetos por referencia, así que si los modifico, se modifican en la misma estructura, por lo tanto hay que clonarlos derivando el objeto de la interfaz IClonable.&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Cliente:ICloneable&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;       &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;       //Hay que crear este método&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt; Clone()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            Cliente CloneClient=&lt;span class="kwrd"&gt;new&lt;/span&gt; Cliente();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            CloneClient.&lt;span class="kwrd"&gt;File&lt;/span&gt; = this.&lt;span class="kwrd"&gt;File&lt;/span&gt;; //se pasan todas las propiedades &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            CloneClient.FileUsers = this.FileUsers;//y las variables tanto publicas&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            CloneClient.sPassword = this.sPassword;//como privadas&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            CloneClient.Port = this.Port;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            CloneClient.Server = this.Server;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            CloneClient.&lt;span class="kwrd"&gt;User&lt;/span&gt; = this.&lt;span class="kwrd"&gt;User&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; CloneClient;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-4758647032191746281?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/4758647032191746281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=4758647032191746281' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4758647032191746281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4758647032191746281'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/list-arraylist-e-iclonable.html' title='List, ArrayList e IClonable'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2661304366089793921</id><published>2008-01-16T07:15:00.000-08:00</published><updated>2008-01-16T07:32:06.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><title type='text'>Sun adquiere MySQL</title><content type='html'>Vaya noticia, en el Blog de Jonathan Schwartz CEO de Sun me entero que &lt;a href="http://blogs.sun.com/jonathan/entry/winds_of_change_are_blowing"&gt;Sun adquirió MySQL&lt;/a&gt;. Eso si que no me lo esperaba&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2661304366089793921?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2661304366089793921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2661304366089793921' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2661304366089793921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2661304366089793921'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/sun-adquiere-mysql.html' title='Sun adquiere MySQL'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7987031786688252078</id><published>2008-01-15T11:50:00.000-08:00</published><updated>2008-01-15T12:01:56.792-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><title type='text'>Libro db4o</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/41C0ySr%2BzHL._BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://ecx.images-amazon.com/images/I/41C0ySr%2BzHL._BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este es el mejor (y el único) libro que encontré sobre db4o es &lt;a href="http://www.amazon.com/Definitive-Guide-db4o-Stefan-Edlich/dp/1590596560/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200426547&amp;amp;sr=8-1"&gt;The definitive Guide to DB4O&lt;/a&gt; que trata los temas de forma mas amplia y clara que la documentación que viene en el instalador (en el caso de windows) pero como se basa en una versión mas antigua (5.2) los  namespace no concuerdan con la versión actual (6.4) por lo que para ver la sintaxis especifica es necesario ver la documentación de la versión vigente, pero si es un gran soporte y una referencia básica para quienes deseen utilizar esta gran herramienta&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7987031786688252078?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7987031786688252078/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7987031786688252078' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7987031786688252078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7987031786688252078'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/libro-db4o.html' title='Libro db4o'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7493681658949829311</id><published>2008-01-10T12:39:00.000-08:00</published><updated>2008-01-10T12:49:54.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='gtk#'/><title type='text'>db4o Server para Linux</title><content type='html'>Se esta cocinando la versión del servidorcito para Linux, y ya tengo una aplicación funcional (pero solo hace -por el momento- la mitad que la versión de Windows)&lt;br /&gt;Después de superar la curva de aprendizaje de GTK# y de hacer algunas mexicanadas en la programación por fín creo que estoy siendo productivo.&lt;br /&gt;Por ejemplo, algunas de mis mexicanadas...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No encontré un evento como Windows.Load y entonces sobreescribí el método Show&lt;/li&gt;&lt;/ul&gt;public new void Show()&lt;br /&gt;{&lt;br /&gt;base.Show();&lt;br /&gt;//Código a ejecutar&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No podía encontrar el Form.Close!! pero al final descubrí que Window.HideOnDelete() hace lo que necesitaba&lt;/li&gt;&lt;/ul&gt;Por cierto, Monodevelop es una graaan ayuda al desarrollar&lt;br /&gt;&lt;br /&gt;Aquí estan unos screenshots de la aplicación, que por cierto esta en la siguiente &lt;a href="http://db4oserver.googlecode.com/svn/trunk/"&gt;liga&lt;/a&gt;:&lt;br /&gt;http://db4oserver.googlecode.com/svn/trunk/&lt;br /&gt;también esta en la sección de &lt;a href="http://code.google.com/p/db4oserver/downloads/list"&gt;descargas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f42Igf6bkrQ/R4aEMLBPbWI/AAAAAAAAACk/nnz5H2Mx5K8/s1600-h/TryOffline.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_f42Igf6bkrQ/R4aEMLBPbWI/AAAAAAAAACk/nnz5H2Mx5K8/s320/TryOffline.png" alt="" id="BLOGGER_PHOTO_ID_5153952168223403362" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/R4aEU7BPbXI/AAAAAAAAACs/_4suhfaxOFc/s1600-h/TryRunning.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R4aEU7BPbXI/AAAAAAAAACs/_4suhfaxOFc/s320/TryRunning.png" alt="" id="BLOGGER_PHOTO_ID_5153952318547258738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/R4aEj7BPbZI/AAAAAAAAAC8/dPFtadyv6aY/s1600-h/Pantallazo-Main.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R4aEj7BPbZI/AAAAAAAAAC8/dPFtadyv6aY/s320/Pantallazo-Main.png" alt="" id="BLOGGER_PHOTO_ID_5153952576245296530" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7493681658949829311?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7493681658949829311/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7493681658949829311' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7493681658949829311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7493681658949829311'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/db4o-server-para-linux.html' title='db4o Server para Linux'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f42Igf6bkrQ/R4aEMLBPbWI/AAAAAAAAACk/nnz5H2Mx5K8/s72-c/TryOffline.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-4953960601461724038</id><published>2008-01-09T08:11:00.000-08:00</published><updated>2008-01-09T08:16:52.969-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>URL del código del servidor db4o</title><content type='html'>Por fin subí a google code el código del servidor db40, la url es la &lt;a href="http://code.google.com/p/db4oserver/downloads/list"&gt;siguiente&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/db4oserver/downloads/list&lt;br /&gt;&lt;br /&gt;Ahí se encuentran listos para descargarse 2 archivos, uno con solo los ejecutables y otro con todo el proyecto de visual studio 2005 (compilado en debug)&lt;br /&gt;Y la &lt;a href="http://db4oserver.googlecode.com/svn/"&gt;liga del código en subversion es&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;http://db4oserver.googlecode.com/svn/&lt;br /&gt;&lt;br /&gt;Ahora tengo que hacer el port en GTK para que funcione en Linux sobre Mono&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-4953960601461724038?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/4953960601461724038/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=4953960601461724038' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4953960601461724038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4953960601461724038'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2008/01/url-del-cdigo-del-servidor-db4o.html' title='URL del código del servidor db4o'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2716506185790321480</id><published>2007-12-28T08:49:00.000-08:00</published><updated>2007-12-28T09:02:23.868-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Server db4o</title><content type='html'>En mi tiempo libre desarrolle un servidor para db4o, ya que deja de lado del desarrollador el acceso a los archivos de base de datos, y como estaba desarrollado una prueba de concepto para esta tecnología, decidí comenzar por el servidor (después me entere que había &lt;a href="http://developer.db4o.com/ProjectSpaces/view.aspx/Db4o_Server_and_Manager"&gt;otro &lt;/a&gt;desarrollado por Alex Segovia)&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt; La idea de este "proyecto" es ser un servidor que emule al SQL respecto a que puede iniciar y detener varias instancias, administrar estas e iniciarlas de forma automática.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="ES-MX"&gt;El programa corre en system tray y esta desarrollado en c# con visual studio 2005.  &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;Después subiré el código a googlecode&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;Aquí unos screenshots&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/R3UrX7BPbSI/AAAAAAAAACE/XfMUYzT3cYs/s1600-h/SystemTray.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/R3UrX7BPbSI/AAAAAAAAACE/XfMUYzT3cYs/s320/SystemTray.JPG" alt="" id="BLOGGER_PHOTO_ID_5149069438947912994" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/R3UrqLBPbUI/AAAAAAAAACU/mlRUlLwid70/s1600-h/Server2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R3UrqLBPbUI/AAAAAAAAACU/mlRUlLwid70/s320/Server2.JPG" alt="" id="BLOGGER_PHOTO_ID_5149069752480525634" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/R3UrdLBPbTI/AAAAAAAAACM/8QOFNzMWp0s/s1600-h/Server1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/R3UrdLBPbTI/AAAAAAAAACM/8QOFNzMWp0s/s320/Server1.JPG" alt="" id="BLOGGER_PHOTO_ID_5149069529142226226" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f42Igf6bkrQ/R3Ur8rBPbVI/AAAAAAAAACc/osv8C597r20/s1600-h/settings1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_f42Igf6bkrQ/R3Ur8rBPbVI/AAAAAAAAACc/osv8C597r20/s320/settings1.JPG" alt="" id="BLOGGER_PHOTO_ID_5149070070308105554" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2716506185790321480?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2716506185790321480/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2716506185790321480' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2716506185790321480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2716506185790321480'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/12/server-db4o.html' title='Server db4o'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/R3UrX7BPbSI/AAAAAAAAACE/XfMUYzT3cYs/s72-c/SystemTray.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-180691177244293770</id><published>2007-12-18T08:37:00.000-08:00</published><updated>2007-12-18T08:42:32.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='hilos'/><title type='text'>Arquitectura de memoria e hilos</title><content type='html'>En &lt;a href="http://geeks.ms/"&gt;geeks &lt;/a&gt; Pablo Alvarez publico un post interesante que habla sobre &lt;a href="http://geeks.ms/blogs/palvarez/archive/2007/12/18/against-the-law-beware-the-natives.aspx"&gt;la arquitectura de memoria y procesos de Windows &lt;/a&gt;&lt;br /&gt;Esto puede ayudar para mejorar el uso de hilos y programar el escalamiento de aplicaciones multihilo (aunque hoy en dia la mayoría ya son multihilo de una forma u otra)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-180691177244293770?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/180691177244293770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=180691177244293770' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/180691177244293770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/180691177244293770'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/12/en-geeks-me-pablo-alvarez-publico-un.html' title='Arquitectura de memoria e hilos'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7728376964849661540</id><published>2007-12-12T11:43:00.000-08:00</published><updated>2007-12-12T11:51:56.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>db4o soporta Android</title><content type='html'>La palabra de moda esta semana es db4o, ahora me entero que esta &lt;a href="http://www.db4o.com/about/news/release/2007_12_05.aspx"&gt;base de datos soporta almacenar &lt;/a&gt;objetos en &lt;a href="http://code.google.com/android/"&gt;Android.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aquí un pequeño video de una aplicacion que utiliza google maps y db4o en Android&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uHNQKM7Qxhs&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/uHNQKM7Qxhs&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7728376964849661540?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7728376964849661540/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7728376964849661540' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7728376964849661540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7728376964849661540'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/12/db4o-soporta-google-maps.html' title='db4o soporta Android'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2207136281739194149</id><published>2007-12-11T10:49:00.000-08:00</published><updated>2007-12-11T11:02:00.028-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>db4o !!</title><content type='html'>En las platicas de Mono Summit de Madrid me encontre con &lt;a href="http://www.db4o.com/espanol/Default.aspx?AspxAutoDetectCookieSupport=1"&gt;db4o &lt;/a&gt;una &lt;a href="http://es.wikipedia.org/wiki/Base_de_datos_orientada_a_objetos"&gt;base de datos orientada a objetos&lt;/a&gt;, y comence a leer el libro the &lt;a href="http://books.google.com.mx/books?id=SXG19zl8qF4C&amp;amp;dq=the+definitive+guide+to+db4o&amp;amp;pg=PP1&amp;amp;ots=w6APq0J6Sq&amp;amp;sig=B_6vpCGuAsiZLMXY-_Fl5sibxQU&amp;amp;prev=http://www.google.com.mx/search?q=the+definitive+guide+to+db4o&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:es-ES:official&amp;amp;client=firefox-a&amp;amp;sa=X&amp;amp;oi=print&amp;amp;ct=title&amp;amp;cad=one-book-with-thumbnail&amp;amp;hl=es"&gt;definitive guide to db4o&lt;/a&gt;, y parece ser una buena base de datos para aplicaciones individuales (no multitrheading) ya que deja para los programadores el control de concurrencias y colisiones (según el libro)&lt;br /&gt;Además db4o es &lt;a href="http://www.db4o.com/about/customers/"&gt;utilizado &lt;/a&gt;por grandes compañías como Intel, BMW y Boeing y puede ser utilizado en .NET y Java&lt;br /&gt;&lt;h2 class="r"&gt;&lt;a href="http://books.google.com.mx/books?id=SXG19zl8qF4C&amp;amp;dq=the+definitive+guide+to+db4o&amp;amp;pg=PP1&amp;amp;ots=w6APq0J6Sq&amp;amp;sig=B_6vpCGuAsiZLMXY-_Fl5sibxQU&amp;amp;prev=http://www.google.com.mx/search?q=the+definitive+guide+to+db4o&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:es-ES:official&amp;amp;client=firefox-a&amp;amp;sa=X&amp;amp;oi=print&amp;amp;ct=title&amp;amp;cad=one-book-with-thumbnail&amp;amp;hl=es"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/a&gt; &lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2207136281739194149?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2207136281739194149/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2207136281739194149' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2207136281739194149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2207136281739194149'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/12/db4o.html' title='db4o !!'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3018346653690609767</id><published>2007-11-30T17:04:00.000-08:00</published><updated>2007-12-12T11:54:04.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><title type='text'>Tips de ingenieria de software para start ups</title><content type='html'>Hay un buen post (algo inspirador) en el blog &lt;a href="http://blog.adaptiveblue.com/?p=765"&gt;AdaptativeBlue &lt;/a&gt;con consejos para las compañías que inician.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hay que tener código (un producto, o algo)&lt;/li&gt;&lt;li&gt;Hay que tener un co-fundador técnico&lt;/li&gt;&lt;li&gt;Contrata ingenieros que amen programar&lt;/li&gt;&lt;li&gt;Manten el equipo pequeño y sin outsorcing&lt;/li&gt;&lt;li&gt;Haz preguntas dificiles en la entrevista&lt;/li&gt;&lt;li&gt;Evita contratar administradores&lt;/li&gt;&lt;li&gt;Instala una cultura agil&lt;/li&gt;&lt;li&gt;No reinventes la rueda&lt;/li&gt;&lt;/ul&gt;Algo de verdad tiene ese post&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3018346653690609767?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3018346653690609767/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3018346653690609767' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3018346653690609767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3018346653690609767'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/11/tips-de-ingenieria-de-software-para.html' title='Tips de ingenieria de software para start ups'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8143475346435465822</id><published>2007-11-09T09:39:00.000-08:00</published><updated>2007-11-09T09:59:03.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nupic'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Pasos básicos para crear una red HTM con Nupic</title><content type='html'>Esta es una breve descripción sobre como crear una red que simula la actividad neuronal usando el framework &lt;a href="http://www.numenta.com/"&gt;nupic&lt;/a&gt;.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Importar las clases desde el framework&lt;/li&gt;&lt;li&gt;crear una instancia de una red en blanco&lt;/li&gt;&lt;li&gt;Crear sensores y añadirlos a la red&lt;/li&gt;&lt;li&gt;Crear y añadir regiones a la red&lt;/li&gt;&lt;li&gt;Grabar la red en un archivo XML&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Ahora un poco de código tomado del ejemplo Bitworms de Nupic (en &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;) comentarios en negritas...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;from nupic.network import *  &lt;span style="font-weight: bold;"&gt;#paso 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;def createNetwork(untrainedNetwork,&lt;br /&gt;                inputSize = 16,&lt;br /&gt;                maxDistance = 0.0,&lt;br /&gt;                topNeighbors = 3,&lt;br /&gt;                maxGroups = 8):  &lt;span style="font-weight: bold;"&gt;#esta es la definición de la función&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    net = Network() &lt;span style="font-weight: bold;"&gt;# paso 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    sensor = CreateNode("VectorFileSensor",&lt;br /&gt;                                        phase=0,&lt;br /&gt;                                        dataOut= inputSize)     &lt;span style="font-weight: bold;"&gt;#Paso 3 (definir el sensor)&lt;/span&gt;&lt;br /&gt;    net.addElement("Sensor", sensor) &lt;span style="font-weight: bold;"&gt;#paso 3 (añadir a la red)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    categorySensor = CreateNode("VectorFileSensor",&lt;br /&gt;                                        phase = 1,&lt;br /&gt;                                        dataOut=1)&lt;br /&gt;    net.addElement("CategorySensor", categorySensor)  &lt;span style="font-weight: bold;"&gt;"""#se añade otro tipo de sensor                                                                                                         para categorizar datos""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    level1Node = CreateNode("Zeta1Node",&lt;br /&gt;                                            phase=1,&lt;br /&gt;                                            spatialPoolerAlgorithm= "gaussian",&lt;br /&gt;                                            symmetricTime=False,&lt;br /&gt;                                            transitionMemory=4,&lt;br /&gt;                                            topNeighbors=topNeighbors,&lt;br /&gt;                                            maxGroupSize=50,&lt;br /&gt;                                            temporalPoolerAlgorithm= "sumProp",&lt;br /&gt;                                            bottomUpOut=maxGroups+1,&lt;br /&gt;                                            maxDistance=maxDistance)&lt;br /&gt;                                            net.addElement("Level1", level1Node)           &lt;span style="font-weight: bold;"&gt;#paso 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    topNode = CreateNode("Zeta1TopNode",&lt;br /&gt;                                phase=2,&lt;br /&gt;                                spatialPoolerAlgorithm= "dot",&lt;br /&gt;                                mapperAlgorithm= "sumProp",&lt;br /&gt;                                categoriesOut=2)&lt;br /&gt;    net.addElement("Level2", topNode)      &lt;span style="font-weight: bold;"&gt;"""#paso 4 (es el nodo final de la estructura                                                                                     jearquica de la red)"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    effector = CreateNode("VectorFileEffector", phase = 3)&lt;br /&gt;    net.addElement("FileOutput", effector)             &lt;span style="font-weight: bold;"&gt;#esto guarda el resultado en un archivo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    net.link("Sensor", "dataOut", "Level1", "bottomUpIn")   &lt;span style="font-weight: bold;"&gt;# se liga el elemento en la red&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    net.link("Level1", "bottomUpOut", "Level2", "bottomUpIn") &lt;span style="font-weight: bold;"&gt;"""# se liga el elemento                                                                                                     anterior con el siguiente nivel"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    net.link("CategorySensor", "dataOut", "Level2", "categoryIn") &lt;span style="font-weight: bold;"&gt;"""# se liga el elemento                                                                                                 anterior con el siguiente nivel"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    net.link("Level2", "categoriesOut", "FileOutput", "dataIn")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  #--------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  # Step 3.5 Link Sensor to FileOutput node&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  # For the Sensor connection, we use PassThrough nodes to avoid a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  # level-skipping connection, which would prevent the pipeline scheduler from&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  # working propertly (advanced)&lt;/span&gt;&lt;br /&gt;    passThrough1 = CreateNode("PassThroughNode",&lt;br /&gt;                                    phase=1,&lt;br /&gt;                                    realOut=inputSize)&lt;br /&gt;    net.addElement("PassThrough1", passThrough1)&lt;br /&gt;    passThrough2 = CreateNode("PassThroughNode",&lt;br /&gt;                                    phase=2,&lt;br /&gt;                                    realOut=inputSize)&lt;br /&gt;    net.addElement("PassThrough2", passThrough2)&lt;br /&gt;    net.link("Sensor", "dataOut", "PassThrough1", "realIn")&lt;br /&gt;    net.link("PassThrough1", "realOut", "PassThrough2", "realIn")&lt;br /&gt;    net.link("PassThrough2", "realOut", "FileOutput", "dataIn")&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    net.writeXML(untrainedNetwork)   &lt;span style="font-weight: bold;"&gt;#paso 5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#End of code!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.numenta.com/for-developers/software/pdf/nupic_gettingstarted.pdf"&gt;Getting started with Nupic&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8143475346435465822?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8143475346435465822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8143475346435465822' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8143475346435465822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8143475346435465822'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/11/pasos-para-crear-una-red-htm-con-nupic.html' title='Pasos básicos para crear una red HTM con Nupic'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2672723945571211302</id><published>2007-11-06T14:25:00.000-08:00</published><updated>2007-11-06T14:37:17.908-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='IronPython'/><title type='text'>Python ! ! !</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;Estuve indagando un poco sobre &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: arial;" href="http://www.python.org/"&gt;Python &lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  lang="ES-MX" &gt;y una vez que me sentí cómodo con el era hora de buscar un &lt;a href="http://es.wikipedia.org/wiki/Entorno_integrado_de_desarrollo"&gt;IDE&lt;/a&gt;, a pesar de que encontré algunos (gracias al libro &lt;a href="http://www.amazon.com/Python-Nutshell-OReilly-Alex-Martelli/dp/0596100469/ref=pd_bbs_sr_1/102-5368026-9539331?ie=UTF8&amp;amp;s=books&amp;amp;qid=1194388207&amp;amp;sr=8-1"&gt;python in a nutshell&lt;/a&gt;) realmente me sentí mas cómodo con el IDE que viene integrado con el python normalito (el IDLE) a pesar de que no tiene opción gráfica para GUI ni auto completar, ahora bien que cuando probé el &lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython &lt;/a&gt;la cosa fue diferente, aun y cuando VS2005 lo soporta (con un poco de ayuda) gasta montones y montones de memoria, por ello es mejor el &lt;a href="http://lynanda.com/mediawiki/index.php/Main_Page"&gt;IronPython IDE&lt;/a&gt; que si bien es parecido al IDLE permite llamar las funciones del CLR.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  lang="ES-MX" &gt;Por cierto para cosas avanzadas con Python hay que revisar el libro &lt;/span&gt; &lt;/div&gt;&lt;table style="text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="center" width="115"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259/ref=pd_bbs_sr_1/102-5368026-9539331?ie=UTF8&amp;amp;s=books&amp;amp;qid=1194388474&amp;amp;sr=1-1"&gt;  &lt;/a&gt;&lt;br /&gt;&lt;/span&gt;        &lt;/td&gt;&lt;td width="8"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-size:100%;"&gt;&lt;a href="http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259/ref=pd_bbs_sr_1/102-5368026-9539331?ie=UTF8&amp;amp;s=books&amp;amp;qid=1194388474&amp;amp;sr=1-1"&gt;&lt;span class="srTitle"&gt;Programming Python&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259/ref=pd_bbs_sr_1/102-5368026-9539331?ie=UTF8&amp;amp;s=books&amp;amp;qid=1194388474&amp;amp;sr=1-1"&gt; &lt;img src="http://ecx.images-amazon.com/images/I/21EeSGDEnyL._PIlitb-dp-arrow,TopRight,21,-23_SH30_OU01_AA115_.jpg" class="" alt="Programming Python" border="0" height="115" width="115" /&gt; &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2672723945571211302?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2672723945571211302/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2672723945571211302' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2672723945571211302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2672723945571211302'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/11/python.html' title='Python ! ! !'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7739030031367636585</id><published>2007-11-02T12:30:00.000-07:00</published><updated>2007-11-06T14:38:24.646-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gOS'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>gOS</title><content type='html'>&lt;div style="text-align: justify;"&gt;Primero pense "Parece ser que google se lanza con su sistema operativo (gOS)" pero despues descubri que se trata de otra compañía gOS LLC, que no tiene relación alguna con google.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Este sistema operativo al parecer esta basado en ubuntu 7.10, aunque su &lt;a href="http://www.thinkgos.com/"&gt;página &lt;/a&gt;no dice mucho (aún)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7739030031367636585?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7739030031367636585/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7739030031367636585' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7739030031367636585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7739030031367636585'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/11/gos.html' title='gOS'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1276563493877211089</id><published>2007-10-29T10:57:00.000-07:00</published><updated>2007-10-29T11:01:29.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><title type='text'>Crear AddIn Para monodevelop</title><content type='html'>En el blog de &lt;a href="http://gconta.wordpress.com"&gt;gconta&lt;/a&gt; me encontre un gran tutorial para crear addins para monodevelop, el screencast esta &lt;a href="http://csl-gconta.forja.rediris.es/screencast.html"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1276563493877211089?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1276563493877211089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1276563493877211089' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1276563493877211089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1276563493877211089'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/10/crear-addin-para-monodevelop.html' title='Crear AddIn Para monodevelop'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7205062089768095226</id><published>2007-10-02T09:25:00.000-07:00</published><updated>2007-10-02T09:31:07.855-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yale'/><category scheme='http://www.blogger.com/atom/ns#' term='WEKA'/><category scheme='http://www.blogger.com/atom/ns#' term='Datamining'/><category scheme='http://www.blogger.com/atom/ns#' term='JDM'/><title type='text'>JDM no esta tan maduro como creia</title><content type='html'>Aposte y falle, pense que JDM estaría mas soportado (o extendido) pero no, el siguiente texto es tomado del foro de &lt;a href="https://datamining.dev.java.net/"&gt;datamining.dev.java.net (por erick_marcade)&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;Concerning JDM, if you want to use it on a real project,&lt;br /&gt;there are only two working JDM implementations, one is&lt;br /&gt;provided by Oracle and the other one by KXEN, so if you do&lt;br /&gt;not want to develop data mining algorithms in java, you&lt;br /&gt;will have to use one of those.&lt;/pre&gt;&lt;br /&gt;Lo que me orilla a seleccionar entre &lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;Weka &lt;/a&gt;y &lt;a href="http://rapid-i.com/"&gt;Yale&lt;/a&gt;, pero tomando en cuenta las dificultades que (según he leido) Weka tiene con datasets largos me llevará inexorablemente a Yale. Por lo que me pregunto ¿me dara problemas el &lt;a href="http://rapid-i.com/content/view/26/84/lang,en/"&gt;licenciamiento &lt;/a&gt;de Yale?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7205062089768095226?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7205062089768095226/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7205062089768095226' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7205062089768095226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7205062089768095226'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/10/jdm-no-esta-tan-maduro-como-creia.html' title='JDM no esta tan maduro como creia'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2961718605509589348</id><published>2007-09-14T14:56:00.000-07:00</published><updated>2007-11-06T14:39:51.723-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Nupic para windows</title><content type='html'>&lt;div style="text-align: justify;"&gt;Numenta estuvo creando encuestas preguntanto que S.O. nos gustaría que estuviera nupic, y parece ser que se pusieron a desarrollar rapido en windows porque ya desarrollaron el framework para ello, se puede obtener &lt;a href="http://www.numenta.com/for-developers/software/htm-software-download.php?Download=nupic-1.3-win32_installer.exe"&gt;aquí&lt;/a&gt; (se necesita crear una cuenta)&lt;br /&gt;Para utilizarlo se necesita Python 2.4 (no funciona con el 2.5)&lt;br /&gt;&lt;/div&gt;Por mail se envía la licencia (gratuita) y debe de colocarse en la carpeta &lt;span style="font-style: italic;"&gt;Mis documentos &lt;/span&gt;y listo, a programar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2961718605509589348?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2961718605509589348/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2961718605509589348' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2961718605509589348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2961718605509589348'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/09/nupic-para-windows.html' title='Nupic para windows'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-849187990336208084</id><published>2007-08-17T15:18:00.000-07:00</published><updated>2007-08-17T15:41:47.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='tortoise'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Como añadir archivos a google.code</title><content type='html'>En el post anterior ya subi archivos, pero si quiero subir nuevos archivos los pasos son los siguientes:&lt;br /&gt;&lt;br /&gt;Hacer click en la opción update de SVN (haciendo click con el botón derecho en la carpeta destino) como se ve en la figura 1&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYfYLw6Q7I/AAAAAAAAABc/tKaoUZ6gAzI/s1600-h/Update.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYfYLw6Q7I/AAAAAAAAABc/tKaoUZ6gAzI/s320/Update.JPG" alt="" id="BLOGGER_PHOTO_ID_5099798128378921906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Figura 1.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Con lo que se bajaran los archivos del servidor a la carpeta seleccionada, despues hay que seleccionar la opcion ADD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-849187990336208084?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/849187990336208084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=849187990336208084' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/849187990336208084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/849187990336208084'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/08/como-aadir-archivos-googlecode.html' title='Como añadir archivos a google.code'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYfYLw6Q7I/AAAAAAAAABc/tKaoUZ6gAzI/s72-c/Update.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7605799448745268594</id><published>2007-08-17T12:51:00.000-07:00</published><updated>2007-08-17T15:03:03.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='tortoise'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Configurar SVN y Tortoise para utilizar google code como hosting</title><content type='html'>El día de hoy me propuse subir mi proyecto de Drag'n'Unit (que se supone que ayuda a hacer pruebas unitarias de forma un poquito mas fácil) y me gusto &lt;a href="http://code.google.com/hosting/createProject"&gt;google.code&lt;/a&gt; para que sirviera de hosting al proyecto, por lo que instale &lt;a href="http://subversion.tigris.org/project_packages.html"&gt;Subversion &lt;/a&gt;(herramienta que recomienda google) y además encontré este gran &lt;a href="http://internetducttape.com/2007/03/03/howto_google_code_hosting_subversion_tortoisesvn/"&gt;tutorial &lt;/a&gt;hecho por engtech y aquí traduzco la primera parte (con las pantallas de mi experiencia)&lt;br /&gt;&lt;br /&gt;1.- Como subir código fuente a google.code&lt;br /&gt; ¿Que necesitas para hacerlo desde Windows?&lt;br /&gt; -Necesitas tener instalado subversion (sin apache y sin php y sin MySql o Postgre, solo Subversion)&lt;br /&gt; -Necesitas tener instalado &lt;a href="http://tortoisesvn.net/downloads"&gt;tortoise &lt;/a&gt;(y necesita reinciar widows)&lt;br /&gt; -Necesitas tener un proyecto elaborado en google, y obtener tu password desde &lt;a href="http://code.google.com/hosting/settings"&gt;aqui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez que se tiene instalado el software y con el proyecto se toma la dirección que  te da google (ver figura 1) cuidando que se capture como &lt;span style="font-weight: bold;"&gt;https&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/RsX-uLw6Q3I/AAAAAAAAAA8/V8X58N81gxM/s1600-h/google.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/RsX-uLw6Q3I/AAAAAAAAAA8/V8X58N81gxM/s320/google.JPG" alt="" id="BLOGGER_PHOTO_ID_5099762222452327282" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;Figura 1&lt;br /&gt;&lt;/div&gt;Después seleccione (haciendo click con el botón derecho sobre la carpeta que contiene el proyecto) la opción importar de tortoise (ver figura 2)&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/RsYZD7w6Q4I/AAAAAAAAABE/dxjayHLnTQk/s1600-h/Import.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/RsYZD7w6Q4I/AAAAAAAAABE/dxjayHLnTQk/s320/Import.JPG" alt="" id="BLOGGER_PHOTO_ID_5099791183416804226" border="0" /&gt;&lt;/a&gt;Figura 2&lt;br /&gt;&lt;/div&gt;A continuación, se selecciona la dirección del proyecto (lo que esta seleccionado en la figura 1) y se captura en la ventana que muestra tortoise (ver figura 3)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYZxLw6Q6I/AAAAAAAAABU/bQH-H_N1FC0/s1600-h/Import2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYZxLw6Q6I/AAAAAAAAABU/bQH-H_N1FC0/s320/Import2.JPG" alt="" id="BLOGGER_PHOTO_ID_5099791960805884834" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;Figura 3&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Después de presionar OK (obviamente) se procede a capturar el usuario y el password generado por google (ver figura 4)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYZpLw6Q5I/AAAAAAAAABM/9c4-ILaFl58/s1600-h/Import3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/RsYZpLw6Q5I/AAAAAAAAABM/9c4-ILaFl58/s320/Import3.JPG" alt="" id="BLOGGER_PHOTO_ID_5099791823366931346" border="0" /&gt;&lt;/a&gt; Figura 4&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y listo, se establecerá la conexión y se trasferirán los archivos de la carpeta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7605799448745268594?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7605799448745268594/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7605799448745268594' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7605799448745268594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7605799448745268594'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/08/configurar-svn-y-tortoise-svn-para.html' title='Configurar SVN y Tortoise para utilizar google code como hosting'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/RsX-uLw6Q3I/AAAAAAAAAA8/V8X58N81gxM/s72-c/google.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3141377775905053558</id><published>2007-08-03T11:31:00.000-07:00</published><updated>2007-08-03T11:43:31.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEKA'/><category scheme='http://www.blogger.com/atom/ns#' term='Datamining'/><title type='text'>Tutorial Weka</title><content type='html'>El Dr. Cesar Ferri tiene un estupendo tutorial de &lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;weka &lt;/a&gt;en&lt;a href="http://www.dsic.upv.es/~cferri/weka/"&gt; su sitio&lt;/a&gt;, que además de los tutoriales &lt;a href="http://www.dsic.upv.es/~cferri/weka/Datasets.rar"&gt;incluye datos&lt;/a&gt; para realizar los ejemplos propuestos.&lt;br /&gt;Además si quieres entrar mas a fondo aquí esta el &lt;a href="http://www.dsic.upv.es/%7Eflip/LibroMD/"&gt;indice de su libro&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3141377775905053558?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3141377775905053558/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3141377775905053558' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3141377775905053558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3141377775905053558'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/08/tutorial-weka.html' title='Tutorial Weka'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5948628344461393080</id><published>2007-07-05T13:38:00.001-07:00</published><updated>2007-07-05T13:43:20.769-07:00</updated><title type='text'>Descanse en paz</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_f42Igf6bkrQ/Ro1XocX9ajI/AAAAAAAAAA0/J-u42oC9fXw/s1600-h/r_pepe_vt.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/Ro1XocX9ajI/AAAAAAAAAA0/J-u42oC9fXw/s320/r_pepe_vt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5083815906694228530" /&gt;&lt;/a&gt;&lt;br /&gt;Es una lastima que se haya apagado una voz que me acompaño durante gran parte de mi adolecencia, que acompaño mis juegos de basquetbol y mis tardes de ocio.&lt;br /&gt;Un gran hombre dicen quienes lo conocieron, yo simplemente puedo decir que era un gran comentarista y un gran impulsor del deporte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5948628344461393080?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5948628344461393080/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5948628344461393080' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5948628344461393080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5948628344461393080'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/07/descanse-en-paz.html' title='Descanse en paz'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f42Igf6bkrQ/Ro1XocX9ajI/AAAAAAAAAA0/J-u42oC9fXw/s72-c/r_pepe_vt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7648433722468577962</id><published>2007-06-25T17:40:00.000-07:00</published><updated>2007-06-25T17:48:42.886-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOONE'/><category scheme='http://www.blogger.com/atom/ns#' term='WEKA'/><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='Datamining'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes neuronales'/><category scheme='http://www.blogger.com/atom/ns#' term='NSL'/><category scheme='http://www.blogger.com/atom/ns#' term='JDM'/><title type='text'>Datamining y redes neuronales</title><content type='html'>Va encaminandose mi tesis, todo apunta a que se tratara sobre redes neuronales y datamining(ya compre los libros, ya no me puedo hacer para atrás) me sorprende el número de frameworks existentes para java, estan &lt;a href="www.jooneworld.com"&gt;JOONE&lt;/a&gt;,&lt;a href="https://datamining.dev.java.net/ "&gt;JDM&lt;/a&gt;, &lt;a href="http://www.cs.waikato.ac.nz/ml/weka"&gt;WEKA&lt;/a&gt;,ademas de mis viejos amigos &lt;a href="http://www.neuralsimulationlanguage.org/"&gt;NSL &lt;/a&gt;y &lt;a href="http://www.numenta.com/"&gt;HTM&lt;/a&gt;, aunque este ultimo esta para Python.&lt;br /&gt;Aún me falta mucho como para poder decir que domino estas técnicas, pero espero que para el próximo año tenga las bases para explotarlas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7648433722468577962?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7648433722468577962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7648433722468577962' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7648433722468577962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7648433722468577962'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/06/datamining-y-redes-neuronales.html' title='Datamining y redes neuronales'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3075892874336770791</id><published>2007-06-16T09:22:00.001-07:00</published><updated>2007-06-16T09:23:20.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>¿que hardware eres?</title><content type='html'>Mi sueño hecho realidad, ahora ya puedo saber que hardware soy, y eso gracias al &lt;a href="http://www.emezeta.com/testometro/"&gt;test &lt;/a&gt;que cambio mi vida. &lt;br /&gt;Pueden ver el resultado en la barra de la derecha...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3075892874336770791?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3075892874336770791/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3075892874336770791' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3075892874336770791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3075892874336770791'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/06/que-hardware-eres.html' title='¿que hardware eres?'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-4135625618173649750</id><published>2007-06-11T09:01:00.000-07:00</published><updated>2007-06-11T10:31:01.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbox'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='widget'/><title type='text'>Añadir widgets dinamicamente en Mono</title><content type='html'>En las listas de correo de mono alguien tenia un problema para añadir un botón dinámicamente a un vbox (a un container pues) algo que parecería trivial, así que puse manos a la obra y esto fue lo que descubrí:&lt;br /&gt;&lt;br /&gt;1. Navegar entre las clases del MonoDoc es una batalla&lt;br /&gt;2. Al agregar un widget hay que mandar reconstruir la ventana&lt;br /&gt;3. Se puede ver el código que crea la ventana haciendo doble click en la sección de clases del monodevelop a un widget de la ventana que quieres ver como se crea. &lt;span style="font-style:italic;"&gt;Pero nunca, de los never se debe modificar el código de la función Build(), ya que esta se  regenera cada vez que se hace un cambio en el diseño y se compila. (gracias por la aclaración Lluis !!!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para este ejemplo cree un proyecto normal usando GTK# en monodevelop, y añadí un vbox mediante el diseñador, y por código le añadi un botón (ver código entre asteriscos).&lt;br /&gt;Lo unico que hay que hacer es que la clase que contiene los widget (en este caso MainWindow) vuelva a dibujarse, para que "aparezca" los nuevos hijos añadidos&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; using System;&lt;br /&gt; using Gtk;&lt;br /&gt; &lt;br /&gt; public partial class MainWindow: Gtk.Window&lt;br /&gt; {&lt;br /&gt;    public MainWindow (): base (Gtk.WindowType.Toplevel)&lt;br /&gt;    {&lt;br /&gt;         Build ();&lt;br /&gt;         // ************************************  añadí este código&lt;br /&gt;         Button b=new Button();&lt;br /&gt;         b.Label="Press me!!";&lt;br /&gt;         vbox2.Add( b);&lt;br /&gt;         this.Child.ShowAll();    // &lt;--- Esto es lo importante&lt;br /&gt;        // ************************************ Hasta aquí&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;     protected void OnDeleteEvent (object sender, DeleteEventArgs a)&lt;br /&gt;     {&lt;br /&gt;         Application.Quit ();&lt;br /&gt;         a.RetVal = true;&lt;br /&gt;     }&lt;br /&gt; }&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-4135625618173649750?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/4135625618173649750/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=4135625618173649750' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4135625618173649750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/4135625618173649750'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/06/aadir-widgets-dinamicamente-en-mono.html' title='Añadir widgets dinamicamente en Mono'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7738813236153038084</id><published>2007-06-04T10:42:00.000-07:00</published><updated>2007-06-04T10:58:36.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desarrollo'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><title type='text'>seis formas de escribir codigo mas comprensible</title><content type='html'>Retomo los comentarios de &lt;a href="http://www.ibm.com/developerworks/linux/library/l-clear-code/index.html?ca=drs-#author"&gt;Jeff Vogel&lt;/a&gt; que &lt;a href="http://www.ibm.com/developerworks/linux/library/l-clear-code/index.html?ca=drs-"&gt;publico &lt;/a&gt;en la pagina de IBM, para que en seis faciles pasos todos seamos mejores desarrolladores y como es de todos sabidos, ser mejor desarrollador nos hace mejor persona y estar mas cerca del cielo.&lt;br /&gt;&lt;br /&gt;1.- Comenta como persona "&lt;span style="font-style: italic;"&gt;inteligente&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;2.- Usa &lt;a name="N100D6"&gt;&lt;span class="atitle"&gt;#define (código en C++)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;          Por ejemplo.          &lt;br /&gt;            // Matamos un  alien.&lt;br /&gt;           Give_player_some_points(10); //oh no!! tengo que modificar todas las llamadas si quiero cambiar el 10&lt;br /&gt;&lt;br /&gt;      Mejor :     &lt;br /&gt;     #define  POINT_VALUE_FOR_ALIEN 10&lt;br /&gt;         // Matamos un  alien.&lt;br /&gt;           Give_player_some_points(POINT_VALUE_FOR_ALIEN);&lt;br /&gt;&lt;a name="N100D6"&gt;&lt;span class="atitle"&gt;&lt;/span&gt;&lt;br /&gt;3.- No uses nombres de variables que te van a confundir.&lt;br /&gt;   En lugar de :    &lt;br /&gt;&lt;/a&gt;     #define  MAX_ALIENS_ON_SCREEN_AT_ONCE  5&lt;br /&gt;&lt;br /&gt;   Mejor:   &lt;br /&gt;    #define  MAX_NUM_ALIENS  5&lt;br /&gt;&lt;br /&gt;4.- BUSCA ERRORES!!!!&lt;br /&gt;&lt;br /&gt;5.- La optimización prematura es la fuente de todos los males&lt;br /&gt;&lt;br /&gt;Y cito textualmente "Simple code is faster to write, faster to understand when you         return to it later, and faster to debug." (Amen?)&lt;br /&gt;&lt;br /&gt;6.- No seas tan listo... a medias&lt;br /&gt; Traducción, no seas tan malo como para usar una linea de código para comprimir una función, tu hora de inspiración no siempre llegas cuando "debugueas" (sic of me :S)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7738813236153038084?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7738813236153038084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7738813236153038084' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7738813236153038084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7738813236153038084'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/06/seis-formas-de-escribir-codigo-mas.html' title='seis formas de escribir codigo mas comprensible'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2420217072286094709</id><published>2007-05-28T11:20:00.000-07:00</published><updated>2007-05-28T11:23:19.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Juego'/><category scheme='http://www.blogger.com/atom/ns#' term='ITMG2'/><category scheme='http://www.blogger.com/atom/ns#' term='Intel'/><title type='text'>Para sacar al negrero que tienes dentro</title><content type='html'>Siempre se queja uno del jefe que le toco, y siempre piensa uno "si yo fuera jefe haría...... (inserte aquí su gran idea incomprendida) " y gracias a la vida digital y a intel ahora puedes. Intel lanzo el juego &lt;a href="http://itmg2.intel.com/spa/"&gt;ITMG2 &lt;/a&gt;donde se pretende ser director de un area de TI y puedes pelear con tus subalternos, batallar con presupuestos y lo mejor, despedir a todo mundo.&lt;br /&gt;Vale la pena ver si las ideas que siempre tiene uno en mente son tan validas como uno cree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2420217072286094709?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2420217072286094709/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2420217072286094709' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2420217072286094709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2420217072286094709'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/para-sacar-al-negrero-que-tienes-dentro.html' title='Para sacar al negrero que tienes dentro'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2869117642802108541</id><published>2007-05-25T08:12:00.000-07:00</published><updated>2007-05-25T08:43:12.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOException'/><category scheme='http://www.blogger.com/atom/ns#' term='IO.Ports'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>IO.Ports puntos a considerar para newbies</title><content type='html'>Debido a una discusión en la lista de correos de &lt;a href="https://listas.es.gnome.org/mailman////listinfo/mono-hispano"&gt;monohispano &lt;/a&gt;me pareció interesante la solución a la que se llego, a continuación esta la aportación que añadí al wiki de &lt;a href="http://www.monohispano.es"&gt;monohispano&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;Esto es valido para Linux solamente&lt;/span&gt;&lt;br /&gt;     &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES-MX"&gt;Un punto clave a tener en cuenta es que el usuario que ejecute la aplicación debe de tener permisos sobre el fichero del controlador del puerto, esto se verifica ejecutando la siguiente instrucción dentro de la consola.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ls -l /dev/ttyS0&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;Donde /dev/ttyS0 es el puerto con el que quieres establecer comunicación (no hay que perder de vista que en Linux los puertos son tratados como archivos) &lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;El resultado del comando será una lista de los permisos sobre el puerto, por ejemplo&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;$ ls -l /dev/ttyS0&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="" lang="EN-US"&gt;crw-rw---- 1 root dialout 4, 64 2007-05-25 10:28 /dev/ttyS0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;Donde las letras tienen los siguientes significados:&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;c - Dispositivo de caracteres (tty o impresora)&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;r - Permiso de lectura&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;w - Permiso de escritura&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;span style="" lang="ES-MX"&gt;Esta es la estructura de los permisos&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES-MX"&gt;-rw- rw- &lt;span style=""&gt; &lt;/span&gt;r- -&lt;br /&gt;&lt;span style=""&gt;| | | || | |&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;| | |-----------&gt; Acceso para alguien que no es dueño (other)&lt;br /&gt;&lt;span style=""&gt;| | | ||&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt; | | ----------------&gt; Acceso para miembros del grupo (group)&lt;br /&gt;&lt;span style=""&gt;| &lt;/span&gt;| | | ---------------------&gt; Acceso para el dueño (user)&lt;br /&gt;| -------------------------&gt; Tipo de archivo (archivo, directorio, dispositivo, etc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;Si el usuario no tiene permisos se lanza una excepción &lt;/span&gt;IOException, por lo que es importante validar los permisos asignados con el usuario que se ejecuta la aplicación.&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2869117642802108541?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2869117642802108541/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2869117642802108541' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2869117642802108541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2869117642802108541'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/ioports-puntos-considerar-para-newbies.html' title='IO.Ports puntos a considerar para newbies'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8127616274402589535</id><published>2007-05-23T14:36:00.000-07:00</published><updated>2007-05-24T12:01:41.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ReCaptcha'/><title type='text'>ReCaptcha</title><content type='html'>Según la definición que encontré &lt;a href="http://recaptcha.net/learnmore.html"&gt;Captcha &lt;/a&gt;es "un programa que puede decir si el usuario es un programa o una computadora", son esas letras difusas que se usan para validar que no se trate de un robot o un androide del mal. Ahora bien, que es &lt;a href="http://recaptcha.net/"&gt;ReCaptcha&lt;/a&gt;, pues resulta que ahora se puede hacer un gran beneficio a la humanidad además de activar tu cuenta de porn.com (por dar un ejemplo) recaptcha se divide en dos palabras, una que la computadora puede leer (mediante OCR) y una que la computadora NO puede leer (si, asi es,mediante OCR) la idea detrás de ReCaptcha es darle valor a esas letras que la computadora no puede digitalizar para ayudar a la &lt;a href="http://www.archive.org/"&gt;digitalización de libros.&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f42Igf6bkrQ/RlS2_FVxCLI/AAAAAAAAAAk/Y-7ARH2EE-w/s1600-h/captcha.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_f42Igf6bkrQ/RlS2_FVxCLI/AAAAAAAAAAk/Y-7ARH2EE-w/s320/captcha.JPG" alt="" id="BLOGGER_PHOTO_ID_5067876675580135602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Captcha&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f42Igf6bkrQ/RlS3ElVxCMI/AAAAAAAAAAs/EmcEQIKRU2Y/s1600-h/Recaptcha.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/RlS3ElVxCMI/AAAAAAAAAAs/EmcEQIKRU2Y/s320/Recaptcha.JPG" alt="" id="BLOGGER_PHOTO_ID_5067876770069416130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;ReCaptcha&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para usar ReCaptcha necesita estar conectado a Internet para que obtenga la lista de las palabras (es un WebService) y para descargarlo es necesario tener una cuenta en la pagina.&lt;br /&gt;&lt;br /&gt;Este programa viene con un API para que pueda ser usado en proyectos externos y asi lograr que los libros de Nietzche o de memin pinguin vivan por la posteridad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8127616274402589535?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8127616274402589535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8127616274402589535' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8127616274402589535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8127616274402589535'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/recaptcha.html' title='ReCaptcha'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f42Igf6bkrQ/RlS2_FVxCLI/AAAAAAAAAAk/Y-7ARH2EE-w/s72-c/captcha.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-3827123443819781416</id><published>2007-05-23T08:57:00.000-07:00</published><updated>2007-05-23T09:15:45.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='numenta'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes neuronales'/><category scheme='http://www.blogger.com/atom/ns#' term='NSL'/><title type='text'>Redes neuronales</title><content type='html'>Hace tiempo buscando información sobre &lt;a href="http://es.wikipedia.org/wiki/Red_neuronal_artificial"&gt;redes neuronales&lt;/a&gt; me tope con el libro del &lt;a href="mailto:alfredo@itam.mx"&gt;Dr. Alfredo Weitzenfeld&lt;/a&gt; &lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=8815"&gt;The Neural Simulation Language : A System for Brain Modeling, &lt;/a&gt;en aquel entonces estaba muy interesado en aprender sobre redes neuronales (pero el trabajo me engullo) bajo la premisa "hay que simular como trabaja el cerebro" y hace semanas me encontré el proyecto &lt;a href="http://www.numenta.com/"&gt;Numenta&lt;/a&gt; (disponible para Linux y Mac Os), fundado y patrocinado en parte por el dueño de palm Jeff Hawkins. Numenta se basa en &lt;a href="http://www.numenta.com/about-numenta/numenta-technology.php"&gt;HTM &lt;/a&gt;(Hierarchical Temporal Memory) que intenta simular como trabaja la corteza del cerebro. El mismo Hawkins habla de su proyecto en &lt;a href="http://www.spectrum.ieee.org/apr07/4982"&gt;el siguiente articulo&lt;/a&gt;&lt;a href="http://www.spectrum.ieee.org/apr07/4982"&gt;.&lt;/a&gt;&lt;br /&gt;El problema con el que me he topado para estudiar este proyecto es que los &lt;a href="http://www.numenta.com/for-developers/software/programmer-guide/NumentaDocs-02-1.html#wp1723450"&gt;ejemplos &lt;/a&gt;de la pagina vienen en pyton :S&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-3827123443819781416?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/3827123443819781416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=3827123443819781416' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3827123443819781416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/3827123443819781416'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/redes-neuronales.html' title='Redes neuronales'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-6607274491762231223</id><published>2007-05-23T08:14:00.000-07:00</published><updated>2007-05-23T08:19:19.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SubSonic'/><title type='text'>SubSonic post 1.2</title><content type='html'>Me ha llamado la atención esta herramienta asi que le he puesto algo mas de tiempo (and now i have the code!!!!), ya que es de lo mas tedioso el manejo de la capa de datos (tanto que en la empresa donde trabajo tienen personal dedicado a tiempo completo para desarrollar solo querys)&lt;br /&gt;Recomiendo leer el &lt;a href="http://www.codealtdelete.com/Download/SubSonic.pdf"&gt;quickstart guide&lt;/a&gt; que viene en la pagina, ya que da un recorrido completo del producto.&lt;br /&gt;Después de analizar el código y ver la documentación llegue a las siguientes conclusiones:&lt;br /&gt;&lt;br /&gt;Pros&lt;br /&gt;1- Evita inyecciones de SQL&lt;br /&gt;2- Facilita el manejo de capa de datos.&lt;br /&gt;3- Baja curva de aprendizaje&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Contras y dudas&lt;br /&gt;1- Generar un objeto por tabla puede disminuir el rendimiento en BD con gran cantidad de tablas&lt;br /&gt;2- No hay soporte para postgree (pero tienes el código para ponerlo)&lt;br /&gt;3- ¿Funcionara bajo sql2005?&lt;br /&gt;4- ¿Compatible con Mono?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-6607274491762231223?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/6607274491762231223/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=6607274491762231223' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6607274491762231223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/6607274491762231223'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/subsonic-post-12.html' title='SubSonic post 1.2'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-2358987570025034228</id><published>2007-05-22T13:12:00.000-07:00</published><updated>2007-05-22T13:16:28.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SubSonic'/><title type='text'>SubSonic</title><content type='html'>Leyendo el blog de Miguel de Icaza me encontré con esta herramienta '&lt;a href="http://codeplex.com/actionpack"&gt;subsonic&lt;/a&gt;' que sirve para separar la horrible capa de datos con la mas horrible capa de negocios, hay un muy buen demo &lt;a href="http://www.wekeroad.com/actionpackintro.html"&gt;aquí&lt;/a&gt;.&lt;br /&gt;Si funciona como se ve permitiría olvidarme (en gran medida) del acceso a datos para poder simplemente llamar a la clase enlazada con la tabla.&lt;br /&gt;Habra que ver si funciona con postgreSQL y si es posible generar consultas complejas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-2358987570025034228?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/2358987570025034228/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=2358987570025034228' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2358987570025034228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/2358987570025034228'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/subsonic.html' title='SubSonic'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8131664339842855014</id><published>2007-05-21T14:30:00.000-07:00</published><updated>2007-05-21T14:37:05.461-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>Energia free as a beer</title><content type='html'>La filosofía open source de verdad que es abierta y de amplio rango, ahora es posible obtener conocimientos diversos por proyectos abiertos, como&lt;a href="http://www.mastermagazine.info/articulo/11711.php"&gt; sistemas auto sustentables de generación eléctrica&lt;/a&gt;. Ojala esto disminuya la brecha tecnológica entre los paises&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8131664339842855014?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8131664339842855014/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8131664339842855014' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8131664339842855014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8131664339842855014'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/energia-free-as-beer.html' title='Energia free as a beer'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1876833640819128543</id><published>2007-05-21T14:20:00.000-07:00</published><updated>2007-05-21T14:29:51.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pirateria'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Hardware: Lo que golpeas. Software: La causa.</title><content type='html'>En mi trabajo actual como auditor he tenido que lidiar con esa extraña raza que son los contadores, y he intentado discutir porque Linux es una mejor opción contra vista, pero he tenido argumentos en contra como "&lt;span style="font-style: italic;"&gt;si es lento le pongo mas memoria&lt;/span&gt;" o "p&lt;span style="font-style: italic;"&gt;ara que quiero que sea taaan rápido&lt;/span&gt;". Aquí es donde aplica el dicho mas vale malo por conocido....&lt;br /&gt;Es increíble como se resisten al cambio, si ofrezco una opción al office (&lt;a href="http://www.openoffice.org/"&gt;openoffice &lt;/a&gt;of course) la desechan inmediatamente, "&lt;span style="font-style: italic;"&gt;solo porque las ventanas se ven diferentes&lt;/span&gt;" o "&lt;span style="font-style: italic;"&gt;tal acceso rápido no esta ahí&lt;/span&gt;" y obvio, solicitan su licencia de office.&lt;br /&gt;Mi experiencia me ha dicho que los siguientes puntos son validos para casi cualquier desarrollo comercial que tenga que ver con usuarios poco duchos (por no decir e-gnorantes)&lt;br /&gt;&lt;br /&gt;1- El usuario no quiere cambiar su forma de trabajo&lt;br /&gt;2- Al usuario no le interesa la fiabilidad (excepto cuando se presenta la falla) generalmente le interesa la simplicidad&lt;br /&gt;3- Al usuario le importa un comino que sea gratis (&lt;a href="http://mx.news.yahoo.com/s/reuters/070516/tecnologia/internet_tecnologia_pirateria_latinoamerica_sol"&gt;en México más del 60% del software es pirata&lt;/a&gt;) para el usuario TODO el software es gratis&lt;br /&gt;4- No existe una "conciencia moral" de que se esta rompiendo leyes de derecho de autor&lt;br /&gt;5- El usuario promedio aun paga por revisar su máquina (formatado, revisión de virus, incluso por limpiarla con aire comprimido)&lt;br /&gt;6- Las empresas tienen una cultura muy relajada de adquisición de activos (compran una licencia e instalan en todas sus máquinas)&lt;br /&gt;7- La conciencia de que hay una comunidad no le interesa al usuario promedio.&lt;br /&gt;8- No se tiene ningún interes de leer que es lo que estas capturando, por lo que debe minimizarse&lt;br /&gt;&lt;br /&gt;Lo que me lleva a diversas conclusiones para utilizar Linux&lt;br /&gt;1- El código debe ser portable sin afectar la experiencia del usuario (&lt;a href="http://mono-project.com/Main_Page"&gt;Mono&lt;/a&gt;, &lt;a href="http://www.java.com/es/"&gt;Java&lt;/a&gt;, etc.)&lt;br /&gt;2- Simplicidad de interfaz&lt;br /&gt;3- Recuperación de errores transparente para el usuario y sin entrar en detalles (realmente no hay un feedback adecuado, es mejor entrar al sistema como administrador, generar el mismo error y entonces si, mostrar detalles técnicos)&lt;br /&gt;4- La educación es esencial, Linux necesita enseñarse en las escuelas publicas al mismo tiempo que windows. El usuario promedio solo sigue una serie de pasos predefinidos para solucionar el problema, generalmente los seguira y en caso de no poder resolver el problema escalara a pago (o a preguntarle a un amigo informático)&lt;br /&gt;*Nótese la barbaridad que acabo de decir ya que en la educación básica de mi país es bastante con tener una computadora para que la vean los alumnos.&lt;br /&gt;5- Hay que quitarle la etiqueta de que Linux es para hackers (aun y cuando asi sea)&lt;br /&gt;6- Tiene que eliminarse el uso de la consola (excepto quizas para cuestiones administrativas)&lt;br /&gt;&lt;br /&gt;Hay que trabajar desde las bases para fomentar el cambio, por ello, enseñen a sus hijos Linux (al menos yo lo hare) o si no Solaris!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1876833640819128543?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1876833640819128543/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1876833640819128543' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1876833640819128543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1876833640819128543'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/hardware-lo-que-golpeas-software-la.html' title='Hardware: Lo que golpeas. Software: La causa.'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-9140258785606735744</id><published>2007-05-19T17:46:00.000-07:00</published><updated>2007-05-19T17:51:33.312-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='Inyeccion'/><title type='text'>No olvides la bonita inyeccion de sql</title><content type='html'>Para que no se me olvide y complementar mi programita que envia automaticamente scritps malvados de corazon añadire las siguientes pruebas&lt;br /&gt;&lt;br /&gt;' or 1=1--&lt;br /&gt;" or 1=1--&lt;br /&gt;or 1=1--&lt;br /&gt;' or 'a'='a&lt;br /&gt;" or "a"="a&lt;br /&gt;') or ('a'='a&lt;br /&gt;; exec master..xp_cmdshell 'ping 10.10.1.2'--&lt;br /&gt;&lt;br /&gt;DISCLIMER&lt;br /&gt;&lt;br /&gt;Esto es para añadirle funcionalidades a mi clase lanzadora y para probar mis clase de seguridad que dectecta estas expresiones regulares (regex!!) para avisarle corriendo a quien mas confianza le tenga el sistema, jamas, jamas, pero jamas de los jamases para darle ideas a la gente, si no, que se vaya a la quiebra MS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-9140258785606735744?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/9140258785606735744/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=9140258785606735744' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/9140258785606735744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/9140258785606735744'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/no-olvides-la-bonita-inyeccion-de-sql.html' title='No olvides la bonita inyeccion de sql'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1469159076690281567</id><published>2007-05-19T11:46:00.000-07:00</published><updated>2007-05-19T11:54:06.129-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syscalls'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>¿Porque windows es menos seguro que Linux?</title><content type='html'>Estas gráficas representan las llamadas al kernel  (syscalls) de Linux corriendo apache y windows corriendo IIS, como se ve a  simple vista es muy ordenado windows&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: georgia;font-family:Arial;font-size:100%;"  &gt;Linux corriendo apache&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f42Igf6bkrQ/Rk9G8lVxCKI/AAAAAAAAAAc/hNgsZ6vX3q8/s1600-h/SysCallIIS.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_f42Igf6bkrQ/Rk9G8lVxCKI/AAAAAAAAAAc/hNgsZ6vX3q8/s320/SysCallIIS.jpg" alt="" id="BLOGGER_PHOTO_ID_5066346112444598434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: georgia;"&gt;Windows corriendo IIS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.zdnet.com/images/SysCallIIS.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f42Igf6bkrQ/Rk9Gd1VxCJI/AAAAAAAAAAU/k4VcJx7NHws/s320/SysCallApache.jpg" alt="" id="BLOGGER_PHOTO_ID_5066345584163621010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="font-family: georgia;"&gt;&lt;span style="font-size:100%;"&gt;¿bonito no? Ahora si se porque una imagen vale mas que mil palabras.&lt;br /&gt;&lt;br /&gt;Por cierto, fue tomado (pirateado??) del blog de &lt;a href="http://blogs.zdnet.com/threatchaos/"&gt;Richard Stiennon&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1469159076690281567?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1469159076690281567/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1469159076690281567' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1469159076690281567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1469159076690281567'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/porque-windows-es-menos-seguro-que.html' title='¿Porque windows es menos seguro que Linux?'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f42Igf6bkrQ/Rk9G8lVxCKI/AAAAAAAAAAc/hNgsZ6vX3q8/s72-c/SysCallIIS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8448004699463261790</id><published>2007-05-19T10:47:00.000-07:00</published><updated>2007-05-19T10:50:58.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63'/><title type='text'>Resistencia!!!</title><content type='html'>Mas que resistencia es mas bien chisme, pero ahí va, en estos dias esta causando revuelo esto&lt;br /&gt;&lt;h1 id="title"&gt;&lt;a href="http://09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63.com/" title="09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63"&gt;09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;un simple numerito, pero resulta que ese numerito sirve para romper la protección de los HD-DVD, ya trono (tronaron mejor dicho) digg.com y estan haciendole un altar para demostrar como los símbolos paganos matemáticos superan a las leyes y derechos de autor.&lt;br /&gt;O dicho de otra forma, este numero representa el comunista (o libertador) que todos llevamos dentro, bueno eso representa por estos dias.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8448004699463261790?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8448004699463261790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8448004699463261790' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8448004699463261790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8448004699463261790'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/resistencia.html' title='Resistencia!!!'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-7657942523248017999</id><published>2007-05-18T15:47:00.000-07:00</published><updated>2007-05-19T10:51:52.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='select'/><category scheme='http://www.blogger.com/atom/ns#' term='getElementById'/><title type='text'>Nota mental</title><content type='html'>Si uso javascript debo (!!!) usar document.getElementById en lugar del nombre de un elemento, por ejemplo un select (combobox htmeliano) ya que en Internet explorer funciona, mas no en firefox.&lt;br /&gt;Recordar.. recordar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-7657942523248017999?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/7657942523248017999/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=7657942523248017999' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7657942523248017999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/7657942523248017999'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/nota-mental.html' title='Nota mental'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8779781857382462115</id><published>2007-05-18T11:56:00.000-07:00</published><updated>2007-05-19T10:52:22.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='visual studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>Debuguer con firefox</title><content type='html'>Desarrollaba una aplicación con Ajax, pero este me fallaba en firefox (quien no le pasado que tire la primera piedra) por lo que tuve que indagar un poco.&lt;br /&gt;He aquí el como utilizarlo desde Visual Studio 2005&lt;br /&gt;&lt;br /&gt;1. Desde el menu File (archivo pues) en la opción browse with, añadir el firefox y listo, asi de simple, asi de sencillo&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f42Igf6bkrQ/Rk333lVxCII/AAAAAAAAAAM/RrBpZn-KbCk/s1600-h/BrowseWith.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f42Igf6bkrQ/Rk333lVxCII/AAAAAAAAAAM/RrBpZn-KbCk/s320/BrowseWith.JPG" alt="" id="BLOGGER_PHOTO_ID_5065977690149947522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8779781857382462115?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8779781857382462115/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8779781857382462115' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8779781857382462115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8779781857382462115'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/debuguer-con-firefox.html' title='Debuguer con firefox'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f42Igf6bkrQ/Rk333lVxCII/AAAAAAAAAAM/RrBpZn-KbCk/s72-c/BrowseWith.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-8809499321441708203</id><published>2007-05-18T10:53:00.000-07:00</published><updated>2007-05-19T10:53:08.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='suse'/><title type='text'>Open blody open</title><content type='html'>He estado inmerso ultimamente mucho en el open source, me involucre con &lt;a href="http://www.mono-project.com/Downloads"&gt;Mono&lt;/a&gt;, instale &lt;a href="http://es.opensuse.org/Installation"&gt;OpenSuse&lt;/a&gt; en mi laptop y en la oficina (sin quitar windows) ahora me gusta bajar el código y estudiarlo y ya cargue &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;reflector &lt;/a&gt;en mi USB.&lt;br /&gt;Ahora veo mas claro los beneficios (para los desarrolladores) del open source, pero también hay que decir que la curva de aprendizaje puede ser intimidante al principio. Es una vision diferente del mundo (¿e-mundo?) pero ya me obligo a volver a estudiar mis libros de ensamblador.&lt;br /&gt;Con mis ojos puestos en este medio me gusta la filosofia de Sun, ahora hay open hardware (trabajo conjunto con otros desarrolladores, chips con licencia GLP, etc.) y mas me llama la atención como su CEO establece en su blog que &lt;a href="http://blogs.sun.com/jonathan_es/entry/consejos_gratuitos_para_pleiteadores"&gt;hizo crecer su empresa apoyando el software libre&lt;/a&gt;. Realmente es un paradigma completamente diferente y creo que vale la pena analizarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-8809499321441708203?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/8809499321441708203/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=8809499321441708203' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8809499321441708203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/8809499321441708203'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/05/open-blody-open.html' title='Open blody open'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-896736968690768071</id><published>2007-03-02T15:36:00.000-08:00</published><updated>2007-05-19T10:52:44.029-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='suse'/><title type='text'>Open source rocking on the free world</title><content type='html'>Obviando el titulo mamila he estado investigando, leyendo e indagando mucho acerca de opciones open source, siempre he mamado de la chichi de microsoft pero también estoy viendo y previendo la decadencia de vista, asi que como las ratas es tiempo de huir del barco.&lt;br /&gt;Linux, y mono evitaran que mi mundo cambie (al menos de forma dramática)  solo tengo que conseguir una distribicion booteable desde cd o conseguir otro disco duro mas grande para poder aplicarlo en el trabajo.&lt;br /&gt;Le he dado muchas vueltas a java, desde hace tiempo tengo libros sobre el, pero por una razon u otra jamas he necesitado desarrollar en ella, y mono me ofrece una curva de aprendizaje menor (me estoy justificando??)&lt;br /&gt;Tambien me falta una BD y PostgreSQL puede ser.&lt;br /&gt;Ya veremos que depara el open future&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-896736968690768071?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/896736968690768071/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=896736968690768071' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/896736968690768071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/896736968690768071'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/03/open-source-rocking-on-free-world.html' title='Open source rocking on the free world'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-1608143799152734</id><published>2007-02-26T09:47:00.000-08:00</published><updated>2007-05-19T10:53:31.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malecon'/><category scheme='http://www.blogger.com/atom/ns#' term='culiacan'/><category scheme='http://www.blogger.com/atom/ns#' term='narcos'/><title type='text'>Un domingo en culiacan</title><content type='html'>Un domingo se te antoja un raspado ¿y que haces? vas y lo compras, craso error si vives en culiacan y quieres comprarlo en el malecón. Todo parece ir bien, una noche cualquiera, trafico fluido hasta parece que sera una experiencia agradable, avanzo un poco por el malecón y horrorizado me doy cuenta de mi realidad, una fila interminable de vehículos enfrente de mi, pareciera ser que todo culiacan tuvo la idea de ir al mismo lugar y al mismo tiempo pero ¿para que?.&lt;br /&gt;No es mi intención resolver esa inquietud que sin lugar a dudas tiene a sesudos intelectuales apremiados, ya que mi hamster no da para tanto, simplemente quiero retratar un poco esa "experiencia"&lt;br /&gt;Después de constatar que mientras mas caro sea tu carro mas mujeres tienes derecho a subir (camionetas con un hombre y 4 mujeres en la cabina lo atestiguan) y de que ese raspado seria tan gratificante como parir tunas me dedique a ver la forma que la juventud culichi se relaciona, vi diversos grupos el naco-narco, el narco-narco, el junior narco, el notengonadamejorquehacer, y la caza-narcos vi un punto en común, la mayoría se veian abstraídos, lejos de esa realidad, con su mirada perdida como si el hecho de estar ahí fuera el acto de ser, la música, los carros, las motos ruidosas, todo era un modo de llegar a esa realidad alterna, un adorno para no tener que lidiar con su vida. La búsqueda del yo con la negación del mismo dijeran los mamones.&lt;br /&gt;La vida en un semicirculo donde la música es lo de menos, que toque el disco de mp3 con miles de canciones berreadas por XXXX de la sierra (inserte cualquiera palabra donde dice XXXX) el porque estar ahi tampoco es importante, ni el estar con alguien, lo verdaderamente  importante es estar, sin mirarse a los ojos, gritar improperios hacia la nada de cuanto en cuanto, y volver al letargo que ofrece el nirvana culichi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-1608143799152734?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/1608143799152734/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=1608143799152734' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1608143799152734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/1608143799152734'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/02/un-domingo-en-culiacan.html' title='Un domingo en culiacan'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4538535577335655952.post-5571683378092472023</id><published>2007-02-26T08:57:00.000-08:00</published><updated>2007-02-26T09:01:10.511-08:00</updated><title type='text'>Manifiesto</title><content type='html'>¿Porque escribir un manifiesto? quizas para justificar el hecho de crear este blog, de cualquier manera debería ser tan general como sea posible, evitando la cohesión y permitiendo la reutilización (si, obvio soy informático)&lt;br /&gt; ¿De que trata? de todo y nada, tan cambiante como ambiguo, como el ser humano mismo, sin limites y sin rumbo (tal vez sin ambiciones)&lt;br /&gt;Todo esta dicho, asi que el dedo meñique de dios esta sobre la tecla enter.&lt;br /&gt;que asi sea....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4538535577335655952-5571683378092472023?l=diosygolem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diosygolem.blogspot.com/feeds/5571683378092472023/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4538535577335655952&amp;postID=5571683378092472023' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5571683378092472023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4538535577335655952/posts/default/5571683378092472023'/><link rel='alternate' type='text/html' href='http://diosygolem.blogspot.com/2007/02/manifiesto.html' title='Manifiesto'/><author><name>Kristian Damián</name><uri>http://www.blogger.com/profile/08496788543254070620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
