Aprenda Gimp… a los tropezones

GimpEste es un libro que contiene en cada capítulo un ejercicio explicado paso a paso para aprender a utilizar Gimp, el programa libre de retoque fotográfico.

Y aquí el libro en línea, todo esto gracias a la excelente herramienta para crear libros: booki.cc

 

No llegan mails a los usuarios en Moodle

Cada vez que uno instala una nueva plataforma Moodle, empiezan los problemas con el tema de los mails. Por ejemplo, no llegan los mensajes de los foros a los mails de los usuarios suscriptos. O no llegan los mensajes de la mensajería privada, ni los de recuperación de clave (“Olvidé mi contraseña”). Hay que armarse de paciencia y recordar que para que llegue un mail a un usuario de un curso, tienen que darse muchas cosas: Usuario, Plataforma Moodle y Hosting tienen que poner su parte en todo esto.

¿Por dónde empezar a descifrar este enigma?

Aquí algunos consejos para empezar, muchos de los cuales terminan, lamentablemente, en el típico… consulte con el responsable del servicio de Hosting.

Paso 1: Crear varios usuarios de prueba,

Crear varios usuarios de prueba, con diferentes direcciones de mail, y distintos roles. Asignarlos al curso correspondiente y suscribirlos al foro (suscribirse a un foro en Moodle significa “anotarse para recibir los mensajes por mail”). Para las pruebas no estaría mal elegir la opción “Suscripción forzoza” en la configuración del foro. Para comprobar qué usuarios recibirán los mensajes por mail, ver en el panel Ajustes / Administración del foro, la opción “Mostrar / editar suscriptores actuales”.

Opciones de suscripción de un foro

Paso 2: Escribir un mensaje en el foro

Escribir un mensaje en el foro, eligiendo la opción “Enviar inmediatamente” (porque si no se elige esa opción, la plataforma esperará media hora o el tiempo indicado en la configuración antes de enviar el mensaje).  Esperar un rato. Para que los mensajes lleguen a los usuarios, Moodle utiliza un programa que se llama Cron. Ay, bendito Cron!!!

¿Y qué es un Cron?

En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos que significa “tiempo”.

Fuente: Wikipedia

Moodle tiene un programa llamado Cron, que es el que debe ejecutarse recularmente. Cada diez minutos alguien debe ejecutar ese programa para que se envíen todos los mails que están listos para ser enviados. ¿Quién ejecuta eso cada diez minutos, día y noche, incansablemente, independientemente de los feriados y fiestas religiosas? Debería hacerlo el Hosting. Es decir, el servidor en que se aloja Moodle, quien tiene todos nuestros datos en su poder.

Así que si en diez minutos, quince o media hora no se enviaron los mensajes, probablemente no esté configurada la tarea en el hosting (el cron job, es decir, la ejecución regular del programa para enviar los mails). ¿Cómo lo averiguamos? Ejecutando el cron manualmente.

Paso 3: Ejecutar el cron manualmente.

Para eso, usamos la dirección de nuestra plataforma y le agregamos /admin/cron.php

Por ejemplo:

www.cursos_malos_y_caros.edu.ar/admin/cron.php

¿Ahora llegaron los mensajes?

Si los mensajes llegaron a los suscriptores, entonces hay que escribirle un mail al administrador del hosting diciéndole que se necesita configurar el cron para que cada 10 minutos se envíen los mails de la plataforma. Hay que indicarle la dirección del cron  (blabla/admin/cron.php).

¿No llegaron los mensajes? ¡Oh! ¡Estamos en problemas! ¿Qué hacemos ahora?

Primero, volver a mirar si los usuarios están suscriptos al foro. Pero por las dudas, enviarles un mensaje utilizando la mensajería interna puede ser una buena prueba también de funcionamiento de los mails.

Para eso entramos al perfil de un usuario y elegimos “Enviar mensaje”.

Enviar un mensaje

¿Le llegó el mensaje a esa persona? Si le llegó, entonces hay que ver por qué no llegan los mensajes del foro (problemas con el cron, problemas con el máximo de mails por hora, etc.).

Si no le llegó, entonces el sistema no está enviando mails, en general. Para comprobar esta hipótesis, lo que podemos hacer es salir (desloguearnos) y hacer clic en “Olvidé mi clave”. Al escribir la dirección de mail de nuestro usuario, debería llegarnos un mail con las instrucciones para cambiar la clave. Si no llega, comprobamos la hipótesis: el sistema no envía los mails. ¿Qué hacer en este caso? Preguntarle al responsable del hosting si están habilitados los envíos de mails por PHP. Si no están habilitados y no piensan habilitarlos, necesitamos configurar la salida de mails por un SMTP.

Paso 4: Configurar la salida de mails por SMTP

Una vez que asumimos el problemita de no poder enviar los mails con el sistema por defecto de Moodle (PHP), necesitamos una cuenta de correo que permita enviar miles de mails por hora sin ser considerado spammer.

Para conseguir los datos del SMTP tenemos que ponernos en contacto con el administrador del hosting; decirle que se van a enviar miles de mails por hora (la cantidad de usuarios de la plataforma multiplicado por la cantidad de mensajes que se escriban), y que necesitamos los datos de la cuenta (la dirección del SMTP, el nombre de usuario del SMTP, la contraseña, el puerto -por defecto es 25-, si se requiere conexión segura, si es conexión segura de tipo SSL o TLS). Mucha gente utiliza una cuenta de Gmail (yo no lo probé).

Una vez que tenemos esos datos, vamos a la ventana de Administración del sitio / Extensiones / Email:

Configurar los mails en Moodle

Allí tenemos todas las opciones para configurar el SMTP, excepto el puerto que generalmente es 25 (si no es, hay que utilizar configuraciones más avanzadas…):

Configurar el mail

Aprenda Gimp a los tropezones

Todos los autores prometen que sus libros y tutoriales serán paso a paso y el conocimiento crecerá suavemente dentro del lector, que encontrará la felicidad de ser guiado por la vía del saber como quien recorre el Tigre en un catamarán.
Bueno, después de escribir bastante sobre Gimp, descubrí que todo esto empieza a envejecer porque ya salió una nueva versión y tal vez haya algunas diferencias que conviertan en obsoletas las explicaciones.
Por lo tanto, decidí de una vez por todas ordenar todo ese material para quien tenga ganas de aprender a usar Gimp o de usar estas guías con sus alumnos en clase. Y prometo continuar trabajando en este material renovándolo de acuerdo a la nueva versión, para finalmente armar un libro para el proyecto Sembrando Libertad.

Mi material sobre gimp, ordenado de más simple a más complejo, dedicado a mis dos o tres lectores del blog (y a todos aquellos que me prometieron que alguna vez van a ponerse a aprender Gimp…):

Nivel principiantes

Nivel Intermedio

Avanzados

Usando capas en Gimp

Cuando una persona utilizó algún graficador en su vida, no se sorprende ya con pinceles, texturas y algunos trucos interesantes del dibujo en una computadora… Pero cuando conoce las capas, se le abre un mundo de posibilidades desconocidas hasta el momento.

¿Qué son las capas?

Para comprender lo que son las capas, nada mejor que imaginar que eso que estamos viendo es una pila de papeles de calcar que tienen diferentes dibujos.

Las capas de mi dibujo

En el ejemplo hay cuatro capas:

  • El cielo está debajo de las demás capas (imaginemos que tenemos un papel completamente pintado de cielo)
  • Sobre el cielo está el suelo, como si estuviera dibujado en un papel transparente.
  • Sobre el suelo, el tronco del árbol.
  • Arriba de las demás capas, se encuentra la copa del árbol.

Las diferentes capas

Esas capas pueden verse en el panel de la derecha. Cada capa tiene a la izquierda un ojo. Al hacer clic en el ojo se oculta o se muestra cada una de las capas. A la izquierda, está oculta la capa del tronco del árbol. A la derecha, se ocultó la copa.

Ocultar y mostrar capas

Utilizando las flechas hacia arriba y hacia abajo, se puede alterar la posición (en la pila de papeles) de la capa seleccionada. En este ejemplo, en el primero la copa del árbol está sobre el tronco, y en el segundo el tronco está sobre la copa:

Cambiar la posición de las capas

¿Y para qué sirven las capas?

Básicamente, trabajar con capas permite tener elementos superpuestos sin perder la información de cada uno de ellos: puedo hacer una cara, crear una capa nueva y agregar los ojos. Si no me gustan los ojos los elimino y no modifiqué la base de la cara….

También para modificar cada elemento por separado, ocultando y mostrando cada una de las capas cuando queremos trabajar en un detalle.

Por otra parte, es posible duplicar capas, y así obtener por ejemplo, muchos árboles, y como se puede modificar el tamaño de cada capa, se puede crear un bosque bastante fácilmente…

 

Bosque

Para hacer este bosque, una vez que tuve la base de un árbol, utilicé las siguientes opciones:

  • Duplicar capa (menú capas, o icono debajo del panel de capas)
  • Mover capa (herramienta Mover, en la caja de herramientas)
  • Llevar hacia abajo las capas que deben verse lejos (arrastrando la capa en el panel de capas, o utilizando las flechas debajo del panel de capas)
  • Achicar la capa que está detrás (menú capas, escalar capa)
  • Modificar el color de la capa (menú colores, Tono y saturación)

 

Physical Etoys y Arduino

Physical Etoys es un desarrollo del Grupo de Investigación en Robótica Autónoma del CAETI (GIRA).
En su página nos anuncian:

Estamos muy pero muy contentos de anunciarles que Physical Etoys llegó a su versión 2.0 y vendrá en TODAS las computadoras de Argentina asociadas al plan Conectar Igualdad! Se siente muy bien saber que desde acá podemos aportar nuestro granito de arena en pos de la educación del país. Ya está disponible para bajar de la página de Physical Etoys.

¿En qué consiste?

Physical Etoys es una ‘extensión’ de Etoys; una adaptación del lenguaje de programación para programar fácilmente objetos físicos como robots.

¿Cómo se usa?

Ejecutar el programa Physical Etoys

Y aquí vemos la primera pantalla:

Physical Etoys

  • Al hacer clic podemos crear un nuevo proyecto. Quienes hayan utilizado Etoys verán una pantalla prácticamente igual a la de ese programa.

Nuevo proyecto

  • Una vez creado el proyecto, al mover el mouse a la parte inferior de la pantalla, veremos aparecer un conjunto de provisiones específicas de Physical Etoys. Para empezar, debemos arrastrar al mundo la plaqueta de Arduino.

Arrastrar Arduino al mundo

  • Hacer clic con el botón derecho sobre la placa Arduino para visualizar los halos. Elegir el ojo para abrir un visor.

Abrir un visor

  • Una vez abierto el visor, buscamos el comando Placa arduino / Conectar hacemos clic en Ejecutar este comando una vez. Si todo sale bien, a partir de ahora vemos Verdadero en Placa Arduino’s está conectado. Si esto no ocurre, habrá que comprobar un poco más abajo el modelo de arduino (tipo de placa) y el puerto de conexión (nombre del puerto).
Conectar placa
  • Para hacer nuestro primer guión conectamos (en el arduino físico) un led al puerto 12 y realizamos la misma acción en el arduino virtual, haciendo clic en el número 12 y eligiendo Led.

Conectar un led

  • Abrimos un visor para el led, y ya podemos empezar a trabajar con sus propiedades:

Encender el led

Led encendido

 

Más sobre Arduino: lectura digital y analógica

Antes de continuar, recomiendo ver este video en que se muestran algunas nociones mínimas sobre Arduino, sus modelos, sus elementos, etc.

Hoy conecté un botón para utilizar un ejemplo del sitio de Arduino en el que muestran cómo leer el valor del botón (es decir, cómo enterarme mediante código si el botón está presionado o no).

Tengo el botón conectado en mi conector 12, es decir que voy a usar digitalRead(12) para saber cuál es su valor, asignándolo a la variable sensorValue. Después, le indico que el sensorValue lo muestre en la ventana Serial monitor, que debo abrir usando el menú Tools. Una vez compilado el código (botón “verify”, el primero) y subido a la placa (botón “upload”. el que tiene una flecha hacia la derecha), pulso el botón y veo en el Serial monitor una secuencia de ceros, que cuando pulso el botón se transforman en unos.

Lectura digital de un botón

El siguiente código de ejemplo de la misma página es de lectura analógica. Esto implica que se leerá un valor que tendrá un rango. En el caso de un botón, no tiene demasiado sentido, ya que el valor que devuelve es fijo: 1023 cuando está presionado, y 0 cuando no lo está:

Lectura analógica de un botón

Si conectamos un potenciómetro estos valores se incrementan o decrementan de acuerdo a lo que hagamos con él.

Potenciómetro y sus valores

Combinando todo lo aprendido ayer más lo aprendido hoy, podemos conectar un led y crear un nuevo código donde indiquemos que el led se encienda cuando el botón se presiona:

/*
Aqui usamos el boton para encender el LED.
*/

void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
}

void loop() {
int sensorValue = digitalRead(A2);
Serial.println(sensorValue);
if (sensorValue == 1) {
digitalWrite(12, HIGH); // si el valor del sensor es 1, enciende el LED
delay(100);                      // espera un ratito
digitalWrite(12, LOW); // apaga el LED
}

}

Este otro código enciende el led de acuerdo al valor del potenciómetro:

/*
Aqui usamos el potenciometro para encender el LED.
*/
void setup() {
Serial.begin(9600);
pinMode(A3, OUTPUT);
}
void loop() {
int sensorValue = analogRead(A2);
analogWrite(A3, sensorValue/4);   // escribimos en el conector A3 el valor del sensor (del potenciómetro) dividido cuatro.
Serial.println(sensorValue);
}

Led encendido con el botónLed apagado al soltar el botónLed apagado utilizando un potenciómetroLed encendido utilizando un potenciómetro

 

 

 

 

 

 

 

Mis primeros pasos con Arduino

Me prestaron muy amablemente un Starter kit de Arduino. Como de costumbre, mi intención era hacerlo funcionar en Ubuntu.

Lo primero que hice fue instalar el software, desde este sitio: Arduino Software

Después estuve buscando tutoriales y encontré algunos que seguramente son muy útiles pero que no usan el modelo de Arduino que yo tengo (por ejemplo, este video: Primeros pasos con Arduino)

Mi objetivo es usar Arduino con Physical Etoys, un desarrollo de Gonzalo Zabala y su equipo sobre Etoys. No logré hacerlo andar y entonces me di cuenta de que me faltaba conocer el modelo de Arduino y también el nombre de mi conexión…!

Así que retrocedí un paso, abrí el software que instalé y de la misma página de Arduino tomé el primer código de la sección Learning, que es para hacer parpadear un led conectado en D13.

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.This example code is in the public domain.
*/void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}void loop() {
digitalWrite(13, HIGH);   // set the LED on
delay(1000);              // wait for a second
digitalWrite(13, LOW);    // set the LED off
delay(1000);              // wait for a second
}

No funcionaba, así que busqué en Google el mensaje de error hasta que encontré esto: Installing Arduino 0023 on Ubuntu 11.10 (Oneiric Ocelot)

Este era el error que me daba:

In file included from /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:44:0,
                 from /usr/lib/gcc/avr/4.5.3/../../../avr/include/avr/delay.h:37,
                 from /home/matt/arduino-0023/hardware/arduino/cores/arduino/wiring_private.h:30,
                 from /home/matt/arduino-0023/hardware/arduino/cores/arduino/WInterrupts.c:34:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/math.h:426:15: error: expected identifier or ‘(’ before ‘double’
/usr/lib/gcc/avr/4.5.3/../../../avr/include/math.h:426:15: error: expected ‘)’ before ‘>=’ token

En el post encontrado se muestra la solución: comentar una línea del código del software de Arduino. Mi archivo no estaba en la misma carpeta del ejemplo así que tuve que buscar la carpeta Arduino por todos lados. Al encontrar el archivo, para editarlo tuve que usar sudo gedit ‘…’ porque si lo editaba directamente no tenía los permisos suficientes para guardar.

Editar archivo de configuración

Una vez que logré comentar esa línea de código, volví a mi programa que ya había adaptado para encender el led conectado en el conector D12 (mi placa no tiene D13 o no lo encuentro), ¡y funcionó! Me puse tan contenta que les armé un gif animado 😉

Parpadeando

 

 

Cómo invertir los colores de una imagen en Gimp

Este post es muy pero muy básico, dedicado a mi papá que me dijo que tiene cientos de imágenes escaneadas que tienen letras negras sobre fondo blanco, y necesita invertirlas para que se lea mejor.

Para cualquier persona que tenga instalado el Gimp (acá está el link para descargar el programa e instalarlo), es muy simple aplicar algunos efectos sobre una imagen completa.
Si tenemos una imagen en blanco y negro y queremos invertir los colores (que lo que es negro quede blanco y lo que es blanco quede negro… y no me pregunten qué pasa con lo que es gris…), tenemos que seguir estos pasos:
1) Abrir la imagen (si está en la web, hacer clic con el botón derecho, guardar imagen, observar en qué carpeta se guarda y después abrirla). Para eso se puede usar el menú Archivo / Abrir o también se puede abrir el Gimp y “pegar” (con CTRL+V, por ejemplo) la imagen que uno copió previamente. O tomar el archivo y arrastrarlo a la ventana de Gimp.
2) Hacer clic en el menú Colores / Invertir
Colores - Invertir
Este es el resultado:
Cartel invertido
3) Guardar el archivo (con Archivo / Guardar, o con CTRL+S)

Otras cosas que pueden aplicarse a la imagen completa son:
Agregar sombra – Menú Filtros / Luces y sombras / Sombra arrojada
imagen con sombra
Agregar borde – Menú Filtros / Decorativos / Añadir borde
Foto con borde
Efecto foto antigua – Menú Filtros / Decorativo / Foto antigua
Foto antigua

En el menú Filtros hay muchos más efectos que pueden aplicarse, y usar la opción Deshacer si el resultado no es como uno lo esperaba.

Cómo corregir los ojos rojos en una foto usando Gimp

Vamos a modificar los ojos rojos de esta foto:

Foto con ojos rojos

Lo primero que tenemos que hacer es delimitar los ojos, usando la Herramienta de selección elíptica:

Seleccionar los ojos

Para seleccionar ambos ojos pulsamos la tecla de mayúscula mientras delimitamos el segundo ojo (agregamos a la selección anterior en lugar de crear una selección nueva).

Una vez que los ojos están seleccionados, usamos Filtros / Realzar / Quitar ojos rojos.

Vamos a tener que elegir el umbral de tolerancia, es decir, si la zona afectada es más grande o más chica.

Modificar el umbral de tolerancia

Pulsamos aceptar, y ¡listo!

Ojos rojos corregidos

Lo que hace este filtro es quitar la tonalidad roja del sector seleccionado, con lo cual si elegimos algo que no sea un ojo (los aros, por ejemplo, o una zona de los ojos que incluya todo alrededor), obtendremos zonas grisadas.

Agregar un sello, recuadro o cintillo a una foto usando Gimp

Este es un post muy básico, para alguien que recién empieza a utilizar Gimp. Otros post de nivel básico de Gimp: Dibujando figuras en Gimp, Gimp para docentes, Cómo armar un collage con fotos en Gimp, Cómo scannear usando Gimp.

Muchas veces necesitamos pegar una imagen sobre otra, algo así como un sello, cintillo o marco:

Perro con cinta argentina Perro con marco de cuadro

Vamos a pegar esta cinta argentina (autor: Lobo argentino) sobre una foto.
El primer paso será abrir el archivo de la foto en Gimp (Archivo / Abrir).
Después, copiar la imagen que vamos a superponer (usando el botón derecho del mouse, opción copiar):

Copiar una imagen
Esto pondrá la imagen en el portapapeles. Ahora vamos a pegar la cinta sobre el perrito, pero como una nueva capa (Editar / Pegar como / Capa nueva)

Pegar como capa nueva
Seguramente la cinta es de un tamaño diferente al que necesitamos, en mi caso es muy grande y por eso se ve sólo una parte (podría ser que no se viera nada, pero inmediatamente lo vamos a resolver).

Cinta ya pegada, sin modificar el tamaño

Para cambiar únicamente el tamaño de la cinta vamos a usar el menú Capa, opción Escalar Capa.

Escalar la capa

Modificamos uno de los dos números (Anchura o Altura), y el otro se va a modificar automáticamente para mantener la proporción (si no mantenemos la proporción, la imagen se deforma, quedando más ancha o más alta que la original). Hacemos clic en el botón Escala.
Por último, acomodamos la cinta en la posición en que queremos que esté, usando la herramienta Mover. No olvidemos que existe la opción Deshacer (CTRL-Z) por si nos equivocamos y movemos otra capa.

Mover una capa

Sólo nos falta guardar el archivo, preferentemente con un nombre diferente (Archivo / Guardar como). En Gimp tenemos que escribir el nombre y la extensión del nuevo archivo, así que escribimos por ejemplo: perro argentino.jpg

Ahora vamos a hacer algo un poquito más complicado, que es añadir el marco de este cuadro a la foto del perrito. Los primeros pasos son los mismos:

  • Copiar el marco
  • Pegarlo como capa nueva
  • Redimensionarlo

En el caso del marco del cuadro necesitamos hacer un paso más: agrandar el “lienzo”, usando Imagen / tamaño del lienzo. Esto nos va a servir si queremos que el marco quede por fuera de la imagen y no superpuesta tapando los bordes. Podemos agrandar mucho el lienzo sin importar que queden franjas vacías, porque el último paso será recortar lo que sobre.

También puede ser que necesitemos rotar el marco (ponerlo en sentido horizontal). Para ello utilizamos Capa / Transformar / Rotar 90° en sentido horario (o antihorario).

A continuación debemos seleccionar la parte de la pintura (con la herramienta de recorte rectangular) y eliminarla (pulsando la tecla suprimir):

Seleccionar recuadro

Utilizando la herramienta  Mover, reacomodamos la capa de abajo:

 

Mover la capa del perrito

Podemos volver a redimensionar la capa del recuadro hasta encontrar el tamaño justo.

Finalmente, con la herramienta de selección rectangular, seleccionamos el marco completo y elegimos Imagen / Recortar a la selección, para eliminar las partes que sobran de la imagen.