Plugin WordPress: Mail_Me_If_Link_Broken

En una tarde he escrito este pequeño plugin para WordPress. Tenía muchas ganas de ver el sistema de plugins de WordPress, y he quedado gratamente sorprendido :-), ha sido sencillo, hay bastante documentación de funciones, y mucha información en Google de gente que los ha trabajado previamente (con Coppermine Gallery no hay tanta información).

El plugin
Su funcionalidad es muy sencilla, se me ocurrió hace tiempo, que pensé que sería útil a la hora de gestionar un sitio Web con mucha cantidad de información, tener algún sistema que te permitiera identificar los enlaces rotos. Hace cosa de unas semanas en el trabajo se me presento precisamente esta necesidad, administrando un portal con una cantidad de contenido ingente, hay muchos enlaces que están rotos (especialmente los de los contenidos más antiguos) y era necesario poner a una persona a revisar los enlaces (absurdo, porque como digo la cantidad de contenido es ingente).

Lo primero que pensé fue algún tipo de mecanismo que automatice el proceso, de manera que se conecte a la URL del enlace, y si recibe un error (tipo mensaje 404, 500, y demás) pues me enviara un mail. Pero no me acababa de convencer esta idea, porque en el sistema donde lo pretendía aplicar, había enlaces que enlazaba a una página estática que si funcionaba, pero que lo que fallaba era el contenido que debía mostrar (vídeos flash) por lo tanto ese supuesto código pensaría que el enlace estaría correcto.

La solución que se me ocurrió después es que sea el usuario que está navegando por la Web el que avise; en realidad es el mismo mecanismo que se está utilizando ahora, es el usuario el que nos indica que un enlace está roto, enviandonos un mail y diciendonos que en "tal" página el enlace no vá. Pero esto lo usan poco usuarios, pues poca gente se toma la molestia de mandarte un correo para advertirte de algo que no va en tu Web.

Con el plugin se le simplifica la tarea al usuario, de manera que al pasar el ratón por encima de un enlace, sale al lado un minúsculo botón Botón enlace roto que permite al usuario avisar del comportamiento incorrecto de ese enlace. De manera que para el usuario no hay complicación ninguna. Por otra parte el plugin internamente calcula todos los datos del enlace que presuntamente no funciona y te manda un mail a la cuenta que este configurada en WordPress.

Aspectos a mejorar en futuras versiones:

  • Que la cuenta de correo sea configurable, por si el administrador prefiere recibir el mensaje en otro correo.
  • Preguntar al usuario un captcha o suma sencilla, de manera que se eviten falsos positivos (envíos por error).

Información útil para desarrolladores:

Es el primer plugin que desarrollo para WordPress, pero al final todos los plugins de todas las plataformas se parecen en algunos aspectos. Por ejemplo los plugins para aplicaciones Web, es muy común que tengan algun mecanismo que te permita procesar la llamada a un archivo del plugin, usualmente para procesar una petición AJAX. En este caso esta información no la encontré en la documentación oficial (aunque ahora sé que está, pero no lo vi) sino que la localicé en la página de este programador.

Resumiendolo un poco, para poder realizar una petición a un archivo de un plugin de WordPress, y que este archivo pueda hacer uso de las librerías de funciones y variables que ofrece WordPress, es necesario que la llamada pase por el Core de WordPress, ya que si le haces la llamada directamente a tu archivo, dichas funciones no estarán disponibles (no las habrá cargado).

Para realizar esto son necesarios dos pasos, primero crear (y enlazar a su handler respectivo) la función encargada de procesar la petición a tu archivo, bien sea un código PHP o cualquier otra cosa, en el siguiente ejemplo proceso dos peticiones diferentes, una a un código PHP y la otra para obtener una imagen:

Pero esto no es todo, Worpress por motivos de seguridad no permite el paso de ninguna petición a los plugins a menos que le identifiques claramente las peticiones que debe autorizar. Esto se realiza dando de alta en WordPress (en un array destinado a tal efecto) el nombre de la variable que identificará la petición de tu plugin:

Eso es todo, este último paso por ejemplo no lo tiene Coppermine Gallery (y creo que debería). Por último, las llamadas a tu plugin las puedes realizar con llamadas del tipo:

A continuación se puede descargar el plugin y todo su código fuente, como siempre con licencia Creative Commons :-)

Plugin WordPress Mailme If Link Broken
Plugin WordPress Mailme If Link Broken
mailme_if_link_broken.zip
Version: 1.0
192.3 KiB
69 Downloads
Details...

¿Cómo ser un buen Creador de Conocimiento?

Continuando con el curso de "Personal Learning Environment", nos han enseñado los diferentes objetivos de que debe cumplir un buen "Digital Content Curator", como tantas otras veces, a alguien le ha parecido más moderno y dinámico utilizar la palabra inglesa que hacer una buena traducción al castellano. Esto suele pasar a menudo (por desgracia desde mi punto de vista), aunque los ingleses (especialmente los americanos) les pasa lo mismo y cuando quieren hacerse los chulos y modernos utilizan palabras en español. Una traducción que he visto es "Intermediario de Conocimiento", pero aún así no me acaba de convencer.

Resumiendo, yo creo que una buena traducción sería "Creador de conocimiento" ya que como bien apunta Robert Scoble:

El content curator es alguien que no crea más contenido, pero que da sentido a los contenidos que otros crean.

Por lo tanto, al darle sentido y organización, está logrando que otras personas puedan informarse y aprender sobre un contenido o materia; por lo tanto está creando nuevo conocimiento (que no contenido) a las personas que se apoyan en su trabajo para aprender.

Hay que tener en cuenta que este tema es importante para todas las personas, no sólo para los docentes, o trabajadores relacionados con la educación (que también); porque todas las personas somos en algún momento "Creadores de Conocimiento" para un familiar/amigo/conocido al que orientamos e indicamos fuentes de referencia donde puede consultar o encontrar soluciones a los problemas o incógnitas que quiere resolver. ¿Quién no ha ayudado alguna vez a un hermano pequeño a encontrar la solución a un ejercicio?¿o a un padre/madre a pelearse con el PC (por poner un ejemplo)?

¡OJO! Que de lo que yo estoy hablando es de crear conocimiento, es decir de enseñar a encontrar la solución del problema, NO a dar la solución. Aunque a veces se pueda confundir, no es lo mismo "dar de comer al hambriento, que enseñarle a pescar". Yo estoy hablando de eso último, de enseñar a "pescar" conocimiento.

Pero actualmente con las herramientas informáticas que tenemos a nuestro alcance, esto va más allá, porque podemos convertirnos en "Creadores de Conocimiento" para personas que no conocemos, mediante lo que publicamos en nuestra web, lo que subimos a una u otra red social, lo que comentamos en los foros, etc. Esto es lo que denominaríamos "Creadores de Conocimiento mediante herramientas Digitales". No he utilizado la expresión de "Creadores de Conocimiento Digital" porque puede dar lugar a confusión, entendiendo que sólo se crea conocimiento relacionado con la informática.

Logo Creative Commons

Logo Creative Commons

Además me gusta mucho la traducción de "Creadores de Conocimiento" porque su acrónimo sería "CC" que también es el de las licencias libres "Creative Commons" que son el tipo de licencias que promueven el conocimiento y que ayudan a las personas y a la sociedad a crecer, precisamente creando conocimiento. Todo lo contrario de las licencias propietarias (por cierto que este blog lo publico con licencia CC by-nc-sa CC by-sa como se puede ver al pie del mismo).

¿Y que requisitos son necesarios para ser un buen "Creador de Conocimiento mediante herramientas Digitales"? Pues según David Álvarez podemos distinguir 10 aspectos u objetivos a evaluar (yo opino que son 9, como explico más abajo), que si bien en el PDF enlazado se describen en un lenguaje técnico y poco accesible para todo el mundo, yo prefiero comentarlos y evaluarme en un lenguaje más coloquial:

  1. Se necesita conocer los lenguajes propios de los contextos digitales. No se utilizan los mismos lenguajes (y no hablo de lenguajes de programación) en las relaciones cara a cara, que por medio de una pantalla. De la misma forma que cuando escribimos un documento no usamos expresiones que podrían ser comunes en el lenguaje hablado. Debemos tener en cuenta que por medio de una pantalla es muy complicado que la otra persona "vea" nuestras emociones o los matices que pretendemos darle a nuestras palabras; si a eso añadimos características técnicas propias (por ejemplo los 140 caracteres de Twitter) la cosa se complica para los profanos en la materia.
  2. Debes participar en diferentes comunidades virtuales, hay que tener en cuenta que a día de hoy el formato de la navegación por la web ha cambiado muchísimo; aunque Google continúa siendo "el rey" de los buscadores de Internet, cada vez más, se accede a contenidos por medio de recomendación de personas conocidas o con las que compartimos intereses, es en ese punto donde entra la importancia de estar presente en las comunidades y redes sociales. Creo que esto se debe principalmente a dos motivos:
    1. Primero a que no todas las personas saben utilizar Google (u otros motores) para encontrar información, de hecho por ese motivo Google creó los cursos de "Power Searching With Google" (los cuales recomiendo encarecidamente), y Internet es tan grande que a menudo hay personas que piensan que algo no está en Internet, cuando lo cierto es que no lo han podido encontrar. Debido a esto se apoyan en otras personas que les hacen las funciones de "Creadores de Conocimiento".
    2. Por otra parte la gente demanda cada vez más contenidos o información de actualidad, pero no puede estar buscando sus temas de interés constantemente. Por este motivo son los contenidos los que tienen que "llegar" a las personas. Puede sonar extraño, pero en parte es lo que ocurre con la ayuda de las redes sociales y comunidades, porque constantemente nos llega información sobre los temas/personas que nos interesan aún cuando NO la buscamos. He ahí una de las potencias de las redes sociales.
  3. Tienes que tener capacidad para filtrar la información y ordenarla, si bien creo que este punto es esencial, también creo que se explica por si mismo. Aquella persona que no esté de acuerdo con este punto es sencillamente porque aún no tiene conciencia del verdadero tamaño y cantidad de información en Internet. Por otra parte la capacidad para filtrar la información dependerá en gran medida del dominio que tengas de las herramientas para ser capaz de "quitar la morralla" (¿te he recomendado ya "Power Searching With Google"? ;-))
  4. Necesitas saber crear y editar contenidos digitales, aunque creo que más lo segundo que lo primero; de la misma forma que para ser camionero o taxista necesitas saber conducir, pero no tienes que ser ingeniero mecánico con un máster en automoción (aunque siempre cuanto más sepas, mejor!). Pues para Crear Conocimiento mediante herramientas Digitales tienes que saber manejar sus herramientas; y aunque NO tienes que ser Ingeniero Informático, pero cuanto más sepas mejor ;-)
  5. Es imprescindible compartir en la Red. Aunque parece una "perogrullada", es muy típico encontrarse gente con una mentalidad de que lo que ellos hacen es completamente suyo y original, y tienen un miedo atroz a que se lo copien o a que otra persona lo utilice sin reportarles algún beneficio (normalmente económico). O piensan que por compartirlo en Internet ellos pueden "dejar de ganar" algo. Incluso me he encontrado con situaciones tan absurdas como que una persona que encuentra algo en Internet, se lo enseña a otra, y esta segunda lo publica en su blog; cuando la primera se entera, se enfada y pelea con la segunda por haberle dado difusión :-O ¿puede haber algo más estúpido? ¡Pero si la primera lo encontró en Internet! Pues sí, he conocido gente así de "especial". Yo supongo que esas personas lo que esperan es sacar algún tipo de beneficio económico, pero no del conocimiento encontrado o creado, sino del uso monopolista del mismo; eso es un error. La sociedad crece apoyándose los unos en los otros, todos bebemos de todos, ni siquiera los artistas (pintores, músicos, ...) crean algo completamente único y nuevo, siempre se han inspirado por algo, han visto ideas de otro sitio, etc. tener esa idea hoy día es como pensar que la tierra es plana. Muchas veces me he preguntado de donde viene esa forma de pensar, y no lo se, quizás de la experiencia competitiva a la que estamos sometidos en el día a día. También es una creencia de éxito fácil y rápido, pues si tengo algo único que todos quieren, entonces estarán dispuestos a pagarme lo que pida. Pero eso se llama monopolio, y desde mi punto de vista es inmoral y va contra el crecimiento de la sociedad.
  6. Necesitas entender las normas legales y éticas a las que te tienes que someter y conocer las normas básicas de seguridad y privacidad. Este aspecto suele ser poco conocido, respecto a las normas legales se debe ser consciente que es posible que determinados contenidos pueden ser ilegales en determinados países y se supone que Internet (a día de hoy) no tiene fronteras (que se lo digan a una amiga mía china). Por otra parte, sobre las cuestiones de ética y forma, hay que conocer la Netiqueta, y si alguien que trata contigo se la salta, lo mejor suele ser ignorarlo y bloquearlo. Mientras que respecto a la seguridad y privacidad, es necesario conocer y divulgar (especialmente a los más pequeños) unas normas básicas que deben respetar por su propia seguridad.
  7. Tienes que ser capaz de manejar una o más identidades digitales. En mi opinión siempre es preferible tener varias identidades, tal y como comento en este post.
  8. Conocer como funcionan las herramientas de trabajo colaborativo. A día de hoy una sola persona no puede gestionar todos los contenidos y elementos de una Web medianamente grande, lo normal es trabajar en grupos, y si no estás trabajando en grupo, créeme lo estarás ;-) es el futuro y hacia donde nos encaminamos, así que cuanto antes conozcas como funcionan estas herramientas mejor. Puedes encontrar multitud de herramientas de trabajo colaborativo, las que yo más uso son Google Docs (para documentos de cualquier tipo, textos, hojas de cálculo, ...), Subversion para desarrollo. Pero por ejemplo el propio Worpress también permite que el blog lo gestionen varias personas o la galería de fotos Coppermine; también las redes sociales permiten crear páginas de contenidos aportados por varias personas como puede ser Google Plus, son solo algunos ejemplos.
  9. Debes saber expresarte y trabajar con herramientas informáticas. Desde mi punto de vista este punto es redundante con el 4º, por lo que no añadiré nada más.
  10. Y por último, pero quizás lo más importante es que debes ser capaz de aprender con las herramientas digitales. Digo que es lo más importante porque a día de hoy Internet es esencial en la formación de cualquier persona y en cualquier ámbito; y el aprendizaje constante a lo largo de toda la vida es lo que nos hace crecer como personas y como sociedad.

Yo en mi caso personal considero que lo que más tengo que mejorar es el punto 6, especialmente en los aspectos legales, ya que para mi son un tema arduo y duro de digerir. Y quizás también en el punto 2 ampliando mi presencia en las redes sociales, pero en este caso eso requiere un tiempo extra del que no dispongo; para solucionar eso lo que hago es apoyarme en herramientas que me faciliten esa tarea, por ejemplo para no tener que entrar en Google Plus para decir que he publicado algo nuevo, lo tengo semi-automatizado (porque Google aún no permite el proceso completamente automático) con plugins para wordpress (yo uso Digg Digg). En el caso de Twitter el proceso si es completamente automático, y hay varias soluciones, como TwitterFeed o WP-to-Twitter.

Y ¿es importante ser un buen "Creador de Conocimiento"? Bueno, depende de a lo que te dediques y lo que quieras ofrecer; pero lo que es indudable es que para una comunidad de aprendizaje SI es esencial tener un buen Creador/es de Conocimientos. De hecho eso puede marcar la diferencia entre el éxito o el fracaso de la comunidad.

¿Y tú qué? ¿Te animas a ser un mejor "Creador de Conocimiento"? ¿Sabes ya lo que tienes que mejorar?

Plugin Coppermine "Graphic_Keywords_Editor"

Me gusta mucho la galería de fotos Coppermine, considero que es una gran herramienta para poder gestionar todas las fotos que hago, tanto con la cámara como con el móvil. Lo genial de esta aplicación es que las fotos las tengo siempre disponibles en mi servidor, y no sólo eso, sino que familia y amigos también pueden acceder a las fotos, comentarlas y bajárselas si las desean usar; pero todo ello desde una plataforma que este controlada y donde la autoría y propiedad de las fotos siga siendo mía, al contrario que con Facebook que al subir las fotos, estas automáticamente les pasan a pertenecer a ellos. Quizás podría ser interesante utilizar herramientas tipo Flickr, DevianArt o Picasa, pero aunque algunas las he probado, me gusta más mi Coppermine ;-).
Con Coppermine, no pretendo evitar que me copien y/o utilicen las fotos sin consentimiento, simplemente me aseguro no estar "regalándoselas" a ninguna empresa. Además, el hecho es que las fotos en su mayoría, las tengo puestas en galerías de libre acceso, es decir que cualquier persona puede acceder y verlas o bajarlas (y por lo tanto usarlas). Eso no es algo que me preocupe, es más me alegraría saber que alguna persona le gustara tanto alguna de mis fotos que quiera utilizarla, si se da el caso estaría muy agradecido de que me dijera donde la ha utilizado para verlo.
Y por estos motivos, cuando veo algo que echo en falta en Coppermine, pienso si podría haberlo programado alguien, o si no, si podría hacerlo yo y colaborar de esa forma al crecimiento de la herramienta.
Este es uno de esos casos, a mi siempre me ha parecido genial la idea de etiquetar las fotos, porque facilita la tarea de encontrar luego fotos de personas, lugares o las fotos de un viaje concreto. Pero la forma de etiquetar en Coppermine es horrible, ya que hay que ir etiquetando las fotos de una en una, es tedioso, arduo y lo peor es que a menudo se comenten errores (unas veces utilizas una etiqueta con espacios para una persona, y otras veces sin espacios) y luego tienes varias fotos de una misma persona con varias etiquetas diferentes, por lo tanto pierdes la potencia de las etiquetas para localizar las fotos de esa persona.

