Se tenian que enrollar en mi empresa y que preparasen puestos para la gente que usa portatil con por ejemplo algo tipo Logitech Alto.
¿Su precio? Pues creo que anda por los 99 euros.
jueves, junio 21, 2007
miércoles, junio 20, 2007
RotatingFile
He estado buscando algo para implementar la escritura en un fichero, con politica de rotación al superar un determinado tamaño, ya que no interesa reinventar nada.
Lo único que he encontrdo es el handler RotatingFileHandler de python.
Dicho handler podría ser valido o no, dependiendo de los requisitos funcionales. A mi, para lo que tengo que hacer no, pero ahí va un ejemplo de su uso. Una clase que lo recubre:
Lo único que he encontrdo es el handler RotatingFileHandler de python.
Dicho handler podría ser valido o no, dependiendo de los requisitos funcionales. A mi, para lo que tengo que hacer no, pero ahí va un ejemplo de su uso. Una clase que lo recubre:
import logging
import sys
from logging.handlers import RotatingFileHandler
#------------------------------------------------------------------------------
# RotatingFile
#------------------------------------------------------------------------------
class RotatingFile:
#------------------------------------------------------------------------------
def __init__(self,pathFilename,numBytes=0,numFiles=0):
"""
Notas:
- El fichero es de texto
- Para que exista la rotación los argumentos opcionales no pueden ser
0.
"""
# Notas:
# - Como al logger no se le fija un nivel, sacará todo
# - Al logger se le pone como identificador, la ruta al fichero.
# - Si numFiles es muy alto el algofirmo que se usa en el 'handler'
self.__logFile = pathFilename
self.__logger = logging.getLogger(self.__logFile)
hdlr = RotatingFileHandler( self.__logFile,'a',numBytes,numFiles )
fmt = logging.Formatter("%(message)s")
hdlr.setFormatter(fmt)
self.__logger.addHandler(hdlr)
#------------------------------------------------------------------------------
def write(self,value):
self.__logger.critical(value)
#------------------------------------------------------------------------------
# main (de prueba)
#------------------------------------------------------------------------------
if ( __name__ == "__main__") :
rf = RotatingFile("rotatingfile.out",10,5)
for i in range(10):
rf.write(str(i))
lunes, junio 18, 2007
WinShit
Definivamente.... windows es una mierda de sistema operativo.
El viernes lo pude comprobar en mis propias carnes. Me paso algo que como es posible que jamas puede llegar a pasar en un sistema operativo. ¿Como puede ser que el SO no sea capaz de borrar un arbol de directorios?
En mi curro suelo currar remotamiente con sesiones ssh, pero para probar una cosilla, decidí hacerlo en local, usando el eclipse: así mataba dos pajaros de un tiro: probaba lo que tenía que probar y echaba un vistazo a eclipse.
Pues bien... como no controlo eclipse, y tampoco miré ni un misero tutorial ni leches, hice algo mal y el programita de marras me metió en un bucle creando una estructura de directorios anidada recursiva muy profunda.
Al detectalo pues intenté borrarlo, encontrandome con el problema que menciono: link a la página de soporte de Microsoft.
Al no poder se me ocurrió es usar Linux, pero Linux con ntfs no se lleva demasiado bien... Hay cosillas por ahí un poco experimentales... y ante mi urgencia y no tener instalado linux en la maquina (probé con live-cd) me busqué alguna alternativa.
Al final mediante el comando subst y paciencia he podido borrar casi todo, pero me queda algo que no he sido capaz. Parece que hay algo corrupto (pero chkdsk no da errores)... A ver si le vuelvo a meter mano y acabo de una vez con el dichoso arbolito...
Unos links para acabar:
El viernes lo pude comprobar en mis propias carnes. Me paso algo que como es posible que jamas puede llegar a pasar en un sistema operativo. ¿Como puede ser que el SO no sea capaz de borrar un arbol de directorios?
En mi curro suelo currar remotamiente con sesiones ssh, pero para probar una cosilla, decidí hacerlo en local, usando el eclipse: así mataba dos pajaros de un tiro: probaba lo que tenía que probar y echaba un vistazo a eclipse.
Pues bien... como no controlo eclipse, y tampoco miré ni un misero tutorial ni leches, hice algo mal y el programita de marras me metió en un bucle creando una estructura de directorios anidada recursiva muy profunda.
Al detectalo pues intenté borrarlo, encontrandome con el problema que menciono: link a la página de soporte de Microsoft.
Al no poder se me ocurrió es usar Linux, pero Linux con ntfs no se lleva demasiado bien... Hay cosillas por ahí un poco experimentales... y ante mi urgencia y no tener instalado linux en la maquina (probé con live-cd) me busqué alguna alternativa.
Al final mediante el comando subst y paciencia he podido borrar casi todo, pero me queda algo que no he sido capaz. Parece que hay algo corrupto (pero chkdsk no da errores)... A ver si le vuelvo a meter mano y acabo de una vez con el dichoso arbolito...
Unos links para acabar:
miércoles, junio 13, 2007
WinSysAdmineando
No se porque la gente dice que Windows es mas sencillo que Linux. Lo es hasta que no te salen quebraderos de cabeza. Claro si usas un XP Home Edition pues pocos problemas vas a tener...
Porque yo ya llevo unos cuantos con mi XP Profesional Edition. El último hoy, con la instalación de los drivers del Scanner Scanjet G3010 y el Photoshop.
Tras instalarlo en usuario Administrador iba sin problemas pero en usuario normales no funcionaba, ni el scanner ni el Photoshop. Vamos por partes...
Scanner
El software de HP, por lo que he podido leer por ahí es un poco gena en entorno multiusuario. Y el soporte por lo visto deja un poquito que desear... [pendiente meter un par de referencias]
La solución al final ha sido dar permisos a los usuarios normales a una determinada key del registro.
Photoshop
Tras solucionar lo del scaner todavía quedaba lo de photoshop. En un principio pensaba que el problema estaba relacionado, pero seguía sin funcionar...
La solución ha sido el meter a los usuario que lo usan como 'usuarios avanzados'. Ya se que no es muy solución muy profesional pero me ha funcionado y paso de perder mas tiempo con esto.... ;)
¿Que os parece? ¿Sencillo verdad? ¡Ja!
Relacionado hoy en meneame: Detecta todo lo que se inicia en tu windows.
Porque yo ya llevo unos cuantos con mi XP Profesional Edition. El último hoy, con la instalación de los drivers del Scanner Scanjet G3010 y el Photoshop.
Tras instalarlo en usuario Administrador iba sin problemas pero en usuario normales no funcionaba, ni el scanner ni el Photoshop. Vamos por partes...
Scanner
El software de HP, por lo que he podido leer por ahí es un poco gena en entorno multiusuario. Y el soporte por lo visto deja un poquito que desear... [pendiente meter un par de referencias]
La solución al final ha sido dar permisos a los usuarios normales a una determinada key del registro.
Photoshop
Tras solucionar lo del scaner todavía quedaba lo de photoshop. En un principio pensaba que el problema estaba relacionado, pero seguía sin funcionar...
La solución ha sido el meter a los usuario que lo usan como 'usuarios avanzados'. Ya se que no es muy solución muy profesional pero me ha funcionado y paso de perder mas tiempo con esto.... ;)
¿Que os parece? ¿Sencillo verdad? ¡Ja!
Relacionado hoy en meneame: Detecta todo lo que se inicia en tu windows.
martes, junio 12, 2007
A vueltas con cssutils
Tercer post en el que menciono cssutils. Los anteriores [1][2].
En este os puedo decir que lo estoy usando, y que la verdad funciona bien, aunque le he visto 2 peros:
El problema debe ser, que según está hecho es simplemente ineficiente. O que el hacer un parser en python, es simplemente ineficiente. No lo se....
Quizás con menos comprobaciones....
He vuelto a mirar en python-es y en google groups, y no he encontrado nada de nada. Me da que voy a tener que implementarmelo... o hacer unos bindings a alguno de C.
Un par de referencias de cara a una posible implementación [vía]:
En este os puedo decir que lo estoy usando, y que la verdad funciona bien, aunque le he visto 2 peros:
- Las estructuras de datos manejadas no son muy pythonianas
- Es lento (muy). Por poner un ejemplo en procesar los css's de elpais.com tarda mas de 10 segundos (en una maquina Linux potente potente).
El problema debe ser, que según está hecho es simplemente ineficiente. O que el hacer un parser en python, es simplemente ineficiente. No lo se....
Quizás con menos comprobaciones....
He vuelto a mirar en python-es y en google groups, y no he encontrado nada de nada. Me da que voy a tener que implementarmelo... o hacer unos bindings a alguno de C.
Un par de referencias de cara a una posible implementación [vía]:
viernes, junio 01, 2007
Norton Ghost
Tras tener un sistema básico montado, lo suyo es tener una copia de respaldo para poderlo restaurar.
Tras investigar que hay por ahí (lo justo), he probado Norton Ghost ya que parace que es la mejor herramienta pra hacer imagenes del HD. Pues bien, no me ha servido. Porque lo que yo quiero es algo que me vuelva a restaurar el sistem desde CD y que el propio CD sea arrancable.
Se me ocurre hacerlo con linux a través del comando dd, pero como que es muy básico.
Seguiremos investigando.... y probando.
Una referencia: Disk cloning.
Tras investigar que hay por ahí (lo justo), he probado Norton Ghost ya que parace que es la mejor herramienta pra hacer imagenes del HD. Pues bien, no me ha servido. Porque lo que yo quiero es algo que me vuelva a restaurar el sistem desde CD y que el propio CD sea arrancable.
Se me ocurre hacerlo con linux a través del comando dd, pero como que es muy básico.
Seguiremos investigando.... y probando.
Una referencia: Disk cloning.
Nuevo ordenata
Que mala racha...
Pues no va y me peta el Desktop de casa (creo que la placa). Y unos dias despues el monitor...
Total que me he pillado otro ordenata. Tocaba actualizarse. Esta vez me he lanzado a un procesador AMD económico, 2 GB de memoria, disco duro de 250 GB, placa con soporte a firewire, una fuente sileciosa, una tarjeta de video ATI... Vamos en torno a 500 leuros.
Como monitor un LG de 17'' que no llegó a los 180 leuros.
Tras ello, la rutina de turno, instalar los OS. Ya me he actualizado a XP Pro, y le he metido un ubuntu 7.04.
Tras tener el ubuntu (que usa gnome) me comenta el Hectorín que le gusta mas kubuntu. Y he aqui mi duda.... ¿Cual es mejor kde o gnome?
Resumiendo por lo que he leido...: a gusto del consumidor. Lo que si parece es que gnome es mas ligerito.
A mi personalmente me gusta. Lo veo simple e intuitivo. Y como las aplicaciones que mas voy a usar no van a ser las que vengan con ambos desktops... Pues como que me vale ubuntu.
Pero tengo ganas de probar el kde. A ver si me bajo un live cd (si es que lo tienen).
Bueno paso unos links sobre el tema:
Y lo que he visto es que gentoo sigue teniendo su nicho. Por lo que he leido tienen una wiki muy completa, que sirve para el resto de distribuciones también. Pero vamos el instalar gentoo es para freakis y no lo haría nunca para un desktop. Podría ser interesante para un servidor en el que sólo quieres meter lo justo y necesario.
Pues no va y me peta el Desktop de casa (creo que la placa). Y unos dias despues el monitor...
Total que me he pillado otro ordenata. Tocaba actualizarse. Esta vez me he lanzado a un procesador AMD económico, 2 GB de memoria, disco duro de 250 GB, placa con soporte a firewire, una fuente sileciosa, una tarjeta de video ATI... Vamos en torno a 500 leuros.
Como monitor un LG de 17'' que no llegó a los 180 leuros.
Tras ello, la rutina de turno, instalar los OS. Ya me he actualizado a XP Pro, y le he metido un ubuntu 7.04.
Tras tener el ubuntu (que usa gnome) me comenta el Hectorín que le gusta mas kubuntu. Y he aqui mi duda.... ¿Cual es mejor kde o gnome?
Resumiendo por lo que he leido...: a gusto del consumidor. Lo que si parece es que gnome es mas ligerito.
A mi personalmente me gusta. Lo veo simple e intuitivo. Y como las aplicaciones que mas voy a usar no van a ser las que vengan con ambos desktops... Pues como que me vale ubuntu.
Pero tengo ganas de probar el kde. A ver si me bajo un live cd (si es que lo tienen).
Bueno paso unos links sobre el tema:
- Stallman on Qt, the GPL, KDE, and GNOME
- KDE vs. GNOME: Is One Better?
- Which Has the Best Apps?: KDE vs. GNOME, Part 2
- Y una comparación de la wikipedia.
Y lo que he visto es que gentoo sigue teniendo su nicho. Por lo que he leido tienen una wiki muy completa, que sirve para el resto de distribuciones también. Pero vamos el instalar gentoo es para freakis y no lo haría nunca para un desktop. Podría ser interesante para un servidor en el que sólo quieres meter lo justo y necesario.
jueves, mayo 24, 2007
Ummmm, Javier Casares ha publicado una Guía SEO. Puede ser una compra interesante. O un buen regalito.
jueves, mayo 17, 2007
Evitar que google fagocite un proyecto [vía dirson].
Cuanta razón hay en ese post. Todos los grandes proyectos se han hecho por pocas personas.
Cuanta razón hay en ese post. Todos los grandes proyectos se han hecho por pocas personas.
martes, mayo 08, 2007
Teclado
¡Estoy realmente sorprendido! He estado mirando para cambiar el teclado de mi ordenador de sobremesa de casa y no he encontrado por ningún lado teclados que seán bajitos que no sean wireless o que tengan la típica forma ergonómica. ¿Que pasa, se ha demostrado que no es eficaz?
No lo entiendo... paso del wireless. Para un teclado es innecesario. Paso de gastar pilas y de meter mas ondas....
De lo visto (incluyendo los wireless) el que mas me ha gustado es el Logitech S510. Impresionante! Super plano y con apoyamanos.
No lo entiendo... paso del wireless. Para un teclado es innecesario. Paso de gastar pilas y de meter mas ondas....
De lo visto (incluyendo los wireless) el que mas me ha gustado es el Logitech S510. Impresionante! Super plano y con apoyamanos.
jueves, mayo 03, 2007
REST
Representational State Transfer (REST), es un estilo de arquitectura software que la introduce su autor () en una disertación sobre diferentes estilos de arquitectura software. El título de la disertación es "Architectural Styles and the Design of Network-based Software Architectures". A ver si le hecho un vistazo...
viernes, abril 20, 2007
jueves, abril 19, 2007
Python Threads
De momento no me he visto en la necesidad de utilizar los threads de python, pero les he estado echando un vistazo.
Norman Natloff tiene unos tutoriales guapos y unos de ellos va sobre los threads: Tutorial on Threads Programming with Python.
Unos apuntes breves:
Norman Natloff tiene unos tutoriales guapos y unos de ellos va sobre los threads: Tutorial on Threads Programming with Python.
Unos apuntes breves:
- Hay 2 modulos, thread y threading; siendo el segundo de mas alto nivel.
- No me mirado los modulos en detalle, pero el módulo threading se ve bastante completito: tiene locks, rlocks, semáforos, variables de condición, un recubrimiento sobre las variables de condición (Event) y timers. Pero sobre todo una clase para mi muy interesante Queue.
- No se puede hacer multiproceso real con python, es decir sólo estará un thread ejecutandose y los threads son 'not pre-empted'. Es el interprete a través de un componente llamado GIL el que determina la planificación (bien porque un thread ha estado corriendo durante un determinado tiempo o bien por una operación E/S). Hay criticas al GIL... quizas en un futuro desaparezca.
- Para depurar se puede usar PDB pero con unas limitaciones (también existe RPDB (bueno ya obsoleto... la evolución es winpdb))
miércoles, abril 18, 2007
Backups de USB Flash Drive
De un tiempo a esta parte uso poco el HD del ordenata para mis documentos. El motivo es que uso un USB Flash Drive.
Tiene como ventaja el que tienes tus datos allí donde fueres. Como desventaja que es mas facil de perder...
De vez en cuando hacía backups; muy de vez en cuando. Pero tras el despiste de dejarmelo ayer en la ofi, me he dicho a mi mismo que esto no puede seguir así...
La solución: instalarte un programa de backups en tus ordenatas habituales y hacer periódicamente un backup. Que menos que semanal...
Para esto por supuesto que no necesitas el cojoprograma, sino una cosa sencillita. En genbeta he visto que tenían un par de utilidades y ya he probado una de ellas, Cobian Backup. Me ha gustado, supersencilla.
La otra es Comodo Backup.
Ambas son de gratis.
Tiene como ventaja el que tienes tus datos allí donde fueres. Como desventaja que es mas facil de perder...
De vez en cuando hacía backups; muy de vez en cuando. Pero tras el despiste de dejarmelo ayer en la ofi, me he dicho a mi mismo que esto no puede seguir así...
La solución: instalarte un programa de backups en tus ordenatas habituales y hacer periódicamente un backup. Que menos que semanal...
Para esto por supuesto que no necesitas el cojoprograma, sino una cosa sencillita. En genbeta he visto que tenían un par de utilidades y ya he probado una de ellas, Cobian Backup. Me ha gustado, supersencilla.
La otra es Comodo Backup.
Ambas son de gratis.
Hub vs Switch
Como se olvidan las cosas...
Leo ayer: "Un switch realiza la misma función que un hub dentro del diseño de una red, pero al contrario que un hub, un switch proporciona la máxima velocidad de red a cada puerto."
Ok, te quedas con la copla de que el switch es mas rapido, ¿pero porque? La respuesta aquí. Basicamente el porque es que el Hub es un dispositivo muy tonto, y el switch es mas listo. El Hub envia los paquetes a todos sus puertos.
Y ya puesto vamos a ver la diferencia con un router. El router se usa básicamente para unir redes.
Trabajan con la capa 3; o lo que es lo mismo, la de red.
Leo ayer: "Un switch realiza la misma función que un hub dentro del diseño de una red, pero al contrario que un hub, un switch proporciona la máxima velocidad de red a cada puerto."
Ok, te quedas con la copla de que el switch es mas rapido, ¿pero porque? La respuesta aquí. Basicamente el porque es que el Hub es un dispositivo muy tonto, y el switch es mas listo. El Hub envia los paquetes a todos sus puertos.
Y ya puesto vamos a ver la diferencia con un router. El router se usa básicamente para unir redes.
Trabajan con la capa 3; o lo que es lo mismo, la de red.
martes, abril 10, 2007
HotLinking
No conocía el termino hotlinking [genbeta]. En el anterior enlace lo explican, indicandote como evitarlo mediante imgred.
martes, abril 03, 2007
Unas respuestas interesantes a una noticia de barrapunto: ¿Basta el software abierto para ser libre?. Explican muy bien la ventata de GPL sobre la licencia de BSD.
libxml2 XmlTextReader
Acabo de ver que libxml2, aparte de los APIs SAX y DOM tiene un tercero, XmlTextReader.
Parece que está a caballo entre los dos anteriores, por lo que puede ser un muy buen candidato a tener en cuenta. Lo recomiendan usar en lugar de SAX. SAX tieen los siguientes problemas:
Parece que está a caballo entre los dos anteriores, por lo que puede ser un muy buen candidato a tener en cuenta. Lo recomiendan usar en lugar de SAX. SAX tieen los siguientes problemas:
- Modelo de programación mas complejo
- No estandar
- No proporciona validación directa
- El procesamiento de entidades, namespaces y 'procesamiento base' (no se que quiere decir esto exactamente) es mas dificil.
viernes, marzo 30, 2007
Creación implicita de atributos
Al modificar un fichero de un compi de curro, me llamó la atención que él creaba las variables de instancia como si fueran de clase. Y le funcionaba, cosa que me estrañó mucho.
Indagando un poco al respecto ya se porqué. Antes de nada un ejemplo:
Que nos proporciona la salida:
El ejemplo anteiror nos muestra que cuando referenciamos una variable de instancia que no existe, pero si como clase, automáticamente se crea una variable de instancia con el valor de la variable de clase.
Indagando un poco al respecto ya se porqué. Antes de nada un ejemplo:
class B:
b = "B"
class C(B):
def __init__(self,v):
self.b = v
b1 = B()
b2 = B()
c = C("c")
#--- Valores originales
print b1.b,b2.b,c.b
#--- Cambiamos la variable de clase
B.b = "BB"
print b1.b,b2.b,c.b
#---- Cambiamos variable de instancia de objeto de tipo B
b1.b = "B"
print b1.b,b2.b,c.b
Que nos proporciona la salida:
B B c
BB BB c
B BB c
El ejemplo anteiror nos muestra que cuando referenciamos una variable de instancia que no existe, pero si como clase, automáticamente se crea una variable de instancia con el valor de la variable de clase.
jueves, marzo 29, 2007
Identificadores únicos
¿Que opciones tenemos disponibles para asignar un identificador único a un buffer de datos?
En un principio estaba pensando algo como el comando sum de unix.
Pero al no encontarlo en el api de python, he mirado alternativas, y una opción que tenemos es usar alguno de los módulos criptográficos disponibles.
En python 2.4 estan md5, hmac y sha en 2.5 veo que ademas está hashlib.
Modulos relacionados
Si lo que queremos es generar un identificador único podemos usar uuid.
Hay un modulo con diferentes funciones para codificar strings: binascii.
En un principio estaba pensando algo como el comando sum de unix.
Pero al no encontarlo en el api de python, he mirado alternativas, y una opción que tenemos es usar alguno de los módulos criptográficos disponibles.
En python 2.4 estan md5, hmac y sha en 2.5 veo que ademas está hashlib.
Modulos relacionados
Si lo que queremos es generar un identificador único podemos usar uuid.
Hay un modulo con diferentes funciones para codificar strings: binascii.
Suscribirse a:
Entradas (Atom)