Archive

Archive for February, 2013

Clean Redmine cache

February 8, 2013 Leave a comment

To refresh Redmine cache, do the following from the Redmine directory (/usr/local/share/redmine, maybe ?):

rake tmp:cache:clear
rake tmp:sessions:clear

http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade#Step-5-Clean-up

Categories: English, Techie Tags: ,

Database schema for Chamilo 1.9.4

February 7, 2013 Leave a comment

A lot of people have been asking for a database schema of Chamilo 1.9. Here it is. The editable format can be found in the documents for Chamilo LMS: http://support.chamilo.org/documents/57

Chamilo LMS 1.9.* database schema

Chamilo LMS 1.9.* database schema

The image itself weights 3.2MB and has a few colours to try and focus on the important parts. All the tables in semi-circle at the bottom are course-specific data tables

Videoconferencia nativa en el navegador con WebRTC

February 6, 2013 Leave a comment

WebRTC (Comunicaciones en Tiempo Real para la Web) está madurando muy rápido. Para los muy interesados y algo pacientes, este vídeo de Google I/O 2012 les interesará un montón!

Para los que, como nosotros, están interesados en lo que se puede hacer con esto y Chamilo LMS, pues queda claro que muchísimo.

A partir de la red social de Chamilo, uno se podría directamente conectar a otro usuario por videoconferencia sin sobrecargar el servidor de Chamilo (conexión directa). Con IPv6 y un poco de multicast, podríamos tener un solo docente dictando a miles de estudiantes en simultáneo sin necesidad de integración de Ustream, Livestream, JustinTV ni nada de esto.

Para probar WebRTC con la videoconferencia en Firefox en Ubuntu *hoy*, aquí va un pequeño procedimiento a seguir en el navegador para, primero, instalar una versión inestable de Firefox nocturno (versión 21 al momento de escribir estas líneas) en paralelo a su versión actual (cortesía de otro blog):

sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa
sudo apt-get update
sudo apt-get install firefox-trunk

Después de esto, un enlace “Navegador Web Nightly” aparecerá en el menú de Ubuntu: Aplicaciones > Internet > Navegador Web Nightly.

Una vez lanzada esta versión, ir aquí con esta nueva versión. Al momento de escribir estas líneas, los demos son un poco inestables todavía, pero la idea es que por lo menos uno puede verificar que su webcam y su microfono están tomados en cuenta por los distintos demos disponibles.

Pues ahí va… El futuro de Chamilo tiene videoconferencia como Skype integrada al navegador (si tienes el buen navegador)!

Cursos de desarrollo especializado Chamilo LMS 1.9

February 4, 2013 3 comments

En BeezNest estamos actualizando nuestro equipo de desarrollo a las
nuevas estructuras de desarrollo en Chamilo LMS 1.9.

Por ello, de todas maneras estaremos dictando unos cursos internos
*informales* en las oficinas de BeezNest Latino (oficina de Miraflores, Lima, Perú)

Nuestra infraestructura no nos permite trasmitir en buena calidad estos
cursos en streaming (principalmente por una obra que se está ejecutando
al costado de nuestro edificio), pero si desean, y aunque nuestro local
esté modesto y les advertimos con muy poca anticipación (falta menos de
una hora para el primero), estos cursos son abiertos a paticipación de
personas externas, y ustedes tanto como sus colegas están bienvenidos (previa
coordinación telefónica para evitar reventar el local) para participar
en ellos. Coordinar con Michela al 01/7195191.

Lunes 4/02/2013: 10am-1pm:
* El proceso de validación y calidad de código en Chamilo LMS
* Proceso de instalación (a nivel de código y estructura de datos) de
Chamilo LMS 1.9
* Global.inc.php: inicialización del sistema
* Estructura de página principal de cursos

Martes 5/02/2013: 10am-1pm
* Pruebas unitarias y sus ventajas para la calidad de software
* Generar pruebas unitarias
* Herramientas de curso (estructura de datos y requerimientos para crear
más herramientas)

Miércoles 6/02/2013: 10am-1pm
* Sistema de plantillas Twig
* Herramienta de ejercicios
* Herramienta de foros

Jueves 7/02/2013: 10am-1pm
* Sesiones
* Herramientas de reportes
* Herramientas de administración

No habrá entrega de certificados. Se trata de un curso de participación
libre con el objetivo de capacitar a futuros desarrolladores de Chamilo.

No es necesario participar a todos los cursos, pero no habrà material
digital/impreso distribuido, por lo que… lo que no se ve, se pierde.

PHP’s call_user_func_array() is slow

February 3, 2013 Leave a comment

I just solved an issue that had me waking up in the middle of the night for weeks (just pushing it a bit) and I have to thank PHP’s community and in particular a guy named Brad Proctor for writing a very short but very important comment in the PHP manual, and I quote:

This function is relatively slow (as of PHP 5.3.3) and if you are calling a method with a known number of parameters it is much faster to call it this way:

$class->{$method}($param1, $param2);

He mentions it for PHP 5.3.3, but this is true for PHP 5.3.10 and probably for 5.4 (haven’t tested that one yet).

And indeed, it might be a bit difficult to catch this, but we developed a migration system from external databases to Chamilo LMS, and we wanted to make it very flexible, so what we did was build a configuration file (a sort of dictionary) for which content of which tables went into which other tables. In doing this, we also indicated a “converter function” for each type of data.

So the script being kind of generic and all, th easiest way to call the right function when desired was to simply use call_user_func_array().

Everything went well for the first tables. That’s when we came to one big table (6 million rows) and the migration started to take a very long time. It still took about 0.3s per row, but multiply this by 6 million and you get about 55 days of migration script running without a pause. That’s really difficult to deal with. More even when you hav to deliver within 28 days.

Now the problem is that finding it is a little bit tricky, because putting some pofiling mechanism in place will obviously slow down the operation, and because there is a considerable amount of “previous data” that needs to be inserted before we get to the real problem (thus making us wait for almost hours before seeing the right profiling results).

It is even more tricky when seeing that the real time loss is occurring between the end of the function’s execution and the handling over of the control to the calling script/function…

So the process would be something like this:

0.5000s  Calling call_user_func_array(‘function_a’,$params); from general context

0.5001s  Inside function_a()

0.5011s  Executed something relatively complex inside function_a()

0.5012s Ending function_a()

0.8315s Next line of call_user_func_array() call in general context

That’s right, 0.33s lost just to recover the general context (in my case). That means you’ll loose that amount of time each time you call call_user_func_array().

A good reason to avoid it, just by creating a switch() {…} on the function name, for example.

By calling the function directly (within a switch), the results have been speeded up to something like this:

0.5000s  Calling function_a($params); from general context

0.5001s  Inside function_a()

0.5011s  Executed something relatively complex inside function_a()

0.5012s Ending function_a()

0.5014s Next line of call_user_func_array() call in general context

So, in short, if you can avoid it, avoid using call_user_func_array() at all cost!

Update: thanks to @marvil07 for pointing me towards the same kind of discussion on call_user_func_array() in Drupal. Apparently, they came to the same conclusion that it should be avoided, if at all possible.

Aprendizaje basado en el funcionamiento del cerebro

February 2, 2013 Leave a comment

brainSegún investigaciones en el ámbito de como el cerebro aprende (“Brain-Based Learning”, por On Purpose Associates, 2004), los siguientes elementos son válidos para un mejor aprendizaje:

  1. El cerebro puede encargarse de varias actividades a la vez (por ejemplo, escuchar y oler)
  2. El aprendizaje implica todo el cuerpo
  3. La búsqueda del sentido de las cosas es inato y viene por aplicación de patrones
  4. Las emociones son críticas para la generación de patrones
  5. El cerebro procesa el todo y las partes en simultáneo
  6. El aprendizaje involucra la atención concentrada y la percepción periférica
  7. El aprendizaje involucra procesos conscientes e inconscientes
  8. Tenemos dos tipos de memoria: espacial y “rote” (memoria por repetición sin ser necesario el entendimiento)
  9. El aprendizaje y el entendimiento se mejoran si los hechos están insertados en memoria espacial, o memoria natural
  10. Los retos y las amenazas disminuyen la eficiencia del aprendizaje

Chamilo LMS favorece varios de estos elementos:

  1. Chamilo permite el uso de varios medios (vídeos, audios, textos, imágenes y juegos) y facilita su elaboración por el docente (herramientas de dibujo, grabación y generación de audio, etc)
  2. El docente puede fácilmente transmitir elementos de cursos que involucren el resto del cuerpo. El uso de Chamilo desde su casa permite a los alumnos practicar gestualmente sin el freno de la vergüenza
  3. La integración de definiciones propias de vocabulario, incluyendo, por ejemplo, elementos históricos mediáticos, permite encontrar sentido en lo enseñado. Generar sentido y emociones depende altamente de la manera en la cual el docente decide presentar el contenido.
  4. (idem punto 3)
  5. La presentación de contenido de aprendizaje en formato de cursos (todo) con varias herramientas para temas específicos (partes) permite al cerebro trabajar sobre ambos contextos (global y parcial)
  6. Presentar contenido que combine concentración y percepción es hecho factible por la facilidad con la cual Chamilo permite la integración de medios
  7. (idem punto 6)
  8. A través de la posibilidad, para Chamilo, de elaborar lecciones con mini-pruebas tras cada capítulo, se pueden “animar” las memorias espaciales y ote para cada tipo de contenido presentado. Típicamente, 5 páginas de texto/medios serán seguidas de una mini-prueba de 5 preguntas que asegura que el cerebro del estudiante se despierte al objetivo concreto del aprendizaje
  9. (idem punto 8)
  10. Por el uso de una herramienta de aprendizaje como Chamilo LMS, que permita el aprendizaje al ritmo personal del estudiante, se puede reducir las amnazas y el estrés y optimizar el ambiente de aprendizaje. El aprendizaje durante espacios temporales más tranquilos (en casa, de vacaciones, etc) permite la elaboración mental de conceptos más complejos y su respectivo aprendizaje. La capacidad, para Chamilo LMS, de funcionar en ambientes móviles, le permite fácilmente ser usado en cualquier situación.

Chamilo LMS es un sistema de gestión y distribución de cursos virtuales desarrollado, entre otros, por BeezNest. Se puede descargar en la página oficial de Chamilo. Puede contactar a BeezNest para una propuesta formal de implementación y asistencia en ventas@beeznest.com.

Categories: Chamilo, e-learning, Spanish Tags: