Aquí va una lectura muy recomendable para que los programadores de python se la lean una una vez en la vida. Python como a guido le gusta que se vea

Como no me voy a acordar de nada, hago un resumen para las cosas que se me van a olvidar.

  • indentación: 4 espacios. No tabs.
  • líneas a 80 caracteres, rompiendo después de los operadores
  • separar funciones y clases por dos líneas vacías
  • separar métodos y/o funciones por una línea vacía
  • grupos de funciones por dos o más líneas
  • enconding: utf-8 (será preferido para python >=3)
  • los imports a tu propio código, que sean absolutos
  • un import por linea salvo los from xxx import yyy,zzz
  • paréntesis y corchetes siempre pegados a ambos lados de las cosas
  • dospuntos, comas y puntoycomas pegados a la izquierda y con espacio a la derecha
  • operadores con 1 espacio a ambos lados
  • el igual de los parámetros pasados por nombre, pegado a los dos lados
  • escribe docstrings para toda cosa que sea pública, tanto el módulo como las clases como los métodos públicos. Incluye también los difíciles (docstrings en pep 257)
  • Los comentarios mejor que sean de una línea, comiencen con mayúscula y acaben sin punto, solo cuando sean estrictamente necesarios
  • módulos y packages: minusc y cortitos
  • clases y excepciones: LasPublicas y _LasPrivadas
  • variables globales y funciones: separadas_por_subrayados y los privados con _underscore_delante
  • si un nombre colisiona con algo de python y no lo puedes evitar, añade subrayado al final
  • crea una clase para cada excepción
  • aprovecha el else del try-except para cuando las cosas van bien

Y el siguiente fisco de código es interesante si usas svn/cvs, para ponerlo después de la docstring del modulo:

__version__ = "$Revision: 63990 $"
# $Source$

Estos días he leido en el blog de arc y en el blog de Richard Dale sobre la posibilidad de que se organice en Gran Canaria una de las  reuniones de desarrolladores más importante sobre escritorios libres. Esto se une a esta otra entrada en el blog de Agustín sobre lo mismo. Conseguir atraer hacia Canarias este tipo de eventos sería un gran paso en la diversificación de la economía de la región desde mi punto de vista; por no mencionar que las Islas Canarias son el sitio ideal para organizar reuniones internacionales puesto que gozamos de un clima privilegiado lo cual hace que seamos un destino turístico lo cual a su vez hace que contemos con una oferta hotelera amplia y multitud de aerolíneas de bajo coste que operan con las las islas.

Respecto a la diversificación de la economía de la región, debo decir que las especiales circunstancias de Canarias hacen que sea imposible muy complicado contar con un tejido industrial salvo que esa industria no se fundamente en la creación de mercancías físicas; por ese motivo me parece que nuestra unica mejor salida es crear un tejido empresarial en base de la generación de software. Una reunión como esta te situa en el mapa.

El hecho de que la GUADEC + aKademy 2009 se vaya a realizar en la isla de enfrente supondrá sin duda algún inconveniente; pero una reunión de este tipo, que debe ser considerada algo así como los Juegos Olímpicos de los escritorios libres, tan cerca de casa constituyen una oportunidad única para conocer ver a algunos de los mejores desarrolladores del planeta, y eso es un motivo suficientemente sólido como para cruzar el charquito que nos separa.

Espero que efectivamente consigan organizar este evento en Gran Canarias; y de ser así me gustaría poder colaborar en lo que fuera menester con el mismo.

Recientemente he podido probar el portátil LG E200, más específicamente el modelo A.CP21B. Una búsqueda rápida por Internet consultando la compatibilidad con Linux no devuelve demasiados resultados a día de hoy, por esto espero que a alguien le sea útil mi experiencia con este modelo.

Antes de nada comentar que, a priori, la instalación de Linux (Kubuntu 8.04) ya se antoja una tarea bastante ardua:

  • Tarjeta de video ATI Radeon Xpress 1250
  • Chipset ATI
  • Tarjeta wifi Atheros

Vamos, una verdadera joya de la compatibilidad con Linux.

Por tener todos los detalles del hardware que viene de fábrica con este modelo adjunto la salida de lspci:


00:00.0 Host bridge: ATI Technologies Inc Unknown device 7930
00:01.0 PCI bridge: ATI Technologies Inc Unknown device 7932
00:04.0 PCI bridge: ATI Technologies Inc Unknown device 7934
00:06.0 PCI bridge: ATI Technologies Inc Unknown device 7936
00:07.0 PCI bridge: ATI Technologies Inc Unknown device 7937
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 14)
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon Xpress 1250
01:05.2 Audio device: ATI Technologies Inc RS600 audio device [Radeon Xpress 12xx Series]
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8039 PCI-E Fast Ethernet Controller (rev 15)
08:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)

Después de “recuperar” la instalación de Windows Vista con los CD’s que venían para este fin con el portátil, arranqué con una Kubuntu 8.04 (Hardy). Primera sorpresa, no arranca el entorno gráfico. Repito el proceso, esta vez escogiendo “Modo gráfico seguro” (se supone que fuerza a usar el módulo VESA). Obtengo el mismo resultado, ni siquiera es posible usar VESA con esta tarjeta de vídeo!!. Gracias a lo que se explica en este comentario logro arrancar las X. Básicamente el problema se resuelve usando el driver propietario, los pasos vienen a ser los siguientes:

sudo -s
apt-get update
apt-get install xorg-driver-fglrx
aticonfig --initialize --input=/etc/X11/xorg.conf
/etc/init.d/kdm restart

Por supuesto, como la wifi tampoco la ha detectado tendremos que usar un cable de red para poder descargar los paquetes.

De aquí en adelante la instalación prosigue sin incidentes. Lo siguiente será configurar correctamente la tarjeta inalámbrica.

El problema con la wifi parece ser que no existía soporte en el proyecto madwifi para el chipset que usa (AR5007) en el momento de generar los paquetes que vienen con Hardy. Los pasos para resolver este problema fueron:

wget http://people.freebsd.org/~sam/ath_hal-20080528.tgz
svn co http://svn.madwifi.org/madwifi/trunk madwifi-svn
cd madwifi-svn
mv hal hal.old
tar xvf ../ath_hal-20080528.tgz
mv ath_hal-20080528 hal
make
sudo make install BINDIR=/usr/local/bin MANDIR=/usr/local/share/man
reboot

Actualización: He encontrado otra guía más completa que esta que había escrito originalmente, la recomiendo.

Por ahora, lo único que no funciona correctamente son los atajos de teclado para variar el brillo de la pantalla. En cuanto tenga solución para esto lo escribiré por aquí…

LLevo algún tiempo buscando un IDE completo enfocado en el desarrollo de aplicaciones con Django y hasta este momento todavía no he encontrado nada con lo que me sienta satisfecho. He probado Eclipse con Pydev, ERIC4, PIDA, Open Komodo, etc.

Lo que pido del IDE no son cuestiones tan complicadas:

  • Autocompletado (que funcione bien)
  • Posibilidad de lanzar el servidor de pruebas desde el sistema
  • Detección de errores
  • Integración con SVN
  • Integración con trac (esto es deseable)
  • auto importación de modulos (esto es muy deseable)
  • Ligero
  • Resaltado de sintaxis (tb en las plantillas)

Lo cierto es que lo que mejor se ajusta a lo que busco es Eclipse + Pydev, pero tiende a no autocompletar en el segundo . (self.conn.sim…) lo cual es una pena porque en mi código eso es muy habitual.

Tengo entendido que en la nueva versión de kdevelop se está trabajando en la posibilidad de escribir python y cuenta con un sistema de plugins que espero haga sencillo este tipo de tareas.

En otro orden de cosas me gustaría comentar que nuestra empresa ya tiene página web y que hace poco la Televisión Canaria mostró uno de los productos en un informativo. (El vídeo en youtube)

Cuando estudiaba Programación en primero de carrera uno de los profesores solía hablar sobre el lema del beso. En aquel momento las cosas que tenía que programar eran muy sencillas y además mis conocimientos eran muy pocos así que no presté demasiada atención. Pasaron los años en el dichoso lema del beso cada vez tenía más sentido para mi. No únicamente en cuanto a desarrollo, sino como una filosofía general. Normalmente las cosas que han sido diseñadas de manera sencilla tienden a fallar menos que las cosas que han sido diseñadas de manera menos sencilla; así que intento seguir el lema del beso en la medida de lo posible.

Yo era tan feliz con mi filosofía de vida hasta que un buen día los caminos laborales me llevaron a tener que trabajar con Oracle Internet Directory (OID). OID es la implementación de LDAP del gigante Oracle. Oracle es una compañía que se especializo en bases de datos y bien por méritos propios bien por demérito de sus adversarios se han convertido en “el estándar” en cuanto a bases de datos comerciales se refiere y eso que no es un producto barato. Desde hace algún tiempo está diversificando su mercado y ha ido sacando paulatinamente un montón de aplicaciones nuevas; entre las que está el OID.

La experiencia de utilización de OID no es agradable si has conocido con antelación otras implementaciones de LDAP como OpenLDAP. La instalación de OID es un proceso largo que no tiene nada que ver con la sencillez de OpenLDAP. Una vez instalado cuentas con un directorio que tiene una estructura base, y que contiene la configuración del mismo dentro del propio directorio. Personalmente esto me parece un error porque hace que sea más complicado modificar determinados parámetros (vease el esquema para el cual hay que utilizar ldapmodify). Ya había visto este tipo de configuraciones con anterioridad (dns y dhcp definidos dentro de un LDAP) y me parece un error. Además la interfaz de gestión (Directory Manager) es una aplicación java (standalone).

Podría parece que OpenLDAP es más sencillo porque está pensado para soportar cargas mucho menores pero esto no es cierto. Prueba de ello es que en una reciente reunión de los responsables técnicos de las universidades españolas se habló de un proyecto de roaming y de veintisiete universidades asistentes veinticinco utilizaban como soporte para ese proyecto OpenLDAP. Esto es lo que me hace pensar en el lema del beso cuando tengo que trabajar con OID.

Ha ciertas circunstancias en las que es deseable contar con un escritorio en formato retrato más que un escritorio en formato paisaje. Esto es muy útil cuando estás leyendo o bien cuando estás escribiendo código (tienes más código en la pantalla). Hasta ahora nunca había tenido un monitor que permitiera pivotar; así que nunca había podido probarlo.

En el trabajo nuevo tengo un monitor que si pivota; y por ahora mis dos actividades principales son leer documentación y escribir pequeños scripts; motivo por el cual esta disposición de la pantalla es ideal. Para conseguirlo hay que seguir algunos pasos.

(más…)

Oracle es una de las mayores empresas dedicadas a la informática. En sus inicios disponían de una base de datos que se ha convertido (por derecho propio) en la referencia en el mundo empresarial. Recientemente estoy sufriendo viviendo mi primera experiencia con este tipo de tecnologías por cuestiones de trabajo y por supuesto tengo unos comentarios que hacer a la comunidad. Particularmente me ha tocado enfrentarme a Oracle Identity Managment y en concreto Oracle Internet Directory (OID).

La elección de esta tecnología en detrimento de otras con las que me siento más cómodo y que cuentan con mayor cantidad de documentación no la he tomado yo sino mi jefe (que es un técnico cualificado). Sospecho que los motivos que le han llevado a adoptar esta medida tienen que ver fundamentalmente con cuestiones de inercia; pero en muchos sentidos es una decisión correcta debido al entorno. Los productos de Oracle se integran muy bien con los productos Oracle. Al margen de que ya se utilizan bases de datos y otros productos Oracle en un futuro próximo se empezarán a utilizar varias aplicaciones diseñadas para correr en el servidor de aplicaciones de Oracle. Utilizar OID en este entorno te simplifica las cosas ya que puedes disponer de un sistema de Single Sign On de manera sencilla. Al margen de esto OID tiene algunas ventajas con respecto a OpenLDAP como por ejemplo que se integra con Active Directory y con aplicaciones de terceros (puede integrarse mediente aprovisionamiento de usuarios o sincronizarse uni o bidireccionalmente).

Por otro lado también tiene cosas que me han parecido lamentables. En este caso el consumo de recursos es bastante razonable; pero la cantidad de esfuerzo que requiere una simple instalación es bestial. Si con OpenLDAP podemos utilizar el sistema de paquetes de la distribución y ya tenemos un ldap listo para funcionar con OID tenemos que cumplir un montón de requisitos hardware y software así como instalar un repositorio de metadatos y el sistema de ldap propiamente. Una instalación limpia del sistema completo ocupa algo más de 4Gb y lleva del orden de un día de trabajo. Además y mucho más importante la cantidad de información disponible en la web sobre OpenLDAP es infinitamente mayor que la que existe sobre OID y los esquemas vienen con el sistema utilizado por el primero aunque hay sencillas herramientas para convertirlos.

Tras haber invertido casi un mes (partiendo de un conocimiento 0 de las tecnologías de Oracle) tengo que decir que me seguiría gustando haber podido utilizar la solución libre debido principalmente a la documentación y comodidad que ello implica.

Existen una gran variedad de métodos que permiten ejecutar de un modo u otro un sistema operativo dentro de otro. En el pasado he utilizado algunos de ellos como qemu o VMware; pero desde hace unos meses he estado haciendo pruebas con xen. Probablemente xen sea una de las mejores opción para servidores; pero en mi caso lo que realmente quiero es ejecutar algún software específico que no se encuentra disponible en Linux de manera esporádica (particularmente DPP de Canon); por lo que xen no es la mejor opción. Por un lado el proceso de instalación de un sistema operativo Windows no es nada sencillo; se dice que Chuck Norris consiguió hacerlo en xen, pero el resto de los mortales utilizamos para ello qemu y luego corremos esa imágen con xen; por otro lado las interfaces gráficas disponibles no son demasiado cómodas; la interfaz sdl es muy lenta mientras que la interfaz vnc sufre ciertos retrasos.

En este sentido me he animado a probar VirtualBox (animado por Alberto). La verdad es que la gestión es realmente cómoda. La instalación de nuevos sistemas operativos es sencilla. La interfaz gráfica es rápida. Además viene con un sistema de nat algo raro y justo out-of-the-box. Es raro ya que todas las imágenes reciben la misma ip, pero se puede utilizar interfaces tap (aún no lo he hecho pero tiempo al tiempo). Además existe un CD que dispone de los drivers tanto para Windows, Linux y OS/2 (no estoy seguro de que lo haya para otros), lo cual favorece aun más la integración. También es destacable la incorporación de directorios compartidos de serie.

En definitiva pienso que VirtualBox (OSE) es el sistema ideal para aquellos que quieren probar alguna cosas concreta. Por ponerle alguna pega sólo decir que al separar los ficheros de los discos duros y las configuraciones de la máquina se hace un poco oscuro migrar una máquina virtual de una máquina física a otra.

Llevaba bastante tiempo pensando en comprarme en un portátil puesto que el que tenía ya ha cumplido su ciclo. Dada la experiencia anterior estaba buscando un portátil ligero y potente; y había pensado en adquirir un Toshiba Portégé R500 que es muy caro pero lo podría financiar con el plan avanza. Esto se debía principalmente a que las alternativas que había visto me resultaban casi igual de caras para lo que estaba buscando (virtualización, potencia, 2Gb de RAM, ligereza, autonomía,…)

La última vez que visité El Corte Inglés me mostraron el Fujitsu Siemens Amilo Si 2636 que, aunque es mucho más pesado que el Toshiba, también es mucho más barato y algo más potente. Como esta tienda te permite devolver el producto durante los primeros 15 días decidí comprarlo y probarlo. Antes de esto estuve investigando por Internet para comprobar la compatibilidad con GNU/Linux y no había encontrado referencia alguna.

Una vez comprado el portátil lo primero que hice fue arrancar desde el CDROM una Bardinux 2.5 (la distribución oficial de la Universidad de La Laguna) que está basada en Kubuntu Gutsy Gibbon 7.10. Para mi sorpresa todo aquello que me interesa del portátil funcionó a la primera. El sonido, la wifi y el bluetooth no dieron ningún problema. Tampoco los discos duros ni el touchpad ni nada de lo que yo considero importante.

Hay algunas cosillas que no funcionan del todo bien. Por ejemplo no puedo utilizar las teclas del teclado para controlar el brillo de la pantalla, tengo que utilizar K Power Manager; tampoco funciona la webcam (no le he dedicado tiempo a esto) y no he probado ni la salida HDMI, ni el lector de tarjetas ni el firewire, ni el micro ni los jacks de sonido ni el spidf. Aun así tener un portátil al que le funcionen las características básicas con un software de hace 5 meses no es desdeñable.

La instalación de KUbuntu Gutsy también fue suave, aunque se quedó pescando a la hora de leer la información de los discos duros la primera vez el proceso de instalación. Ahora estoy corriendo este sistema operativo en mi nuevo portátil.

Cuando tenga algo de tiempo espero poder subir unas pocas fotos del mismo.

Meto por aquí estas instrucciones para poder usar la cuenta de la ULL y de Google Gmail Gmaps en el móvil sin que te diga cada vez que abres que el certificado es inseguro. La fuente de inspiración es este artículo en inglés donde hace esto mismo para su cuenta y un N70. Y esto es una buena referencia del comando openssl donde ponen ejemplos para hacer de todo.

Lo primero que tenemos que observar, es que si en esa pantalla le damos “detalles” nos muestra la autoridad certificadora, es decir, quien lo validó, y que es el certificado que tenemos que conseguir. A veces, a la autoridad la certifica otra autoridad “root”, y hay que obtener los dos certificados (si el móvil ya no los tiene).

El primer paso es descargar el certificado. Lo encuentras en google, buscando con paciencia. Hay dos tipos de formatos, el crt (un formato en texto plano) y el pem/cer (un formato binario), que conviene poner en las palabras de la búsqueda.

  • En el caso de la ULL, el certificado lo hace Camerfirma Express y el que he encontrado aparece como formato crt pero es binario, creo que por despiste de ellos. Renombrándolo a formato cer funciona perfectamente.
  • El certificado de google, se queja es de que no encuentra la autoridad certificadora llamada Equifax Secure Certificate Authority, cuyo certificado cer es éste.

Si conseguimos formatos crt y queremos convertirlos a cer, escribimos este comando:

openssl x509 -in entrada.crt -out salida.cer -outform DER

El segundo paso es transferirlos al movil usando por ejemplo bluetooth.

Una vez transferidos, entras en el mensaje (te sale la descripción del certificado), y clickas guardar. Aparece un diálogo llamado “Seleccionar aplicaciones seguras” con cuatro checkboxes que elijo de la siguiente manera: No-instalacion symbian, Si-Internet, No-instalación aplicac, Si-verificar certificados en línea. Una vez transferidos, pulsas Aceptar y aparece Certificado guardado.

Si queremos comprobar que el certificado está instalado, e incluso modificar los parámetros o borrar el certificado, vamos a: Menu > Herramientas > Ajustes > Seguridad > Gestión Certificados.

« Entradas anterioresEntradas siguientes »