Archive

Archive for February, 2011

Import MySQL tables from .myd

February 28, 2011 Leave a comment

This is an easy procedure to import any MyISAM table that you would have in .myd, .myi and .frm format, into a local database. I assume you have MySQL server and a MySQL client on your local machine.

  • First, identify the name of the table (that’s the name before the “.myd” extension).
  • Connect to your local database and create a dummy database (let’s call it “import”)
  • Create a table inside that database with the exact same name as the one you need to import. Let’s say it’s called user.myd, so call the table “user”
  • Disconnect from your database and shut down your MySQL server (Ubuntu: sudo /etc/init.d/mysql stop)
  • Copy the backup files (user.*) into your MySQL data directory (Ubuntu: /var/lib/mysql/import/)
  • Restart your MySQL server (Ubuntu: sudo /etc/init.d/mysql start)
  • Enjoy the imported table.
Advertisements
Categories: Documentation, English Tags:

Como usar el módulo Features de Drupal para ahorrar tiempo

February 20, 2011 Leave a comment

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

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

Chamilo admin page slow – disable version check

February 18, 2011 Leave a comment

In some very strict cases of network filtering, you might realize that your Chamilo server is slow when using the administration pages, but is actually very fast for the rest and doesn’t use your server excessively in any measure.

The use of the “top” command in a GNU/Linux terminal and the corresponding non-excessive load should give you a hint that this is more of a network problem anyway.

If you have checked the “version check” box in your main admin page, every time you load the page, a query is sent to http://version.chamilo.org/version.php. If, for some reason, your server cannot access this page, it’s better for you to disable the query: go to your main/admin/index.php script and look for a call to check_system_version2(); and just put // in front the line to comment it out.

BeezNest’s international annual report 2010

February 16, 2011 Leave a comment

Introduction

2010 has globally been a challenging year for BeezNest. With the simultaneous launch of Chamilo, leaving D0k€os and having to deal with the aftermaths of the financial crisis, there was probably no worst set of conditions to be thought of for our development.

Of course, this lead us to reduce staff (with voluntary departures and friendly agreements) and to focus on profitable operations, but we somehow managed to sustain a light growth.

The Belgian headquarters reduced staff by half (with voluntary departures and friendly agreements) and was busy putting the final point to several projects started in late 2009. The split from D0k€os also triggered (most expected) drops in sales, as we had worked for years promoting our services and were back to the starting blocks with Chamilo. Sales dropped 50% while profits only 20%. Many customers took their time validating our developments, which put us in considerable cash flow challenges. By the end of the year, the situation improved and we hired a new marketing manager, who’s produced a tremendous work at promoting our services (mostly around Chamilo).

The Latin American branch had to lay off about 70% of its staff around April, which has been an amazingly sanitizing operation for the company, as it registered a 20% increase in both sales and profit over 2009, with only 30% of the original staff. A recent move of offices of BeezNest Latino will also considerably reduce fixed costs all over 2011. Due to the split from D0k€os, BeezNest Latino, previously named D0keos Latinoamérica, had to change name to avoid confusion and under the pressure of the trademark holder. This had a considerable influence on new sales development.

Services orientation

e-learning

Demand for services around Chamilo has been in regular growth in 2010 and the beginning of 2011, registering sales for more than 20,000€ over the last two months of 2010. Also, we observed a shift in interest from simple installation of Chamilo to more complex integrations with human resources, financial and marketing systems (with an internal marketing campaign at Samsung confirmed during the last days of 2010), as well as light courses building.

Corporate content management systems

BeezNest does not particularly like the term “website development” to describe its activity around corporate content management systems, but it is probably the easiest term to coin it. Through 2010, we have made considerable improvements in organization and development of both corporate, multi-tiered and interactive/social marketing campaign websites and are happy to report that BeezNest Latino is now providing two of the major advertisement companies in Peru in web development services.

System administration

The system administration branch is the one in charge of guaranteeing the response time and effectiveness of networks and systems. This year, our system administration sector has been serving corporate customers all over Europe (between others to the European Commission), as well as installing redundant web server systems for customers in Peru.

Social responsibility

BeezNest has a very high expectation of its team to proactively contribute to FLOSS and show initiative in terms of social responsibility. Throughout 2010, and while the financial crisis aftermaths made it more important and more difficult still, we continued to provide substantial efforts to promote, develop and support FLOSS initiative that we know have the right impact on the society as a whole.

The Chamilo Project

As the Chamilo project required massive investments to get launched, BeezNest has been present all along, organizing meetings, participating actively in the Chamilo Association registration and launch process. We are now happy to report that the Chamilo project finally got strong bases, with a full membership contribution and registration process, including an online exam to become official Chamilo provider. It also developed considerable documentation resources. Also, we have been encouraging contributions, which resulted in effective members contributions late in the year (code, bug reports, documentation and features suggestions). Finally, an official Spanish-based teachers exam is in preparation for 2011.

The OLPC project

The One Laptop Per Child project has been one of the most symbolic (although not as active as it could have been) projects for BeezNest in 2010, with the active testing of Chamilo for compatibility with the XO device and analysis to develop a special embedded version of Chamilo.

Drupal Peru

We have been constantly supporting the local Drupal community (as well as occasionally the Chamilo, Suse, Python and general FLOSS communities) throughout 2011 by hosting their meetings (of up to 50 people) and contributing to their communication channels. Evaluating the costs of hosting the events, that BeezNest had previously refused to detail, we have realized we were spending in excess of $600/month (quite an investment for the Peruvian branch) only to ensure a pleasant infrastructure/environment for free events. Although this was not really a problem in non-crisis-affected years, we have decided to look for other offices, which will still allow us to host events of up to 25 people, a bit less frequently.

Alliances and partnerships

2010 has been a great time to forge new alliances. We are happy to report active collaborations with universities and companies in Brasil (Universidad de Tocantins), Colombia (Universidad de Cali), the UK, France (Académie d’Aix-Marseilles), Spain (Contidos Dixitais and Nosolored), Germany (Mira Consulting), Belgium (CBlue and the Chamilo Association), Panama (Latinux) and Chile (Universidad Autonoma). In particular, an alliance with Latinux will help us develop a wide-scale official exam for Chamilo 1.8 in 2011 in Latin America. If successful, this last initiative could prove to be a major income and work generator for the next few years.

What the future holds

With 2010 past and a renowned interest in e-learning and top IT skills in late 2010 and early 2011, we expect 2011 to boost income for both the European and American branch by at least 50%, with a high possibility that the activity of our marketing manager in Europe triggering an increase of 110% for this branch, only for e-learning.

Drupal developments have become a regular demand, and the Latin American branch will get to specialize more, with early adoption of- and contributions to Drupal 7 and modules.

Business and project management will be concentrated in Europe, improving the profitability of our operations. The office move in Latin America will also improve profit and cash flow, which we expect will give birth to wealthy investments in own development, infrastructure and technologies.

BeezNest will also be looking for development and research funds in order to finance its most promising developments. We have several great projects in mind which, given financial support, could develop into worldwide popular systems.

Vacantes abiertas para diseñadores y desarrolladores php

February 13, 2011 Leave a comment

Empresa que toma a cargo proyectos importantes de elaboración de aplicaciones web empresariales (Bajo Drupal) y educativos (Bajo Chamilo) , necesita: “Integrador CSS3 y HTML4/5 con mucha energía para integrarse en equipo” y “Desarrollador  PHP5

Detalle:

1. “Integrador CSS3 y HTML4/5 con mucha energía para integrarse en equipo”

Requisitos:

  • experiencia mínima de 2 años (NO PRACTICANTES)
  • conocimiento avanzado de CSS2 y CSS3
  • conocimiento avanzado de comportamientos de navegadores IE6,7,8,9,Chrome y Firefox 3
  • conocimiento avanzado (detallista) de HTML4, XHTML y conocimiento básico e interés en HTML5
  • experiencia previa de maquetación Drupal es un bonus importante
  • el uso eficiente de herramientas de trabajo de software libre como GIMP, Inkscape es un plus pero no es necesario (menor importancia: Blender, Cinelerra, Kdenlive). La voluntad de aprender con estas herramientas es necesaria.

Tiempo de empleo y salario a tratar en la entrevista. Modalidad flexible (A distancia o Presencial). Enviar CV por correo electrónico en formato .pdf (SOBRETODO adjuntar enlaces de diseños web o proyectos realizados anteriormente).  Interesados enviar CV en formato .pdf al E-mail : mmosquera@beeznest.com

2. Desarrollador  PHP5 para trabajar sobre proyectos de software libre (Drupal / Chamilo).

Perfil profesional:

  • EXPERIENCIA MÍNIMA de 3 AÑOS de trabajo en desarrollo PHP5, programación OO, manipulación de bases de datos MySQL
  • Conocimiento avanzado de inglés, herramientas de desarrollo web no-gráficas (clientes FTP/SFTP, SSH, Eclipse, CVS/SVN, …), Linux.

Tiempo de empleo y salario a tratar en la entrevista. Modalidad flexible (A distancia o Presencial). Enviar CV por correo electrónico en formato .pdf (SOBRETODO adjuntar de proyectos realizados anteriormente).  Interesados enviar CV en formato .pdf al E-mail : mmosquera@beeznest.com

Categories: Spanish, Uncategorized

Using SSH for tunneling, kicking users, etc

February 11, 2011 Leave a comment

A very useful resource (in French) to use SSH, with specific use cases: http://pix-mania.dyndns.org/mediawiki/index.php/OpenSSH#Les_tunnels_SSH

Another useful (and short one for tunneling): http://www.howtoforge.com/reverse-ssh-tunneling

In short, if you have a configuration with 3 computers (A – B – C) and you want to connect to A from C but A doesn’t allow direct SSH connection, you can do the following:

  1. On A and B, install openssh-server
  2. On A, open an SSH connection to B: ssh -R 5000:localhost:22 user-on-B@B
  3. From C, connect to B: ssh user-on-B@B
  4. Using the open connection on B, open a connection to A: ssh -p 5000 user_on_A@localhost

This should get you all ready to work on A.

Another special case is you have A-B-C, you are on C and want to access the internal website running on A, but you can only access B in SSH, and from B, access A.

  1. Install openssh-server on A and B
  2. From C, instruct your SSH client to connect to B and to link your local port 8080 to A’s port 80: ssh -L 8080:A.A.A.A:80 user_on_B@B.B.B.B
  3. Open your browser on http://localhost:8080
Categories: Documentation, English Tags:

Run automated tests in Chamilo 1.8.8

February 8, 2011 Leave a comment

You probably know we have the automated tests in Chamilo 1.8.8 LMS (a few thousands, actually), that guarantee a better quality of delivery. But sometimes you might wonder how to actually run those tests, so you can be an official Chamilo tester too.

How to run the tests

The short answer is you only have to run one command (and you might even load a page in your browser). The long answer, however, is quite longer. Here is a simple procedure on how to do that.

  1. Install Mercurial code versioning system on your computer
  2. Download Chamilo classic’s development version with Mercurial (hg command): hg clone https://classic.chamilo.googlecode.com/hg/ chamilo-classic
  3. Install Chamilo (yeah, that the most annoying part, but hopefully you’re a developer so you also know how to do that)
  4. Navigate to http://localhost/chamilo-classic/tests/test_suite.php to load the tests from your browser
  5. Alternatively, go to the tests directory of your Chamilo installation and type in a terminal: php5 test_suite.php

Why it matters

While we might have those tests running on our development server automatically and regularly (every 2 hours as of this post), it is important that other people try running the tests on other architectures, so that we ensure that Chamilo effectively runs on a series of infrastructure before we publish a new version, and not only on our development servers. Indeed, it might work on a GNU/Linux Debian distribution, but fail (because of the change of context) on a Windows computer.

If you would like to help us testing on different infrastructures, let us know, we will happily share the testing code with you and publish a reference to your testing infrastructure.

%d bloggers like this: