lunes, enero 25, 2010

Lista python-es

Copio un correo de Chema Cortés:

A partir de ahora, el servicio gmane.org se une al de googlegroups
para dar acceso a la lista python-es@python.org y dar soporte de
búsquedas.

Podéis acceder a través de la siguiente dirección:

http://dir.gmane.org/gmane.comp.python.general.hispano

o con un lector de news (nntp) desde:

nntp://news.gmane.org/gmane.comp.python.general.hispano


En googlegroups:

http://groups.google.com/group/pythonhispano

También es posible acceder a la anterior lista (python-es@aditel.org) desde

http://dir.gmane.org/gmane.comp.python.general.castellano

domingo, enero 24, 2010

twitter y python

Esto es un autoapunte para una cosilla que quiero hacer con twitter.

C Coding stantards

Hace nada definimos las 'Python Coding Guidelines' en el curro.
Ahora le toca el turno a C.
En este post voy a recopilar referencias que vea por la web sobre Programming Styles [wiki] para C.

Y de C++:
Ahí van unos links sobre el tema de stackoverflow:
Y para acabar:
Ya tengo material mas que de sobra... para empezar a currar... :P

Some post of Jonathan Ellis's

Visité el blog de JE, porque ha publicado un post interesante: Linux performance basics. Habrá que ver como continua la serie...

Y aprovecho a enlazar un par de post suyos sobre python:
Y un enlace externo:
Todos ellos son lecturas interesantes.
Me dejo un enlace a un video para ver: Building Scalable Websites with GAE.

sábado, enero 16, 2010

Un par de lecturas de última hora

Autonota: Leer What is Reactive Programing del mismo blog.

Y he leido un par de post interesantes sobre hotmail:

martes, enero 12, 2010

Rotating hash

I implemented this hash function in php.


private function rotatingHash($key) {
$result = 0;
$n=strlen($key);
for($i=0;$i<$n;$i++) {
$result = ($result << 4) ^ ($result >> 28) ^ ord($key[$i]);
}

//We avoid getting negative results
return abs($result);
}


Aqui podeis leer sobre ella y otras muchas. Pero realmente no creo que os sea muy interesante...En su lugar podríais usar crc32() que es nativa y por lo tanto mucho más rápida.
Ya como curiosidad... si quereis usar md5, debereis hacer....


$unpack = unpack('S', md5($key, true));
return $unpack[1];


Pero es mas lenta que crc32.

viernes, enero 08, 2010

Python Code Checkers

He encontrado que hay disponibles los siguientes analizadores de código.
pylint, pep8, pyflakes, pychecker

El objetivo de todas ellas es de mejora la calidad del código. Bien por detectar errores antes de llegar a la etapa de ejecución, bien por indicarnos errores obvios, o bien por corregirnos el estilo de codificación.

Ejemplo típico de error detectado: uso de varibles no definidas previamente.

Veamoslos uno a uno, brevemente (no va a ser un análisis profundo ni mucho menos.... es un vistazo rápido)

pep8
Analiza el estilo del codigo para que se conforme al pep8.
Ejemplo de uso: pep8 cs_example.py --show-pep8 --ignore=E501
En el ejemplo anterior le estamos indicando que cuando nos de un error, muestre el texto completo del pep8 que se inclumple y que nos ignore el error E501.
Si no tenemos un estilo que se adapte al pep8 pero similar, puede sernos útile gracias a la posibilidad de ignorar los errores.

Por defecto solo muestra un error de cada tipo.
Con -h nos muestra la ayuda.

Conclusión: Está muy bien, pero puede ser un poco pesado con algunas cosillas. Eso si como las podemos ignorar...
Eso si, sólo para comprobar estilo.


pychecker
Sus dos principales características son:
  • a diferencia del resto ejecuta el código
  • no comprueba estilo
Al igual que el anterior con -h nos muestra la ayuda (tiene muchas opciones).
Si sólo queremos parsear el fichero pasado se le debe indicar pasar el flag --only.
Por defecto ejecuta código de módulos importado, por lo que puede generar mucho ruido. Por fortuna se puede desactivar el análisis de módulos determinados por configuración.

pyflakes
Analisis estático
No chequea estilo
Limitado número de errores tratados.
Sólo analiza ficheros o directorios pasados por linea de comando.
No tiene ayuda en linea

pylint
Es la herramienta mas completa (basta con ver la ayuda (-h), permitiendo ademas el ser extendida mediante pluggins.
Hace sugerencias sobre como mejorar el código.

Conclusiones
Tras haber echado un vistazo rápido a ellos, y haber visto lo que se dice de ellos, parece que pylint es el mas completo.
El mas flojo parece que es pyflakes.
pep8 es curioso y tiene su utilidad ya que es muy estricto en el chequeo de las reglas.
pychecker por la forma de hacer el análisis podría detectar cosas que pylint no, pero habría que estudiarlo mas a fondo.... Y a pesar de ello no se si merecerá la pena. A priori diría que no.


Referencias:

domingo, enero 03, 2010

Error handling

En el curro tuve que dar una charla sobre 'error handling'. Actualizaré este post con contenido...
Pero mientras tanto, incluyo un thread que acaba de parecer en comp.lang.python: Exception as the primary error handling mechanism?.