Por estos motivos he implementado un pequeño plugin que me facilita la tarea de etiquetar mis fotos en Coppermine. Etiquetar las fotos en Coppermine ahora es más fácil y eficiente. Las características que cumple el plugin son las siguientes:

  • Se pueden seleccionar varias fotos simultáneamente para etiquetarlas.
  • Se pueden aplicar varias etiquetas simultáneamente a una o varias fotos.
  • La selección de fotos a etiquetar se realiza con el ratón y de manera similar a como se trabaja en un explorador de archivos en el PC; es decir se pueden seleccionar fotos pinchando y arrastrando, se pueden añadir fotos a la selección usando la tecla "control" (Ctrl), se puede de-seleccionar fotos haciendo clic nuevamente en ellas, etc. En cualquier caso aunque el funcionamiento se ha intentado que sea lo más similar posible al del explorador de archivos, hay algunas funcionalidades que no son iguales por limitaciones de la librería utilizada (JQuery v1.9)
  • Ver las etiquetas de cada foto al pasar el ratón por encima de la misma.
  • Ofrecer una lista de las etiquetas utilizadas anteriormente al escribir la etiqueta (el típico autocompletar).
  • Permitir operaciones de añadir etiquetas a una foto, eliminar etiquetas a la foto y reemplazar las etiquetas de una foto (esta última operación sustituye todas las etiquetas de golpe, quizás para una próxima versión mejore esta operación).
  • Cada usuario sólo puede editar las etiquetas de sus fotos; con excepción de administrador que puede etiquetar lo que quiera.
  • Permitir localizar todas las fotos SIN etiquetas; esto lo hace buscando todas las fotos con el campo de etiquetas vacio, y acto seguido les pone una etiqueta especial "_noKeywords_" de manera que se puedan localizar mediante la búsqueda normal de Coppermine.
  • Multilenguaje (actualmente español e inglés).

A continuación dejo un vídeo donde se ve el funcionamiento y la idea:

Limitaciones actuales:

  • Sólo funciona con el tema por defecto ("curve") de Coppermine; esto de debe a problemas con el hook para añadir botones.
  • En algunas tablet/móviles no funciona bien el autocompletar.

Comentarios útiles para desarrolladores:
La idea inicial del plugin era que simplemente permitiera seleccionar varias fotos con el ratón pinchando y arrastrando, esto fue más o menos sencillo de implementar con la funcionalidad "selectable" de JQuery UI; el problema vino al intentar utilizar la librería JQuery en Coppermine porque ya tiene una versión de la misma, pero es antigua (1.3 creo) y para usar el "selectable" necesitaba la 1.9 (la que había usado en las pruebas), tras investigar me encontré que una posible solución era cambiar el nombre de la función JQuery, el conocido "dollar" $(' ... '); para ello utilicé la función "noConflict":

Mediante "noConflict", podemos utilizar varias versiones de JQuery en una misma aplicación sin que se estorben unas a otras, básicamente lo que hace es que a cada versión de JQuery a utilizar le asigna un nombre diferente, en mi caso utilicé "jQuery19" como puedes ver. Esa línea la tienes que poner al final de la declaración de la librería de JQuery; y cada vez que en tu código quieras utilizar esa versión de JQuery simplemente llamas a JQuery con el nombre en cuestión en lugar del dollar, como puedes ver en el siguiente ejemplo:

Una vez que logré hacer funcionar la selección de imágenes en Coppermine sin problemas de conflictos entre versiones de JQuery, tenía otro problema, que fue el CSS necesario para que las fotos seleccionadas se vieran destacadas. El problema era que las etiquetas CSS que yo daba a las imágenes destacadas se veían sobrescritas por el CSS propio del Coppermine, por lo que no tenían efecto. Esta tontería me costo unas pocas horas de repaso de teoría del HTML, HTML5 y de las Hojas de Estilo en Cascada (no hay mal que por bien no venga) hasta que recordé que en CSS para conseguir sobrescribir una propiedad que está declarada después de la tuya, lo que puedes hacer es ser más específico en el selector. Resumiendo, que tenía que utilizar "td.ui-selected" en vez de ".ui-selected" en el selector para darle las propiedades a la foto seleccionada (si te quedan dudas, ya sabes, a recordar la teoría del CSS ;-)). Y por fin fui capaz de seleccionar fotos...

Selección de fotos con el mi plugin para Coppermine

Selección de fotos con mi plugin para Coppermine

Después implementé las funciones que añadían o eliminaban etiquetas en el servidor. No fue complicado pues hay bastante documentación para conocer el funcionamiento de los plugins en Coppermine, su BD, tablas y la forma de acceder y tocar en la BD.

Llegado a este punto tenía una primera versión funcional, pero al utilizarla me di cuenta que carecía de cosas importantes para que me fuera realmente útil, entre ellas:

  • La posibilidad de ver las etiquetas que tenía cada foto que estaba etiquetando
  • Ver las etiquetas previas que había utilizado con anterioridad en otras fotos (autocompletar).

La primera cuestión se solucionó más o menos rápido, pero para la segunda, después de investigar, encontré la librería "select2" basada en JQuery, pero no se puede decir que tenga mucha documentación (a día de hoy poco más de 3 ejemplos), y me costo lo suyo hacer que funcionara (mucho buscar en Internet y prueba y error). Cuando conseguí que funcionaran las pruebas, resultó que al añadir el código al plugin del Coppermine no funcionaba nada, tras más quebraderos de cabeza, resultó que me estaba pillando (lógicamente) la JQuery del Coppermine en vez de la mía (la 1.9); tenía que modificar la librería para que usara la versión nueva, para ello sustituí todas las llamadas a la función JQuery en la librería Select2 por la llamada a la mía ("jQuery19"); esto implicaba sustituir todos los "dollar", todas las definiciones de nuevas funciones y todas las llamadas (así dicho parece fácil, que lo es, pero la dificultad estuvo en darse cuenta del fallo y después en encontrar todas esas llamadas). Cuando todo funcionó ya tenía el autocompletar de las etiquetas, y al utilizarlo, ya sí empezaba a resultarme un plugin útil.

Muestra del autocompletar del plugin para Coppermine

Muestra del autocompletar del plugin para Coppermine

Con esta versión he organizado bien mis fotos, he realizado pruebas en la tablet y también funciona, pero con el uso, me han surgido nuevas necesidades. Concretamente la de localizar todas las fotos SIN etiquetas. Esto ha sido fácil de implementar, apenas me ha llevado una tarde. De esta forma ya puedo localizar rápidamente todas las fotos que aún no les he dado una etiqueta.

También comentar que NO he podido hacer que el botón que activa/desactiva la edición de las etiquetas se ponga mediante el uso del hook que Coopermine tiene para ello, el "sys_menu" ni con el "sub_menu". Desconozco porqué, pero cuando he tratado de buscar solución, toda la referencia que encuentro es para la creación de temas. En un futuro tengo que tratar de arreglar esto, porque tal y como está montado, el plugin sólo funciona con el Coppermine con el tema por defecto "curve"; si está usando otro tema, el botón de activar/desactivar no sale.

Después de todo esto, comentar que estoy abierto a nuevas ideas que puedan hacer de Coppermine un herramienta más útil aún :-).

Graphic Keywords Editor plugin for Coppermine
Graphic Keywords Editor plugin for Coppermine
graphic_keywords_editor.zip
Version: 1.0
244.9 KiB
45 Downloads
Details...

Mi PLE sobre mi Identidad Digital

A continuación publico mi PLE (Personal Learning Enviroment) sobre mi identidad digital que he realizado para el curso de PLE que estamos realizando; está realizada con GIMP. Y voy a aprovechar para comentar un aspecto algo sensible que no sé si la gente lo tiene claro.

He visto que mucha gente ha utilizado Prezi para realizar lo mismo. Prezi Es una herramienta muy interesante, que sirve para mejorar la calidad de las presentaciones y transmitir mejor las ideas, cuando me hablaron de ella me encantó y la bicheé un poco, pero tiene una serie de inconvenientes muy problemáticos para mi, como por ejemplo que no es software libre, esto puede parecer una tontería, pero teniendo en cuenta que estamos trabajando para un organismo público, desde mi punto de vista hay que intentar (siempre que la calidad ofrecida sea equivalente) utilizar software libre en lugar de propietario; esto se debe a que el dinero en los organismos públicos es de todos, y desde mi punto de vista, todo lo que NO sea utilizar este dinero de la manera más eficaz posible debería considerarse fraudulento (o como mínimo inapropiado).

La excusa típica que escucharé ahora será que de Prezi se puede utilizar la versión educativa (que es gratis :-) jajaja esto ya me lo han dicho antes, y tampoco estoy de acuerdo, el motivo es que hay que entender que las empresas están para ganar dinero, NO para ofrecer servicios de forma altruista, si Prezi ofrece sus servicios gratuitos es por una única razón, que es la expectativa de engancharte a su formato (por eso el formato que utilizan es cerrado, es decir que sólo funciona con SU programa), de manera que cuando ya tengas muchas presentaciones o necesites hacer alguna con finalidad comercial, te sea más rápido y práctico pagar que pasarte a otras opciones del mercado (libres o no). Esto es una técnica de negocio muchísimo más antigua que la informática, pero que en esta rama ha visto una gran aceptación por parte de la gente, sin que nadie se cuestione nada. Básicamente esto es lo que lleva haciendo Mocosoft toda su vida, y muchísimos otros ejemplos, como pueden ser Oracle, Adobe, ....¿necesito seguir?

Pero una cuestión que es más alarmante y por la que yo considero que es deber de todos intentar proteger a la administración pública, es que además estas empresas "hacen trampas", desde mi punto de vista, porque cobran DOS veces (si has leído bien x2), a ver me explico: Estas grandes multinacionales hacen contratos multimillonarios con los dirigentes y políticos (a saber con que "argumentos" los convencen porque la calidad no suele ser su mejor baza, como ejemplo el Windows de Mocosoft ;-) ) y se esmeran mucho en conseguir convencer a los dirigentes porque si la administración utiliza un formato de archivo propietario (por ejemplo el Word), luego los usuarios de a pie, para poder entregarle documentos a la administración también tendrán que tener el "Word" y por lo tanto pagar sus licencias. Es decir Mocosoft NOS ha cobrado dos veces, una a la administración (que somos todos, es decir lo hemos pagado nosotros) y otra vez nos cobra a nosotros para poder enviarle documentos a nuestra administración. En resumidas cuentas, que como usuarios pagamos dos veces por el mismo producto. Y OJO! No me mal interpretes, que todo esto que estoy comentando sólo se aplica cuando existen alternativas de software libre de igual calidad, si no las hay, habrá que utilizar lo que haya (aunque sea propietario).

Por este motivo, cuando todos esos políticos firman contratos multimillonarios con las empresas de software, sin tener ni idea de las soluciones libres (o bien por desconocimiento, o bien porque les han convencido "bajo cuerda") desde mi punto de vista se está cometiendo DELITO DE FRAUDE. ¿Quieres un ejemplo? Ahí va, la Junta de Andalucía tras invertir dinero y esfuerzo en el software libre (y con éxito), debido a un cambio político (¿quién habrá salido ganando?) pasa a malgastar 12 Millones de € en licencias Mocosoft. Cuando resulta que incluso la propia Mocosoft prefiere usar software libre ¡sopresa! ¿no lo sabias?.

Logo de JessyInk

Logo de JessyInk

Una vez expresada mi opinión al respecto, ¿que opción libre tenemos como alternativa a Prezi? Pues tenemos "JessyInk" que es un complemento para Inkscape, que es un programa de dibujo vectorial. Puedes encontrar mucha información sobre JessyInk en la red, pero yo dejo un par de enlaces que son los que me han parecido los más interesantes:

En breve subiré mi PLE realizado en JessyInk, por el momento dejo esta realizada en GIMP Como lo prometido es deuda, a continuación dejo ambos PLE, el primero realizado en GIMP y el segundo en JessyInk:

Mi infografía de PLE

Mi infografía de PLE

Mi PLE realizado en JessyInk

No me queda más que animar a todos a utilizar esta herramienta, probarla y difundirla.

Presentación para el curso "PLE: Aprendizaje Conectado en Red"

Recientemente he comenzado un curso del Instituto Nacional de Tecnologías Educativas y de Formación para el Profesorado (INTEF) en el que nos han pedido realizar una breve presentación para el mismo. Bien aquí va la mía:

Mi nombre es Alejandro Lorente y soy Ingeniero Técnico Informático por la Universidad de Sevilla y actualmente me encuentro trabajando en el Centro Nacional de Innovación e Investigación Educativa (CNIIE), organismo dependiente del Ministerio de Educación, Cultura y Deporte.

En este curso nos van ha hablar de la redes de aprendizaje y de como crear y desarrollar las nuestras propias. Es importante señalar que no se pueden confundir las "Redes de Aprendizaje" con las "Redes Sociales".

En palabras sencillas, las redes de aprendizaje consisten en utilizar las redes sociales on line junto con las herramientas que nos ofrece Internet para aprender sobre la temática que nos interese.

Unas definiciones algo más formales serían:

  • Redes sociales (on line): Son una serie de herramientas que tienen mucha popularidad actualmente, y nos permiten compartir información personal a través de fotos, vídeos, mensajes instantáneos y comentarios.
  • Redes de aprendizaje: (también conocidas como Learning Networks) son el uso de un conjunto de redes sociales en línea mediante las cuales los participantes comparten información y colaboran para crear (generar) conocimiento. De esta manera, estas redes enriquecen el proceso de aprendizaje de la materia que sea, tanto si hablamos de educación formal (en escuelas, institutos o universidades) o educación no-formal (formación privada).
Flanders calls Homer an ape

Flanders y Lisa llaman varias veces a Homer "Simio"

Conocer como crear Redes de Aprendizaje es importante para todas las personas, independientemente de si se dedican al ámbito educativo como si no, porque todas las personas tienen la necesidad constante de aprender (diferente es si la satisfacen o no), tanto para progresar profesionalmente, como para avanzar personalmente. Aprender cosas nuevas nos motiva en todos los sentidos, nos mueve y nos despierta interés. Por ese motivo es importante conocer herramientas y técnicas que nos permitan realizar esa tarea. ¡Ojo! que cuando hablo de aprender (o formarse) no estoy hablando necesariamente de educación formal o reglada (es decir del instituto o la universidad) ni de formación para el trabajo; voy más allá, me refiero a aprender cualquier cosa que nos interese, por el motivo que sea, relacionado con nuestras aficiones, o con alguna problemática que nos afecte; y puedo poner varios ejemplos que he conocido y en los que las Redes de Aprendizaje han ayudado a mucha gente en muchos sentidos.

Un ejemplo son unos amigos que buscaban tener un bebe y por circunstancias de la vida no lo lograban; gracias a las Redes de Aprendizaje que ellos se construyeron pudieron contactar con otras personas con inquietudes similares, compartir información y ayudarse mutuamente entre todos dentro de la red. Alguien podría decir que esto es lo que se ha hecho toda la vida cuando tienes un problema (pedir ayuda a tu alrededor), ¡SÍ!, pero teniendo en cuenta que con Internet las probabilidades éxito (o fracaso) se incrementan drásticamente. Esto es un claro ejemplo de como las Redes de Aprendizaje nos afectan a todos ya que pueden abarcar cualquier sentido de nuestra vida; y esto es porque la necesidad de aprender es una constante a lo largo de toda la vida del ser humano.

Webgrafía:

Plugin MultiPicFilmStrip para Coppermine Photo Gallery

En mi galería de fotos montada con Coppermine he realizado varios cambios y modificaciones, pero siempre me quedo con el amargo regusto de hacerlo deprisa y corriendo, sin dedicarle el tiempo que se merece, por ello hace un par de semanas me mire el sistema de plugins de esta galería de fotos. Me sorprendio, es fácil y sencillo, en escasos minutos tienes tu primer plugin de pruebas instalado, configurado y funcionando. Después de esa grata sorpresa monte un plugin que modifica ligeramente el comportamiento de la tira de fotos que sale debajo de la vista de imágenes.

El comportamiento por defecto de la tira de imágenes de Coppermine es avanzar una imagen por cada vez que hacemos clic en la flecha de avanzar o retroceder, y resulta un poco molesto para mi gusto tener que estar haciendo clics uno tras otro para moverme por varias imágenes. Con el plugin que he creado, esa tira de imágenes mostrará seis nuevas imágenes cada vez que hagamos clic en la flecha correspondiente.

Para hacer funcionar el plugin únicamente necesitas descargar el archivo, descomprimirlo y subir la carpeta "moveMultiplePicsOnFilmstrip" a la carpeta plugins de tu Coppermine. Después lo activaremos desde la configuración de plugins de Coppermine, no hay que configurar nada, y desde ese momento, las fotos de la tira de imágenes avanzará seis fotos por cada clic que realicemos. He creado un pequeño vídeo para ver el comportamiento antes y después de la activación del plugin.

Información para desarrolladores:

Hacer un plugin para Coppermine es extremadamente sencillo, me ha sorprendido gratamente, y si sueles meterle mano a tus aplicaciones web para que se comporten exactamente como tu quieres, en el caso de esta galería de fotos creo que merece la pena dedicarle unos minutos para entender el funcionamiento de su sistema de plugins y hacer que tus modificaciones sean reutilizables.

En mi caso tuve un pequeño problema, y es que el código Javascript que hace funcionar el comportamiento de la tira de imágenes o filmstrip, es el archivo "displayImage.js", y por algún motivo, este archivo siempre es el último en añadirse al array de códigos Javascript de la galería. Ello me provocaba que los cambios que yo hacia en el comportamiento de código Javascript se machacaran con el comportamiento original. Una primera solución evidente es tocar el archivo Javascript original, pero eso es una solución que requería de acciones extra aparte de la simple instalación y activación del plugin. Es decir era una solución poco elegante y bastante chapucera, por ese motivo, tras pensarlo un poco más se me ocurrió una solución mejor; lo que necesitaba era desactivar el handler de JQuery al evento clic de la flecha, pero para eso tenía que ejecutar el "unbind" después de que Coppermine cargara todos los Javascript. Esto lo solucione haciendo uso de una llamada a mi función con un delay no bloqueante como puede verse a continuación.

La función "nextPic(false)" es una copia de la función original que se ejecutaba con el clic, solo que modificada para que pueda llamarse varias veces seguidas. Concretamente la función se auto-llama a si misma cinco veces (más la llamada original, seis) provocando el avance consecutivo de seis fotos.

En un futuro realizaré una segunda versión de este código que en la activación del plugin pregunte el número de fotos a avanzar, de forma que se pueda configurar fácilmente si se desea que avancen más o menos fotos.

Por último comentar que un buen inicio para trabajar los plugins es ver como están creados otros plugins, puedes consultar muchos aquí. Y para comenzar el desarrollo puedes empezar con la propia documentación que ofrece Coppermine aquí.

Plugin Coppermine MoveMultiplePicsOnFilmStrip
Plugin Coppermine MoveMultiplePicsOnFilmStrip
moveMultiplePicsOnFilmstrip.zip
Version: 0.1
6.1 KiB
82 Downloads
Details...

Contraseña segura y fácil de recordar ¿Cómo?

Hace unos años se me ocurrió una idea para solucionar mi problemática con las claves. A día de hoy vivimos rodeados de claves y contraseñas, ¿recordamos algunas?

  • El correo electrónico personal
  • El correo electrónico del trabajo
  • La cuenta de ebay
  • Y la de paypal
  • El PIN del móvil
  • El PIN de la tarjeta de débito/crédito (quién sólo tenga una ;-))
  • La clave de seguridad del banco para operar por Internet
  • La clave para entrar en nuestro usuario en el PC
  • Y la de administrador del PC (que siempre la olvidamos cuando hace falta)
  • La del YouTube (Y la del Vimeo?)
  • Y la del Twitter
  • Facebook
  • La clave del WiFi (otro día hablaré de las claves WiFi)
  • ... ¿es necesario que continue?

Todos tenemos un montón de cuentas, nuestra vida esta rodeada de perfiles, usuarios y sus correspondientes claves, y también todos conocemos esas características (que nos repiten una y otra vez) que debe tener una contraseña para que sea segura, ¿a ver si me acuerdo de alguna?

  • Que tenga mínimo X caracteres (dependiendo del autor, entre 6 y 8 )
  • Que contenga mayúsculas y minúsculas
  • Y también números
  • Y también caracteres especiales (por ejemplo , . - ; : _ ! " $ % & / ( ) = ? ¿ ¡ @ # aunque aquí hay que tener cuidado, porque podemos tener problemas para encontrar el carácter en un dispositivo que no sea el habitual)
  • Que la clave NO sea información personal (por ejemplo tu apellido, o el nombre de un familiar)
  • No repetir caracteres para rellenar la longitud mínima
  • Al cambiar de clave NO repetir las usadas con anterioridad
  • No anotar la clave en ningún sitio (aunque esto para algunas personas hay que perdonárselo ;-))
  • ...

En definitiva un montón de características, y claro, cuando tenemos que hacer eso para todas las claves que usamos en nuestro día a día, resulta que ni nosotros mismos podemos entrar porque tenemos un cacao de claves que no nos acordamos.

Solución que TODOS aplicamos, empezamos a repetir claves, y para el youtube usamos la misma que la del correo y la del PC, y para el banco, bueno como esa es importante esa no la repetimos, pero luego usamos el mismo PIN de la tarjeta de crédito en el móvil.

En definitiva empezamos a cometer otros FALLOS de SEGURIDAD, porque si nos roban una cuenta, pueden empezar a probar la clave en cuestión en otros servicios y van accediendo a diferentes parcelas de nuestra vida sin que nosotros ni siquiera nos enteremos. De hecho para cuando te enteres de lo que ha ocurrido (que te han robado una cuenta) ya han podido acceder a otras varias, ¿tengo que recordar que la mayoría de servicios que usamos tienen como nexo de unión la cuenta de correo electrónico?, la cual utilizan para enviarte los cambios de la clave, es decir que si un atacante logra acceder a tu correo, posiblemente, ya tenga ganado el acceso a la mayoría de los servicios que usas. Pero eso nunca te ha ocurrido ¿no? (no que TÚ sepas). ¿Y como podría alguien acceder a una de tus cuentas de algún servicio?

  • Te hackean la cuenta (normalmente por usar una clave débil)
  • Pierdes o te roban el móvil
  • Te dejaste la sesión abierta en un PC que usan otras personas (si me dieran un euro cada vez que me he encontrado una sesión de correo abierta en un PC público ...)
  • Han hackeado el servidor del servicio X (no sería la primera vez, ni será la última)
  • ...

Lo ideal lo sabemos todos, utilizar una clave segura para cada servicio, pero no nos engañemos, eso ni es práctico ni realista, por lo que tenemos que idear una solución alternativa, mi propuesta, que la llevo utilizando mucho tiempo (y no me ha ido mal) es la siguiente:

Una clave por niveles de seguridad

La idea es tener una única clave, de manera que la recordemos con facilidad, pero para evitar que, en caso de que nos roben una cuenta puedan acceder al resto, lo que haremos es usar diferentes partes de la clave en cada situación. Comencemos:

  1. Lo primero será crear la clave maestra o completa, esta consiste en una serie de caracteres, yo recomiendo entre 20 y 30 (¡no te asustes! ahora explico) y que estará compuesta por la consecución de diferentes palabras, valores numéricos y caracteres; a nuestro gusto, por ejemplo yo voy a utilizar los siguientes:
    • Mes y año de nacimiento de actriz/actor/cantante que te guste: 181263 ¿Quién nació en diciembre?
    • Nombre de una empresa donde hayas trabajado: betis
    • Un número que guste: 13
    • Algún personaje de ficción: Leonidas
    • Marca de tu primer coche: Ford
    • ...

    Esto son sólo algunos ejemplos inventados, tu puedes elegir cualquier cosa que se te ocurra, aunque más abajo te daré unas pautas, basadas en mi experiencia, que te serán muy útiles.

  2. El segundo paso será dar un ORDEN a estas palabras y números, este orden será importante y para añadir complejidad, para separar cada valor utilizaré un carácter especial, en mi caso por ejemplo voy a usar el guión (-) y pondré todas las vocales en mayúsculas, en resumen mi clave maestra es la siguiente:
    • 1812-63-bEtIs-13-lEOnIdAs-fOrd
  3. ¡Ya está todo listo! Te explico el funcionamiento, en esa clave maestra realmente tengo 6 claves diferentes, que son las siguientes:
    • Nivel 1: 1812
    • Nivel 2: 1812-63
    • Nivel 3: 1812-63-bEtIs
    • Nivel 4: 1812-63-bEtIs-13
    • Nivel 5: 1812-63-bEtIs-13-lEOnIdAs
    • Nivel 6: 1812-63-bEtIs-13-lEOnIdAs-fOrd

    Esto significa que para servicios de poca importancia utilizare la clave de menor nivel, para servicios un poco más importantes el nivel 2, ... consecutivamente ... hasta los servicios de máxima importancia que usaré el nivel de máxima seguridad, es decir el nivel 6. A continuación expondré algunos ejemplos:

    • Por ejemplo para darme de alta en ese nuevo foro que acabo de encontrar y que sólo muestra el enlace de descarga si te das de alta, uso el nivel 1 (mínima seguridad)
    • Para entrar en ebay, puedo usar el nivel 2
    • Y para el paypal, como ya hay tema de dinero por medio, usaré el nivel 3
    • El nivel 4 lo utilizare para el correo electrónico
    • El nivel 5 es ya para cosas realmente importantes, por ejemplo para la clave de Internet del banco
    • Por último el nivel 6 (ahora mismo no se me ocurre nada más importante que el banco ;- )

    Ahora cada vez que necesite una nueva clave para algún servicio, sólo tendré que decidir la importancia de dicho servicio, por ejemplo mi nueva cuenta en Vimeo, son vídeos de prueba, pero puede que suba algún vídeo personal, no es muy importante, por lo que utilizare el nivel 2.
    Pero para la clave del PC, como eso da acceso al navegador que tiene memorizadas otras claves, usaré la clave del nivel 4.

Ventajas de este sistema:

Bueno yo considero que el sistema funciona bastante bien, seguro que tiene fallos, pero de momento a mi me funciona, algunas de sus ventajas:

  • Lo primero, sólo hay que memorizar una única clave, eso si, es un poco larga, pero por eso la he creado a partir de palabras o números que me son afines, para que sea más fácil de recordar
  • Utilizo claves diferentes para diferentes servicios, como comenté arriba esto es una característica que buscaba, ya que si uno de los servicios queda comprometido, los otros no se tienen que ver afectados, especialmente los de nivel superior

Problemas (posibles) de este sistema:

  • No recordar que clave usé en un determinado servicio:
    Bueno esto realmente no es un problema, ya que si una clave no es la correcta, sólo tendré que probar la de nivel superior (o inferior)
  • Que pasaría si me roban una cuenta de un servicio:
    Los servicios de nivel superior están protegidos por claves diferentes, por lo que no se ven afectadas

Consejos:

  • El primer y segundo nivel deberían de tener como mínimo letras y números para que en caso de que algún servicio de mínima seguridad pida esas características (hay foros chorras que te exigen registrarte y encima piden claves seguras), si no lo cumple el primero, lo hará el segundo
  • En caso de que decida usar una clave en un servicio, y el servicio me indique que la clave debe ser más larga, o tener letras y números, sólo tengo que utilizar la de nivel superior

 

Foto aleatoria en WordPress

Objetivo del proyecto:
Lograr que las imágenes de la cabecera de mi WordPress se tomen aleatoriamente de mi Coppermine.

Hoy he terminado de montar un pequeño script que comencé ayer. La idea era cambiar las imágenes que me muestra WordPress en la cabecera, que si bien son monas, pero me gustan más las que yo hago, concretamente quería que las imágenes se cargarán desde un Coppermine que tengo montado. Para ello he indagado un poco y he encontrado una referencia para hacer algo parecido:

Ese código PHP simplemente hace uso de una función ya implementada en el Coppermine que se llama "get_pic_data(...)", tras buscar información sobre la misma en la documentación del código de la aplicación, (concretamente la función se puede ver aquí) he podido comprender su funcionamiento, parámetros que recibe y como los utiliza (es lo maravilloso de Software Libre).

Yo tome ese código original y lo he adaptado para que me devuelva aleatoriamente una imagen de uno de mis álbumes de mi Coppermine, dicho álbum es expresamente para almacenar estas cabeceras; por último sólo necesito tocar en el WordPress para que muestre la imagen a partir del script en cuestión en lugar de las que el tiene.

El código final después de las modificaciones es el siguiente:

He dejado al final comentado las líneas necesarias para mostrar una o todas las imágenes del álbum seleccionado, quizás sea útil.

Como comentaba en el WordPress hay que tocar un último detalle para que en vez de tomar las fotos que tiene por defecto, llame a mi nuevo script. Esto es muy simple desde la propia interfaz del WordPress editando el archivo "header.php" para cambiar que en lugar de mostrar la imagen devuelta por la función "header_image()" muestre la imagen que devuelve mi Script.

Esto mismo se puede hacer (y más elegante/bonito) desde mi punto de vista, en vez de tocando el header.php, editando el archivo "wp-includes/theme.php" para hacer que la funcion "header_image()" devuelva la ruta que llama a mi Script, el único inconveniente de esta segunda opcion es que hay que tener acceso al archivo "wp-includes/theme.php" (normalmente por FTP).

Por ultimo añadir que yo también he tocado el CSS del WordPress para hacer que el título de la web y demás salga encima del banner, ya que no me gusta que se desaproveche tanto espacio en la pantalla, citando a Juande (un ex-jefe mio del que aprendí muchísimo) "la pantalla es un recurso más, y como tal debe ser gestionado eficientemente".

La solución creada cumple con el objetivo inicialmente planteado. Y de hecho está funcionando ahora mismo.

Posibles mejoras:

  1. Sería interesante modificar mi Script para que corrija el MIME type del archivo devuelto y sea acorde a la imagen que se envía, actualmente el MIME type está fijo a "image/png", y las imagenes almacenadas en el Coppermine no tienen siempre ese formato, aunque yo lo suelo utilizar.
  2. Resultaría interesante hacer una modificación al Coppermine, de manera que no sea necesario subir expresamente los banners ya editados desde el PC, sino que al subir cualquier foto, pregunte si quieres sacar un banner a partir de ella, y en caso afirmativo, te muestre una interfaz en la propia web que te permita recortar la imagen subida y el Coppermine se encargue de crear la imagen/banner y guardarlo en el álbum correspondiente de "banners" (además de la imagen original).