sábado, diciembre 30, 2006

Los lemas de Google

Aparte del 'Don´t be evil' tienen unos cuantos mas: los 10 principios de google [vía dirson].

domingo, diciembre 17, 2006

jueves, diciembre 14, 2006

Un visor de subversión interesante: websvn. Puedes subscribirte a feeds RSS.

miércoles, diciembre 06, 2006

Hoy ha tocado hacer algo que tenía pendiente desde hace mucho, mucho tiempo; darle un lavado de cara al blog.

martes, noviembre 21, 2006

Portatil ligero



Para mi, actualmente hay 3 nichos en el mercado de los portatiles:
  • el de los ligeros
  • el de los polivalentes
  • el de los multimedia
El de los multimedia está orientado a sustituir un ordenador de sobremesa.
El de los polivalentes será el típico, vamos... un portatil normalito, con pantalla de 14''-15''.
El de los ligeros, será el de los portatiles que no sobrepasen los 2,5 kilos.

Dentro de los ligeros, estarían los superligeros, cuyo peso no sobrepasaría los 2 kilogramos.

Yo andaba con ganas de comprarme un portatil ligero, ya que para la casa, donde este un sobremesa... Además me gusta tener un ordenador de respaldo...
Pero ya que era realmente un capricho, me he ido a los superligeros. No quiero que el peso sea una excusa para cargar con él. Vamos que lo puedas meter en cualquier lado...

Mi compra ha sido un Sony VAIO SVG SZ2M/B. Dentro de los SZ, el único motivo para irme a por ese modelo ha sido por el precio. Pero ahora mismo, supongo que por la llegada de los procesadores core 2 duo, estan bajando de precio (ver).

Si no nos importa cargar con un poco mas de peso, pues podríamos considerar el dell latitude 620.

Y dentro del margén de los 2,5 kilos, en cuanto a diseño lo tengo claro: me quedo con el Apple MacBook.

sábado, noviembre 04, 2006

Si como yo dispones del Router Xavi 7768r Wireless (uno de los que ponía telefonica), en el link anterior tendrás toda la información que necesites para configurarlo.

jueves, noviembre 02, 2006

En vista de que voy a tener un portatil nuevecito y me viene con el Home Edition, he curioseado en la red: Windows XP Home Edition vs. Professional Edition: What's the difference?

martes, octubre 31, 2006

RSS Readers


En primer lugar si quereis saber de que va el RSS, ahí va un link.
Ya hace tiempo que existen los RSS Readers, pero la verdad.... Había pasado mucho de su uso.... Hasta hace poco que empecé a usar el de Yahoo. Y la verdad... Te facilita el consultar esos blogs que son tus habituales...
Hoy he empezado a probar otro, alesti, y la verdad... Estoy encantado! Os recomiendo el uso de un RSS Reader sin dudarlo.

Realmente hay una gran cantidad de ellos para escoger, como podeis ver en los siguientes links: [1], [2] y [3]. O buscando info en google.

Si ya usais google, quizás os pueda interesar el uso de Google Reader.

Bueno hasta ahora estoy hablando de productos que estan en la web, pero no tiene porque ser así, pueden ser aplicaciones que tengais intaladas en vuestra máquina, o incluso en vuestro navegados, como la extension Sage de Firefox (y no es el único).

Volviendo a alesti, surgió como rival a bloglines.
Y ya para acabar este por mencionar un par de ellos mas que he oido mentar:
Lo que si que es fundamental, es que puedan exportar e importar las subscripciones, para de esta manera poder migrar de uno a otro.







Un par de entradas del blog de AI2:
Como anda el patio, ¿no?

martes, octubre 17, 2006

No he tenido tiempo de echar un vistazo a estos links en profundidad, pero parecen muy interesantes. Van sobre Amara:


Aparte de lo técnico, interesante ver que Uche Ogbuji tiene una pagina web.

Volviendo a Amara... por lo visto se basa en 4Suite, ofreciendo la funcionalidad de 4Suite de una manera mas 'pitoniana'.

lunes, octubre 16, 2006

miércoles, octubre 11, 2006

Log4J


Si tienes que usar una librería de logs en Java, la mejor cadidata posiblemente sea Log4J.
Entre la documentación disponible, es de mirar:
Con estos dos ya tienes para tirar... El segundo tiene un fichero log4j.properties básico.

sábado, octubre 07, 2006

DOM Inspector


Al instalar Firefox , si personalizamos la instalación, podemos indicarle que se instalen las herramientas para desarrolladores. Entre ellas está el DOM Inspector, la cual es superutil (por ejemplo para hackear formularios con campos ocultos: vaya mala practica de programación...).

viernes, octubre 06, 2006

El siguiente enlace ya lo había enlazado previamente: Python Memory Management. Merece la pena que lo vuelva a enlazar, ya que es un artículo muy interesante sobre como gestiona python la memoria.
Una cosa muy interesante que dice es que en Python 2.5 la gestión de la memoria se ha cambiado, aunque no se indica en las 'what´s new' que he mirado.
Una par de links mas para acabar:
Mas info sobre la incorporación de la nueva gestión a python 2.5 aquí.

jueves, octubre 05, 2006

¿A estas alturas quien no conoce los Google Groups (antiguos DejaNews)? Pues bien leo en diferentes sitios que les han dado un lavado de cara. Pongo un par de fuentes: [1] y [2].

miércoles, octubre 04, 2006

La extensión MM3-ProxySwitch del firefox es superutil si a menudo cambias de proxy para conectarte a internet.

viernes, septiembre 22, 2006

Un par de empresas que tienen herramientas lingüísticas:

martes, septiembre 12, 2006

Parece que yahoo empieza a ponerse las pilas con su mail [vía ojobuscador].

miércoles, agosto 30, 2006

Para el indexador de un buscador se puede usar xapian.
No lo he leido pero parece interesante: Selección de ads basada en contenido para weblogs

martes, agosto 29, 2006

Logging en un Web Service


Me veo en la tesitura de generar unos logs para un web servide (Java). Las opciones que tenemos disponibles:
Por lo que me ha recomendado JJ y lo que leo [1] y [2] (por ejemplo), me decanto por Log4j.

martes, agosto 15, 2006

Blogger por fin se decide a meter nuevas 'features'. Como indican todavía esta en beta.
Menos mal que espabilan porque wordpress estaba ganando adeptos.
Veo que en ojobuscador también lo comentan.

jueves, agosto 10, 2006

Veo a través de OjoBuscador, que en Yahoo tienen un Python Developer Center.

viernes, julio 28, 2006

Carnarvon: herramienta de arqueología de software [barrapunto.com]. Podría ser interesante echarle un vistazo.

jueves, julio 27, 2006

Internete es realmente sorprendente...
Hoy mirando el Ciberpais, leo un artículo sobre Chema Alonso; como hay un link a su blog, le hecho un vistazo y en el aparece el nombre de Sergio Montoro. ¿Mande?
Una sinopsis se activa e intuyo que puede ser el mismo Sergio Montoro con el que coincidí en Meta4. El tio era bueno... normal que siga en la brecha: es editor de la pastilla roja, creador de software libre y tiene su propia empresa. Bueno acabo con unos links:

martes, julio 25, 2006

Un artículo sobre clasificación de imagenes en la web según su role: Image Classification for Mobile Web Browsing por Takuya Maekawa, Takahiro Hara y Shojiro Nishio
Ummm, puede ser interesante echarle una probazón a Flock:

"Flock es un navegador de OSD basado en Mozilla, que lo existiende para agregar una serie de herramientas útiles al usuario:
  • Un cliente para la gestión de galerías de fotos online
  • Un cliente para el envío de post en bloggers de varios tipos (incluyendo Drupal)
  • Un agregador de noticias online
.../..."
¿"sudo" para Windows? [barrapunto]

lunes, julio 24, 2006

Me comentan de un reader de RSS que está muy bien: Alesti.

lunes, julio 03, 2006

GStreamer es una libería que se puede usar para implementar pipelines de procesamiento, teniendo bindings para varios lenguajes, entre ellos python.
Esta implementando en C, y se está usando bastante para hacer aplicaciones 'media player'.
Lo que si que es interesante es este extracto de su FAQ:
"The GObject object system provided by GLib implements objects in C, in a portable, powerful way. This library provides for introspection and runtime dynamic typing. It is a full OO system, but without the syntactic sugar. If you want sugar, take a look at GOB."

miércoles, junio 28, 2006

Un paper donde se indica como montar un server que use WSDL con ZSI.

martes, junio 27, 2006

Drools ahora tiene blog.

viernes, junio 23, 2006

Un articulo interesante del director de Google en el ciberpaís: Zeitgeist (El espíritu actual).

jueves, junio 22, 2006

libxml2 y xpath


Estoy probando a usar el DOM que implemente libxml2, y la verdad.... es un poco jaleoso... Habrá que probar a usar XPath.

Aquí un ejemplo de como facilita las cosas.
Y un thread interesante...
Otro ejemplo de uso y un ultimo link.

Las funciones que implementa el binding de python que estoy usando son:

xpathCastNodeToNumber
xpathCastNodeToString

xpathCmpNodes

xpathEval

xpathEval2

xpathNewContext

xpathNewNodeSet

xpathNewValueTree

xpathNextAncestor

xpathNextAncestorOrSelf

xpathNextAttribute

xpathNextChild

xpathNextDescendant

xpathNextDescendantOrSelf

xpathNextFollowing

xpathNextFollowingSibling

xpathNextNamespace

xpathNextParent

xpathNextPreceding

xpathNextPrecedingSibling

xpathNextSelf

xpathOrderDocElems


miércoles, junio 21, 2006

OWL y ontologías

Como ando metido en un fregado para generar reglas para drools a partir de OWL, me toca mirar un poquillo sobre ontologías [en inglés]
Como lenguajes para ontologías tenemos OWL [en inglés] en sus tres versiones Lite, DL y Full y RDF [en inglés].

Una ontología es un modelo de datos para representar los objetos de un dominio y sus relaciones con el objetivo de realizar de manera que se pueda hacer un procesamiento sobre dicha información. Es una forma de representación del conocimiento.

Pero por otro lado están las Taxonomías. Aquí se puede ver la diferene en ontología, taxonomía y otras estructuras de represantación del conocimiento. Y otra página muy interesante describiendo lo que es una ontología. Más paginas sobre las diferencias entre taxonomía, ontología y otras formas de representación: [1] [2] (el 1, muy interesante).

Las ontologías se usan en la Web Semantica, campo muy puntero actualmente en cuanto a investigación, y tendrán mucha importancia para el despegue de los 'Web Services'. Este paper habla sobre ello.

Y ya paa profundizar sobre los lenguajes, podemos empezar por aquí para RDF y por aquí para el OWL.

lunes, junio 19, 2006

Una noticia interesante de barrapunto, sobre los precios de algunas consultoras por dia.
Hay unos comentarios interesantes. De los cuales me quedo con estos párrafos:

"sobre lo de montar una empresa en españa, enterate de como va la cosa... enterate de las leyes y las "facilidades" que te dan...

y entonces lo comparas con otros paises... qieres una perla? en españa montar una sociedad limitada te cuesta, ente papeleos y demas, unos 1500? para empezar, mas un deposito de 3010?, el administrador de la empresa se tiene que dar de alta como autonomo y pagar seguridad social (320? al mes como minimo, y eso aunque estes trabajando para otra empresa y pagando SS a traves de ella), para cerrarla, otros 1500?...

para montar una empresa en EEUU solo necesitas una direccion de correos

en irlanda, donde vivo ahora, montar una empresa te cuesta 40? en papeleos (20? si lo haces a traves de internet) y hasta que no ganas determinada cantidad de dinero no pagas impuestos, y entonces, solo pagas el 5% (comparado con el 33% en españa)"

Es lamentable.

viernes, junio 09, 2006

AI2 extrena blog.

jueves, junio 08, 2006

Unas notas sobre la instalación de pyXML 0.8.4


pyXML incluye :
  • xmlproc: a validating XML parser.
  • Expat: a fast non-validating parser.
  • sgmlop: a C helper module that can speed-up xmllib.py and sgmllib.py by a factor of 5.
  • PySAX: SAX 1 and SAX2 libraries with drivers for most of the parsers.
  • 4DOM: A fully compliant DOM Level 2 implementation
  • javadom: An adapter from Java DOM implementations to the standard Python DOM binding.
  • pulldom: a DOM implementation that supports lazy instantiation of nodes.
  • marshal: a module with several options for serializing Python objects to XML, including WDDX and XML-RPC.
Y aunque no se indica en el listado anterior:
  • XSLT
  • XPath
Si no he entendido mal, si queremos intalar 4suite, no hay que instalar estos dos ultimos módulos.
Se instala en el directorio xml (por debajo de lib/pythonX.Y).

Mas sobre JAXWS


Para obtenerlo todo creo que debemos bajarnos el Java Web Services Developer Pack 2.0. Nos podremos bajar paquetes por separado, pero con este supongo obtendremos todo.

Documentación de Sun sobre WS, aquí y aquí.

Pero como no estoy seguro del todo, mejor me lo voy a bajar de jax-ws.dev.java.net.

Nota: vaya gena la instalación del jax-ws. No está documentado como narices instalarlo en modo consola. Y todo para sacar una gena de ventana donde aceptar la licencia. ¡Vaya cutrez!

Bueno... una nota final: jax-ws forma parte de GlassFish, el cual es un proyecto para implementar un servidor de aplicaciones Open Source usando tecnología de la plataforma Java EE 5.

martes, junio 06, 2006

Un mail muy interesante relativo a XSL y python.

Estoy ya peleandome con el XSLT y ya estoy con mi primer fregao.... los namespaces. Uffff.
Los tutoriales de w3shool están muy bien, pero para empezar.
No se que mas cosillas habrá por ahí, pero siempre nos quedará la w3.org.

Por cierto, como procesador para probar estoy usando xlstproc de libxml2. Implementa XSLT 1.0. Aquí, un poco de documentación.

(un poco despues....)

Ummm, parece que este link me va a dar la solución. Por lo visto el error que estoy teniendo es muy común. Piensas que XPath va a hacer el matching con el tag del nodo del xml y ¡no! hay que hacer el matching con el 'namespace' real, toda la URI.
Habrá que investigar si se puede evitar el poner todo el churro...
Lo que dice también el articulo es que los bindingds prefijo-namespace son dependientes del procesador.

Aunque esto puede ser también bussiness de Xpath. Habrá que echar también un ojo a la coc de xpath de w3.org. En concreto al punto: Node Tests.

Aquí está la recomendación sobre Namespaces en XML.

Y ya para acabar.... unos ejemplos con Xpath.


viernes, junio 02, 2006

Que jartá de autoformación


Que si WDS, que si WDSL, que si SOAP, que si WS....
Y ahora XSL...
Que quereis saber de que van, pues wikipedia al canto, o bien los tutoriales de w3schools que estan muy bien.
De XSL voy a comentar alguna cosilla:
  • El nombre le viene de 'eXtensible StyleSheet Language'.
  • Consiste realmente de 3 partes:
    • XSLT (XSL Transformations) - un lenguaje para transformar documentos XML
    • XPath - un lenguaje para navegar por documentos XML
    • XSL-FO - un lenguaje para formatear (de ahí el FO) documentos XML
Osea, que para decir que sabes XSL, realmente tienes que controlar esas 3 cosillas. Bueno... pues a empezar...
¿Y por cual? Fácil, por el más importante XSLT .
¿Y como podemos probar? Fácil también. Los browsers actuales tienen incluido un procesador de XSLT (como Firefox 1.0.2 o IE 6).
Aparte de dejar que el Browser haga la transformación, ésta se puede realizar en el cliente (mediante Javascript) o en el servidor (en este caso el XML no tendrá una referencia al XSL).
En el caso de Javascript el propio código Javascript hace la transformación, invocando al parser de XML; y en el caso de que la haga el browser directamente, habrá en el XML una referencia al XSL.

XPath
XPath es muy importante, no sólo porque es fundamental para XSLT, sino porque también lo es para XQuery y XPointer y XLink.

Y cual es la mejor herramienta para trabajar con todos estos XMLs: XMLSpy.

Microsoft Business Rule Engine (MS-BRE)


Pues si, Microsoft tiene un 'Rule Engine'. Viene con el producto 'BizTalk', vamos... un BPM.
Buscando en la web se encuentran cosillas sobre él, como por ejemplo:

jueves, junio 01, 2006

Me recomiendan para editara WSD's o WSDL's, XMLSpy [altova.com].
Leo en Dirson que ask.com va a lanzar un buscador de blogs. Se puede probar aquí (su lanzamiento no es oficial todavía).
Una comparativa entre Oracle y MySQL [barrapunto]. Con una muy amplia introducción.

martes, mayo 30, 2006

Buscan sobre sobre motores de reglas en Java, me he encontrado esta página que no conocía: The Java Community Process. En ella están todas las Specification Request.

Mas sobre Web Services

(continuación del post anterior)

Bueno bueno..., ya nos vamos enterando mas de este mundillo hasta ahora desconocido para mi.
Ya me enterado un poco mas de que va este jaleo de los webservices. En pocas palabras....
Del cliente al servidor va a viajar un XML que se define en un WSD (esto son los datos). La funcionalidad del servicio estará definida en el DWSDL.

En la parte servidora:
  • Se obtendrá un objeto Java a través del binding XML -> Java.
  • Habrá un objeto Java que implemente el servicio.
En la parte cliente:
  • Se pasará un XML. Teniendo dos opciones:
    • Pasar el XML tal cual (mas engorroso, ya que hay que generarlo)
    • Pasar un objeto python => el binding Python -> XML se encarge de general el XML.
Tanto SOAPpy como ZSI que son los dos candidatos a usar en el cliente usan pyXML, que me da a mi que es la librería que se va a encargar de los bindings...

Sobre pyXML he encontrado un par de artículos de recomendada lectura: [1] y [2]

Sobre el Servicio:
  • Va a usar un motor de reglas. Para independizarns del motor, se usará el interfaz JSR94.
Y por si no me habia metido todavía con tecnología XML además voy a tener que usar XSLT. ¡Toma yá!.

lunes, mayo 29, 2006

Web Services desde Python

De nuevo aventurandonos en aguas fanganosas.... (aguas que no conozco).
Tengo que implementar en un cliente (Python) el interfaz con un Web Service (Java). Y también encargarme de parte del servicio en si (el core, que no del WebService).

Servidor
Para la parte servidora según el guru de turno (en este mundillo web, hay mucho gurú suelto y mucha sigla...) va a usar JAXWS.
Es posible que tenga que usar un parser de XML. Si al final es así usaré el que viene ya con java, JAXP.

Cliente
Y para la parte cliente, según he visto, hay dos opciones:
La verdad... todavía no se cual usaré, a ver que puedo ver por la web... Parece que ZSI es mas completa pero SOAPpy mas sencilla de usar.
Ambas usan wstools y pyXML . La verdad... he echado un vistazo al enlace, y parece que la librería está muy bien. Hay que instalarla, ya que no viene incluida con python.

Para empezar abriendo boca, tutoriales para ambos productos: ZSI y SOAPpy.
Dentro de wstools hay un script muy util, xsdl2py.py que genera definiciones python a partir de un wsdl.

¿Cual usar: ZSI o SOAPpy?
En principio me decantaba por usar SOAPpy, porque parecía mas sencillo, pero tras instalar ambos, parece que ZSI es un producto mas maduro. Además ZSI ha pasado el test básico de ejecutar un ejemplo tonto de la distribución, mientras que SOAPpy no.
Nota posterior: ¡vaya! la versión que me habia instalado de SOAPpy era muy antigua. Actualmente las versiones estables son la 1.7 y la 0.11.5 para ZSI y SOAPpy respectivamente. Aunque ya van por la 2.0 y la 0.12.

Ambos usan la lista Pywebsvcs-talk [el archivo].


Web Services
El servicio que vamos usará el protocolo SOAP (sobre HTTP).
Para definir el servicio se usa WSDL. Que se tendrá que validar contra un XSD (un 'XML Schema')
Y ya para acabar unas entradas de la wikipedia:

Para acabar, un tutorial de SOAP.

Notas finales:
  • Para C++ está AXIS.
  • Esto del web service es algo impuesto. Pero otras alternativas para hacer el servicio hubieran sido CORBA o XML RPC. Hay soporte para xml-rpc en python, y como orb que soporte python tenemos omniorb.
  • En 'IBM developer works' IBM tienen un area sobre Web Services. En contreto hay varios articulos sobre python y SOAP: 1, 2, 3, 4 y 5. Que van de:
    • Part 5: (2004) Nuevos desarrollos en SOAPpy.
    • Part 4: (2003) Nuevos desarrollos en ZSI
    • Part 3: (2002) Cambio de roles con ZSI y SOAPpy
    • Part 2: (2002) Con y sin WSDL (sobre ZSI)
    • Part 1: (2001) Introducción a varias librerías.

jueves, mayo 25, 2006

Y ya que estamos con Drools, pues vamos a refrescar unas cosillas de IA [los enlaces iniciales con de la wikipedia]:

Tipos de programación Lógica:
Vamos que mejor que la info de la wikipedia, ésta (al menos mas elemental).

La lógica de predicados es superior a la lógica preposicional por:
"La principal debilidad de la lógica proposicional es su limitada habilidad para expresar conocimiento. Existen varias sentencias complejas que pierden mucho de su significado cuando se las representa en lógica proposicional. Por esto se desarrolló una forma lógica más general, capaz de representar todos los detalles expresados en las sentencias, esta es la lógica de predicados."

martes, mayo 23, 2006

lunes, mayo 22, 2006

Drools


Bueno pues ahora me toca trastear con Drools. Lo primero que veo es que usan para hacer las 'build' tanto ant, como maven, y como repositorio CVS.

El motivo de usar este motor de reglas, es que se pueden escribir la reglas en python.
La versión que estoy probando es la 2.5. Es decir... la útima antes de la compra de drools por parte de JBoss, pasando a ser JBoss Rules (Drools 3.0).

¿Y porque usar la 2.5 en lugar de la 3.0? Pues muy sencillo, en la 3.0 se han calzado el módulo semantico para python. Al menos de momento...

Tras leer un poco, e instalarse la version con todas las dependencias (drools-2.5-final-bin-withdeps.zip) es interesante hacer una primera prueba para ver si tira. Para ello lo mejor es usar el ejemplo mas tonto del tutorial. ¡Ojo! Hay que modificar la línea de ejecución. La correcta es (sin los espaciados tras los ':'):

java -classpath drools-base-2.5-final.jar: drools-core-2.5-final.jar: drools-io-2.5-final.jar: drools-smf-2.5-final.jar: drools-examples-2.5-final.jar: drools-python-2.5-final.jar:jython-20020827-no-oro.jar: xml-apis-2.0.2.jar: xercesImpl-2.7.1.jar: commons-jci-SNAPSHOT20051110.jar: commons-logging-1.0.4.jar org.drools.examples.helloworld.HelloWorldExample helloworld.python.drl


Por lo visto los dos ejemplos que vienen precompilados son:
  • Hello World Example y
  • Fibonacci Example

En el caso de que queramos ejecutar el mismo ejemplo pero usando el modulo para python, el comando sería (sin los espaciados tras los ':'):

java -classpath drools-base-2.5-final.jar: drools-core-2.5-final.jar: drools-io-2.5-final.jar: drools-smf-2.5-final.jar: drools-examples-2.5-final.jar: drools-java-2.5-final.jar: antlr-2.7.5.jar:janino-2.3.15.jar: xml-apis-2.0.2.jar: xercesImpl-2.7.1.jar: commons-jci-SNAPSHOT20051110.jar: commons-logging-1.0.4.jar: jdtcore-3.1.0.jar org.drools.examples.helloworld.HelloWorldExample helloworld.java.drl

jueves, mayo 11, 2006

Una utilidad curiosa de google, google trends [barrapunto.com].

Comentan también en barrapunto sobre TorPark: un cliente web, para navegar anonimamente.

miércoles, mayo 10, 2006

Torvalds on the Microkernel Debate [slashdot.org]
Sobre Windows Live.
Un thread interesante en python-es sobre si python es un buen lenguaje para programación funcional.

martes, mayo 09, 2006

Validar un fichero xml


Será bastante corriente que en un sistema Unix tengamos alguna de estas utilidades:
  • xmllint: Pertenece a la libreria libxml2
  • xmlwf: Pertenece a la librería expat.

lunes, mayo 08, 2006

Ya de donde quiero trabajar.
Y una noticia relacionada.

jueves, abril 27, 2006

Han sacado una herramienta visual para MySQL: MySQL Workbench (vía barrapunto).

miércoles, abril 26, 2006

Un libro que me recomiendan: Fish.

lunes, abril 24, 2006

Me pasa Mr hal un link sobre java: JavaRSS.

jueves, abril 20, 2006

El blog técnico de Michel. Específico de PowerBuilder.

martes, abril 18, 2006

jueves, abril 06, 2006

Microsoft investigando sobre el Spam.
Alguno de los articulos referenciados, ya los había incluido en este blog.

miércoles, abril 05, 2006

A raiz del la polemica sobre el tipo de letra Segoe [barrapunto.com] , he encontrado este link: comp.fonts FAQ.

Más sobre la polémica en Slashdot.

Hay bastante info en la wikipedia sobre 'Typefaces'. Unos links:

martes, abril 04, 2006

lunes, abril 03, 2006

Wikis en alojamientos gratuitos [barrapunto.com]

viernes, marzo 31, 2006

Psyco


Ha llegado la hora de progra Psyco.
Aquí hay una presentacion.
Y aquí unos ejemplos sencillos para empezar.

La instalación como todo lo de python, trivial.
Y tras unas primeras pruebas, usando el psyco.full() he visto que si optimiza, si. Tanto usando la opción -O como sin ella. El -O también ayuda (el fichero generado en lugar de .pyc es .pyo; curioso).
Ha nacido Gennio, un nuevo clon de Digg [barrapunto.com].
Me he dado de alta, a ver de que va...

jueves, marzo 30, 2006

miércoles, marzo 29, 2006

En barrapunto hablan de la Cobertura de FON. Mencionan también a Wifree.
Interesante entrevista a Stratton Sclavos, presidente de Verisign, donde habla de VIP (Verisign Identity Protection), un sistema de autentificación global.
Menciona también el concepto de Pharming, una técnica de fraude que es realmente muy peligrosa.

martes, marzo 28, 2006

Python Remote Objects


Pyro, parece interesante para programar objetos Python distribuidos de una manera sencilla.

En Spyron.org aparte de SPyRO(Simple Python Remote Objects) tienen también SPyDI (simple Python Distribute Indexing).

viernes, marzo 24, 2006

El futuro de la computación [barrapunto].

miércoles, marzo 22, 2006

Me pasa JJ una web que da servicio de hosting para wikis. Aquí como usarlo.

martes, marzo 21, 2006

Unas noticias de barrapunto:

viernes, marzo 17, 2006

Python y UML



Un par de noticias al respecto:
  • Doxygen ya soporta python
  • Me comentan de una herramienta que no tenía controlada: pyUT.

martes, marzo 14, 2006

DNS Dinamicos


Un par de sitios interesantes:

lunes, marzo 13, 2006

viernes, marzo 10, 2006

Python muda de piel


Vía barrapunto, me entero de que python tiene una nueva web.
Han cambiado incluso el logo del lenguaje. Todo ahora es mas serio.

Y un link de regalo: Python Cheese Shop.

martes, marzo 07, 2006

Un link util: List of XML and HTML character entity references.
Me pasa este link el bro (es para hacer backups): BackupPC.

viernes, marzo 03, 2006

Una re-review en spyced sobre IDE´s para python.
Python resources.
Un editor de ontologías Open Source: Protégé.
Seguridad en lapices USB [barrapunto].

jueves, marzo 02, 2006

Georeferencias: almacenamiento


Hoy he leido un thread interesante en python-es. Va sobre el almacenaciento de georeferencias en una BD.
Quien pregunta parece que de momento está usando Berkeley BD. Comenta tb. que opción muy rapida de acceso es usar la estructura de directorios (aunque tiene sus desventajas). Por ejemplo para acceder a 1000, irias a 1/0/0/0.record (vamos como los indices de FAST).

En python se accede a dicha BD a través del módulo bsddb. Los creadores de la BDB son Sleepycat Software (adquiridos por Oracle).

Los difefentes métodos que acceso que soporta la BD son:
  • Hash
  • BTree
  • Recno
  • Queue
Otro producto que mencionan es pytables. Adjunto un comentario de Francesc Altet (de carabos, la empresa creadora):

"Pues aunque PyTables no es puro Python (si quieres velocidades altas de I/O casi siempre has de ir a parar a hacer extensiones en C), si que es multiplataforma (ha sido probado en Windows, MacOSX, GNU/Linux FreeBSD y múltiples Unix más). El acceso a los datos se hace a través de arboles binarios (a nivel de la libreria HDF5 de la cual depende), con lo que el acceso a los registros es muy rápido.
Ademés, PyTables suporta indexación de columnas.

Respecto a la limitación en la cantidad de recursos usados, PyTables está diseñado para trabajar perfectamente con tablas de más de mil millones de filas en entornos de memoria realistas, así que con tablas del orden de millones, no deberías de tener problemas.
Además, PyTables usa objetos numarray como contenedores de datos, con lo que el consumo de memoria se hace óptimo, especialmente cuando quieres mantener gran cantidad de información. Finalmente, PyTables también soporta compresión de datos transparente, con lo que puedes mantener tus bases de datos comprimidas y leerlas sin necesidad de que
ocupen más espacio del necesario.

Para ejemplos de cómo funciona PyTables te recomiendo que le eches un vistazo a los tutoriales que vienen en la documentación:

http://pytables.sourceforge.net/html-doc/usersguide3.html

Aunque, naturalmente, lo mejor es que lo descargues y lo pruebes por tí mismo. Así te aseguras de que no te están vendiendo la moto ;-)"


Y ya para acabar... gadfly: que es una base de datos relacional implementada en python basada en SQL.

Concluyendo.... un thread de muy interesante lectura.

Actualización

Unos links:


Actualización 2

El thread ha continuado algo (los archivos de la lista aquí).

miércoles, marzo 01, 2006

Está guapo: Visualizador del funcionamiento de las expresiones regulares.
Y otro link relacionado: Regular Expression Online Tester.

Y aprovechando el tema, no esta por demas recordar que para python tenemos a Kodos.

lunes, febrero 27, 2006

Más sobre la función timeit


Por Alvaro en el foro python-es en respuesta a "¿El método que acabas de mostrar para medir tiempos se podría hacer con un conjunto de instrucciones y funciones?":

Si viejo. Por ejemplo


X="""
x=4
y=5
z=x*y
"""
from timeit import Timer

Print Timer(X).timeit()

Eso si... Si quieres evaluar el desempeño de una funcion, por ejemplo una
funcion cuadrado te recomiendo:

from timeit import Timer

x="cuadrado(5)"

y="""
def cuadrado(x):
return x*x
"""

print Timer(x,y).timeit()
Tambien podrias incluir dentro de la variable x la definición de la funcion.
Pero eso no seria muy inteligente ya que timeit tambien mediria cuanto se demora en definir la funcion, y eso no es lo que uno quiere.

Por ultimo la funcion timeit tiene un defecto. De que los datos que muestra no son los reales. Lo que hace la clase Timer es simplemente ejecuta una ves lo que le pases como 2do argumento y luego ejecuta un millon de veces (no me acuerdo si es un millon o solo mil veces) lo que le pases como primer argumento, sacando un promedio de cuanto se demoro cada ves que ejecuto el primer argumento. Pero el promedio que saca es cuando "se ejecutan el argumento muchas veces seguido" o dicho de otra forma, con gran estress. Asi que no hay que decir la funcion se demora en ejecutarce 0.55 seg, sino que hay que decir, bajo estress la funcion se demora 0.55 seg.


Para ser mas exactos es mejor no considerar a la funcion timeit como una funcion que mide el tiempo de ejecucion de algo, sino como algo que cuantifique el coste de ejecución de algo y que solo es valido cuando se compara con otra cosa (como por ejemplo cuando comparamos la ejecucion del len con distintos largos de string). Si esto se puede complementar con un

test de hipotesis de comparacion de medias, ideal....





viernes, febrero 24, 2006

Coste de la funcion len() en los strings de Python


Sospechaba que el coste era constante, y según me han comentado así es. Se fija durante la creación de los string, ya que éstos son inmutables.

Su implementación se puede ver aquí.
Y muy interesante la intervención de Alvaro Leiva, en la lista python-es, sobre el modulo timeit (disponible a partir de Python 2.3):


Aparentemente el coste no depende de el tamaño de un string.

En todo caso puedes verlo tu enpiricamente con este programita

from timeit import Timer


x=["a"*10,"a"*100,"a"*1000,"a"*10000]

for i in x*5:
print Timer("len(x)","x='%s'" % i).timeit()

Te daras cuenta que casi siempre te imprime el mismo numero "0.55" en mi
computador....

Esto deja en claro que el coste no depende de el largo del string. No asi
cuando uno ejecuta esto con listas

x=[["a"]*10,["a"]*100,["a"]*1000,["a"]*10000]

for i in x*5:
print Timer("len(x)","x=%s" % i).timeit()

Que arroja siempre valores pequeños de tiempo para ["a"]*10 y los tiempos
siempre son acendentes....

Este metodo del from timeit import Timer siempre lo ocupo cuando tengo una
duda sobre el coste de una funcion... Muy util cuando uno programa
algoritmos de optimisacion lineal como el simplex... Algoritmos famosos por
su tendencia a volverse lentos
Vía barrapunto, veo que The International Obfuscated C Code Contest se sigue celebrando.
Y lo del tatto este es la caña.

jueves, febrero 23, 2006

Aquí se listan los diferentes BOM´s (Byte Order Marks).
Lo mas inmediato para saber tu IP: whatismyip.com.
Comentan en Dirson sobre Google Pages. También la comentan en barrapunto y telendro. Google siempre es noticia...

Autodetección de encodings

He estado buscando un poco en la web sobre el tema... La idea es detectar el encoding sin hacer uso de información existente en declaraciones (del protocolo, lenguaje, ...).

En C++ existe el detector de Mozilla: Mozilla Charset Detectors. (a través de Koders, podemos ver la rama)

En python he encontrado el Universal Encoding Detector. Aquí se explica como funciona (la doc). La librería es un port de la de Mozilla, la cual a su vez se implementó basandose en este articulo: A composite approach to language/encoding detection.
¿Lo que parece que no detecta es ISO-8859-1? Que raro.... (al menos no lo menciona en la documentación).

Antes de encontrar lo que ya he mencionado encontré el siguiente codigo (usando koders):


def autodetect_encoding(self, new_data):
enc = ""
if len(new_data)<5:
# If this is a very short external entity, it may not
# have enough bytes for auto-detection. In that case,
# it must be UTF-8
enc = "utf-8"
elif new_data[:3] == '\xef\xbb\xbf':
enc = "utf-8" # with BOM
elif new_data[:4] == '\0\0\0\x3c':
enc = "ucs-4-be"
elif new_data[:4] == '\x3c\0\0\0':
enc = "ucs-4-le"
# ignore unusual byte orders 2143 and 3412
elif new_data[:2] == '\xfe\xff':
enc = "utf-16-be" # with BOM
elif new_data[:2] == '\xff\xfe':
enc = "utf-16-le" # with BOM
elif new_data[:4] == '\0\x3c\0\x3f':
enc = "utf-16-be"
elif new_data[:4] == '\0\x3f\0\x3c':
enc = "utf-16-be"
elif new_data[:5] == ' # need to wait for encoding attribute, do not try
# to apply a codec until then.
pass
# ignore EBCDIC
else:
# Does not start with enc = "utf-8"
return enc


Y ya para acabar, unos links:
El link del Universal Feed Parser es de obligada lectura.

miércoles, febrero 22, 2006

Usando los niveles del logging de python


Los valores posibles para definir el nivel de trazas ( con setLevel() ) son (sacados de logging/__init__.py):

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO = 20

DEBUG = 10

NOTSET = 0


Con NOTSET se sacan todas las trazas.
Estos son los valores definidos, pero se puede usar cualquier valor numerico

También hay definido un diccionario que realiza el mapeo entre las constantes y su nombre (string): _levelNames.

Actualización

Probando, NOTSET no se saca nada ¿Esa la documentación mal?
Fresqui, noticias Tecnológicas mitad digg mitad barrapunto.

lunes, febrero 20, 2006

Standards Mode y Quirks Mode



Gracias a haberle leido un tutorial sobre encodings en xhtml, me he enterado que los browsers tienen dos modos de visualización:
  • standards mode (fiel a los estándares de la W3C)
  • quirks mode
Se puede pasar de uno a otro mediante el 'doctype switching'. En otras palabras: si el documento incluye el doctype, se visualiza en 'standards'; en caso contrario se visualiza como 'quirks'.
La reglas son diferentes, y por lo tanto el resultado visual también.
Si el documento tiene una declaración ?xml antes del doctype, en el caso de IE, provoca que se visualice en quirks mode.

En la siguiente página hay mas información sobre los diferentes doctypes y como se comportan los diferentes navegadores con ellos: Activating the Right Layout Mode Using the Doctype Declaration.

En la siguiente página se detallan algunas diferencias.

HTML compatility guidelines for XHTML


Son de utilidad para cuando el xhtml es servido como html.
Ricardo Galli: por lo visto es el pollo que está detrás de meneame.
Interesante: Banda ancha para el móvil, lo mejor del 3GSM. Habrá que ver el coste...

viernes, febrero 17, 2006

Detección de encoding en ficheros html/xhtml


Como se indica aquí, en los ficheros html (o xhtml) el encoding debe de estar especificado. Pero la realidad es otra, y es que puede no venir (los estandares especifican uno por defecto) o incluso no corresponderse con el verdadero encoding.

Buscando en la web, no he encontrado nada para hacer la autodetección. Aunque seguire buscando...
Lo único que he encontrado de momento es este thread.
De momento y para salir del paso usaré el comando 'file' de unix.

En los fichero xhtml nos encontramos con una problematica adicional, y es que pueden venir los encodings especificados en el meta y con el este documento, dependerá de su uso, es decir de como se entreguen. Lo cual no deja de ser un problema si el documento lo tenemos en disco y no sabemos como se ha entragado.
Lo que si especifica bien claro es que el encoding de HTTP tiene prioridad (si se indica) sobre el resto.
Y otro link que todavía no he tenido tiempo de mirar...

Actualización
El siguiente tutorial de W3C es muy bueno: Character sets & encodings in XHTML, HTML and CSS.
Y los diferentes valores para el encoding: IANA registry.

miércoles, febrero 15, 2006

Han inventado una pantalla tactil [barrapunto.com] que es la caña.
Aunque barrapunto ha estado lento. Telendro ya lo había publicado hace días.

lunes, febrero 13, 2006

EBITDA


Hoy me han soltado este termino en una reunión de la compañia. Por lo visto es una medida económica para comparar diferentes empresas, o la evolución de una misma en el tiempo.
Mas info en [1], [2] y [3].

viernes, febrero 10, 2006

Me pasa vlady esta web: genbeta. Va de actualidad sobre software. No parece estal mal. Habrá que seguirla... Curioso que lanzan busquedas a través de Noxtrum.
La caña el interfaz éste [telendro.com.es].
Un par de enlaces de barrapunto:

jueves, febrero 09, 2006

Encoding por defecto en xml y html


