Plone: un sistema ágil y potente para de gestión de contenido
Baterías incluidasSoporta Linux, Windows, Mac OS X, FreeBSD, Solaris. Los programas de instalación le permiten ponerlo en marcha en sólo unos minutos. No requiere procesos de configuración complejos.
Habla su idiomaDisponible en más de 35 idiomas, Plone fue diseñado desde el inicio para gestionar contenido multilingüe. Incluye chino, japonés, e incluso idiomas con escritura de derecha a izquierda, como el árabe o el hebreo, de forma fácil.
El niño más bueno de la claseEl equipo de Plone incluye expertos líderes en usabilidad que han hecho que trabajar con Plone sea fácil y productivo.
A todo el mundo le gusta Plone“Plone fue el ganador del premio del laboratorio de eWeek. Este producto de código abierto es de una de las mejores soluciones para los portales e intranets de empresas”.
— eWeek, Número Abril de 2006
No estorba y le deja escribirPlone incluye un potente editor gráfico de texto que permite dar formato al texto e insertar imágenes y enlaces. Si está acostumbrado a trabajar con programas de ofimática, se sentirá cómodo con él.
Buscador de texto completo al instanteTodo el contenido está disponible inmediatamente para realizar búsquedas, incluso documentos Word y ficheros PDF. El sistema de búsqueda en vivo (LiveSearch) muestra los resultados a medida que se teclea la palabra o frase. Pruébelo en la casilla de búsqueda en este sitio.
Al subir una imagen, automáticamente se redimensiona a varios tamaños, lista para utilizarla en sus contenidos. No es necesario Photoshop.
Obtenga la mejor aparienciaEs fácil cambiar el aspecto de Plone. Simplemente puede integrarse con su imagen actual, o le permite crear un nuevo estilo totalmente propio.
Potente motor de flujo de trabajos (workflow)Haga que los procesos de su negocio formen parte del flujo de trabajo del documento — complementado por una gestión de la seguridad a prueba de errores.
Velocidad y escalabilidadPlone cuenta de serie con capacidad de realizar clústers e integrarse inteligentemente con proxys de caché. inteligente de caché proxy.
Seguridad y flexibilidadUn modelo de seguridad sofisticado, basado en roles, da seguridad a sus contenidos. La arquitectura sandbox de Plone asegura que, incluso si su sistema estuviera comprometido, los intrusos no tendrán acceso a su servidor o a su red.
Carpetas inteligentes y actualizaciones inteligentes. Plone produce automáticamente noticias RSS desde carpetas, resultados de búsqueda y más — la manera ideal de permanecer en la cima de la explosión de la información y personalizar la entrega de información.
AccesibilidadReúne o supera los estándares de accesibilidad de la Sección 508 del Gobierno de los Estados Unidos y WAI-AA de W3C para personas con alguna discapacidad motora o con dificultad de lectura. Todo el uso de Javascript tiene un modo alternativo que funciona en cualquier navegador.
Excelente visibilidad en los motores de búsquedaXHTML válido 100% y CSS mantienen una buena relación con los motores de búsqueda y los navegadores. Los sitios Plone están constantemente bien clasificados en los resultados de búsqueda en Google.
Juega bien con otrosLDAP, SQL, SOAP, Web Services (WSDL) y WebDAV — Plone trabaja con todos ellos.
Autenticación basada en agregadosFácil integración con LDAP, Active Directory y bases de datos SQL. Diga un nombre y seguro que Plone puede dialogar con él.
Asistencia mundialSi usa la documentación online, listas de correo y chats — u otros servicios de los cientos de empresas de todo el mundo que dan soporte Plone — nunca estará solo.
Código abierto, estándares abiertosPlone está disponible bajo la misma licencia de código abierto que Linux, y usa el lenguaje de programación Python y el servidor de aplicaciones Zope, ambos también de código abierto. Esto evita dependencia del vendedor, costes de licencias, y le da un futuro previsible — y la libertad de innovar.
Extensa documentación, en prensa y onlineActualmente, hay cinco libros sobre Plone publicados, que ha sido traducidos al alemán, japonés y algunos otros idiomas.
Innovador y extensibleHay disponibles cientos de productos adicionales — foros, gestores de incidencias, blogs y herramientas de colaboración.
Protegido y maduroPlone existe desde hace más de cinco años. La organización sin ánimo de lucro Plone Foundation es la propietaria y protege la propiedad intelectual y las marcas. Plone también tiene respaldo legal de los expertos del Software Freedom Law Center.
En buena compañíaOrganizaciones diversas como NASA, Oxfam, eBay, Trolltech, Nokia, Utah State University, la CIA y Novell utilizan Plone para la gestión de contenidos. Nos encantaría daros la bienvenida a la comunidad Plone.
Plone es su arma secretaTanto si se usa para la intranet de una empresa como para un sitio web de una comunidad, Plone cumple.
Fuente
Plone: un sistema ágil y potente para de gestión de contenido
La lógica de TopCoder es un poco distinta a la de los maratones de programación de la ACM, entre las diferencias encontramos que, existe un sistema diferente de evaluación de problemas (por puntajes y tiempo), e incluso de formato en el código fuente (Se definen reglas estrictas acerca de los nombres de las clases y métodos).
Para ingresar en TopCoder es necesario tener Java instalado en nuestra maquina, ya que funciona mediante Applets o Java Web Start (el cual recomiendo). A pesar de que el sistema (de ahora en adelante “la arena”) funcione muy bien, la parte de edición de código fuente no es la mas idonia para trabajar en competencias bajo presión.
Para solucionar este problema, los programadores de TopCoder ofrecieron la posibilidad de implementar Plugins que se adaptan a la arena y permiten mejorar los editores de texto (o incluso no usarlos del todo). A continuación explicaremos como instalar y configurar algunos Plugins para mejorar nuestra productividad a la hora de realizar competencias dentro de TopCoder.
Para obtener la aplicación de la arena, debemos acceder a este link (Como indicamos anteriormente, se debe tener Java instalado para que este funcione).
En el caso de que no se encuentre registrado en el sistema, siga las indicaciones de la aplicación para registrarse
Entre los Plugins que puedo recomendar, se encuentran CodeProcessorv2.0, FileEdit y moj
Para instalar los Plugins dentro de la arena se deben seguir los siguientes pasos:
Acceder al menú de “Options” y luego la opción “Editor”
Al abrirse la ventana de editores, debe presionar click en el botón “Add”, esto abrira otra ventana donde deben ingresar el nombre del editor (CodeProcessor en nuestro caso), en el campo EntryPoint, debemos colocar “codeprocessor.EntryPoint”, y en el campo classpath, al presionar el botón “Browse” debe buscar todos los Plugins (archivos .jar) que descargo en el paso anterior
Una vez instalado el nuevo editor, presionamos click en el botón “Configure”, se abrirá una nueva ventana donde se debe especificar en el campo “Editor EntryPoint” el valor “fileedit.EntryPoint”, luego presionamos el botón “Add” y en la nueva fila creada asignamos el valor “moj.moj”. Lo que hacemos aquí, es usar CodeProcessor como un manejador de Plugins, que permite usar varios Plugins (en este caso FileEdit y moj) simultaneamente.
Para configurar los plugins de FileEdit y moj, se debe presionar a los botones “Configure”, ahi se tendrán diferentes opciones dependiendo de cada Plugin
Para finalizar, ingrese a la configuración de FileEdit, y en la pestaña de “Code Template”, en la opción de C++, ingrese el siguiente contenido
$BEGINCUT$
/*
$PROBLEMDESC$
*/
$ENDCUT$
#line $NEXTLINENUMBER$ "$FILENAME$"
#include "string"
#include "vector"
#include "algorithm"
#include "map"
#include "iterator"
#include "iostream"
#include "sstream"
#include "cstdio"
#include "cmath"
#include "cstdlib"
#include "queue"
#include "stack"
using namespace std;
class $CLASSNAME$ {
public:
$RC$ $METHODNAME$($METHODPARMS$) {
}
};
$BEGINCUT$
$TESTCODE$
$DEFAULTMAIN$
$ENDCUT$
Una vez instalados y configurados los Plugins, al momento de abrir un problema dentro de la arena, verá que el editor de texto no se encuentra en el programa de la arena, mas bien se muestra un log de acciones. Lo que ocurre es que el contenido del problema es descargado, y con este se genera un archivo que contendrá el enunciado del problema, junto con una implementación que contiene el template establecido en la configuración del FileEdit (que cambiará dependiendo del problema) y un main que ejecuta las pruebas del problema.

