Archive

Archive for July, 2008

End of July update on Dokeos development

July 29, 2008 1 comment

I thought I’ll write a short update on what we are doing at Dokeos at the moment, so you don’t think we’re just sleeping through the summer holidays…

Eric and Julian, of the French team, are currently working on a project for a specific hospital management school in France, and on a large and long-time review project before the migration of portals to version 1.8.5 for an important Belgian client. They have a few weeks of holiday here and there, so they’re pretty much busy full-time on these ones when they’re not gone.

The team of university developers (of whom Sven is half working for Dokeos now) is working on the development of Dokeos 2.0. They are expected to provide a first usable product for the Dokeos User’s Day in December, so I they seem to be putting a lot of efforts into this.

Thomas is busy providing course-building training to a few important medical and pharmaceutical clients.

Arnaud, our system administrator and occasionally developer of the videoconference tool, is pretty busy with new installations and the migration of portals from 1.8.4 to 1.8.5.

As for Daniel and Julio, they work under my supervision on several important projects, including a the development of a few new features for the quiz tool for a local (peruvian) client and the development of a new survey type for a belgian client.

I’ve been giving training for Dokeos administrators and teachers over the last three days of last week, and preparing a long development of new extensions to the quiz and learning path tools (with possible little steps towards SCORM 2004 implementation), and the review and finish of the new survey type development. I’ve also been studying web services quite deeply, and on my spare time I reviewed the possibilities of an integration with Drupal 5 or 6 as well as a few ideas for the SCORM 2.0 white papers call.

As you can see, we’re quite busy. We hope you enjoy your holidays though, if any!

Advertisements

Canonical, Microsoft and Apple

Just wanted to highlight a post I randomly found and that is interesting and is from the blog of someone (I don’t know whom exactly) obviously close to Ubuntu (the blog is full of articles and links to Ubuntu).

http://jonreagan.wordpress.com/2008/07/26/canonical-microsoft-and-apple/

It makes me think we should really get Dokeos packed up for Ubuntu (or at least Edubuntu) as we’re really starting to have something good here…

Categories: Dokkeos, English, General Tags: ,

Trying out PECL's SCA_SDO package

July 27, 2008 1 comment

In order to start offering Web Services inside Dokeos, I (and Stefaan Vanbillemont) have been testing out the SCA_SDO package from PECL (for PHP), that reportedly offers the possibility to deploy web services from existing functions only by including a common file and adding a bit of documentation “PHPDocumentor style” to the code.

As we are using PHPDocumentor-like comments already, and have a lot of existing functions possibly offering all the services we would like to offer as web services, I thought SCA_SDO was a perfect match.

The SDO-part of the extension will not be used in our context though, so I will focus on a short and early analysis of what we need and what SCA has to offer, then will show a short example of what we can do with a Dokeos + SCA combination.

I will be using information gathered from

http://www.osoa.org/display/PHP/SCA+Documentation

and

http://www.php.net/manual/en/sca.examples.exposing-webservice.php

Apparently, the latter is more up-to-date (so it might cut your research time), but it is less detailed in terms of theory about the SCA_SDO package.

First of all, we need something to re-use the Dokeos code, not write new code, if at all possible. The SCA package offers that. However, it also depends on your code using a class structure, so you can’t just use a functions library. That means we can’t use functions like api_get_version(), just because it is outside of a class.

Second, we need to be able to authenticate (or provide some way to limit the service to only secured sources) the service calls. However, SCA doesn’t implement any kind of security. This is very bad in our context because we don’t want to rewrite all methods just to be able to provide a secured service…

However, if we ignore those two issues, deploying web services with SCA is very easy.

As a test, we could use one of the PHP libraries in the form of a class, like UserManager. However, a series of problems might appear when trying to do that…

  1. the file name needs to be the same as the class name (this will be a major hassle for most existing open-source projects), otherwise you get a blank page when asking for the wsdl.
  2. the @param tags in the PHPDoc of each function need to be defined exactly as @param [type] [$variable] [comment], with the comment being optional, otherwise you get a blank page. The type can be ‘int’ or ‘integer’ (or any other simple type).
  3. you *might* not be able to use complex types
  4. all methods in the file must match the PHPDoc syntax exactly (in terms of @param and @return), otherwise you’ll get a blank page (this is also a hassle).
  5. the class header comments *must* absolutely be a space+star+space+@… form, otherwise you get a blank page.
  6. you cannot use another file to include a class definition file, thus allowing you to rename your file (use UserManager.php to include usermanager.lib.php that defines UserManager class).

Apart from these restrictions, you can:

  1. use a parameter variabe name in the comments which doesn’t match the one in the function parameters
  2. use underscores for the class’ name and the methods’ names
  3. use normal ‘//’ and ‘/** */’ comments between two methods

Thus, we might end up with a system to re-use existing methods, but it wouldn’t be at all that easy to make it work.

An example of completely re-worked and partial usermanager.lib.php, renamed for the occasion as UserManager.php, would be:

<?php
require_once ‘SCA/SCA.php’;
/**
 * This library provides functions for user management.
 * it in your code to use its functionality.
 *
 * @service
 * @binding.soap
 *
 */
class UserManager {

  /**
  * Delete a user from the platform.
  *
  * @param integer $userId The user id.
  * @return bool true if user is succesfully deleted, false otherwise.
  */
  function deleteUser($userId) {
   return true;
  }
}
?>

However, even here there is a fundamental problem, as we still need to require global.inc.php from here (to get access to the database itself and to the database library).

We’re not really having a complete solution here…

Instalar Eclipse Ganymede + PHPEclipse + Subclipse + Dokeos dev-1.86 en Ubuntu 8.04

July 24, 2008 12 comments

Luego de tener problemas con la Eclipse 3.2 y de intentar dejar PHPEclipse por Zend Studio, tenía tantas ganas de que PHPEclipse vuelva a funcionar como aquel verano del 2008 donde todo simplemente funcionaba bien. Ahora, con la última versión de Eclipse 3.4 Ganymede hice el proceso de instalación que verán en las siguientes lineas y todo funcionó.

Antes que nada se debe de desinstalar algún rastro es decir del Eclipse 3.2, para ello pueden visitar este post.
Ahora comenzamos con:

1. Instalar Eclipse 3.4 Ganymede
http://download.eclipse.org/eclipse/downloads/

Descargué la siguiente versión: Linux (x86/GTK 2) y lo descargué desde el servidor Columbia muy rápido aqui en Perú. Descomprimir el archivo tar y ejecutar el archivo ./eclipse

Si no tienen el Java Runtime Enviroment es necesario instalarlo:

sudo apt-get install sun-java5-jre

Esto instalará el Eclipse para un usuario solo (instalarlo para todos los usuarios de esta máquina necesita más trabajo y grabar los archivos dentro de un directorio compartido). Un buen lugar para instalarlo para un usuario único es dentro de /home/usuario/src por ejemplo, si es que tienen un directorio para fuentes de programas.

Seleccionar el workspace: por default seleccionar la dirección pública del servidor Apache, en mi caso: /var/www/
(Es necesario que esta carpeta tenga permisos de escritura)

2. Instalar el Plugin – SubEclipse

Seguir los detallados pasos aqui: http://subclipse.tigris.org/install.html
Para esta instalación seleccioné http://subclipse.tigris.org/update_1.4.x

3. Instalar PHPEclipse
El proceso es similar al Plugin SVN pero se debe de agregar el sitio http://update.phpeclipse.net/update/stable/1.2.x/

4. Crear un nuevo proyecto en Eclipse

a. File->New -> Other -> SVN -> Projects from SVN
b. Agregar la dirección de SVN de Dokeos: https://dokeos.svn.sourceforge.net/svnroot/dokeos/trunk
De la lista seleccionar “Dokeos”.
c. Seleccionar “Checkout as a project in the workspace”. y colocar un nombre por ejemplo “dokeossvn”
d. Done!

Comenzará la descarga de Dokeos desde el repositorio SVN.

Si a este punto Eclipse enseña un error acerca del cliente SVN que no se pudo cargar, verifica que todos los elementos del repositorio de Subclipse (es muy probable que necesite JavaHL) sean instalados y vuelve a probar.

Es necesario realizar este pequeño truco para cambiar el proyecto de SVN a PHP y poder hacer inspecciones dentro de funciones, includes, etc. No olviden cambiar la perspectiva a PHP, por default es JAVA.

5. Ver resultados

Luego acceder a localhost/dokeossvn suponiendo que tienen esta dir /var/www/dokeossvn et voila!

Para más información sobre Dokeos y su repositorio SVN : http://www.dokeos.com/wiki/index.php/SVN

30 días con Zend Studio

July 23, 2008 2 comments

Cansado de tener problemas con la combinación de Eclipse v3.2, PHPEclipse y Subclipse v1.1
decidí probar la versión de prueba de 30 días del Zend Studio for Eclipse.

Los problemas básicamente de Eclipse 3.2 eran un conflicto entre el PHPEclipse y el Subclipse.
Para solucionar de una manera poco elegante pero práctica y rápida desintalé el Subeclipse y comencé a mandar los commits de Dokeos por consola (trabajo sobre una Ubuntu 8.04)

Pero los problemas no iba a parar, al crear un nuevo proyecto en Eclipse, apareció un error inexplicable y nunca más cargo. Es por eso que opté por probar el Zend Studio.

Aqui mis comentarios:

Lo malo

  1. La función Ctrl-Click para inspeccionar funciones, constantes, includes, etc no funciona.
  2. No existe una lista de las funciones declaradas en un archivo PHP. Hablo sobre la vista “Outline”.
  3. Al igual que en PHPEclipse no existe la selección vertical. Algo MUY importante que se debería incluir en este tipo de IDEs. Por ejemplo, las versiones de Delphi y de Notepad++ lo tienen.
  4. En la vista “PHPExplorer” (donde se muestra la lista de archivos) se observa el número de Commit pero no la fecha ni el usuario que hizo el commit.
  5. 304 Mb la descarga!
  6. ¿Olvide decir que cuesta $399 dólares?
    Según el sitio web: $399 for 1 year subscription to support / $717 for 3 years subscription to support

Lo bueno

  1. PHP Functions: Biblioteca de funciones de PHP, ahorra tiempo en lugar de visitar http://www.php.net
  2. El SVN SI funciona.
  3. Ningun crash hasta el momento.
  4. Fácil de instalar unos “10 clicks”. No hubo necesidad de instalar otros plugins.
  5. Lee muy bien los .js. En PHPEclipse es necesario instalar otro plugin.
  6. Incluye la funcionalidad “Create NEW SQL connection” un wizard para crear cadenas de conexión, aunque no lo utilicé porque en Dokeos ya existe una clase “Database”.
  7. Y muchos pequeñas cosas que podrían facilitar el desarrollo desde cero (from scratch) aunque en mi caso no fueron usadas debido a que Dokeos ya tiene incluidas clases para manejar la BD, la Seguridad, las Sessiones, etc, etc.

La versión utilizada fue:
Zend Studio for Eclipse Professional Edition Build ID: 20080601

Conclusiones

El Zend Studio es un buen producto, tiene algunas funcionalidades que harán más rápido el proceso de desarrollo, sin embargo, por $399 uno espero algo mucho mejor. Si tan solo el PHPEclipse. Pronto una reseña de Eclipse Ganymede la última versión de Eclipse.

Actualización: Pueden ver este post para poder instalar Eclipse 3.4 Ganymede + PHPEclipse + Subeclipse

Installing OpenERP on Ubuntu – Creating databases

July 23, 2008 3 comments

Following up on my last piece of news about the update put in the OpenERP wiki about installation under Ubuntu, we have come across a problem today (we are still in our testing phase) as we couldn’t create more databases.

Apparently, the problem was due to the terp (Linux) system user not being assigned a bash by default when created by the Ubuntu package.This meant that the request to create a new database being apparently operated from the command line, OpenERP couldn’t execute this operation successfully. Of course, the terp database user also needs the permission to create databases.

You can easily fix that by changing /bin/false to /bin/bash in your /etc/passwd for that user.

I’ve updated the wiki, so read more about this here. The wiki was previously located here, but apparently it’s been silently removed (which I don’t particularly appreciate). Sadly, the new page doesn’t contain the information I added, and I don’t remember the details. So much for trying to help people…

No se deje bloquear por problemas de memoria

Hay unos problemas con PHP5, pero no tantos. Uno de ellos es que los límites de memoria son dificiles de manejar. En Dokeos no las manejamos muy bien tampoco, así que el resultado si tiene problemas de limite de memoria en Dokeos podría parecer tal como lo siguiente:

Exactamente… nada. Generalmente es lo que aparece (aunque los logs del servidor web tienen más información, no siempre es tán fácil de acceder a estos). Entonces si quieren evitarlos y asegurarse que Dokeos maneja bien todas las táreas que desean que haga, sería sencillo de poner un limite de memoria de al mínimo 8MB dentro de su fichero php.ini. Si, 8MB es un monton, y trabajaremos sobre este tema en el futuro, pero al mismo tiempo los servidores recientes pueden permitirselo, hasta con configuraciones muy amplias (solo es un *limite*, no quiere decir que cada usuario web va a usar 8MB).

Si van a usar paquetes SCORM y copias de cursos, asegurense que el limite esta mucho más alta. He visto paquetes SCORM muy largos usar hasta 60MB de memoria (creo que esta debido a nuestro uso de PCLZip, pero no he tenido tiempo para investigar hasta ahora).

Limites de memoria pueden ser configuradas dentro de su fichero php.ini (busca “memory_limit”) o desde la definición de su VirtualHost de Apache, usando una línea como:

php_admin_value memory_limit 64M

Otros parametros que quiza quereran cambiar:

  • post_max_size
  • upload_max_filesize
  • max_execution_time
  • max_input_time

De estos parametros, todos afectan los mandos de ficheros grandes hacia el servidor así que los escripts que se ejecutan mucho tiempo (como operaciones de importes/exportes largos).

%d bloggers like this: