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

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 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.

Instalar Apache2 + VirtualHost + PHP + MySQL + Eclipse

March 27, 2009 1 comment

Este es un post bastante útil para nosotros pues cada vez que nos encontramos con una Ubuntu recien instalada no tenemos a la mano todos los paquetes para instalar.

# Instalando el servidor Apache version 2
sudo apt-get install apache2

# PHP5
sudo apt-get install php5

# Módulo de apache para PHP5
sudo apt-get install libapache2-mod-php5

# Servidor MySQL
sudo apt-get install mysql-server-5.0

# Módulo de apache para mysql
sudo apt-get install libapache2-mod-auth-mysql php5-mysql

sudo apt-get install phpmyadmin  # opcional

sudo apt-get install mysql-query-browser  # opcional ( MYSQL query browser)

# Creamos un virtualhost. Primero copiamos el virtualhost por default de Apache y creamos uno. Modificamos los valores ServerAdmin/DocumentRoot y el tag Directory y eliminamos la primera línea ” NameVirtualHost *”

sudo cp /etc/apache2/sites-available/default  /etc/apache2/sites-available/dokeos

# Habilitamos el virtualhost
sudo a2ensite dokeos  #apache enable site

#Agregando el virtualhost al archivo /etc/hosts  ejemplo: localhost my.dokeos.net
sudo vim /etc/hosts

# Finalmente un Apache2 reload!!
sudo /etc/init.d/apache2 reload

#Luego instalar Eclipse según este post y a programar! :)

Categories: desarrollo, técnico

Preparing PHP TestFest 2009 with PHP Peru

Thanks to an interesting article by Zoe Slattery (who works at IBM UK but is well known in the PHP Community for her work on the QA Team) in PHP Architect, I got into an attempt (at least) at preparing a participation to the PHP TestFest 2009.

This article is an attempt at explaining briefly the steps undertaken. Basically, the objective is to organize it in parallel to my work in Dokeos, taking all the benefits from training myself on the unit testing methodology (I already have very basic PHPUnit and SimpleTest knowledge, but PHP tests seem to use another system). It is also a good activity to be doing during a PHP meeting, because every PHP developer should know, really, what a unit test is *and* how to make one. Tests writing is easy. The only problem is it takes time and a patient mind to write them, carefully ensuring that all the code is covered.

The TestFest is taking place between April and June of 2009.

The good thing is that you get some help from the QA team setting up the event.

The first interesting source is the TestFest page on the PHP’s QA site. This one contains all the important links.

The second best link is certainly the page reporting the current PHP revision’s coverage by unit tests. It allows you to see where your help is needed. For example, having a look at it, I would probably be going for test cases for the DOM extension or the CURL extension, whichever is easier to start with.

I’ll then be reporting my group on http://wiki.php.net/qa/testfest and finally I’ll start reading the documentation on how to write PHP tests

The schedule for the PHP event is already on our events page

I’ve already downloaded PHP 5.3 RC1 from the QA front page and analysed, as suggested in the article, the ext/dom/tests/DOMDocument_loadHTML_basic.phpt which contains a very simple example test case.

Now I’m about to have a look at the phpt details page.

Categories: Development, peru, php Tags: , , ,

Examen Zend Certified Engineer

March 23, 2009 1 comment

Un  lunes 09 de marzo di mi examen de certificación Zend

Recuerdo que hace un tiempo leí el libro de certificación de PHP4. Pero el exámen del 5 es muy diferente. Simplemente quiero compartir la experiencia y darle algunas recomendaciones a quienes se piensen certificar.

Esta certificación no se trata de evaluar funciones memorizadas. Definitivamente es un examen bien pensado y orientado a profesionales con experiencia en desarrollo con PHP, también se califican conceptos de seguridad en Internet, Web Services, Sockets, Bases de Datos, etc.

Si lleva programando en PHP menos de 1 año, no piense que esta certificación será facil.

Recomendación 1: Les recomiendo comprarse el libro Zend PHP 5 Certification Study Guide (Clic aquí)

La preparación para la certificación debe durar como mínimo 15 días. Los otros días es muy recomendable realizar prácticas sobre Web Services, XML, Streams, Regex.

El libro NO lo tiene todo, después de dar el examen me dí cuenta que el libro cubre sólo los temas básicos, hay muchas funcionalidades del lenguaje que no están descritas en el libro. Le recomiendo que revise el manual de PHP y los comentarios, definitivamente es el mejor recurso que hay (Clic aquí).

Una vez más repito, este examen no es una cuestión teórica. Los mejores candidatos a este examen son personas que desarrollan comunmente software con PHP y no simplemente saben aspectos básicos del lenguaje.

El examen está dividido en preguntas de Seguridad, XML y servicios web, Strings, preguntas basicas de PHP, funciones, Base de Datos y SQL, Arrays,patrones de diseño, programación orientada a objetos y diferencias entre php 4 y 5.

Recomendación 2:
Visitar el Blog “Read The Web” de un desarrollador php Chino!
Clic aquí
Aquí encontrará unas revisiones de cada tema de la certificación.

Hay muchos recursos disponibles y seguro Google traerá información interesante. Existen exámenes de prueba que zend ofrece a precio muy cómodo, es importante tener un buen puntaje en ese examen(Excelent), con eso vez el nivel de preparación que estas alcanzando

Recomendación 3:
Comprar el Mock Exam de phpArchitect:
Clic aquí

Los exámenes de PHP Architect son muy útiles, pues de estos se aprende mucho. El estilo estos exámenes es similar al examen original, es decir dura 90 minutos, son 75 preguntas repartidas en los temas que ya mensioné, tiene la opción de volver a revisar la pregunta antes de terminar el examen.

Después de estar preparado puedes programar tu examen , lo puedes comprar en el sitio web de Zend Technologies y lo podrá presentar en cualquier centro autorizado Pearson Vue.

Éxitos en su examen !!

Follow

Get every new post delivered to your Inbox.

Join 34 other followers

%d bloggers like this: