Archive
Cursos de desarrollo especializado Chamilo LMS 1.9
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.
Curso: Medición con XHProf y técnicas comunes de optimización, con diferencias entre PHP4 y PHP5
Como de toda forma tengo que preparar el programa de mi curso: Medición con XHProf y técnicas comunes de optimización, con diferencias entre PHP4 y PHP5, lo cuelgo por aquí por si interesa alguien.
PHP
- Historia del proyecto PHP (15′)
- Diferencias entre PHP4.3, PHP5, PHP5.2, PHP5.3 y PHP5.4 (30′)
Profiling
- Zend Debugger, XDebug y XHProf (15′)
- Instalación y configuración XHProf (30′)
- Medición con XHProf, Xdebug y KCacheGrind (30′)
Optimización
- Optimización de servidores (hardware + SO) (10′)
- Optimización de servidores web (10′)
- Optimización de bases de datos (10′)
- Técnicas de micro-optimización de PHP (15′)
- Caché: system, opcode, script/variables (30′)
- PHP-FPM (15′)
- Integración continua con Jenkins PHP (30′)
Referencias
Problemas al crear cursos en chamilo despues de una instalación – ERROR 500
Hola a todos,
Me acaban de llamar y escribir para reportarme un error que es común cuando se hace una instalación de la plataforma Chamilo 1.8.4.2 en un hosting y para no volverlo a repetir o tener problemas, por que no estoy disponible. Informo y detallo el error y la solución:
ERROR 500
Este usuario ha instalado su plataforma, pero al crear un curso le muestra este error:
SOLUCIÓN:
Paso 1: Ingresar como administrador al portal
Paso 2: Ingresar a la pestaña de: Administrador > Parámetros de Configuración de la Plataforma > Seguridad
Paso 3: Buscar dentro de la configuración “Seguridad”
- Permisos para los nuevos directorios (0777)
- Permisos para los nuevos archivos (0666)
Paso 4 :Cambiar los permisos de seguridad:
- Permisos para los nuevos directorios (0755)
- Permisos para los nuevos archivos (0644)
Guardar configuración y Listo! :)
Nota: Este arreglo sera visible solo para los nuevos cursos (cursos creados después del arreglo), cursos (antes del arreglo) tienen que ser eliminados y creados otra vez.
Bolsa de trabajo: Desarrollador PHP5
Estimado(a),
La empresa BeezNest Latino S.A.C requiere de (02) colaboradores para trabajar en el área de DESARROLLO bajo proyectos de software libre (Drupal / Chamilo)
Que tenga experiencia técnica COMPROBADA en la mayor cantidad de estos temas:
1. Conocimientos avanzado de Lenguaje de Programación PHP5 (Experiencia mínima de 2 años en desarrollo web)
2. Conocimientos de Base de Datos MySQL
3. Conocimiento avanzado de inglés
4. Conocimiento en herramientas de desarrollo web no-gráficas (clientes FTP/SFTP, SSH, Eclipse, CVS/SVN, …), Linux.
A nivel personal se requiere que el postulante sea:
1. Muy hábil y con buen nivel de comunicación.
2. Proactivo, responsable y puntual.
3. Ordenado.
4. Trabajo en equipo y dispuesto a compartir responsabilidades con sus
compañeros.
5. Habituado al trato directo con diferentes áreas de la organización.
6. Facilidad de Adaptación, sentido crítico y Adquisición de Conocimientos.
Beneficios:
- Formar parte del equipo BeezNest.
- Capacitación continua 100% subvencionado por BeezNest para el curso: Experto en PHP web http://www.beeznest.com/es/diplomado/experto-php
- Desarrollar y Perfeccionar sus conocimientos de análisis y desarrollo bajo PHP.
- Horarios de Lunes a Viernes de 9:00am a 6:00pm (1 Hora de refrigerio)
- Crédito de una laptop para el trabajo en BeezNest.
- Excelente ambiente de trabajo.
- Salario competitivo y en crecimiento de acuerdo a las competencias mostradas.
- Jefe directo: Ing. Yannick Warnier (Desarrollador con más de 9 años de experiencia en desarrollo PHP, líder en el desarrollo de la plataforma de código abierto Chamilo, certificado Zend, reconocido por sus contribuciones importantes al cambio de valores sobre el software libre en Perú y las importantes aplicaciones del mismo en el ámbito educativo y empresarial)
Interesados enviar su CV en FORMATO .PDF a mmosquera@beeznest.com
(IMPORTANTE ADJUNTAR REFERENCIAS DE TRABAJOS ANTERIORES, INDICANDO NUMERO Y PERSONA DE CONTACTO PARA VERIFICACIÓN)
Saludos cordiales,
Michela Mosquera
BeezNest Latino S.A.C
Actualización sobre proyecto Chamilo + OLPC
Hacen 26 meses, el proyecto OLPC (a través del apoyo de Sebastían Silva) me hizo el gran honor de aceptar el proyecto D0keos + OLPC oficialmente y de prestarnos 9 XO para un periodo de 24 meses. En esta época, yo era fundador y dueño de la empresa D0keos Latinoamérica. Los objetivos del proyecto eran:
- asegurar la compatibilidad del LMS con las XO
- implementar una manera de instalar el LMS en una de las XO como servidor
- difundir el proyecto OLPC en nuestros eventos
En este largo tiempo (que ha pasado muy rápidamente), han ocurrido muchas cosas, de las cuales les voy haciendo un resumen aquí de forma cronológica
- Junio 2009: recepción de 9 laptops (2 completamente rotas por DHL Perú) y presentación del proyecto OLPC durante el evento D0keos Users Days que organizamos en Lima, con asistencia de 180 profesionales de educación
- entre Junio 2009 y Diciembre 2009: adecuación de los estilos gráficos por defecto de D0keos a la medida de la pantalla de la XO. De viaje a Colombia, un grupo local de OLPC me invita a exponer en uno de los eventos a los cuales participan.
- Enero 2010: siguiendo una serie de eventos trágicos en la organización y comunicación en la comunidad de D0keos, lidero el esfuerzo de formación de un nuevo proyecto que no esté impedido de funcionar por barreras comerciales o por sentidos morales traviesos. Nace Chamilo, que colecta una gran mayoría (alrededor de 90%) de los integrantes activos de D0keos. Al mismo tiempo, la empresa cambia de nombre para BeezNest Latino, el nombre que sigue usando hoy día. Durante el año, escribo mis resultados de pruebas de hacer correr Chamilo como servidor en una XO 1.0. Éxito para esta parte, pero todavía es impráctico, por lo que una conversación con Kiko Mayorga (un actor discreto de la beneficiencia tecnológica en Perú) y Sebastían Silva, imaginamos una solución para entregar una tarjeta SD equipada con Chamilo pre-instalado. Este proyecto todavía no se concluye (mucha información que colectar) pero hay buenas esperanzas de que permita alcanzar el objetivo.
- Todo 2010: un esfuerzo incansable de difusión, de desarrollo y de comunicación dentro de la Asociación Chamilo nos permite lograr más de 300,000 usuarios en un año de existencia. En este transcurso, un evento cada 2 meses nos da la oportunidad de hablar del proyecto OLPC, tocando un público de alrededor de 2500 personas en el año. Vinculos se crean alrededor del proyecto OLPC y empiezo a conocer más de su comunidad.
- Octubre 2010: Hernan Pachas me pide si puedo entregar una versión de Chamilo que pueda correr en las XS: 6500 de estas tienen que ser distribuidas en escuelas peruanas antes de Junio del 2011. Para esto tendría que proponer esta versión antes del 3 de Noviembre. Después de unos problemas de disponibilidad y de comunicación, no alcanza el tiempo y tengo que abandonar. Nunca tendré respuesta de Hernan sobre si todavía vale la pena hacerlo o no… (lástima).
- Julio de 2011: invitado a una entrevista en TV online por el Colegio de Ingenieros de Perú y Marketeando.com, hablamos 10 minutos del proyecto y su implementación en Perú
- Agosto de 2011: el nivel de trabajo por fin comienza a estabilizarse.
Hoy: Chamilo ya se posiciona encima de D0keos en muchos aspectos y por lo tanto me da más tiempo para recordar el proyecto y mi compromiso.
No obstante, por ahora hemos cumplido con las 3 metas propuestas, lo que tengo entendido no es tan común en este tipo de proyectos. Pueden ver el procedimiento de instalación de Chamilo como servidor en la XO 1.0 aquí (falta simplificar un poco).
Ahora quedan los tres proyectos adicionales siguientes:
- proveer un imagen de tarjeta SD con un procedimiento para que las XO puedan usarla como sistema de arranque
- desarrollar una “aplicación Chamilo” que permita a las demás XO encontrarla en la red
- desarrollar una versión especial de Chamilo para XS
Como usar el módulo Features de Drupal para ahorrar tiempo
Introducción
Desarrollar un sitio web en Drupal puede ser muy simple (unas páginas dinámicas usando un tema existente), medio-complicado (juntar muchos módulos y generar con ellos páginas con vistas, que no tienen soporte en ningun tema) o increiblemente complejo (desarrollar módulos de interacción entre varias fuentes de datos, con un diseño propio, con un cliente que no tiene claro lo que quiere, colaborando con 4 otras personas para hacer el trabajo más rápido).
En el último caso, cuando acaba el trabajo (si algun día se acaba), no tendrá muchas ganas de volver a hacer la misma cosa. Si es cierto que la ciencia informática permite automatizar las cosas eficientemente, nunca lo permite sin esfuerzos. La pregunta entonces es: a partir de cuando empezamos a poner en marcha un sistema que permita reusar un trabajo anterior con considerables modificaciones para entregar a otro cliente más rápido. En el mundo del software libre, a veces, se juntan las piezas de una forma tan exquisita que esta pregunta pueda ser fácil de contestar: alguién ya hizo el trabajo más importante, solo me falta estudiar un poco el tema y asegurarme que puedo reusar su trabajo de forma óptima.
Esto es lo que ocurre en la actualidad con el módulo Features de Drupal (desarrollado entre otros por los chicos de Development Seed, una empresa de Estados Unidos que tiene trás ella una serie de cumplimientos en el desarrollo y la entrega de módulos y distribuciones Drupal), que permite en resumen recuperar las acciones manuales del site builder, del themer y del desarrollador para la construcción de un sitio dentro de un archivo y exportarlo hacia otro sitio web para despliegue rápido.
Si bien existe el módulo, hay una serie de pasos que deberán conocer para poder usarlo de forma óptima, que se traducen en una serie de herramientas de las cuales deberá disponer.
Las herramientas
- Módulo Drush
- Módulo Diff
- Módulo Ctools
- Módulo Content (para exportar nodos)
- Módulo Boxes (para exportación de bloques de contenido)
- Módulo Strongarm (para exportar variables)
- Módulo Features
- Módulo Views (no es necesario, pero lo usaremos en esta explicación)
- Módulo Admin Menu (no es necesario, pero nos ayudará a ganar tiempo)
- Sistema de control de versiones (SVN, Git, Mercurial, …)
- Servidor de features (para tener un lugar donde almacenar estas funcionalidades y de donde compartirlas)
Como proceder
Lo mejor (y explicaremos porqué a continuación) es iniciar el desarrollo de su sitio *con* el módulo Features instalado. Esto permite tener un seguimiento de los cambios que se hacen en estas funcionalidades a medida que estemos avanzando. Si no lo tiene desde el inicio, todo este historial de cambios que hicimos para arreglar cosas según requerimientos del cliente estará perdido para siempre. En lugar de esto, queremos tener una estructura lista para el desarrollo “sostenible” de nuestro sitio cuando antes.
Paso 1: Instalación de Drupal
Instalar Drupal es un tema que ya debería conocer super bien para poder aprovechar de esta guía. Sino, mejor deje de leer de inmediato y vaya a la página de Drupal.org sobre el tema: http://drupal.org/documentation/install
La versión 6 que instalaremos, aunque no la última versión estable, es todavía la más adecuada en razón de los múltiples módulos que vamos a usar, los cuales no tienen todos una implementación estable en Drupal 7. Descargue la última versión estable de Drupal 6 aquí.
Paso 2: Instalar los módulos
El módulo Drush es una maravilla. Nos hace el trabajo de instalación de módulos mucho más simple si es que tenemos acceso a una línea de comandos. Si tiene, no dude en usarlo. Sino, pues faltará descargar cada uno de los módulos requeridos, subirlos al FTP y activarlos para su sitio. A continuación estamos asumiendo que tiene el módulo Drush y que no teme usarlo.
Descargue el módulo Drush y actívelo para su sitio. De ahí, vaya en la subcarpeta de “sites” que corresponde a su sitio y lanza los comandos siguientes para descargar e instalar los módulos:
$ php5 drush.php dl diff ctools content boxes strongarm features views $ php5 drush.php pm-enable diff ctools content boxes strongarm features views
De ahí podemos conectarnos al sitio nuevamente, y activar a mano (porque son muchos y así es más práctico en este caso) los módulos que faltan (para la demo puede activar todos los submódulos de los que acabamos de instalar y que no tengan dependencias insatisfechas).
Paso 3: Crear funcionalidades
Ahora vamos a tener que crear algo, para que el módulo Features pueda exportarlo. Una de las cosas más simples de hacer (ahora que tenemos el módulo Boxes) es crear un bloque (o mejor dicho una caja – “Box”). Vamos en el menú de administración a Administer -> Site building -> Blocks y le pinchamos “Add box”. Es importante aquí de conocer la diferencia entre un bloque y una caja: una caja se puede editar directamente en la página, y es simplemente una extensión del módulo block. Permite las mismas cosas, pero también permite la edición en línea y (la razón por la cual lo instalamos) exportarse desde el módulo Features.
En la creación de la caja, simplemente le llenamos unos datos y le damos un “nombre máquina”, que es un identificador único en el sistema para este bloque.
Es importante siempre usar la creación de cajas (“Add box”) y no de bloques (“Add block”) desde aquí en adelante, para que todos puedan ser exportados.
De una manera similar, podemos crear elementos de menú. Ellos estarán disponibles luego en la página de creación de Features.
Otro contenido que podemos crear es una vista (“Views”), pero el tema aquí es bien extenso. Asegurese de revisar la documentación de Views o algún tutorial, porque puede demorar bastante tomarlo en manos.
Paso 4: Exportar funcionalidades
En cualquier caso, una vez que tenga contenido creado, dirigese a la pantalla de Features (Administer -> Site building -> Features).
Tomemos un tiempo aquí para reflexionar sobre los Features para saber como llamar nuestra funcionalidad… Un “feature” es una funcionalidad que queremos exportar para reusarla en otro sitio. Si voy a usar Features de forma extensa, podría encontrarme rápidamente con una serie de paquetes “blog” o “galeria” que tendrían el mismo nombre pero montones de micro funcionalidades distintas. Una funcionalidad puede “incluir” varios módulos como dependencia, y estos módulos proveer tipos de contenidos, vistas y temas. Una funcionalidad también puede incluir variables del sistema (desde la tabla variables de Drupal), que definen ciertos parámetros (como por ejemplo una clave para activar un módulo).
Por lo tanto, es importante escoger bien su título. Si va a realizar una funcionalidad propia a un cliente en el sector agrícola, use un prefijo agri_ por ejemplo. Si esta funcionalidad es mayormente visual, use agri_display_ y, si se trata de una galeria de fotos siendo generalmente paisajes, agri_display_landscape_gallery. Si va a compartir estas funcionalidades con otros equipos (de otro idioma) o su empresa tiene sedes en el extranjero, siempre es una buena idea darle un nombre en ingles. La falta de acentos/tildes en el idioma Inglés y la imposibilidad de usarlos para nombres de Features también hace esta lógica más práctica.
Una vez seleccionado el nombre de su funcionalidad y su versión (use los ejemplos proveídos y las convenciones de numeración de los módulos Drupal para dar un número de versión), seleccione los componentes que quiere que incluya: Boxes, Dependencies, Menus, Menu links, Content types, Permissions y Roles son los tipos que se pueden extraer naturalmente para incluirlos en una funcionalidad. Pinchar “Download feature” le generará un archivo comprimido. Descarguelo.
Paso 5: Importar funcionalidades
El archivo comprimido (.tar, no .tar.gz) se encuentra ahora en su escritorio. Tiene que ponerlo en la carpeta sites/[su sitio]/modules/custom/ y descomprimirlo. De ahí, ir a “Administer -> Site building -> Features -> Manage” y aparecerá el módulo agri_display_landscape_gallery (en mi ejemplo). Lo activo con el checkbox y presionando “Save settings”.
Bueno, de ahí no cambia mucho. Es que ya tengo mi bloque y mis elementos de menu, vistas, etc. Al importar la funcionalidad, el sistema detectó que no había nada que hacer (gracias a los identificadores únicos de estas cositas) pero me deja el estado a “Disabled”. Para activarla, selecciono la cajita adelante y guard con “Save settings”.
Importar este Feature en un nuevo sitio me permite obtener directamente mi bloque de prueba, mis menús y otros objetos que exporté. Esta es la primera ventaja del módulo Features.
Paso 6: Seguimiento
Ahora vamos a hacer una cosa que debería hacerles entender de una vez a que sirve todo eso. Vaya editar el bloque (perdón, la caja) y refresque la página de Features. El estado se pone a “Overridden”… El sistema ha detectado que había ocurrido un cambio entre mi activación de la funcionalidad y mi cambio de bloque! Ahora puedo guardar este módulo nuevamente, pero con otra versión, usando la opción “Recreate”. La única cosa que tengo que cambiar ahí (para que se considere una nueva versión de la funcionalidad) es modificar el número de versión.
Si quiero revisar las modificaciones que se hicieron dentro de mi Feature, nada más simple: gracias al módulo Diff que hemos instalado, tengo una pestaña que indica “Review overrides”. Esto me especifica, en lenguaje informático, que cambios fueron registrados en mi sistema desde la última versión. Esto nos da la ventaja dos de Features: puedo ver claramente que cambios se han hecho (incluido los cambios visuales) entre dos versiones de mi sitio.
Si quiero reiniciar todo el contenido de mi sitio para ver que tan bien recrea toda mi estructura gracias a mi Feature, puedo usar el módulo Demo.
Pasos adicionales
En este episodio no cubriré la funcionalidad de actualización por Drush, porque necesitaremos un servidor de Features primero, lo que no tengo listo todavía.
Servidor de Features (incompleto)
Para instalar el servidor de Features, se requieren unos pasos más, pero es práctico reusar lo definido anteriormente porque una gran parte de los requerimientos de los pasos anteriores son requerimientos del servidor de Features:
- Módulo Context
- Módulo Features (instalado anteriormente)
- Módulo CCK (o “Content”)
- Módulo FileField (incluído en módulo CCK, o “Content”)
- Módulo Menu (core)
- Módulo Node (core)
- Módulo Node Reference (incluído en módulo CCK, o “Content”)
- Módulo Number (incluído en módulo CCK, o “Content”)
- Módulo Strongarm (instalado anteriormente)
- Módulo Views (instalado opcionalmente en los pasos anteriores)
- Módulo Chaos Tools (o CTools, instalado anteriormente)
- Módulo Text (incluído en módulo CCK, o “Content”)
- Módulo Option Widgets (incluído en módulo CCK, o “Content”)
Una vez estos y el módulo de Features Server instalados, verá que puede crear 3 nuevos tipos de contenido:
- Distribution (que es un paquete dedicado a hacer un uso específico de todo un sitio Drupal – se supone que contiene todas las funcionalidades necesarias)
- Project (que puede ser Installation profile, Module o Theme y que sirve para paquetes más pequeños de funcionalidades)
- Release (que es una versión específica de un Feature)
En la ausencia de integración con un servidor de versiones, este paso es suficiente para compartir sus Features con otras personas. El servidor tendrá que ser disponible para los demás (URL pública o dirección IP interna), y los demás usuarios podrán descargar actualizaciones de las funcionalidades (o usted podrá descargar actualizaciones desde el servidor de producción). Esto no incluye todavía el URL del servidor que permita quedar informado sobre las nuevas versiones disponibles, pero ya tenemos un paso.
Bibliografía
- http://sf2010.drupal.org/conference/sessions/managing-and-deploying-configuration-exportables-and-features-module es probablemente el vídeo (en Inglés) más completo que podrá encontrar sobre los orígenes del módulo Features, sus principios básicos y como usarlo
- http://drupal.org/node/580026 es un excelente manual (en Inglés) sobre el uso del módulo Features
- http://drupalcode.org/viewvc/drupal/contributions/modules/features/API.txt?revision=1.1.2.5&view=co&pathrev=DRUPAL-6–1 contiene especificaciones de cómo empaquetar una funcionalidad (“feature”) para que sea fácilmente intercambiable con otros
- http://mustardseedmedia.com/podcast/episode43 es un vídeo (en Inglés) que no consulté pero que explica también como usar el módulo Features
- http://developmentseed.org/blog/2009/sep/03/5-minute-feature-server es un excelente artículo en Inglés que me clarificó un poco el tema del Features server: más que nada para saber que URL usar para declarar un servidor de updates para mis Features
Implementar xCache en su aplicación PHP
No existe mucha documentación sobre el tema, sin embargo xCache es un sistema de caché de código operativo (opcode) que permite también hacer caché de variables. Esta documentación conviene principalmente para servidores Debian o Ubuntu (lo explico con Apache, pero también funciona con Lighttpd).
Antes de hacer cualquier cosa, sería bueno probar su servidor para asegurarse de como funciona ahora. Una forma simple de hacerlo es probarlo a través de ab, una herramienta de benchmarking de Apache que está incluida en el paquete de Apache. Para usarla, hay unos parámetros posibles. Recomiendo estudiar un poco la documentación, pero lo más simple (imaginando que el servidor para probar está en http://example.com/) es de lanzar:
ab -c50 -n1000 http://example.com/
Esto generará un resultado bastante amplio. Recomiendo copiarlo y guardarlo en un lugar seguro. Servirá al momento de comparar los resultados de las distintas mejoras.
xCache es super fácil de instalar en un servidor Ubuntu o Debian:
sudo apt-get install php5-xcache
sudo /etc/init.d/apache2 restart
Después (o antes) de relanzar el servidor web, se tiene que configurar el xCache. Esta es la parte más obscura. No hay casi nada de documentación (lo que se encuentra en el archivo de configuración mismo ya casi lo suma todo), pero básicamente no hay mucho que saber. Se edita el archivo de configuración con VIM u otro editor:
sudo vim /etc/php5/apache2/conf.d/xcache.ini
Ahí hay dos cosas principales que cambiar (potencialmente).
- xcache.size es la cantidad de caché que su sistema permite almacenar (se puede ver con la división por 1024*1024 de: cat /proc/sys/kernel/shmmax). Será algo de 16M, 32M o 64M en muchos casos
- xcache.count es la cantidad de procesadores que tiene esta máquina (se puede recuperar con: cat /proc/cpuinfo |grep -c processor)
De ahí es necesario recargar la configuración de Apache
sudo /etc/init.d/apache2 restart
De ahí ya sentirá probablemente una mejora, pero muy ligera.
Para probarlo, de nuevo:
ab -c50 -n1000 http://example.com
Probablemente verá una mejora (subida) en “Requests per second”.
De ahí se puede jugar un poco cambiando los parámetros de xCache como xcache.slots y xcache.size, o xcache.ttl para alcanzar mejores resultados.
Lamentablemente, estas modificaciones simples no permiten mejorar mucho la eficiencia del servidor. Pero sí se puede mejorar mucho todavía, gracias a la gestión de variables de xcache.
Para usarlo, nada más simple:
if (xcache_isset(‘un_nombre_de_variable_para_poner_en_cache’)) {
$variable = xcache_get(‘un_nombre_de_variable_para_poner_en_cache’);
} else {
$variable = query_pesado();
xcache_set(‘un_nombre_de_variable_para_poner_en_cache’,$variable);
}
Dicha gestión funciona para todo el sistema, es decir que la memoria usada por el proceso es compartida con otros procesos… si se tratan de varios usuarios repartidos sobre varios portales, se tiene que ser muy cuidadoso a nivel de la seguridad de la información almacenada, pero también se tiene que diseñar para que no aparezca la información de un portal en el otro.
Para esto, se puede usar, por ejemplo, un prefijo del nombre de variable con el nombre del URL del portal…
Por ejemplo, xcache_set(‘example_com_global_users_online’,$online);
No se recomienda poner ahí ninguna información personal de usuarios. Solamente datos genéricos válidos para todo un portal, y que no necesiten ser refrescados. Por ejemplo, en Chamilo mostramos siempre en la cabecera una cantidad de usuarios en línea. Pues si bien esta cantidad puede variar muy rápidamente, no importa tanto que sea la cantidad exacta, ya que a partir de 100 usuarios empieza a ser difícil saber quienes están o no están conectados.
Por lo tanto, esta información puede ser almacenada en la memoria caché compartida de xCache, y evitamos así un query bastante pesado a la base de datos para cada página refrescada o abierta: una cantidad tremenda cuando 900 usuarios simultáneos se conectan a un portal. Este pequeño cambio dió un resultado tremendo de entre 20 y 75% de respuestas adicionales por segundo en varios servidores, por lo que recomiendo altamente esta pequeña mejora
De la misma forma, información pre-calculada del header o del footer, un marcador de la hora actual, etc, pueden fácilmente ser almacenados para todo un portal por 60 segundos: suficiente para aliviar el servidor de estas pequeñas pedidas que rápidamente suman y lo hacen más lento.
Poniendo algo de 8 variables muy pedidas en caché de esta manera, se obtiene fácilmente 20% de eficiencia adicional, según el Apache Benchmark.
ab -c50 -n1000 http://example.com
Para finalizar, si usted está desarrollando un sistema para grande distribución (por ejemplo una plataforma de software libre), debería pensar bien en los casos de uso posibles, entre otros el alojamiento de varios portales con URLs distintos en un mismo servidor (usar prefijo como arriba) y el uso dentro de muchos scripts y contextos distintos (otro prefijo, puede ser).
Drupal: Aplicación para la gestión de contenidos
Drupal es un C.M.S (sistema de administración de contenidos), que permite a varios usuarios publicar, administrar e organizar la información en su Web. Es una aplicación de código abierto construida mayoritariamente en PHP con licencia GNU/GPL, escrito en PHP, desarrollado y mantenido por una activa comunidad de usuarios. Destaca por la calidad de su código y de las páginas generadas, el respeto de los estándares de la web, y un énfasis especial en la usabilidad y consistencia de todo el sistema.
| Información General | |
| Sistema Operativo | Multiplataforma |
| Uso | Gestor de contenidos |
| Licencia | GPL |
| Web | http://drupal.org |
| Demo | http://www.drupalgardens.com |
| Lanzamiento Inicial | 01 de Enero del 2001 |
| Iniciador del proyecto | Dries Buytaert |
| Eventos | http://groups.drupal.org/events |
| Proveedores oficiales | Acquia/Drupal |
| Casos de éxito | http://buytaert.net/tag/drupal-sites |
| Logo | Historia del logo de Drupal |
| Instalador | Drupal 6 |
| Documentación | |
Manual de instalación |
|
Manual de administración |
|
Manual de desarrollador |
|
Introducción a Drupal |
|
Guía de estructura de Drupal |
|
Guía de construcción de sitios |
|
Guía de diseño |
Conozca más Aplicaciones de Software Libre :
Aquí
Chamilo: Aplicación para la gestión de conocimiento
En la mayoría de los eventos de e-learning que BeezNest o la comunidad de Chamilo ha organizado o participado, algunos profesores, directores y emprendedores nos comentan ..Yo uso chamilo porque..:
“…Chamilo es considerablemente más fácil de enseñar, lo que genera para mi institución una diferencia de 40 a 4 horas entre Moodle y Chamilo para capacitar a nuestros maestros…”
“…Acceso más fácil a los contenidos del curso, genera menores tasas de abandono de mis alumnos a distancia, resultando en mejores tasas de alcanzar las metas de capacitación…”
“…Chamilo ofrece herramientas de edición online, reduciendo el costo de la construcción de nuevos contenidos. Importa el contenido existente, agrega un test de 10 preguntas y tienes un nuevo curso de auto-evaluación listo en solo una hora…”
Hemos preparado una breve reseña de la plataforma e-learning Chamilo a través de las siguientes tablas que explican, en resumen, ¿Que es Chamilo?, ¿Como puedo usar/probar Chamilo?, ¿Quienes usan Chamilo?, con datos cualitativos y cuantitativos que te permitirán conocer en detalle esta prometedora solución.
| Chamilo | ![]() |
|
¿Que es Chamilo? |
Datos |
|
|
Chamilo es un LMS (Sistema de Gestión de Aprendizaje) y entre sus principales virtudes permite administrar, distribuir y controlar las actividades de capacitación semi presencial (b-learning) o no presencial (e-Learning) de una institución u organización. Chamilo, es una aplicación de código abierto, esta protegido por la Asociación Chamilo construida mayoritariamente en PHP con base de datos MySQL. Chamilo, soporta la importación de archivos en SCORM. Los datos de los usuarios pueden ser importados al sistema usando archivos en formato CSV o XML. También se puede añadir información de usuarios y validar sus datos y clave usando LDAP. Cumple con estándares de la W3C en cuanto a XHTML y CSS |
Versión actual |
1.8.7.1 |
|
S.O |
Multiplataforma (web) |
|
|
Uso |
Gestión del conocimiento |
|
|
Licencia |
||
|
Idioma |
Multiidiomas (45 idiomas) |
|
|
Web |
http://chamilo.org |
|
|
Free Campus |
http://campus.chamilo.org |
|
| Logo | Logo de Chamilo |
|
| Alcance técnico reportado hasta la fecha: | Publicación | 18 de Enero del 2010 |
|
|
Usuarios | 160 000 |
| Alcance | Mundial (25 países) |
|
| Desarrolladores: | 20 |
|
|
Documentación |
Instalador |
Herramientas |
|
![]() |
|
![]() |
||
![]() |
||
|
||
Conozca más Aplicaciones de Software Libre :
Aquí



















