Archive

Archive for March, 2009

Porque usar phpLangEditor para traducir aplicaciones en PHP?

(o cualquier otra herramienta especificamente construida para traducciones)

Hoy (y los últimos días en general) hemos tenido unos problemas con las traducciones de OpenC2C, basado en el framework Akelos. Básicamente, el problema viene de que, por alguna razón, Akelos generó ficheros de idiomas en Español más actualizados que los ficheros en Inglés, que nos sirven de base.

Para arreglar este problema, Ricardo se dedicó a revisar todos los ficheros de idiomas de Inglés para asegurarse que todo funcionaba, pero haciendolo “a mano”, es decir verificando los ficheros visualmente y arreglando los problemas que encontraba. Por supuesto, pasó al lado de unos errores importantes, debidos a que la revisión manual es… manual, y que hay demasiado información que se tiene que revisar, y que por eso uno tiene prisa y… finalmente… pues se equivoca.

Pero existen herramientas especializadas para esto. Como por ejemplo phpLangEditor, una extensión de Firefox que permite abrir un fichero de referencia, un fichero de traducción, y ver solamente las variables que existen en el fichero de referencia pero no en la traducción.

Cuales son las ventajas?:

  • uno no se puede olvidar una variable (las no traducidas aparecen claramente)
  • uno no se puede equivocar, agregando un símbolo no soportado por la herramienta
  • uno tiene una serie de recomendaciones y verificaciones proveídas por la herramienta

Xapian: the tricky multi-term removal process

March 29, 2009 4 comments

Update 2012-01-17: this article is quite old now and it might be completely irrelevant. It is only provided as a hint which might help you out writing a procedure in PHP to manage indexing. As Olly Betts (main developer of Xapian) commented below, the error message doesn’t come directly from Xapian either, but it might be coming from some of the things built on top. No harm is meant to Xapian, it is a very light weight solution, fits very well in our needs to have an indexing component in our PHP application without adding complicated Java requirements and its been working for us for several years now. No critical use, but it’s never been down either.

Chamilo now implements the Xapian search engine in its professional version. The results are quite good, but to implement a very specific need for one customer, we had to make something a bit complicated: we associated terms in the Xapian database to a specific table of terms in Chamilo.

Not playing too much with transactions (as we should, really), we’ve been relying on the process of keeping the two codes databases in synch by having code that only does the two things together each time.

Of course, one of our team was taken aback by a client request and decided to “clean some terms directly from the Chamilo database”… Murphy’s law’s applications are always around…

Anyway, I had to implement a little (very ugly for now) interface to add/remove/edit terms from the Xapian database without affecting the Chamilo database. That’s when I realized that, when you remove terms from a XapianDocument object, you have to do the following process:

$list_of_terms_to_remove = array(‘term1′,’term2′,’term3’);

$xi = new XapianIndexer();

$doc = $xi->get_document((int)$doc_id);

foreach ($list_of_terms_to_remove as $rem_term) {

$doc->remove_term($rem_term);

if ($doc instanceof XapianDocument) {
$xi->getDb()->replace_document((int)$doc_id, $doc);
}

}

$xi->getDb()->flush();

Now… it doesn’t look like it, but the replace_document() method is actually quite important. If you don’t put that one *in* the loop, then Xapian will give you an evil error saying a term cannot be removed from an unexisting document! You want to avoid that? Use replace_document(); It’s that easy.

I publicación estable de OpenC2C y reportes de actividad

El último Viernes publicamos la primera versión estable de OpenC2C, la 0.1.0 stable, que desarrollamos en parallelo con Dokeos, para llenar una necesidad que tenemos en nuestro negocio (más sobre esto más tarde). Hay un pequeño error todavía en la edición de perfiles usuario, que arreglaremos pronto.

Primera demo de OpenC2C

Pantalla de OpenC2C

Por curiosidad, me pusé a mirar la actividad de proyectos similares disponibles en la web (bajo licencia libre), para venta en línea. Pensé que osCommerce (tienda en línea), ZenCart (una rama nacida de osCommerce) y UberCart (un módulo de tienda para Drupal) iban a tener buenos resultados estadísticos (mucho mejores que los de OpenC2C), pero en realidad parece que muy poca gente esta activa en este tipo de proyectos (tal vez por lo difícil que es de desarrollar un sistema y generar ingresos con el cuando uno lo publica).

Ohloh.net es mi sitio favorito para comparaciones en términos de desarrollo, y aquí están los resultados para el fin de Marzo 2009 (OpenC2C en rojo):

Base de código (numero de líneas)

Base de código (numero de líneas)

Code activity (número de commits en Subversion)

Actividad del código (número de commits en Subversion)

Contribudors activos (que mandan código)

Contribudors activos (que mandan código)

Si quiere probar OpenC2C, http://demo.openc2c.org es tu destinación!

Categories: desarrollo, proyectos, Spanish

Database schema for Dokeos 1.8.6

March 29, 2009 2 comments

The new database schema sheets are available for Dokeos 1.8.6. Considering we are now finalizing the first RC release, these schemas are final and can be considered complete until 1.8.7 is out.

Dokeos 1.8.6 - Main database schema

Dokeos 1.8.6 - Main database schema

Dokeos 1.8.6 - Course database schema

Dokeos 1.8.6 - Course database schema

Dokeos 1.8.6 - Stats database schema

Dokeos 1.8.6 - Stats database schema

Dokeos 1.8.6 - User database schema

Dokeos 1.8.6 - User database schema

These diagrams have been made with Dia and the SQL2Dia perl script, and are provided to you under the Creative Commons BY-SA license.

Nueva hoja de referencia

Una nueva hoja de referencia rápida (todavía en Inglés) está disponible para Dokeos:

dokeos-186-starter-quickref

Junta con las 3 hojas precedentes, estamos a 4 hojas prácticas para ayudar los iniciantes en desarrollar extensiones para Dokeos.

Las guías de referencia rápida de Dokeos 1.8.6 estan disponibles para su descarga con licencia Creative Commons BY-SA license (Paternity, Share-Alike).
Clases y librerías más importantes
dokeos-185-quickref

Como crear un plugin o una herramienta
dokeos-185-tools-and-plugins-quickref

Seguridad:
dokeos-185-security-quickref

Dokeos y OpenC2C en el BarCamp Lima 2

March 28, 2009 1 comment

Hoy es el BarCamp Lima 2. Estaré por ahí, con unos miembros del equipo de Dokeos, para compartir sobre OpenC2C, Dokeos y la fruta de nuestro trabajo en general.

Categories: eventos, Spanish Tags:

Configurar Evolution para enviar emails usando Gmail

March 27, 2009 2 comments

Tenemos nuestra cuenta de correo pero no tenemos (o no queremos) utilizar nuestro servidor SMTP para enviar correos. Una solución es la de utilizar el SMTP de Google.

Entonces dentro de Evolution ya configurado con una cuenta vamos al menu:

Editar > Preferencias

Escogemos nuestra cuenta por defecto luego click en “Editar”.

Luego vamos a la pestaña “Envío de correo” y editamos como vemos en la imagen.

gmail

Click en Aceptar.

Ahora vamos a configurar nuestra cuenta Gmail.

Una vez dentro de Gmail accedemos a “Configuración > Cuentas”  y asociamos nuestra cuenta por ejemplo julio.montoya@dokeos.com a nuestro correo de Gmail.

Hacemos clic en “Añadir otra dirección de correo de tu propiedad”. Ingresamos nuestros datos confirmamos el email y listo.

Para probar que esto funcione enviamos un email desde Evolution. Hacemos clic en “Enviar/Recibir” y el programa nos pedirá de ingresar el password de nuestra cuenta Gmail.

Veremos ahora que los emails que enviamos desde Evolution estarán dentro de la label  “Enviados” de Gmail.

%d bloggers like this: