mié, 2011-07-06 20:42:17 -0500
Una frase para recordar
Recientemente volviendo a ver Cars 1 escuche una frase de Mate muy interesante No necesito saber a donde voy, solo saber donde he estado, creo aplica completamente a Colombia y adicionalmente a la frase El pueblo que no recuerda su historia está condenado a repetirla, para cada uno de nosotros Colombianos debemos recordar y no olvidarnos de los pasos que hemos dado en nuestra vida hacia donde nos dirijimos y de donde venimos.
jue, 2010-06-03 20:56:46 -0500
Un bueno video
Un buen video de la satasfacción del trabajo en el software libre
vie, 2010-04-23 09:36:43 -0500
Encuesta Mockus.
Una encuesta realizada por CM& y el centro nacional de consultoría sobre elecciones para presidente en Colombia.
vie, 2010-01-22 09:54:58 -0500
Mapserver + Mapscript + web.py
Recientemente he utilizado mapscript con web.py para generar mapas que sean generados en tiempo de ejecución, esta porción de código permite leer archivos .map y luego se renderizan con las opciones habituales de mapserver para WMS, el método POST adiciona algunas lines para permitir el uso de un servicio WFS dentro de mapserver.
Se puede utilizar jinja2 o algún otro manejador de templates para cambiar el .map en tiempo de ejecución y de esta forma poder enviar algún parámetro adicional para realizar cambios en el servicio WMS o WFS.
import web
import mapscript
# URLS
urls = (
'/','Basic',
)
def info_layer(cls):
aux=''
pathUrl=str(web.ctx.realhome+web.ctx.path)
web.header("Content-Type","text/html; charset=utf-8")
aux+='<b>Description: </b>%s<br>' % (str(cls.__doc__))
aux+='<b>Capabilities WMS: </b><a href="%s?SERVICE=wms&REQUEST=GetCapabilities&VERSION=1.1.1&REQUEST=GetCapabilities">%s</a><br>'%(pathUrl,pathUrl)
aux+='<b>Checker WMS FGDC: </b><a href="http://registry.fgdc.gov/statuschecker/services/rest/index.php?url=%s?SERVICE=wms&REQUEST=GetCapabilities&VERSION=1.1.1&type=wms&formattype=html">%s</a><br>'%(str(web.ctx.realhome+web.ctx.path),str(web.ctx.path))
return aux
class Basic:
"""Layers Basics
"""
def GET(self):
vars = web.input()
if len(vars)==0:
return info_layer(Basic)
req = mapscript.OWSRequest()
for i in vars.keys():
req.setParameter( i, vars[i])
map = mapscript.mapObj('basic.map')
mapscript.msIO_installStdoutToBuffer()
map.OWSDispatch( req )
content_type = mapscript.msIO_stripStdoutBufferContentType()
content = mapscript.msIO_getStdoutBufferBytes()
web.header("Content-Type","%s; charset=utf-8"%(content_type))
return content
def POST(self):
vars = web.input()
req = mapscript.OWSRequest()
for i in vars.keys():
req.setParameter( i, vars[i])
req.postrequest=web.data()
req.type=mapscript.MS_POST_REQUEST
map = mapscript.mapObj('basic.map')
mapscript.msIO_installStdoutToBuffer()
map.OWSDispatch( req )
content_type = mapscript.msIO_stripStdoutBufferContentType()
content = mapscript.msIO_getStdoutBufferBytes()
web.header("Content-Type","%s; charset=utf-8"%(content_type))
return content
app = web.application(urls, globals())
#web.internalerror = web.debugerror
if __name__ == "__main__":
app.run()
vie, 2009-10-02 10:58:31 -0500
Módulo para tryton de colores
He liberado un pequeño módulo para el manejo de colores en trython esto permitirá el manejo de colores y la visualización RGB en la vista de tabla (tree view). Los colores fueron tomados de Wikipedia y si se desea el módulo se encuentra en Intuxication

vie, 2009-09-18 09:23:59 -0500
Este es un claro ejemplo para que nosotros como seres humanos reflexionemos y no dejemos que los medios de comunicación nos impidan hacer nuestros propios análisis sobre situaciones que nos rodean día tras día.
vie, 2009-07-24 08:50:21 -0500
Colores en la Terminal
Para determinar los colores de uso en la terminar muchas veces puede ser una tarea tediosa y complicada y en ocaciones no se sabe como se verá los colores realmente, este script permite visualizar los colores configurados para una terminal.

mar, 2009-07-21 10:32:06 -0500
Test de Velocidad a la terminal
Luego de probar varios emuladores de terminal he escogido urxvt debido a su rapidez y su soporte para Unicode. Realice la siguiente prueba para comprobar la velocidad del scrolling de algunos de l os emuladores de terminal mas conocidos, aquí estan los resultados:
En todos los emuladores se coloco la siguiente instrucción:
time seq -f 'teeeeeeeeeeeeeeeeeeeeeeeeeeeeeest %g' 1000000
Y los resultados son los siguientes:
gnome-terminal
real 1m30.059s
user 0m0.664s
sys 0m0.660s
urxvt
real 0m3.886s
user 0m1.132s
sys 0m1.784s
urxt + screen
real 0m13.204s
user 0m1.172s
sys 0m1.096s
xterm
real 0m40.119s
user 0m1.172s
sys 0m1.032s
konsole
real 0m5.947s
user 0m1.144s
sys 0m1.064s
como se ve el más rápido de todos es urxvt seguido de konsole.
jue, 2009-07-16 13:25:50 -0500
Modificación a Markdown
Debido a que estoy pensando en migrar de nanoblogger a ikiwiki tuve la necesidad de tener todas mis entradas a [markdown] (http://daringfireball.net/projects/markdown/) para ello en utilizar la información de este blog seguir los pasos y listo.
Esta es una prueba con markdown * Candy. * Gum. * Booze.
- Candy.
- Gum.
- Booze.
mar, 2008-08-05 11:49:54 -0500
Modificacion de rxvt-unicode con tabs
rxvt-unicode es un emulador de terminal muy bonito, lo que le hacía falta era que pudiera tener tabs, buscando un poco en google se encuentra que colocando urxvt -pe tabbed se puede tener tabs los shorcuts son con Shift y las flechas:
Nuevo Tab Shift + Flecha Abajo Mover a la tab del lado derecho Shift + Flecha Derecha Mover a la tab del lado izquierdo Shift + Flecha Izquierda
al probarlo se tiene problemas con las tildes y las ñ este problema se soluciona cambiando el archivo /usr/lib/urxvt/perl/tabbed en la función tab_key_press, cambiaremos los shortcuts parecidos a los de firefox o a los de gnome terminal.
Se cambia: urxvt::ShiftMask > urxvt::ControlMask 0xff51 > 0xff55 0xff53 > 0xff56 0xff54 > 0x74
Con estola función queda de la siguiente manera
sub tab_key_press {
my ($self, $tab, $event, $keysym, $str) = @_;
if ($event->{state} & urxvt::ControlMask) {
if ($keysym == 0xff55 || $keysym == 0xff56) {
my ($idx) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} };
--$idx if $keysym == 0xff55;
++$idx if $keysym == 0xff56;
$self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]);
return 1;
} elsif ($keysym == 0x74) {
$self->new_tab;
return 1;
}
}
elsif ($event->{state} & urxvt::ControlMask) {
if ($keysym == 0xff55 || $keysym == 0xff56) {
my ($idx1) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} };
my $idx2 = ($idx1 + ($keysym == 0xff55 ? -1 : +1)) % @{ $self->{tabs} };
($self->{tabs}[$idx1], $self->{tabs}[$idx2]) =
($self->{tabs}[$idx2], $self->{tabs}[$idx1]);
$self->make_current ($self->{tabs}[$idx2]);
return 1;
}
}
()
}