Si se encuentra en Mac OS X, puede usar este script que implementé (basado en rstakeout) que se encarga de compilar y ejecutar los archivos .cpp modificados, y luego mandar mensajes via Growl. En el momento que el programa cumpla con todas las pruebas exitosamente, saldrá un mensaje diciendo “Send It”. Para enviarlo, sólo debes presionar el botón “Compile” en la arena, y luego al botón “Submit” (Reflejados en la figura anterior).

La carita verde es una imagen que configuré manualmente, si quieren tener algo parecido por favor revisen el código fuente y establezcan el lugar donde se encuentra la imagen que quieren usar, las caritas se encuentrán aquí.
Espero que estos tips les ayuden a mejorar su rendimiento en TopCoder…
Es lamentable que a una herramienta de desarrollo de software o a un lenguaje se le tilde de esto o de aquello, sólo por desconocimiento. Pero lo peor es que esto se convierta en un trabajo de investigación (sin mucha base).
Mi argumentos reflejan lo que siempre he pensado del fanatismo de los desarrolladores. ¿Y usted que opina?
]]>Por supuesto estaba el problema de los drivers, el monitor por sí solo es un mundo, etc. Sin embargo después de muchos fines de semana sin tiempo para respaldar, reparticionar, instalar y configurar, por fin me dediqué a instalar Ubuntu 8.04, Hardy Heron.
Sin embargo después de la instalación se me quedaba "pegada" booteando con el siguiente mensaje:
Después de mucho escarbar en internet, pude resolver el problema agregando el parámetro pci=nomsi para el arranque del kernel, no estuvo fácil así que mejor postearlo aquí para que A) No se me olvide, B) Más nadie tenga que dar tumbos en los foros de Ubuntu, el WIki de DELL para soporte a Linux y cualquier otro recurso desquiciado en internet.
De momento el equipo funciona perfectamente, y mi mayor preocupación es que Gnomad2 se dispara con unos picos duros de consumo de CPU al sincronizar el Creative Labs Zen de mi hija con su "PlaysForSure" de Microsoft ;-)
Y ahora, por fin la máquina se comporta como un Core 2 Duo de 2.33 GHz, con 2 GB de RAM y una NVIDIA GeForce de 256MB y se acabará la letanía de ¿Y esta no "ique" era más rápida?
]]>OK, ¡suficiente habladera de tonterias!. Una forma de remediar esto es agregar otro protocolo (como TCP/IP) encima al programa original que recolectaba las temperaturas de todos los sensores, es decir lo convertimos en un servidor.
Lo primero es decidir si queremos usar un protocolo existente o si queremos reinventar la rueda; Para este experimento decidí que usar un protocolo existente con algunas modificaciones era lo más sencillo (Daytime, RFC686):
El protocolo es sencillo, es puro texto (con una cabecera el cual el cliente utiliza como validación):
HEADER SENSORID1 SENSORCOUNT1 TEMPERATURE1 UNITS1 SENSORID2 SENSORCOUNT2 TEMPERATURE2 UNITS2 ...
Siempre es bueno encapsular los paquetes de un protocolo en una clase, para hacer más fácil su manejo:
El siguiente paso es decidir como codificar y decodificar el mensaje que enviamos a traves de la red; En el mundo Java podemos usar RMI, Sockets + Serialization sin embargo me pareció mejor utilizar UDP, por lo pequeño de los mensajes además de que no requiero las características extras de TCP, y no serialización (hay que ser MUY cuidadoso cuando se implementa, no es sólo decir que la clase implenta la interfaz "Serializable"):
Si, una interfaz la cual va a implementar el codificador especifico (código aquí). De esta manera, si cambiamos el protocolo (usamos Java + Serialization por ejemplo), nuestra aplicación sólo tiene que cambiar la declaración del codificador concreto y listo.
¿Que viene después? Ah, envenenar al cliente original que capturaba la temperatura; Ahora va a ser un servidor El cual:
Si bien el código del servidor no es muy largo (haga click aqui para verlo completo) prefiero mostrarle sólo las piezas críticas:
Si, el servidor no es muy robusto ni soporta un gran número de clientes a la vez (es iterativo), pero para jugar un rato está bien :)
Bueno, si aún no le ha dado un ataque leyendo todo este código lo invito a que vea el cliente (código completo aqui) . Muy sencillo (sólo imprime por pantalla las temperaturas) sin embargo tiene una caracteristica muy importante: No tiene ninguna dependencia con el código de Sentilla:
Bueno, ahora lo que queda es ponerse a jugar conectándole otros sensores e incluso volviendo más inteligentes a los sensores.
¿Y ustedes que piensan? Intercambio de ideas y código van de la mano :)
]]>
Al fin tuve algo de tiempo para jugar con Sentilla Perk. Comencé escribiendo un hola mundo, el cual consiste en capturar temperatura con cada sensor para luego recolectar los resultados en mi laptop la cual corre el "gateway" que habla con los sensores:
Es interesante programar usando Java para el dispositivo; El API es bien simple y por supuesto con limitaciones dado lo pequeño del entorno.
Todo en Java, y el mecanismo de comunicación completamente encapsulado, solamente hay que implementar la interfaz "Serializable".
Si quieren ver vídeos y más código entonces sigue el enlace.
]]>
El proceso de registro en JavaOne
Hola a todos,
Para no redundar en lo mismo, les dejo el enlace a mis impresiones sobre JavaOne del 2008. La experiencia fué realmente interesante.
]]>Yo voy a estar el Lunes en el Java University, metiendome un puñal en JavaFX y Swing. Si el tiempo lo permite colocaré algunas de mis impresiones sobre la conferencia.
¡Lo cierto es que ando más emocionado que muchacho comiendo moco! :)
]]>