jueves, 8 de octubre de 2009

Cómo hacer preguntas de manera inteligente

Webiando por la red me encontré con una interesante guía que nos explica como hacer correctamente una pregunta técnica por correo, en un grupo de noticias o en el foro de un sitio web: http://www.sindominio.net/ayuda/preguntas-inteligentes.html

Desearía que todos los que participan en listas, foros y otros medios similares leyeran esto antes de preguntar algo :P.


Se me queda en la memoria la siguiente frase:
Exageradamente "amigable" (de esa manera) o útil: Elige uno.

Hasta la proxima.

viernes, 18 de septiembre de 2009

Todo listo para el Software Freedom Day


Por segundo año se celebrará el Software Freedom Day en Panamá, este año contamos con participación de varias comunidades además del team ubuntu-pa que son: Fedora Panama, Open Source Panama - Revolution y Lin Open Software.

Gracias a la colaboración de muchos hemos logrado armar un buen evento este año y pese al problema con la sede original que logramos solucionar con el apoyo de nuestros amigos de la ULACIT y otros inconvenientes menores vamos a celebrar este evento en la fecha planeada.

Solo me resta desearles a todos un feliz Sotware Freedom Day.

Hasta pronto.

jueves, 20 de agosto de 2009

Integrando PHP5 y J2ME por medio de Web Services

Es algo difícil encontrar buena documentación sobre como crear una aplicación para móviles usando J2ME.
Por lo general todas asumen que ya tienes tu web service funcionando y listo para usarse, pero hay un problema, el soporte en dispositivos móviles que implementan la JSR-172 es limitado por lo que aunque tengas un archivo WSDL bien definido puedes toparte con que no es posible crear el cliente por que el WSDL tiene elementos no soportados.

Después de un rato de buscar encontré este sitio que tiene una documentación algo obsoleta pero me mostró dos herramientas claves NuSOAP para PHP y kSOAP para J2ME, además este otro sitio del que solo entiendo el código de ejemplo :-D

Manos a la obra:

Primero creamos nuestro web service en PHP para tal fin usaré la librería NuSOAP la versión 0.7.3.

La forma más simple de instalar NuSOAP es descargando el archivo comprimido desde el sitio del proyecto y extraerlo en la carpeta publica de nuestro sitio de pruebas, en mi caso quedó de la siguiente forma:

/var/www/ws/
|_nusoap-0.7.3
|_lib
| |_ nusoap.php y otros archivos
|_samples
| |_ varios ejemplos de como usar NuSOAP

creamos el archivo server.php con el siguiente contenido:


<?php
// include NuSOAP library
require_once('nusoap-0.7.3/lib/nusoap.php');

// Create Web Service Server
$server = new soap_server;

$server->configureWSDL('hello', 'urn:hello');
// Register Services
// (Add) $server->register('add');
$server->register('add', // method name
array('num1' => 'xsd:string', 'num2' => 'xsd:string'),// input parameters
array('result' => 'xsd:string'), // output parameters
'urn:hello', // namespace
'urn:hello#add', // soapaction
'document', // style
'literal', // use
'Add num1 and num2' // documentation
);

// (Substract)
$server->register('substract', // method name
array('num1' => 'xsd:string', 'num2' => 'xsd:string'),// input parameters
array('result' => 'xsd:string'), // output parameters
'urn:aritmatikawsdl', // namespace
'urn:aritmatikawsdl#substract', // soapaction
'rpc', // style
'encoded', // use
'Substract num1 and num2' // documentation
);

// (Hello) $server->register('hello');
$server->register('hello', //method name
array('name' => 'xsd:string'), // input parameters
array('return' => 'xsd:string'), // output parameters
'urn:hello', // namespace
'urn:hello#hello', // soapaction
'rpc', // style
'encoded', // use
'Says hello to the caller' // documentation
);

// Define functions
function hello ($name){
return "Hello $name";
}

function add ($num1, $num2){
return $num1 + $num2;
}

function substract ($num1, $num2) {
return $num1 - $num2;
}

$server->service($HTTP_RAW_POST_DATA);
?>

Para el cliente J2ME necesitamos la librería kSOAP2 2.1.2 (http://sourceforge.net/projects/ksoap2/), que pesa aproximadamente unos 41 KiB, la descargamos y la incluimos en el proyecto.

Creamos un MIDLet llamado NuSOAPClient con el siguiente contenido:

package midlet;


import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransport;
import org.xmlpull.v1.XmlPullParserException;
/**
* @author eivar
*/
public class NuSOAPClient extends MIDlet {
private Display display;
//private String url = "http://0.0.0.1/ws/service.php";
private String url = "http://localhost:80/ws/service.php";
private TextBox textbox = null;

public NuSOAPClient() {
display = Display.getDisplay(this);
}

public void startApp() {
try {
testWebService();
} catch (Exception ex) {
System.out.println(ex);
}
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void testWebService() throws Exception {
StringBuffer stringBuffer = new StringBuffer();
TextBox textBox = null;

// add service call
String method = "add";
SoapObject client = new SoapObject(url, method);
client.addProperty("num1", "5");
client.addProperty("num2", "5");
HttpTransport transport = new HttpTransport(url);

// creating the Soap Envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = client;

// call the WebService
try {
transport.call(method, envelope);
} catch(XmlPullParserException io) {
System.err.println(io);
}

// format the Result
String result = envelope.getResponse().toString();
stringBuffer.append(result);

// display results in textbox
textBox = new TextBox("call to add(5, 5) returns ", stringBuffer.toString(), 1024, 0);
display.setCurrent(textBox);
}
}

Ahora solo nos queda ejecutar la aplicación y ver los resultados.
Para desarrollar este proyecto se usó NetBeans 6.5 y Java Wireless Toolkit 2.5.2.

Les dejo algunas capturas de pantalla:







jueves, 30 de julio de 2009

Semana de la Ingeniería en la ULACIT

El pasado 28 de Julio de 2009 El Ubuntu Loco-Team de Panamá fue invitado a participar de la semana de ingeniería de la ULACIT.

El evento comenzó aproximadamente a las 6:30pm con la presentación del profesor de la ULACIT, el Ing. Geinier Miranda con el tema “Seguridad Informática en la empresa”. La verdad que al igual que comenta Di3go fue muy decepcionante que confundiera las definiciones de Hacker y Cracker.

Seguido a esto Ramy Deeb dictó una conferencia que me gustó mucho en verdad: “Cómo Economizar dinero en el gobierno con virtualización y software Open Source “

Al final hablé yo sobre el tema “Software Libre en la Educación” admito que pudo ser mejor mejor de hecho estoy muy de acuerdo con los comentarios de dMaggot sobre esto.

Cuando el Evento terminó nos reunimos para hablar sobre la organización del Software Freedom Day en la cafetería de la ULACIT:

  1. Buscaremos un lugar diferente con el propósito de llegarle a otras personas.
  2. Los temas de este año serán:
  • Libertad de Software (ya que es el día de la libertad de software)
  • El proyecto Ubuntu y su participación en la idea de la libertad de Software
  • 1 o 2 charlas demostrativas de alguna herramienta.
  • Stands de exhibición (Computadoras de los Ubunteros para que las gente las use y se muestren proyectos, etc)
Espero que este año la celebración de FSD sea mucho mejor a la del año pasado.

martes, 28 de julio de 2009

Proyectos de EHealth

Durante mi viaje a Nicaragua para participar en el ECSL, conocí sobre una iniciativa, que busca desarrollar proyectos de ehealth usando Sotware Libre en dicho país.

Apenas estoy empezando a involucrarme en el proyecto pero me parece algo muy interesate.

Hay mucho por aprender, con la ayuda de los que participan en el proyecto (lastima que aun no tengan sitio web) he estado leyendo sobre el tema.

Algunos terminos interesantes que puedo resaltar son:

miércoles, 1 de julio de 2009

Cifrando conversaciones en Pidgin

Pidgin-Encryption, es un complemento para el pidgin que nos permite tener comunicarnos de una forma más segura. Pueden encontrar más información en su página oficial:

http://pidgin-encrypt.sourceforge.net/

Este complemento permite cifrar de forma transparente los mensajes instantáneos de punto a punto con el algoritmo RSA. Es muy fácil de usar y muy seguro. Automáticamente crea un par de llaves, pública y privada, cuando se carga el plugin. De la misma forma, transmite la llave pública automáticamente a los usuarios con los que deseas hablar.

Los pasos para instalarlo en Ubuntu son:

1. Instalar el paquete usando apt-get, aptitude o synaptic, por ejemplo con apt-get ejecutamos en una consola el siguiente comando:

sudo apt-get install pidgin-encryption

2. Activamos el complemento en pidgin usando el menú
Herramientas->Com
plementos.















Buscamos ya activamos el plugin






















Ahora solo nos falta abrir una ventana de conversación con la persona a la que deseamos mandar mensajes cifrados y presionamos en el candado que aparece en la parte superior de dicha ventana. Nos deben aparecer una serie de dialogos a los que les damos OK y listo. Está de más decir que es necesario que ambos tengan el plugin instalado y funcionando.

Activación de la conversación






Gracias a Cjenkins por el post original: Habla Encriptado con Pidgin

La Declaración de Estelí.

Firmada por los asistentes al I Encuentro Centroamericano de Software Libre 2009.
Declaración de Estelí

-I-

Definiciones: Software Libre: Programa de computación cuya licencia
garantiza al usuario acceso al código fuente del programa y lo
autoriza a ejecutarlo con cualquier propósito, modificarlo y
redistribuir tanto el programa original como sus modificaciones, sin
tener que pagar regalías adicionales a los desarrolladores previos.

Estándares Abiertos: Especificaciones técnicas, publicadas y
controladas por alguna organización que se encarga de su desarrollo,
las cuales han sido aceptadas por la industria, estando a disposición
de cualquier usuario para ser implementadas en un software libre u
otro, promoviendo la competitividad, interoperatividad o flexibilidad.

- II -

Preámbulo: Nosotros y nosotras, integrantes de la comunidad
centroamericana de personas usuarias, desarrolladoras y activistas de
Software Libre nos hemos reunido en la ciudad de Estelí, Nicaragua,
con los siguientes objetivos: reunir experiencias de organización por
parte de las comunidades, compartir conocimiento técnico, crear lazos
sociales y cohesión de ideas en la región y fijar objetivos comunes
para el impulso del Software Libre en Centroamérica.

- III -

Tomando en cuenta que todos los gobiernos de nuestros países han
firmado y ratificado la Carta Iberoamericana de Gobierno Electrónico[1],
enfatizamos en la importancia de recordar las afirmaciones de dicha
Carta en términos de recomendar: "el uso de Estándares Abiertos y de
Software Libre en razón de la seguridad, sostenibilidad a largo plazo
y para prevenir que el conocimiento público no sea privatizado."

- IV -

Considerando también que el uso del Software Libre y Estándares
Abiertos

1. Contribuye a fortalecer a la industria nacional de software.

2. Contribuye efectivamente con la reducción de la brecha social y
tecnológica.

3. Permite la interoperabilidad de los sistemas de información del
Estado para dar respuestas rápidas y oportunas a los ciudadanos y
ciudadanas, mejorando la gobernabilidad y la autonomía.

4. Permite mejorar los niveles de seguridad de los sistemas.

5. Es un instrumento para alcanzar la soberanía y autonomía
tecnológica, con una mejor inverisón de los recursos públicos.

- V -

Acordamos instar a los gobiernos, instituciones educativas, centros de
investigación, sociedad civil y a todas las instancias relacionadas de
Belice, Costa Rica, El Salvador, Guatemala, Honduras, Nicaragua, y
Panamá a que:

1. Se establezca como política de Estado, el uso de Estándares Abiertos
y de Software Libre en la Administración Pública.

2. Se fomente la investigación y el desarrollo de software desde un
modelo de licenciamiento, construcción y acceso libres, desarrollado
con Estándares Abiertos, procurando incentivos especiales para esos
fines.

3. Se promueva el uso generalizado del Software Libre y Estándares
Abiertos en la sociedad, capacitando e instruyendo a los usuarios y
usuarias.

4. Se establezcan políticas para incluir el Software Libre desarrollado
con Estándares Abiertos, en los programas de educación básica y
diversificada, bajo los principios de una Educación Tecnológica
inclusiva, creativa y solidaria.

5. Se establezcan dentro de los planes y programas de fomento e
implementación de Software Libre y de Estándares Abiertos, mecanismos
que respeten la identidad, diversidad de contextos, culturas, etnias y
géneros.

6. Se procure el desarrollo de sistemas operativos y aplicaciones
adecuadas para poblaciones específicas según sus características
étnicas, culturales y socioeconómicas.

7. Que las inequidades sociales en el acceso a la educación y la
tecnología pueden reproducir los modelos patriarcales y que el
Software Libre puede ser una herramienta que aporte a la
participación, autonomía y empoderamiento de las mujeres en la
sociedad.

8. Que no se permita el patentamiento de software y de algoritmos, pues
atenta contra el desarrollo tecnológico de nuestros países y las
oportunidades de nuestra población para convertirse en sujetos activos
en la construcción del conocimiento.

9. Que las instituciones públicas deben compartir la información
referente a solicitudes de patentamiento y modificaciones a las leyes
de derechos de autor, para que esos datos sean accesibles de manera
gratuita y estén disponibles a través de medios digitales, utilizando
Estándares Abiertos.

10. Que la información y los estudios realizados en universidades e
instituciones públicas deben estar disponibles para su uso,
aprendizaje y mejoramiento por ser de interés público.

11. Que los currículums universitarios deben incorporar dentro de sus
asignaturas, los esquemas de licenciamiento libres.

12. Que las universidades deben incluir dentro de las carreras afines
al desarrollo de sistemas, los conocimientos básicos acerca de las
nociones generales de derechos de autor y esquemas de licenciamiento.

Dado en la ciudad de Estelí, Nicaragua, a los veinte días del mes de
junio de dos mil nueve.

---
[1] Aprobada por la IX Conferencia Iberoamericana de Ministros de
Administración Pública y Reforma del Estado y ratificada en la la XVII
Cumbre Iberoamericana de Jefes de Estado y de Gobierno en Santiago,
Chile, el 10 de noviembre de 2007

Lo que otros tienen que decir del ECSL

Es imposible para una sola persona cubrir todo que pasó en el ECSL, por eso es importante ver lo que otros tienen que comentar, bueno aquí coloco un grupo de enlaces hacia blogs de otros centroamericanos que participaron en el encuentro:

Dia cero por Adario
Resumen por Luis Alvarado: día 0, día 1, día 2, día 3, día 4.
Recopilación de Fitoria.

Videos del ECSL:
Videos en www.archive.org
Videos en el blog de Gunnar Wolf


Algunas fotos del ECSL:
http://www.flickr.com/photos/15593136@N07/
http://picasaweb.google.com/jimbodoors94/ECSL#

Primer Ubucon Centro Americano en el ECSL

Durante el primer Encuentro Centroamericano de Software Libre (ECSL) nos reunimos los lideres de las comunidades locales de ubuntu en centroamerica para discutir varios temas relacionas con nuestras comunidades, metas para este año 2009 y los problemas que enfrentamos.

Producto de dicho ubucon surgieron varias iniciativas que planeamos desarrollar:
  • Dado que actualmente, solo existen dos LoCo Teams aprovados en la región de centroamerica Ubuntu Nicaragua y El Salvador, estos ayudaran a los demas teams para que sean oficialmente aprovados.
  • Se creará un único foro Centro Americano de soporte en lugar de seis y redirecionaremos a todos los usuarios hacia el, de modo que podamos beneficiarnos de los conocimientos de una comunidad mucho mayor.
  • Se creará un único canal irc de soporte #ubuntu-centroamerica y los canales locales será conservados para reuniones y temas internos de cada LoCo Team.
  • Se modificará los diferentes web sites de los teams en centro america, creando una única plantilla para Drupal para los seis países.
  • Participaremos en el Ubuntu Global Bug Jam como Ubuntu Centro America en un esfuerzo conjunto.
Bueno principalmente lo que buscamos es colaborar entre los paices de la región y aprender mutuamente.

Pueden ver más detalles en:
Resultados del Primer Ubucon Centroamerica (en ingles)
Resumen de José E. Dávila del Ubucon
Resumen de Diego Trucios

domingo, 28 de junio de 2009

Le gané al GNU Chess :)

Bueno hace algún tiempo ya empecé a jugar ajedrez contra el GNU Chess en mis ratos libres, aprendiendo y practicando este interesante juego.

Me costó bastante al inicio y perdía de forma muy humillante :P pero... hoy por fin gané! Lo admito no fue la mejor partida y además estaba en modo fácil pero gracias a que el glChess me permite guardar las partidas podré revisar que fue lo que hice, a continuación el contenido del juego guardado ~/ajedrez_partidas/versus_gnuchess_easy.pgn :

[Event "Humano contra GNU Chess"]
[Site "?"]
[Date "2009.06.28"]
[Round "?"]
[White "Blancas"]
[Black "Negras"]
[Result "1-0"]
[BlackAI "GNU Chess"]
[BlackLevel "easy"]

1. Nf3 Nf6 2. g3 d5 3. d4 Nc6 4. c3 Bf5 5. Na3 Be4 6. Nb5 e6 7. h4 Be7 8. e3
O-O 9. Bd3 Bxd3 10. Qxd3 Re8 11. Bd2 Rc8 12. O-O-O Ne4 13. Rhf1 a6 14. Na3 Bxa3
15. bxa3 Rb8 16. a4 Rc8 17. a3 Rb8 18. g4 Rc8 19. Ng5 Nxg5 20. hxg5 Qxg5 21.
Rg1 Rcd8 22. f4 Qe7 23. c4 dxc4 24. Qxc4 Qxa3+ 25. Kc2 Rd5 26. Qd3 Qa2+ 27. Kc1
Qxa4 28. g5 b5 29. Bc3 b4 30. Bb2 Qa5 31. Rd2 Kh8 32. Kc2 Qa2 33. Ra1 Nxd4+ 34.
Kd1 Qb3+ 35. Qxb3 Nxb3 36. Rxd5 exd5 37. Rxa6 Rxe3 38. Bc1 Nxc1 39. Kxc1 c5 40.
Ra8+ Re8 41. Rxe8# 1-0


Hasta la próxima.

viernes, 26 de junio de 2009

Resumen del primer ECSL

Bueno por fin tengo algo de tiempo para escribir sobre los gratos momentos compartidos junto a la comunidad centroamericana en el ECSL.
Gracias a Mauro Rosero por escribir un muy completo resumen sobre lo acontecido en dicho encuentro y por dejarme publicarlo en mi blog.

1. Ver como las universidades de Costa Rica apoyan a las comunidades de software libre del país, a tal punto que asumieron el patrocinio de la delegación costaricense cuyo número de asistentes fue aproximadamente de 20, de las diferentes comunidades ticas. También expusieron los voceros de Costa Rica como las universidades le brindan espacio e infraestructura para que operen y de paso desarrollan proyectos en conjunto.

2. Otra iniciativa interesante es la Revista Centroamericana de Software Libre desarrollada por la Comunidad de Honduras, muy completa e interesante. Tal vez su única crítica sería el bajo contenido en temas de filosofía, pero igual es un proyecto a emular o colaborar. Traje algunos pocos ejemplares para los interesados y creamos el canal de comunicación para cooperar con artículos, así para cuando salga una nueva edición se nos envíe un número plural.

3. Se desarrollaron diferentes mesas temáticas de la cual salió un documento denominado la "Declaración de Estelí" donde resume los acuerdos y compromisos asumidos en este evento.

4. Se dio una mesa improvisada de proyectos generales, donde se trazaron acuerdos de colaboración técnica entre representantes de varias ONG's que asistieron y formaron parte de esta mesa de trabajo en el área de salud, educación, análisis de riesgos e inclusión de discapacitados. En el área de salud quedamos en colaborar con una ONG basada en Nicaragua para un programa de intercambio de ayuda en programación en sistemas libres de atención como OpenMRS y ellos nos colaborarían en lo que pudieramos conseguir el espacio para que nos hablen sus experiencias en el uso de OpenMRS y otras alternativas de software libre en la salud. De hecho se puede crear un plan de implementación con su asesoría para nuestros hospitales.

En el área de educación hicimos contactos para traer a Panamá especialistas en Sugar, que es la plataforma donde opera la OLPC y desarrollar proyectos encaminados a crear una plataforma educativa basa en software libre con herramientas como SCRATCH, SUGAR, MOODLE orientado a la enseñanza básica. Logramos contactos técnicos y de gestión con los que en los próximos días estaremos trabajando para el desarrollo de una propuesta y plan de acción para los países que nos involucramos en esta temática.

Colaboraremos e interactuaremos con la Universidad de Costa Rica y los grupos de usuarios de Costa Rica y México para participar en proyectos como EDUSOL, donde ya nos inscribimos para participar.

Espero que en la próxima reunión nacional que hagamos podamos comentar más al respecto de estos temas y ver los proyectos de interés donde los que no asistieron puedan involucrarse. Hemos articulado como región centroamericana un conjunto de proyectos interesantes que ahora pretendemos ejecutar como comunidad centroamericana y ha sido un mandato de este encuentro hacer el lobbie respectivo para convertirlos en realidad con los actores interesados en cada país.

5. Lo más importante de este encuentro fue la camaradería, fue bastante diferente a otros encuentros a que se socializó muchísimo y fue muy proactivo, el lugar geográfico del encuentro fue en un Centro Turístico, de aprendizaje tecnológico para niños y promoción natural, entre otras cosas. Un lugar campestre con un clima muy bueno, un paisaje espectacular y gente muy amable.

Aquí les dejo el enlace a las fotos:

6. Eivar Montenegro y mi persona quedamos como los representantes por Panamá para el Comité Organizador del próximo año, ya que se decidió que debían incorporarse por lo menos 2 representantes por país. Aún no se ha seleccionado el país sede para el próximo año, pero existen propuestas de Costa Rica y Salvador. Tentativamente, los que asistimos por Panamá consideramos no hacer una propuesta hasta conversar con todos ustedes, pero pensamos que un mejor momento sería el 2011 y apoyar la propuesta de sede de Costa Rica.

Bueno hay mucho más que contar, creo que fue una experiencia que no tiene precio, y los que asistimos hemos regresado con un claro concepto y objetivo de trabajar en el desarrollo y para el desarrollo de nuestra comunidad con quiénes quieran realmente apoyar sin imposiciones y agendas preestablecidas. Encontramos que hay otras fuentes de recursos y apoyo que tienen un compromiso más claro del movimiento y que estuvieron allí con nosotros de verdad, si las organizaciones que están en nuestro país siguen actuando a espalda de nuestras organizaciones.

7. Me siento muy feliz de haber regresado a Panamá, toda vez que nos quedá afrontar la visita de Richard Stallman, como uno de los compromisos más cercanos, pero triste porque el evento terminó y por algún tiempo solo compartiré virtualmente el espacio de aquellos amigos que conocimos en Estelí.

Mauro Rosero.
Por allí estaré escribiendo más acerca del ECSL y las diferentes iniciativas que surgieron del mismo.

Saludos.

jueves, 11 de junio de 2009

Encuentro Centroamericano de Software Libre








El primer encuentro centroamericano de software libre se está acercando, después de muchos meses de espera ya solo faltan solo 6 días. Este evento promete mucho, con charlas técnicas, mesas de trabajo y tiempo de intercambio cultural en especial el "BarCamp sin Camp".

Ya tengo casi todo preparado: mi pasaporte, permiso del trabajo, etc para el viaje y hoy paso a comprar mi boleto :), estoy aún más emocionado porque es mi primer viaje fuera del país.

Recuerdo cuando surgió la famosa Gripe Porcina tenía mis dudas si se cancelaría el ECSL.

Bueno lo importante ahora es que pronto estaremos por allá muchos amigos de las distintas comunidades de centro y sur américa compartiendo anécdotas y discutiendo sobre el futuro del Software Libre a nivel regional.

Gracias al Grupo de usuarios GNU/Linux Nicaragua por organizar todo.

Para más información sobre el encuentro pueden visitar el sitio oficial

lunes, 20 de abril de 2009

FLISOL 2009


El 25 de Abril del presente año se celebrará el Festival Latinoamericano de Instalación de Software Libre, con el lema "¿Tu crees que eres libre si tu software no lo es?"
que se realizara en varias ciudades de la República de Panamá y latinoamérica,.
Muchas comunidades se han reunido para coordinar y celebrar este evento, al cual invitamos a todos a participar desde su localidad más cercana.

Los detalles del FLISOL en Panamá: http://www.installfest.net/FLISOL2009/Panama

El wiki del FLISOL con información de todos los países participantes: http://www.installfest.net/FLISOL2009

viernes, 13 de febrero de 2009

Cómo usar SyntaxHighlighter 2.0 en Blogger

SyntaxHighlighter: es una librería completa para resaltar código (syntax highlight) desarrollada en JavaScript que permite dar una aspecto visual mucho más agradable a un fragmento de código incrustado en un sitio web, blog, wiki, etc.

Este proyecto iniciado en 2004 a ganado ya mucha aceptación y recientemente, a inicios de este mes (Feb. 2009) a lanzado su nueva versión: SyntaxHighlighter 2.0. De acuerdo al sitio oficial del proyecto la versión 2.0 representa una renovación casi completa (código reescrito, limpieza, optimización, estandarización y nuevas características).

Existe un post (en ingles) sobre como usar dicha librería javascript en blogger, aunque este post data de Agosto de 2007 es una buena referencia, aquellos que lo deseen lo pueden revisar en el siguiente enlace: http://developertips.blogspot.com/2007/08/syntaxhighlighter-on-blogger.html

A continuación los pasos necesarios:
1. Descargamos SyntaxHighlighter aquí y buscamos un buen servidor donde guardar los archivos incluidos en la librería.
2. Ingresamos en BLOGGER, y editamos nuestra plantilla: "Personalizar > Diseño > Edición de HTML", yo de paso aproveché para dar una nueva imagen a mi blog. :-)
Modificamos el header de la plantilla como sigue:
<!--syntaxHishlighter begin-->
<link href="http://[HOST_SITE]/shCore.css" rel="stylesheet" type="text/css">
<link href="http://[HOST_SITE]/shThemeDefault.css" rel="stylesheet" type="text/css">
<script src="http://[HOST_SITE]/shCore.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushCpp.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushCSharp.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushCss.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushJava.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushJScript.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushSql.js" type="text/javascript">
<script src="http://[HOST_SITE]/shBrushXml.js" type="text/javascript">
<script type="text/javascript">
SyntaxHighlighter.config.bloggerMode=true;
SyntaxHighlighter.config.ClipboardSwf = "http://[HOST_SITE]/clipboard.swf"; SyntaxHighlighter.all();
</script>
<!--syntaxHishlighter end-->
Aquí es importante resaltar que la configuración SyntaxHighlighter.config.bloggerMode es necesario para que todo funcione correctamente en Blogger.