En XML si no se especifica el encoding, se toma por defecto utf-8, mientras que en html (para text/*) se toma por defecto iso-8859-1.
Para otro tipos de medios, entra en juego la RFP 3023.

Mas información aquí: Determining the character encoding of a feed.

miércoles, febrero 08, 2006

He encontrado un articulo que parece interesante (pero no he leido todavia): The Problem with the Libxml Python Bindings.

Al final del mismo hay un link muy muy interesante: Beware of strangers.
El cual me ha llevado a otros:

Parseando html con libxml2



En primer lugar tengo que comentar que no hay mucha documentación del 'binding' a python de libxml2. Básicamente las alternativas de documentarse son:
  • Tirar de archivos de las listas: [1] y [2]
  • Ver la ayuda: desde el interprete usar 'help(libxml2)' o desde la shell 'pydoc libxml2'.
  • Ver ejemplos. Con la instalación viene alguno.
A continuación pongo un ejemplo que viene con la distribución (pushSAXhtml.py):


#!/usr/bin/python -u
import sys
import libxml2

# Memory debug specific
libxml2.debugMemory(1)

log = ""

class callback:
def startDocument(self):
global log
log = log + "startDocument:"

def endDocument(self):
global log
log = log + "endDocument:"

def startElement(self, tag, attrs):
global log
log = log + "startElement %s %s:" % (tag, attrs)

def endElement(self, tag):
global log
log = log + "endElement %s:" % (tag)

def characters(self, data):
global log
log = log + "characters: %s:" % (data)

def warning(self, msg):
global log
log = log + "warning: %s:" % (msg)

def error(self, msg):
global log
log = log + "error: %s:" % (msg)

def fatalError(self, msg):
global log
log = log + "fatalError: %s:" % (msg)

handler = callback()

ctxt = libxml2.htmlCreatePushParser(handler, "
chunk = " url='tst'>b"
ctxt.htmlParseChunk(chunk, len(chunk), 0)
chunk = "ar"
ctxt.htmlParseChunk(chunk, len(chunk), 1)
ctxt=None

.../...




El poco tiempo que llevo usandolo ya me ha dado para poder reseñar que:
  • Internamente se trabaja con utf-8. Si el encoding viene especificado en el documento no hay problemas. En caso contrario supondrá uno por defecto (no realiza autodetección en este caso). El tema no es nada sencillo, ya que no sólo tenemos este problema, sino que se puede dar el caso de que el encoding no concuerde con lo que viene especificado en la declaración. O incluso que se use más de uno. Vamos una movida... Además en caso de estar parseando xhtml ignora el ?xml. Para xhtml se debería usar el parser xml, pero ¿y si el xhtml no está bien formado? Vamos que aqui hay miga...
  • Desde el callback no podemos parar el parser. La parada hay que hacerla desde fuera. Lo suyo es hacerla entre el paso de un 'chunk' de datos a otro.
  • Con el api de C he visto que el parser te puede notificar que ha habido un problema y que hay que parar, sin embargo esta funcionalidad no es posible en los bindings de python. Según me comenta Daniel Veillard: "The notion of fatal error where the parser stops emitting data (just more error message) exists only in the XML parser." Me parece muy bien, pero esto no explica porque existe esa funcionalidad en el api de C. En los links del post hay un ejemplo de ésto.

Y para acabar unos enlaces interesantes:

martes, febrero 07, 2006

Un thread en el que se indica porque python está indicado para el desarrollo de crawlers.
En dicho thread comentan sobre google-kongulo, un crawler liberado por google y que se usa en su desktop.

Tambien recomiendan como parser BeatifulSoup. Lo que hace es convertir el html a un arbol (no es SAX; ni tampoco DOM).

libxml2 y el encoding


Ando trasteando con libxml2 y ésta página es la que hay que leer con respecto a los encodings.

Ya hace tiempo puse unos cuantos links sobre encodings; y ahora van un par mas extraidos de la página anterior:

Buscando en la web, el único thread que dice algo sobre la autodetección de los encodings para html es éste.

Actualización
Los encodings que soporta son:
  • UTF-8
  • UTF-16 little endian
  • UTF-16 big endian
  • UCS-4 little endian
  • UCS-4 big endian
  • EBCDIC
  • UCS-4 unusual ordering (UCS4_2143)
  • UCS-4 unusual ordering (UCS4_3412)
  • UCS-2
  • ISO-8859-1 ISO Latin 1
  • ISO-8859-2 ISO Latin 2
  • ISO-8859-3
  • ISO-8859-4
  • ISO-8859-5
  • ISO-8859-6
  • ISO-8859-7
  • ISO-8859-8
  • ISO-8859-9
  • ISO-2022-JP
  • Shift_JIS
  • EUC-JP
  • ASCII
Una noticia sobre planes de google para incorporar intersticial (vía telendro). Esta bien además de por la noticia, por el repaso a los diferentes formas de 'advertising'.

lunes, febrero 06, 2006

Para ver los SLDs de los diferentes paises.
Hay un post interesante en ¿Contratación de equipos de desarrollo? [barrapunto.com]
¡Vaya! Nokia usa python. De hecho han liberado código.
Vía barrapunto.

domingo, febrero 05, 2006

El site de Jose Miguel.

viernes, enero 27, 2006

Anty- spywares


Preguntando a los amigotes sobre que cosas usaban me dijeron:
  • Spybot. Se puede bajar de aquí. Vía my bro.
  • Lavasoft. Vía 'el doctor'. Más info aquí.
  • Y vía 'el abuelo': "Yo tenía El norton inteernet security con antivirus, firewall y spyware y de tó, pero se me acba la licencia pirateada y estoy por poner lo que me recomiendan los geeks de mi curro que es: kaspersky (antivirus) + ( agnitum outpost (firewalll y de-mas cosas versatil pero complicado) o zonealarm (firewalll facil) ) a ver si me lo pasan lo pruebo y so comento". Literal.
De momento he probado Spybot.
Nota posterior: Instalando Ad-Aware SE Personal (el de Lavasoft) , he visto que forma parte del Google Pack. Interesting...
Otra mas posterior: AVG, aparte de antivirus (de gratis), también tiene un anti-malware.
En Google Code han publicado unas estadísticas sobre código web. Vamos lo que usa la gente por ahí...
Vía Telendro.

jueves, enero 26, 2006

Diez años en la región de San Francisco [elpais.com].
Desde el Pacífico - FRANCIS PISANI

miércoles, enero 25, 2006

Un minipost, para presentar a Drupal, un content management/discussion engine hecho con Apache+PHP+mySQL.

Actualización
En mi proyecto lo estamos usando en ixnik, que es un portal interno para el grupo de desarrollo del proyecto en el que estoy.
Esta entrada es para presentar a Baquia. Vía Barrapunto:

"Acaba de renovar su diseño (obra de La Coctelera) y además su clásico boletín Zumo de Red ahora se publica diariamente en formato blog, lectura muy recomendable para seguir la actualidad tecnológica de forma amena y crítica."

martes, enero 24, 2006

Un blog nuevo cuyo contenido podría ser interesante: Sponsor Actual.
Un par de noticias de barrapunto:

lunes, enero 23, 2006

Viaje al centro de Microsoft [elpais.es].
Visualización de datos específica: ¿cuál es vuestra aplicación favorita? [barrapunto.com]. Esta bien... dan unos cuantes enlaces, aparte de los tipicos: gnuplot, graphviz, ...

viernes, enero 20, 2006

Ejemplo de reimplementación de los metodos que modifican un diccionario [python]



class MyDict(dict):

def __setitem__(self,c,v):
print "En __setitem__"
dict.__setitem__(self,c,v)

def __delitem__(self,c):
print "En __delitem__"
dict.__delitem__(self,c)

def pop(self,c):
print "En pop"
return dict.pop(self,c)

def popitem(self):
# Saca la key del principio
print "En popitem"
return dict.popitem(self)

def clear(self):
print "En Clear"
dict.clear(self)

def update(self,D):
print "En update"
# !Ojo! si tenemos un tratamiento por key, al invocar al update del padre
# no se ejecutaría. Vamos... que update no hace uso de __setitem__.
# Con lo cual nos tocaria hacer a peluski aquí el tratamiento especifico
dict.update(self,D)

def setdefault(self,c,v=None):
print "En setdefault"
return dict.setdefault(self,c,v)


Si heredas un diccionario será para aprovechar la funcionalidad que te ofrece, y ampliarla.
La segunda opción, y en principio mejor será que internamente tu clase haga uso de un diccionario.

Por ejemplo para eliminar un elemento tenemos 3 posibilidades: 'pop', 'popitem' y hacer uso de 'del'. Estaría bien que tanto 'pop', como 'popitem' hicieran uso de '__delitem__' como hace 'del' de esta manera con meter nuestro código en '__delitem__' valdría para las tres opciones de borrado. Pero como no funciona así, es necesario crear un método adicional que sea invocado desde las tres.
Un ejemplo todavía peor es el de 'update'.

Det todas formas por principio deberíamos siempre preferir la composición a la herencia: que nuestra clase haga uso del diccionario en lugar de heredar de él.

jueves, enero 19, 2006

Vía Javier Pagés [inforenses.com], he visto 2 articulos relacionados con la Informatica Forense:

Del segundo he obtenido varias empresas que se dedican a este tipo de temas:

Y un par mas:

Perl 6


Sobre la nueva versión (y futura) de Perl: What is Perl 6?
Vía barrapunto.

lunes, enero 16, 2006

En Europa se esta fraguando el desarrollo de un nuevo buscador, que pueda rivalizar con los lideres americanos (google, yahoo, ...): quaero [telepolis.com].

viernes, enero 13, 2006

bitacoras.com


Bueno... parece que he encontrado un sitio para la creación de bitacoras que realmente está muy bien: bitacoras.com.

Lo que te ofrecen (de su pagina):

  • Soporte para bitácoras y fotologs
  • WebFTP desde el Panel de control
  • Posibilidad de programar anotaciones futuras
  • Moderación de comentarios y protección frente a spam
  • Miniblog: Ideal para recopilar enlaces
  • Envío/recepción de trackbacks y pings
  • Posibilidad de enviar anotaciones desde teléfono móvil
  • Posibilidad de enviar anotaciones desde el e-mail
  • Gran cantidad de plantillas personalizables
  • Sistema propio de etiquetas TAGs
  • Sindicación compatible con todos los lectores
  • Estadísticas de uso
  • Foros de soporte
  • Chat de usuarios

Y lo que yo he podido ver ...

  • meten una barra arriba (posible publicidad) (-)
  • ¿limite de subida? (-)
  • permite subir ficheros, has 60 KB (+)
  • limite de tamaño de fichero a subir (-). Pero es algo normal.
  • categorias (+)
  • moderación de comentarios (+)
  • medidas antispam en comentarios (+). Pero no tienen la posibilidad de obligar a teclear una palabra generada en una imagen, con lo cual, aunque el spam no aparezca automáticamente (pasa por moderación), te obliga a moderarlo. Con la imagén ni siquiera llegaría a la página de moderación.
  • Tienen varios gestores (+):
    • usuarios
    • enlaces
    • acronimos
    • emoticonos
  • importación y exportación de ficheros (la exportacion la hace a un fichero de texto dentro de un .zip con un formato determinado, incluyendo: el titulo, el resumen, el contenido, los comentarios, ...) (+)

Servicios Plus (de su web):
  • Eliminar publicidad de mi bitácora por 1? al mes.
  • Eliminar publicidad de mi bitácora, aumentar hasta 250 Mb. el espacio disponible y aumentar el número de autores (hasta 10) por 2? al mes. Y la supresión de la limitación de subida de 60 KB.
A mi me parece de lo mejor que he visto hasta ahora. Y por un euro al mes, que es nada, te quitas del medio la publicidad.

miércoles, enero 11, 2006

Me comenta JJ un sitio web (tienda fisicamente en San Sebastian de los Reyes) muy bueno sobre todo para componentes: alternate.

Lo proximo de Microsoft


Windows Vista e IExplorer 7 (por lo visto con un look&feel clavao a firefox).

martes, enero 10, 2006

Hace ya un tiempo JJ me comentó unos productos de OpenSymphony:
También me comentó sobre un repositorio de proyectos 'Open Source' Java: CodeHaus. Según sus palabras: "...projectos muy a seguir de cerca. Hay de todo desde compiladores AOP hasta integradores de ESB."
Este post sólo es para anotar un par de tecnologias que usa tocomocho.net:

lunes, enero 09, 2006

Un par de posts sobre ¿la muerte de barrapunto?:
Una de las cosas nuevas de estas fechas ha sido un HD con unos cuantos Gigas. Andaba un poco escaso de espacio...
Tras instalarlo, llega la pregunta del millón. ¿Como lo particionamos?
Si vamos a usar windows (actualmente lo normal será usar 2000 o XP) pues tenemos dos opciones: fat32 y ntfs.
Con fat32 tenemos que tener en cuenta que tenemos una limitación en el espacio de la particion 32 GB.

Buscando en google, hay bastante información para comparar.
Me resulta curioso que hoy en barrapunto hay un post relaciona: Formatos de archivos para discos externos.

Ya para acabar... Lo de los GB, es una movida. Según la entrada en la wikipedia hay dos definiciones posibles de GB: 10^9 y 2^30. ¿Adivinais cual usan algunos fabricantes de discos duros? Pues sí, la primera. No os extrañe que cuando tengais formateado un disco duro la capacidad real (GB para el ordenador es 2^30) sea menor...

viernes, enero 06, 2006

Esta bueno: Ingenieros, programadores [microsiervos.com].