tag:blogger.com,1999:blog-3730625358969280882024-02-01T23:32:35.014-08:00Triques de NigroUnknownnoreply@blogger.comBlogger25125tag:blogger.com,1999:blog-373062535896928088.post-52643901187695442092019-08-20T15:09:00.001-07:002020-02-04T20:36:15.884-08:00Decompilando JavaDisclaimer: Este post es sin animo de incitar a usos indebidos de las herramientas.<br />
<br />
En estos días he tomadoun sistema legado de un cliente, el sistema funciona en tomcat y obviamente esta escrito en java y como la mayoría de las veces pasa no existen las fuentes del proyecto así que me di a la tarea e investigar como hacer para darle mantenimiento.<br />
<br />
Después de mucho investigar aquí va la receta por si algún día tienen un problema similar<br />
<br />
1. Hacer una copia del proyecto, generalmente es un archivo war<br />
2. Descompilarlo con Java decompiler (http://java-decompiler.github.io)<br />
3. Desde Java decompiler guardar las fuentes de todos los archivos. (esto genera un archivo .zip)<br />
4. Descomprimir el zip en un directorio<br />
5. Limpiar la basura generada por Java decompiler.<br />
<br />
Para este paso usaremos las siguientes lineas de código (se asume para este ejercicio una consola de linux)<br />
<br />
find . -type f -exec sed -i 's/\/\*\s*[0-9]*\s*\*\///g' {} \;<br />
find . -type f -exec perl -i -0pe 's/\/\*\s*Location.*\n\s*\*\s*\Java compiler version.*\n\s*\*\s*JD-Core Version.*\n.*\*\///gm' {} \;<br />
<br />
Estos archivo, supongo pueden cambiar de acuerdo a la versión de Java decompiler, este ejercicio se realizo con JD-Core Version: 1.0.7<br />
<br />
6. Importar el proyecto en el IDE de su preferencia.<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-65813585979259478282013-11-19T10:55:00.000-08:002013-11-19T11:44:01.277-08:00Agregar usuarios terminal mac os xAgregar usuarios en una máquina con Mac OS X desde la terminal es una tarea un tanto compleja, estos son los pasos que me han funcionado. <br />
<br />
mkdir /Users/usuario<usuario></usuario><br />
dscl . -create /Users/usuario<usuario></usuario><br />
dscl . -create /Users/<usuario>usuario UserShell /bin/bash<br />dscl . -create /Users/usuario<usuario> RealName "<datos usuario="">datos usuario"<br />dscl . -create /Users/<usuario>usuario UniqueID "<id usuario="">id usuario"<br />dscl . -create /Users/usuario<usuario> PrimaryGroupID idgrupo<id grupo=""></id></usuario></id></usuario></datos></usuario></usuario><br />
dscl . -passwd /Users/usuario<usuario> "clave usuario<clave usuario="">"<br />chown <usuario>usuario:grupo<grupo> /Users/usuario<usuario><br />dscl . -create /Users/<usuario>usuario home /Users/usuario<usuario></usuario></usuario></usuario></grupo></usuario></clave></usuario><br />
dscl . -create /Users/<usuario>usuario NFSHomeDirectory /Users/usuario</usuario><br />
<br />
<usuario>dseditgroup -o edit -a usuario -t user com.apple.access_ssh </usuario><br />
<usuario></usuario><br />
<usuario></usuario><br />
<usuario><usuario></usuario></usuario>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-68974990969875410992013-10-31T12:14:00.001-07:002013-10-31T12:14:51.987-07:00Como cambiar charset linux ^MCuando se edita un archivo de una máquina linux con WinSCP, este programa le cambia el charset agregando un ^M al final de cada linea como texto por lo que hay que cambiar todas las apariciones de esos caracteres en el archivo por un retorno de caroo con la siguiente instrucción dentro de vi<br />
<br />
<span class="example">:1,$s/^M/\n/g </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-2025935868762785192012-11-07T10:17:00.000-08:002012-11-07T10:17:30.321-08:00MySQL - Permitir conexiones remotasSi queremos que otras maquinas puedan ver nuestras bases de datos tenemos que crear un usuario y permitirle conectarse desde una maquina remota tanto en la base de datos como en el firewall.<br />
<br />
<b>En MySQL</b>
<br />
<br />
mysql> GRANT ALL PRIVILEGES ON *.* TO '<i>USERNAME</i>'@'<i>IP</i>' IDENTIFIED BY 'PASSWORD';
<br />
mysql> FLUSH PRIVILEGES;<br />
<br />
Nota: el parámetro IP puede ser % para permitir conexiones desde cualquier servidor.<br />
<br />
<b>En IPTABLES</b><br />
<br />
Para permitir que cualquier maquina pueda conectarse a mysql<br />
<br />
iptables -p tcp -m tcp --dport 3306 -j ACCEPT<br />
<br />
Para permitir que una maquina especifica pueda conectarse a mysql<br />
iptables -p tcp -m tcp -s x.x.x.x --dport 3306 -j ACCEPT<br />
<br />
x.x.x.x - dirección ip de la maquina que se conectara a mysql<br />
<br />
<b>Nota:</b> Hay que procurar usar direcciones IP para no tener problemas de conexión en caso de fallo del DNS<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-5649201651940724352012-11-06T13:44:00.001-08:002012-11-06T13:49:28.427-08:00Certificados SSLSi queremos registrar nuestro sitio para que acepte conexiones SSL
debemos generar los certificados de la siguiente manera:
1. Generamos el par de llaves
openssl genrsa -des3 -out www.mydomain.com.key 2048
2. Generamos el certificado
openssl req –new –key www.mydomain.com.key –out www.mydomain.com.csr
Este último archivo debe enviarse a alguna agencia verificadora para que el navegador al acceder al sitio sepa que es un sitio seguro y no mande mensajes de alerta.
Fuente: http://toolboxnet.blogspot.mx/2012/06/pasos-para-generar-llaves-ssl-en-apache.html#.UJloq3VmLSgUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-55635428876228999622012-11-06T13:40:00.003-08:002012-11-06T13:40:30.952-08:00Verificar crontab de un usuarioSi somos administradores de un sistema podemos revisar los comandos que cada usuario tiene en su crontab.
crontab -u <usuario> -l
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-83803648596832402482012-11-06T13:37:00.003-08:002012-11-06T13:37:52.968-08:00Ver Usuarios Mac OS X ServerSi queremos listar rápidamente todos los usuarios del servidor tenemos que aplicar el siguiente comando en la consola.
dscl /LDAPv3/127.0.0.1 -list /Users RealName
Referencia: https://discussions.apple.com/thread/1392481?start=0&tstart=0Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-91755080586626842342012-11-05T12:18:00.001-08:002012-11-05T12:18:13.898-08:00Acceder a MySQL con un “too many connections”Si no es posible reiniciar el servicio por ese error, este comando permite aumentar el numero de conexiones para acceder y pararlo.
gdb -p `cat /var/run/mysqld/mysqld.pid` -ex "set max_connections=1000" -batch
Fuente: http://dmnet.bitacoras.com/archivos/software/acceder-a-mysql-con-un-too-many-connections.phpUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-68766773456596784142011-09-13T23:27:00.001-07:002011-09-13T23:27:08.039-07:00Drivers BCM43xx ubuntusudo apt-get install firmware-b43-installerUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-79983579098299308272011-08-21T22:23:00.001-07:002011-08-21T22:23:53.904-07:00Instalar Eclipse en ubuntusudo apt-add-repository "deb http://archive.canonical.com/ natty partner"
<br />sudo apt-get update
<br />sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fontsUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-11663616269946759772010-10-30T19:55:00.000-07:002010-10-30T19:57:05.211-07:00Binarios de python para Python de MySQLhttp://servut.us/akx/2010/09/mysqldb-windows-binaries-python-26-27/Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-14260881274926199802010-10-16T23:53:00.001-07:002010-10-17T00:05:58.028-07:00Botones de stock de glade en ubuntuPara que se vean los botones de stock generados con galde y pygtk en ubuntu se debe hacer lo siguiente<br /><br />en gcon-editor activar<br /><br />/desktop/gnome/interface/{buttons_have_icons,menus_have_icons}<br /><br />Fuente<br /><br />http://www.mail-archive.com/pygtk@daa.com.au/msg18483.htmlUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-31905498630457207372010-10-10T16:11:00.000-07:002010-10-10T16:28:59.458-07:00Webkit en windowsPara usar webkit en windows usaremos gtk y python<div><br /></div><div>Python puede descargarse en binario desde </div><div><a href="http://www.python.org/">http://www.python.org</a></div><div><br /></div><div>Descargamos el run-time de gtk de la siguiente liga</div><div><a href="http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.1-20100912_win32.zip">http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.1-20100912_win32.zip</a></div><div><br /></div><div>Descomprimimos el zip en algun directorio, por ejemplo C:\gtk, y lo agregamos al path de windows</div><div><br /></div><div>Las bibliotecas de gtk para python se pueden descargar de <a href="http://www.pygtk.org/downloads.html">http://www.pygtk.org/downloads.html</a></div><div><br /></div><div>se deben descarga e instalar los archivos siguientes</div><div><a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/">PyGTK</a></div><div><a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/">PyGObject</a></div><div><a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/">PyCairo</a></div><div><br /></div><div><b>Nota:</b> Es importante que la versión de las bibliotecas de gtk sean para la versión de python que este instalado. </div><div><br /></div><div>El run-time de Webkit se puede descargar de la siguiente liga</div><div><a href="http://www.gramps-project.org/wiki/images/d/d2/WebKitGTK-1.1.16.zip">http://www.gramps-project.org/wiki/images/d/d2/WebKitGTK-1.1.16.zip</a></div><div><br /></div><div>Descomprimimos el zip en algun directorio, por ejemplo C:\webkit, y lo agregamos al path de windows</div><div><br /></div><div>Las librerias de webkit para python pueden descargarse de la siguiente liga</div><div><a href="http://www.gramps-project.org/wiki/images/4/4d/PyWebKitGTK-1.1.7.win32-py2.6.zip">http://www.gramps-project.org/wiki/images/4/4d/PyWebKitGTK-1.1.7.win32-py2.6.zip</a></div><div><br /></div><div>Instalamos el binario del zip y tenemos nuestro sistema listo para trabajar con webkit</div><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-85721923802416877022010-06-24T17:20:00.000-07:002010-06-24T17:42:39.588-07:00Compilando en Flex<div style="text-align: left;">Para compilar una aplicación en flash en linux sin tener que estar recurriendo a la consola cada vez, podemos usar el siguiente script de bash que debe agregarse en las herramientas externas de gedit.</div><div style="text-align: left;"><br /></div><div>#!/bin/bash<br />if (/ruta/a/flex/bin/mxmlc -library-path+=/ruta/a /librerias/libs/lib/map_flex_1_18.swc "$GEDIT_CURRENT_DOCUMENT_PATH")<br />then<br />/usr/bin/firefox "`echo $GEDIT_CURRENT_DOCUMENT_PATH | awk -F.mxml {'print $1'}`.swf"<br />fi</div><div><br /></div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi41g0PSmKepMdqr_W_mDFXVAE3KoGvAbudFzIKqyytomqkmfyP98HDixogvUKyrciHs7zr9kHUa4AieZ8u9NoGul7R6JcaTf8KuUvnfuKARa5l60-qpLzcBbrsxnMoHGNb7zhh2qYKLE/s320/Pantallazo-Gestor+de+herramientas+externas.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 640px; height: 268px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5486501876834325634" /></div><div style="text-align: justify;">En mi casi uso F11 como atajo pero pueden poner la tecla que prefieran</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-38443605157447865002009-08-24T12:11:00.000-07:002010-02-26T18:23:20.450-08:00Parser sencillo Python<pre><code><br />#!/usr/bin/python<br /># -*- coding: iso-8859-15<br /><br />import re<br />import os<br />import sys<br />import fileinput<br />import time<br /><br />from datetime import date<br />from datetime import timedelta<br /><br />conrec = 1<br />conart = 1<br /><br />gtipo = ""<br />gunidad = ""<br />greceta = ""<br /><br />tipos = {"Individual":"I","Colectivo":"C","Colectivas":"C"}<br />estampas = {}<br /><br />frec = open('recetas.txt','w')<br />fart = open('articulos.txt','w')<br /><br />def procesar_tipo(m):<br /> global gtipo<br /><br /> if gtipo <> m.group(1):<br /> gtipo = m.group(1)<br /><br />def procesar_unidad(m):<br /> global gunidad<br /><br /> if gunidad <> m.group(1):<br /> gunidad = m.group(1)<br /><br />def procesar_receta(m, archivo, fecha, hora):<br /> global greceta, gunidad, gtipo, tipos, conrec, frec<br /><br /> if greceta <> m.group(1):<br /> greceta = re.sub('\|','',m.group(1))<br /><br /> conrec += 1<br /> if len(m.groups()) == 3:<br /> nombre = ""<br /> else:<br /> nombre = re.sub('\|','',m.group(3).strip())<br /><br /> fecha_rec = m.group(2)<br /><br /> if (fecha == ''):<br /> estampa = fecha_rec.split("/")<br /> estampa = date(int(estampa[2]),int(estampa[1]),int(estampa[0]))<br /> estampa = estampa + timedelta(days=1);<br /> else:<br /> estampa = fecha<br /><br /> cadena = "%s|%s|%s|%s|%s|%s|%s|%s|%s" % (conrec,greceta.strip(),gunidad,tipos[gtipo],nombre,fecha_rec,archivo,estampa,hora)<br /> #print cadena<br /> frec.write(cadena + "\n")<br /><br />def qcomas(cadena):<br /> return re.sub(',','',cadena)<br /><br />def procesar_articulo_cp(m):<br /> global conart, conrec, fart<br /><br /> conart += 1<br /> cadena = "%s|%s|%s|%s|%s|%s" % (conart,conrec,m.group(1).strip(),qcomas(m.group(4)),qcomas(m.group(5)),qcomas(m.group(3)))<br /> #print cadena<br /> fart.write(cadena + "\n")<br /><br />def procesar_articulo_sp(m):<br /> global conart, conrec, fart<br /><br /> conart += 1<br /> cadena = "%s|%s|%s|%s|%s|%s" % (conart,conrec,m.group(1).strip(),qcomas(m.group(3)),qcomas(m.group(4)),0.0)<br /> #print cadena<br /> fart.write(cadena + "\n")<br /><br />def parse(linea, archivo, fecha, hora):<br /> tipo = "Reporte de\s+(\w+)"<br /> tipo_surtimiento = "Reporte de Surtimiento\s+(\w+)"<br /> unidad = "UNIDAD\s+(\d+)"<br /> receta = "([\w|\s|\-]+)\s+(\d+\/\d+\/\d+)\s+([\w|\s|\À|,|\(|\)|\.|\Ñ|\/|\`|\-]*[\w|\.]\s\s\s)\s+(\w+)"<br /> #receta = "([\w|\s|\-]+)\s+(\d+\/\d+\/\d+)\s+(\w+)"<br /> receta_sn = "([\w|\s|\-]+)\s+(\d+\/\d+\/\d+)\s+(\w+)"<br /> articulo_cp = "((\w+[\s|\/|\.|\-])*\w+)\s+[\w|\d|\s|\:|\.|,|\;|\(|\)|\/\%|\-|Á|É|Í|Ó|Ú|Ü|á|é|í|ó|ú|ü|À|È|Ì|Ò|Ù|à|è|ì|ò|ù|Ñ|ñ]*\s+\$\s+([\d+,]*\d+\.\d+)\s+([\d+,]*\d+)\s+([\d+,]*\d+)\s+\$\s+([\d+,]*\d+\.\d+)"<br /> articulo_sp = "((\w+[\s|\/|\.|\-])*\w+)\s+[\w|\d|\s|\:|\.|,|\;|\(|\)|\/\%|\-|Á|É|Í|Ó|Ú|Ü|á|é|í|ó|ú|ü|À|È|Ì|Ò|Ù|à|è|ì|ò|ù|Ñ|ñ]*\s+([\d+,]*\d+)\s+([\d+,]*\d+)"<br /> patrones = {"tipo":tipo,"tipo_surtimiento":tipo_surtimiento,"unidad":unidad,"receta_cn":receta,"receta_sn":receta_sn,"articulo_cp":articulo_cp,"articulo_sp":articulo_sp}<br /><br /> for llave,patron in patrones.iteritems():<br /> m = re.match(patron, linea)<br /><br /> if m <> None:<br /> if llave == "tipo_surtimiento":<br /> procesar_tipo(m)<br /> elif llave == "tipo":<br /> procesar_tipo(m)<br /> elif llave == "unidad":<br /> procesar_unidad(m)<br /> elif llave == "receta_cn":<br /> procesar_receta(m, archivo, fecha, hora)<br /> elif llave == "receta_sn":<br /> procesar_receta(m, archivo, fecha, hora)<br /> elif llave == "articulo_cp":<br /> procesar_articulo_cp(m)<br /> elif llave == "articulo_sp":<br /> print "Holas"<br /> procesar_articulo_sp(m)<br /> break<br /><br />def recorrer_lineas(path, archivo, fecha, hora):<br /> for line in fileinput.input(path + archivo):<br /> parse(line, archivo, fecha, hora)<br /><br />def recorrer_archivos(directorio):<br /> global frec, fart, estampas<br /><br /> for base, dirs, files in os.walk(directorio+"txt/"):<br /> for f in files:<br /> #print "parsing: %s ..." % (f)<br /> estampa = estampas[f[:-3]]<br /> recorrer_lineas(base,f,estampa['fecha'],estampa['hora'])<br /> #recorrer_lineas(base,f,'','')<br /><br /> frec.close()<br /> fart.close()<br /><br />def obtener_estampa(directorio):<br /> global estampas<br /> estampa = {}<br /><br /> for base, dirs, files in os.walk(directorio+"pdf/"):<br /> for f in files:<br /> tiempo = os.stat(base + f)<br /> estampa['fecha'] = time.strftime("%Y-%m-%d",time.localtime(tiempo.st_mtime))<br /> estampa['hora'] = time.strftime("%I:%M:%S",time.localtime(tiempo.st_mtime)) <br /> estampas[f[:-3]] = estampa<br /><br />def main():<br /> if len(sys.argv) >=2:<br /> obtener_estampa(sys.argv[1])<br /> recorrer_archivos(sys.argv[1])<br /> else:<br /> print "Debe indicar la ruta de los archivos pdf y txt"<br /><br />if __name__ == '__main__':<br /> main()<br /></code><br /></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-8448407364446532432009-07-30T21:24:00.000-07:002009-07-30T21:25:57.380-07:00PostgreSQL EncodingIf you have an old postgres database that is still stored in SQL_ASCII and you want to move to one stored in UTF-8 (which is the standard for OpenACS), you can do the following:<br /><br />- pg_dump -f your_db.dmp your_db<br />- iconv -f ISO8859-1 -t UTF-8 your_db.dmp > utf.dmp<br />- psql your_utf_db < utf.dmp<br /><br />This assumes, that SQL_ASCII has been storing the content in ISO8859-1, which is a safe bet if you are in the US or western Europe. But don't nail me on that, if it does not work, try different source character sets (manual for iconv: http://www.mkssoftware.com/docs/man1/iconv.1.asp)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-51190259528686750712009-02-14T23:08:00.000-08:002009-02-14T23:17:21.657-08:00Serpientes y Escaleras 2a parteHola a todos mis posibles lectores, ya estuve trabajando el proyecto de Serpientes y Escaleras y ahora pongo una imagen de mis avances.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc2ve4mMqAZ7NIOcBHyVe05iLKJj-LX3sAaX998EXgm-qmTHT2Pxy4aoxvNW3uXi1-i6DNvvs1iDen4lPK3W3sjd78Ji_Ot82qAflWXT_SX2o9lBYRem3sw_SpzTzoHUKoXgrHRRbluKk/s1600-h/Pantallazo-Patolhuapalli-2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 281px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc2ve4mMqAZ7NIOcBHyVe05iLKJj-LX3sAaX998EXgm-qmTHT2Pxy4aoxvNW3uXi1-i6DNvvs1iDen4lPK3W3sjd78Ji_Ot82qAflWXT_SX2o9lBYRem3sw_SpzTzoHUKoXgrHRRbluKk/s400/Pantallazo-Patolhuapalli-2.png" alt="" id="BLOGGER_PHOTO_ID_5302918332991160722" border="0" /></a>Quite el fondo para hacer pruebas y porque estoy pensando en retirarlo y poner algo mas llamativo, esto porque posiblemente pase todo a pygame para darle mayor versatilidad, pero eso ya lo veré en la semana.<br /><br />Pondré los fuentes en la próxima entrega, donde también tratare de explicar un poco como fue codificado el juego.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-373062535896928088.post-36688588043252537382009-02-08T00:41:00.000-08:002009-02-09T21:48:15.643-08:00Serpientes y EscalerasEl primer juego que haré sobre el tablero que mencione en el post anterior es el de Serpientes y Escaleras, del cual a continuación pongo el diagrama que guiara la programación, si alguien lee el blog y de casualidad tiene un comentario no dude en ponerlo.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnJ_3TJrI3WFCT-5IrA7mq8az4QMbxxO9UPjhoriaGPWL-LG-zzhWn8zN2hBUpUYsKdul5PqsIJhhsmyOUkQWTY-e7x84uze6K3FMhyphenhyphenOoC_8kET1kyVwQMXg9vRWMbaUc3eouDDullxqg/s1600-h/Pantallazo-serpientes+y+escaleras.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 243px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnJ_3TJrI3WFCT-5IrA7mq8az4QMbxxO9UPjhoriaGPWL-LG-zzhWn8zN2hBUpUYsKdul5PqsIJhhsmyOUkQWTY-e7x84uze6K3FMhyphenhyphenOoC_8kET1kyVwQMXg9vRWMbaUc3eouDDullxqg/s400/Pantallazo-serpientes+y+escaleras.png" alt="" id="BLOGGER_PHOTO_ID_5301039560001266994" border="0" /></a>Como se ve en el diagrama, el flujo del juego es de izquierda a derecha en algunas lineas y de derecha a izquierda en otras de manera alternada. Habra un dado, aunque en la figura se muestran dos, o un papelito que asomara de un jarrito para seguir las reglas de la página del ILCE, puede haber de manera simultanea 6 jugadores, que podrán estar en la misma máquina o conectados por red.<br /><br />La reglas del juego pueden leerse <a href="http://lectura.ilce.edu.mx:3000/biblioteca/sites/litinf/huasteca/html/sec_49.htm">aquí</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-18314311017591499862009-02-02T13:01:00.000-08:002009-02-02T13:56:46.497-08:00Juegos en PythonEstoy haciendo unos juegos que me propuse hacer hacer algún tiempo y que por varios motivos había pospuesto, pero bueno, ahí va avanzando la cosa, lo que quiero mostrar en este post es el tablero que usare para poner los juegos, lo copie de los juegos de Gnome pero aun tiene fallos, iré mostrando los avances y al finalizar publicare el código.<br /><br />De momento les dejo una imagen del tablero en su estado actual.<p></p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHhAuTr9VTlzETij_PY1KxzTP49v1F_yynAg7MW0p-zwcOy-7s-bjCz_bJHINx27Bd58lsWmS8E1alovIHO7eMyy4PI0eHjoXMHfFtf3Bmt5MnZYWmmWtV7SyZuDIJm_rfdNW1wR7tY8/s1600-h/Pantallazo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 335px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHhAuTr9VTlzETij_PY1KxzTP49v1F_yynAg7MW0p-zwcOy-7s-bjCz_bJHINx27Bd58lsWmS8E1alovIHO7eMyy4PI0eHjoXMHfFtf3Bmt5MnZYWmmWtV7SyZuDIJm_rfdNW1wR7tY8/s400/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5298308849141909266" border="0" /></a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-8605966007318408252009-01-29T22:22:00.000-08:002009-01-30T14:14:35.099-08:00Bot MSNEstos días he estado haciendo programas pequeñitos en python, que iré publicando según me dé tiempo y me acuerde.<br /><br />En esta ocasión pondré un programa que es una vil copia del sitio de la biblioteca de msnp pero corregido para que reflejen los cambios en las listas de los contactos del bot.<br /><br />Sin más preámbulo ahí va el código :)<br /><pre style="color:#000000; background-color:#eeeeee; font-size:8pt; font-family:'Courier New';"><span style="color:#f27900"># echobot.py -- echo messages back to sender</span><br /><br /><span style="color:#bb7977; font-weight:bold">import</span> msnp<br /><span style="color:#bb7977; font-weight:bold">import</span> time<br /><br /><span style="color:#bb7977; font-weight:bold">class</span> <span style="color:#004466">MsnChatListener</span><span style="color:#ff0080; font-weight:bold">(</span>msnp<span style="color:#ff0080; font-weight:bold">.</span>ChatCallbacks<span style="color:#ff0080; font-weight:bold">):</span><br /> <span style="color:#bb7977; font-weight:bold">def</span> <span style="color:#004466">message_received</span><span style="color:#ff0080; font-weight:bold">(</span>self<span style="color:#ff0080; font-weight:bold">,</span> passport_id<span style="color:#ff0080; font-weight:bold">,</span> display_name<span style="color:#ff0080; font-weight:bold">,</span> text<span style="color:#ff0080; font-weight:bold">,</span> charset<span style="color:#ff0080; font-weight:bold">):</span><br /> <span style="color:#bb7977; font-weight:bold">print</span> <span style="color:#a68500">'%s: %s'</span> <span style="color:#ff0080; font-weight:bold">% (</span>passport_id<span style="color:#ff0080; font-weight:bold">,</span> text<span style="color:#ff0080; font-weight:bold">)</span><br /> self<span style="color:#ff0080; font-weight:bold">.</span>chat<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">send_message</span><span style="color:#ff0080; font-weight:bold">(</span>text<span style="color:#ff0080; font-weight:bold">,</span> charset<span style="color:#ff0080; font-weight:bold">)</span><br /><br /><span style="color:#bb7977; font-weight:bold">class</span> <span style="color:#004466">MsnListener</span><span style="color:#ff0080; font-weight:bold">(</span>msnp<span style="color:#ff0080; font-weight:bold">.</span>SessionCallbacks<span style="color:#ff0080; font-weight:bold">):</span><br /> <span style="color:#bb7977; font-weight:bold">def</span> <span style="color:#004466">chat_started</span><span style="color:#ff0080; font-weight:bold">(</span>self<span style="color:#ff0080; font-weight:bold">,</span> chat<span style="color:#ff0080; font-weight:bold">):</span><br /> callbacks <span style="color:#ff0080; font-weight:bold">=</span> <span style="color:#004466">MsnChatListener</span><span style="color:#ff0080; font-weight:bold">()</span><br /> chat<span style="color:#ff0080; font-weight:bold">.</span>callbacks <span style="color:#ff0080; font-weight:bold">=</span> callbacks<br /> callbacks<span style="color:#ff0080; font-weight:bold">.</span>chat <span style="color:#ff0080; font-weight:bold">=</span> chat<br /><br />msn <span style="color:#ff0080; font-weight:bold">=</span> msnp<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">Session</span><span style="color:#ff0080; font-weight:bold">(</span><span style="color:#004466">MsnListener</span><span style="color:#ff0080; font-weight:bold">())</span><br />msn<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">login</span><span style="color:#ff0080; font-weight:bold">(</span><span style="color:#a68500">'tlahtoa@hotmail.com'</span><span style="color:#ff0080; font-weight:bold">,</span> <span style="color:#a68500">'password'</span><span style="color:#ff0080; font-weight:bold">)</span><br />msn<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">sync_friend_list</span> <span style="color:#ff0080; font-weight:bold">()</span><br /><br /><span style="color:#bb7977; font-weight:bold">while True</span><span style="color:#ff0080; font-weight:bold">:</span><br /> msn<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">process</span><span style="color:#ff0080; font-weight:bold">(</span>chats <span style="color:#ff0080; font-weight:bold">=</span> <span style="color:#bb7977; font-weight:bold">True</span><span style="color:#ff0080; font-weight:bold">)</span><br /> time<span style="color:#ff0080; font-weight:bold">.</span><span style="color:#004466">sleep</span><span style="color:#ff0080; font-weight:bold">(</span><span style="color:#800080; font-weight:bold">1</span><span style="color:#ff0080; font-weight:bold">)</span><br /></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-75226054541298601162008-11-05T21:51:00.000-08:002008-11-05T21:52:52.624-08:00Crónica de una muerte en tiempo<p style="margin-bottom: 0.5cm;">Viendo las noticias del ayer martes, de las que dos fueron las más destacadas en México: por un lado el triunfo de Barack Obama en las elecciones presidenciales de los Estados Unidos de Norteamerica y por otro la muerte del Secretario de Gobernación en el un <i>avionetazo</i> en plena ciudad de México.<br /><br />Y a esto, me pregunto yo, ¿será que hago caso del dicho "Piensa mal y acertaras"?, desde mi punto de vista esta muerte puede leerse de varias maneras:</p> <ul><li><p style="margin-bottom: 0cm;">El secretario de gobernación no iba en la avioneta y solo fue una pantalla para sacarlo de alguna jugada de manera "decente". </p> </li><li><p style="margin-bottom: 0cm;">El presidente no puede legitimarse por una piedra en gobernación y se la sacudió. </p> </li><li><p>El triunfo de Obama en unas elecciones limpias podría dar pie a que México viera que el cambio es posible y el PAN no ganara las elecciones de 1999 y aplicaron la pantalla del <i>avionetazo</i> para que no fueran tan relevantes los sucesos en Estados Unidos. </p> </li><li><p>El narco se libro de dos de los actores políticos que, “no lo deja trabajar”.</p> </li></ul> En fin, creo que podria seguir creciendo la lista con cualquier número de suposiciones, ya el tiempo dira la versión oficial porque la real, creo que solo unos cuantos la saben.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-46613993956180468102008-10-23T18:54:00.001-07:002008-10-23T19:59:26.034-07:00Luchadores<div xmlns='http://www.w3.org/1999/xhtml'>Hay hombres que luchan un día y son buenos; <br/>hay otros que luchan un año y son mejores; <br/>hay otros que luchan muchos años y son muy buenos. <br/>Pero están los que luchan todos los domingos y esos son los chidos.<br/><br/><img src='http://www.geocities.com/chillidogsrule/wagnerface.jpg' style='max-width: 800px;'/><br/><br/><div class='youtube-video'><object height='355' width='425'><param name='movie' value='http://www.youtube.com/v/8yT6aFaXsSs'> </param><param name='wmode' value='transparent'> </param><embed height='355' width='425' src='http://www.youtube.com/v/8yT6aFaXsSs' type='application/x-shockwave-flash' wmode='transparent'> </embed> </object></div><br/><br/></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-47968607898075675602008-10-05T20:05:00.000-07:002008-10-05T20:35:11.340-07:00Nuevo monitorHola a todos mis posibles lectores, que creo que no deben ser mas que uno, yo, esta vez no escribire un post para quejarme sino para comentar acerca de mi nuevo monitor.<br /><br />Escribir en la lap ya me estaba lastimando, trabajar un rato en una lap puede ser, digamos... comodo, pero sí se usa por mas de ocho horas al día los tendones de las manos comienzan a resentirlo, asi que me compre un monitor de 20 pulgadas, teclado y raton óptico.<br /><br />De principio tuve problemas para configurarlo jamas habia usado un monitor externo con mi laptop, lo conecte y dirigi la salida de la pantalla al monitor, cual si fuera un proyector, y listo, la imagen se veia toda grandota por la "baja" resolución de la lap 1280x768, aumente la resolución y se vio bien, pero de repente parpadeaba o aparecian lineas parpadeantes, dias despues tratando de corregir este problema abri mi panel de la tarjeta gráfica (ATI) y por fin configure todo como debe de ser.<br /><br />Les comento que es muy comodo tener un monitor con tanta resolución 1680x1050, todo cabe en el, ademas que la pantalla de la laptop queda como una extensión del escritorio, y ahi se puede poner peliculas o cosas que se quieran ver al mismo tiempo que la ventana en la que se trabaja.<br /><br />Si tienen oportunidad haganse de un monitor igual o mas grande y con mucha resolución, les facilitara la vida y podran ver peliculas y trabajar al mismo tiempo. :)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-55494572248502412702008-09-28T23:13:00.000-07:002008-09-29T21:44:36.784-07:00Usuarios de computadorasA últimas fechas he accedido a ayudar a una vecina con sus problemas informáticos, craso error, y eso que me había leído el manual del pringado how-to, pero en fin, creo que eso de ayudar a las personas nunca ha sido buen negocio, no tanto por el tiempo que se pierde al ayudarlas por primera vez, sino porque la mayoría de las personas se sienten con el derecho de perdir que se les ayude siempre, esto, en el caso de de los problemas informáticos, crea en la persona que solicito la ayuda una dependencia a nivel subconsciente, supongo, ya que no puede pensar por si misma en como resolver los problemas que tiene con su computadora, y al menor reto a su inteligencia acude a solicitar ayuda nuevamente, con la consabida perdida de tiempo de la persona que lo auxilia.<br /><br />Ademas creen que en el caso que haya estudiado una carrera técnica o ingeniera, puedes arreglarles hasta la plancha.<br /><br />He decidido, de hoy en adelante, no ayudar a nadie mas, ni mencionar que se algo de informática. Si me preguntan si tengo laptop diré que que tengo el último modelo, mi vieja <span style="font-weight: bold;">olivetti portatil</span>.<br /><br />Recomiendo, para los que definitivamente no se les de aprender a usar una computadora, estas hermosas y nostálgicas máquinas de escribir. Y dejen de fastidiar al prójimo.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.geocities.com/wbd641/TilmanOlivettiVentura.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://www.geocities.com/wbd641/TilmanOlivettiVentura.jpg" alt="" border="0" /></a><br /><b>Características</b><br /><b><br />Fácil uso.</b><br /><b>Fácil de transportar.</b> (aunque, según recuerdo, pesa como 2 o 3 kilos)<br /><b>Traductor opcional</b>. (se puede uno comprar un diccionario ingles-español-ingles)<br /><b>Revisor ortográfico opcional</b>. (por lo regular uno tenia un diccionario al lado)<br /><b>Velocidad de impresión: de 1 a 4 páginas por hora. </b>(dependiendo de la habilidad)<b><br />Cartuchos de tinta económicos y durables.</b> (o al menos lo eran hace 20 años)<br /><br /><b>Requerimientos de energía:</b><br /><br /><p style="margin-bottom: 0cm;"><b>Dedos fuertes</b>. (porque ah! como duele cuando se meten entre las teclas) .<br /><br />Para las gráficas existe papel cuadriculado, regla, compás, escuadras, lapices de colores y gomas por aquello de las equivocaciones.</p><p style="margin-bottom: 0cm;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://es.geocities.com/colegiourimare/escuadras.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://es.geocities.com/colegiourimare/escuadras.jpg" alt="" border="0" /></a></p><p style="margin-bottom: 0cm;"><br /></p><p style="margin-bottom: 0cm;">Bueno hasta aqui este desahogador mensajito.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-373062535896928088.post-87857418210132581512008-09-28T23:07:00.000-07:002008-09-28T23:12:52.980-07:00BienvenidaHola a todos los posibles lectores de este antro personal, he abierto este Blog para desahogar todo lo que quiera compartir con quien quiera leer lo que aqui pondre, habra desde comentarios personales y páginas que me parezcan interesantes, hasta comentarios en contra o a favor del gobierno de la ciudad en la que de momento vivo, México D.F., mejor conocida como Chilangolandia.<br /><br />Si más que decir termino aqui este primer post.Unknownnoreply@blogger.com0