3. Ahora cada fragmento de código que deseemos resaltar lo colocamos dentro un tag <pre>, por ejemplo:
<pre class="brush: js; html-script: true;  auto-links: false">
alert("hola mundo!");
</pre>
Con esta está ya todo listo.

Saludos.

Actualización: Google Page Creator será reemplazado por Google Site y ya no es una buena opción para guardar los archivos necesarios para usar el SyntaxHighlighter.

Actualización 02/01/2011: Al parecer la opción light:true hacía que no se cargaran los controles para copiar el código de ejemplo por lo que la quité :).

jueves, 12 de febrero de 2009

Code templates en NetBeans

Los Code Templates o Plantillas de código son una característica muy útil para cualquier programador, yo he usado esta funcionalidad en gedit y en NetBeans.
¿Cómo funcionan los Code Templates?

Básicamente escribes una palabra, presionas una tecla que hace las veces de disparador y el editor automáticamente ingresa una o varias líneas de texto que de otro modo habrías tenido que escribir.

Pueden ver esta y otras características de NetBeans aquí.

nota: al escribir este post estoy utilizando NetBeans 6.1

Antes de proseguir debemos definir algo sobre las plantillas:
Los Parámetros: cada plantilla puede contener varios de estos, los cuales constan de un nombre y varios hints (sugerencias) opcionales, ejemplo:

${param_name default="p1"}
Para una lista completa de las opciones consultar aquí.

¿Cómo se usan Code Templates en NetBeans?

  1. Primero hay que conocer las plantillas ya existentes, para ello en NetBeans ingresamos a las opciones, en el menú Tools->Options y escogemos la categoría Editor y la solapa (tab) Code Templates.
    Podemos probar revisar los detalles de las plantillas existentes, eliminarlas y crear otras nuevas.
    Se puede observar que existe una lista con los diferentes
    lenguages para los cuales se podemos crear Plantillas, en mi caso usaré Java.

  2. Vamos a definir dos plantillas nuevas así que presionamos el botón New, se nos muestra un dialogo donde debemos ingresar la abreviatura que será usada para identificar la nueva plantilla, luego hacemos clic en OK, la plantilla es creada y queda seleccionada para que ingresemos el texto expandido por el cual será reemplazada la abreviatura
    en el editor, opcionalmente podemos definir una descripción si lo deseamos (repetiremos estos pasos para crear la segunta plantilla).
    Definiremos las plantillas de la siguiente forma:
    Abreviatura: gpl
    Texto Expandido:


    /*
    * ${programName default="miAplicacion" } ${briefIdea default="Mi gran primera aplicacion"}.
    * Copyright (C) ${year} ${author}
    *
    * This program is free software: you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation, either version 3 of the License, or
    * (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program. If not, see <http://www.gnu.org/licenses/>.
    */



    Abrevitura:
    getset
    Text Expandido:



    ${methodType default="String"}get${methodName default="Value"}();
    voidset${methodName}(${methodType} ${paramName default="value"});

  3. Cerramos la ventana de opciones presionando OK.

  4. Debemos tener algún archivo donde aplicar los templates, trabajaremos con una interfaz, no voy a explicar en este post como crear proyectos o archivos en NetBeans pero se puede encontrar más sobre ese tema aquí.

  5. Ya que estemos editando nuestra recién creada interfaz podemos usar las plantillas que acabamos de crear:

    • La primer plantilla permite agregar al archivo actual la licencia gpl, nos desplazamos al inicio del documento y escribimos "gpl" (sin las comillas) e inmediatamente presionamos tab (el disparador para los code templates), el editor reemplazará la palabra gpl por el contenido del Texto Expandido que definimos anteriormente y colocará el cursor en donde hemos colocado el parámetro programName, presionando tab podemos pasar al siguiente parámetro.
      Al llegar al ultimo parámetro, presionado tab se regresa al primero, para terminar la edición presionamos ENTER.

    • La segunda plantilla permite definir un par de métodos para trabajar con un campo siguiendo el estándar en Java (set para establecer y get para obtener), en nuestra plantilla las funciones carecen de código encerrado entre corchetes ({}) porque tiene como objetivo ser usada en una interfaz, si deseamos adaptar esta plantilla para usarla en una clase normal se deben agregar los corchetes, dejaré esto al lector a modo de ejercicio.
      Lo interesante de esta plantilla es que los parámetro methodType y methodName aparecen en más de una ocasión y al editarlo en el lugar donde aparecen primero su valor será cambiado en todos los lugares donde se encuentre en la plantilla de esa forma lo escribimos una única vez.
      Es importante señalar, también, que incluso se puede escribir algo dentro de la función por ejemplo definiendo el código por defecto para el método get:

      return this.${methodName};

Con esto concluimos, cada quien puede crear las plantillas que mejor se adapten a su estilo y necesidades, como ya he mostrados se puede reducir el tiempo de escribir una gran cantidad de
líneas de código a una simple abreviatura y cambiar unos cuantos parámetros.

Saludos.

lunes, 26 de enero de 2009

Las tramas en los mangas

Soy un fanático del dibujo, es una de las cosas que más me gusta, hace ya algunos años que me he vuelto fanático también de los mangas japoneses y la forma como te transportan a traves de aventuras interesantes con: acción, romance, conflictos de todo tipo, etc.
Recientemente me encontré con un post donde se hace una clasificación minusiosa de las "tramas" usadas por los mangaka (artísta que dibujan mangas) para transmitir emociones hacia los lectores.

Espero que sea del agrado de todo aquel que lo lea, les dejo el artículo en el siguiente enlace: http://www.nishibu.es/2007/07/las-tramas-desconocidas-e.html