(México) Congreso de la plataforma E-learning Chamilo

June 4, 2015 Leave a comment

chamilo-facebook

Categories: Chamilo, Conferences Tags: ,

Prevent WordPress MailmanWidget widget to hide after registering your address

December 11, 2014 Leave a comment

If you use the Mailman Widget as an important design element, you might be annoyed by the fact it disappears once you registered your e-mail. A quick hack to this behaviour is to modify ns_widget_mailman.class.php (see comments):

 public function widget ($args, $instance) {
     extract($args);
     // Patch to continue showing block even if registered in this session
     //if ((isset($_COOKIE[$this->id_base . '-' . $this->number]) && $this->hash_mailing_list_id($this->number) == $_COOKIE[$this->id_base . '-' . $this->number]) || false == $this->ns_mm_plugin->get_mailman()) {
     if (false == $this->ns_mm_plugin->get_mailman()) {
         return 0;
     } else {
         $widget = $before_widget . $before_title . $instance['title'] . $after_title;

Categories: English, php Tags: ,

Porque PHP 7 y no PHP 6?

December 8, 2014 Leave a comment

Para los que se interesan en el progreso de PHP como lenguaje, y en la integración de funcionalidades para optimizar el lenguaje y su uso, se habrán percatado que la próxima versión de PHP se está siendo llamar PHP 7, y no PHP 6.

Porque? Bueno, hay muchas razones, pero la conclusión es que PHP 6 fue un intento algo descoordinado y fallado de la comunidad de desarrolladores de PHP (como el mismo número de versión lo fue para otros software), y que usar 6 confundiría la gente, ya que al final se abandonó lo que se esperaba de la versión 6 y se integró poco a poco en 5.3, 5.4, 5.5 y 5.6.

Si quieren conocer los detalles, se ha elaborado un documento extenso que ha llevado a un voto de parte de los desarrolladores, a favor (en la mayoría) de la versión 7, aquí: https://wiki.php.net/rfc/php6

Categories: php, PHP Perú, Spanish Tags: ,

Chamilo, une solution libre de gestion complète de cours à distance

November 26, 2014 Comments off

conferencia_facebook

Date et heure : Mercredi 10 décembre 2014 de 19h à 22h

Lieu : École supérieure d’informatique (ESI) , 67 rue Royale à 1000 Bruxelles

Organisateurs : ESI et BxLuG http://www.heb.be/esi/ et http://bxlug.be

L’orateur, Yannick Warnier, développeur principal de Chamilo, développera la création d’un cours et le suivi des progrès de l’étudiant, mais aussi comment développer des activités commerciales avec Chamilo comme la vente de cours, et il précisera comment il peut vivre de la vente de service autour du développement de logiciel libre.

Entrée Libre et sans inscription (50 places)

Categories: Chamilo, Events, French, Language Tags: ,

Tricks to debug Captivate SCORM 1.2 content

November 26, 2014 Leave a comment

If you have to make Captivate-generated SCORM 1.2 content in your (web) platform and you want *more* information about what’s going on, this guide might help.

One of the trickiest things about Captivate and SCORM is that Captivate doesn’t handle the credit/no-credit (cmi.core.credit) very well. This parameter, in combination with cmi.core.lesson_mode should let you retake exercises that you have already completed and passed.

In Chamilo, if you want to debug the SCORM interactions on the Chamilo side, use Firefox, login as admin, go to the learning paths list and click the ladybug icon in the action icons next to the learning path you want to debug. This will only affect you, so no worries about doing that in production.

ladybug debug iconThen enter the learning path itselt (simply click its name). Once you’re seeing the content, launch the Firefox debugger with SHIFT+F2 and go to the “Console” tab. Click on any item in the table of contents, and you should see the SCORM and LMS interactions pooring in. Something like the screenshot below.

Chamilo SCORM general debug screen

Chamilo SCORM general debug screen

This is already very nice to understand the interaction going on, and when Chamilo will save the information in its database, but it still lacks the possibility to understand what’s going on, on the Captivate side of things.

Captivate itself has debug features though, but they’re not prepared for just any tool. Luckily, we can tap into them with a moderate level of complexity.

First, you need to know where the Captivate content is on disk in your LMS. In Chamilo, this is typically in the {root-folder}/courses/{course-code}/scorm/{scorm-name}/{scorm-name}. For Captivate content, Chamilo usually generates its own folder, then Captivate, which means you have it duplicated.

You’ll have to get into that folder and, for each SCO (item in the table of content in the screen above), locate the scormdriver.js file.

Around line 1032 of scormdriver.js, you’ll find something like this:

function WriteToDebug(strInfo){if(blnDebug){var dtm=new Date();var strLine;strLine=aryDebug.length+”:”+dtm.toString()+” – “+strInfo;aryDebug[aryDebug.length]=strLine;if(winDebug&&!winDebug.closed){winDebug.document.write(strLine+”<br>\n”);}}
return;}

We’ll hack into that and just replace it straight away (keep a backup copy if you’re afraid) by the following line:

function WriteToDebug(strInfo){var dtm=new Date();var strLine;strLine=aryDebug.length+”:”+dtm.toString()+” – “+strInfo;aryDebug[aryDebug.length]=strLine; console.log(strLine); return;}

This will simply:

  • force the debug to be active (we don’t check blnDebug anymore, we assume it’s on!)
  • redirect the debug messages from this weird winDebug.document to the officially-supported-in-all-reasonnable-browsers “console.log”, which prints the log in the browser console, as illustrated above

Now, to get this to work, you need to clean the cache in your browser. My favorite way of doing this in Chamilo is to press CTRL+F5, then go *back* to the learning paths list, enter *another* learning path, then enter the hacked learning path again. Captivate debug information should start showing in your browser’s console:

Captivate logs in browser console

Captivate logs in browser console

Now you can analyze all the information flow.

That’s all, folks!

Checklist para editores de contenidos SCORM

November 14, 2014 1 comment

Si trabajas sobre la elaboración de contenidos multimedia interactivos con el estándar SCORM 1.2, y que para hacerlo usas herramientas de generación de contenido (Lectora, Captivate, Xerte, eXe Learning, etc) hay algunas cosas que deberías saber para mejorar la compatibilidad de tus cursos en la mayoría de plataformas.

Estas reglas son genéricas y la idea es darte un checklist práctico que puedas verificar con cada elemento.

Cambia el lesson_status a “incomplete” primero

Sabías que, en SCORM, si no cambias el status, el elemento se queda en “not attempted” todo el tiempo hasta que termines este paso (el “SCO”), y cuando sales de ahí, si no enviaste ninguna llamada a LMSSetValue(‘cmi.core.lesson_status’, ‘…algo…’), la plataforma (si realmente respeta SCORM 1.2) tiene la obligación de ponerte al alumno un status de “completed”?

O sea… aun cuando el alumno sale en el medio, sin terminar este paso, se pondrá a “completed”, solo porque el contenido no expresó bien su intención. Cuidado con esto!

Usa “passed” para evaluaciones

Si el elemento (SCO) que el alumno está viendo es un ejercicio, una prueba, un examen o cualquier tipo de evaluación que conlleva un score (cmi.core.score_raw), y si el alumno obtiene los resultados mínimos esperados, deberías darle un status de “passed”. Si no los obtiene, un status de “failed”.

Es importante no darle “completed”, ya que la plataforma podría desear mostrar el resultado de manera distinta si es un ejercicio o un paso de teoría.

Usar “completed” para la teoría

Si a cambio el elemento (tipo “sco”) no es una evaluación, entonces al terminarlo el alumno debería obtener un status de “completed”. A menos que sea solo un documento opcional (tipo “asset”). En este caso se puede usar “browsed”.

Nuevamente, el punto no es que sea prohibido usar “completed” para evaluaciones y “passed” para documentos, sino que el LMS podría decidir mejorar su presentación en base a estos datos.

Usar mastery score, max y min para evaluaciones

El LMS no puede suponer ningun valor para cmi.core.score.min, cmi.core.score.max y cmi.student_data.mastery_score. Es decir que si el almuno toma un sco de evaluación y logra “90” puntos, el LMS no sabe si esto es “sobre 100″, “sobre 20″ o “sobre 1000″. Por lo tanto, el LMS no puede decidir si este resultado fue suficiente o no. El LMS depende enteramente de lo que le envia el SCO.

Existe una excepción a esta regla: si un mastery_score fue definido dentro del imsmanifest.xml para este elemento (sco), o fue pasado a través de un LMSSetValue(‘cmi.student_data.mastery_score’, …), entonces el LMS puede decidir que este “90” es superior al mastery_score, y por lo tanto que el alumno recibe un status “passed”.

Lo mejor siempre es mandar un LMSSetValue(‘cmi.core.lesson_status’, …), pero si el alumno se va antes del final, debe haber un mecanismo de respaldo. Estos datos permiten que se genere este mecanismo.

BeezNest

BeezNest es una consultora especializada en e-learning que provee soluciones y capacitaciones según los requerimientos de sus clientes. Si tiene alguna necesidad de resforzamiento o un proyecto complejo de integración que tenga algo que ver con el e-learning o la gestión del conocimiento, no dude en contactarnos en ventas@beeznest.com

Categories: Spanish, Uncategorized

MySQL error: SQLSTATE[HY000]: General error: 126 Incorrect key file

November 11, 2014 Leave a comment

If you ever get this kind of error:


SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_3aef_0.MYI'; try to repair it

without an internet connection… you are in a bad place :-)

The error message is very unclear about the issue. The problem is actually (most of the time) that the partition that holds the /tmp folder is too small to store a temporary table (for a big permanent table).
This triggers an error at building the temporary table (or part of it) and shows you this error.

To fix, edit you /etc/mysql/my.cnf file (or rather /etc/mysql/conf.d/local.cnf if you’re clean) and locate (or add) the tmpdir directive. Change it from /tmp to /var/tmp, for example, and restart MySQL.

Fixed!

If you’re using local.cnf, don’t forget to add the [mysqld] line before the setting itself.

Categories: English, Uncategorized
Follow

Get every new post delivered to your Inbox.

Join 78 other followers

%d bloggers like this: