programania
Codigo Gipuzkoa: entradas añadidas el 01-02-2008
Enero 31st, 2008 - [Enlace local]
- Husmee 6 ya está en la calle
- Jornada LISI + LOPD con Iurismática
- Zend Framework 1.5
- Este viernes, Yosigo en Ernest Lluch
- Concierto de apoyo a La Buena Vida
» Leer más, comentarios, etc...
The New Cult of Dead Cow » desarrollo
Los viajes en el tiempo ya son una realidad
Enero 31st, 2008 - [Enlace local]
Muchos seguro argumentan que no es posible, otros menos escepticos que la tecnologia actual no lo permite, pero yo tengo pruebas que terricolas ( o al menos eso creo ) del futuro se encuentran hoy entre nosotros.
El señor Agustin Cuenca, es un viajero del tiempo. Aproximadamente del 2030.
Copio su frase textualmente:
Buscamso gente con 10 o 15 de años de experiencia en Ruby on Rails.
PD: las fallas ortograficas tambien son de el. ( Yo tengo las mias propias
)
Este señor al parecer en su epoca se extinguieron los desarrolladores de rails y ha venido al pasado a buscar gente para dar mantenimiento a un proyecto. Claro que fue un poco descuidado al no recalcular las fechas al momento de hacer su propuesta… al fin y al cabo en esta epoca Rails no tiene mas de 3 años de existencia
Technorati Tags: rails, humor, desarrollo
Powered by ScribeFire.
» Leer más, comentarios, etc...
design-nation.blog/es
Entresijos. Haciendo la web. El nuevo proyecto de Design-Nation
Enero 31st, 2008 - [Enlace local]
Durante los próximos días, tomará cuerpo "Entresijos. Haciendo la web", el nuevo y por ahora último proyecto que sale de la cocina de ideas del emporio Design-Nation.
¿Qué es "Entresijos" ?
Se trata de un podcast, en formato entrevista y mesa redonda, de una duración no superior a media hora por episodio, por el que queremos que pase la mayor cantidad de profesionales que, de una u otra manera, desarrollen su actividad en relación con internet.
No es un podcast de y para programadores, sino que queremos que sirva como plataforma en la que todos los perfiles implicados en la construcción de internet (programadores, técnicos de sistemas, diseñadores, expertos en HCI, formadores, jefes de proyecto, bloggers, editores de webs de noticias, etc) y también aquellos que desde el otro lado de la barrera utilizan lo que los primeros construyen, puedan explicar en qué consiste su trabajo, cuáles son los retos con los que se enfrentan día a día, y cuál es la dirección que creen que debe tomar el futuro cercano, tanto de su parcela profesional como del negocio en general.
En el grupo de personas con el que estamos contactando hay programadores cliente y programadores servidor, técnicos de sistemas, diseñadores, animadores, expertos en e-learning, expertos en usabilidad, directores de agencias de publicidad, o project managers.
Aprovechamos desde ya, para agradecer la colaboración de quienes en el último mes y medio nos han confirmado su deseo de participar. Y confiamos en que haya más gente colaborando a futuro.
Esperamos que os guste.
» Leer más, comentarios, etc...
Navegapolis
IFM: Cómo orientar la gestión del proyecto al retorno de la inversión
Enero 31st, 2008 - [Enlace local]
La gestión ágil entrega de forma periódica y continua pequeñas partes del sistema completamente terminadas y operativas, por eso el cliente (propietario del producto, en terminología Scrum), decide qué le corre más prisa, según las necesidades de su negocio, y por tanto qué partes se deben programar antes; vamos, lo que Scrum llama "priorización del product backlog".
Pues bien, un criterio interesante para "priorizar el product backlog" puede ser obtener el mayor ROI posible, y cuanto antes. ¿A que sí? :-)
Si el desarrollo ágil puede entregar partes del sistema de forma temprana, merece la pena estudiar si también es posible comenzar el retorno de la inversión de forma anticipada.
» Leer más, comentarios, etc...
Blog del grupo SQUaC
Headmouse: más motivos para la accesibilidad
Enero 31st, 2008 - [Enlace local]
En los últimos días la Universidad de Lleida ha presentado la versión 2 de su Headmouse, un software gratuito que permite mover el cursor del ratón únicamente mediante movimientos de la cabeza. Para funcionar necesita simplemente una webcam y una breve configuración (que lleva menos de un minuto).
Aplicaciones como esta suponen claramente una gran noticia para usuarios con determinados tipos de discapacidades motrices. Imaginad lo útil que le resultará a usuarios que no puedan utilizar un ratón tradicional.
Pero esta aplicación... [sigue ...]
» Leer más, comentarios, etc...
Arragonán
Referencia rápida de patrones de diseño
Enero 31st, 2008 - [Enlace local]
Vía TheServerSide, me encuentro con una referencia rápida de patrones de diseño de software que ha hecho Jason McDonald.
Son los patrones GOF básicos, y están disponibles para descargar tanto en PDF como en JPG.
» Leer más, comentarios, etc...
MadeInFlex
Granite Data Services 1.0.0
Enero 31st, 2008 - [Enlace local]
Acaba de aparecer Granite Data Services 1.0.0. Desde la decisión de Adobe de ofrecer BlazeDS como software Open Source, los responsables de GraniteDS se volcaron en tener una versión final 1.0 lista para finales de Enero y parece que lo han conseguido. Puedes descargarlo desde el siguiente enlace.
» Leer más, comentarios, etc...
Picando Código
La FSF agradece el éxito de su campaña de membresías
Enero 31st, 2008 - [Enlace local]
La campaña para juntar 500 miembros está llegando a su fin. La Free Software Foundation agradece todo el apoyo recibido, queda un mínimo esfuerzo para llegar a la cifra. La noticia está en Digg, recibiendo bastantes votos en poco tiempo. Si tienes una cuenta en Digg y quieres apoyar ésta iniciativa para ayudar a la fundación que defiende los derechos del Software Libre, ayudalo a llegar a portada con tu voto.
La noticia:
Mientras entramos en las horas finales de nuestra iniciativa por membresías, quería agradecer a todos los que apoyaron y dar la bienvenida a nuestros casi 450 miembros nuevos!
Estoy contento de reportar que ésta ha sido la iniciativa por membresías más exitosa desde que lanzamos el programa en 2002. Aún estamos 50 miembros cortos de nuestra meta de 500 socios nuevos. Así que acá está el desafío para hoy. Por favor considera:
- Hacerte miembro asociado
- Darle a un amigo una membresía de regalo
- O referirle a un amigo a unirse - y recibir reconocimiento
La Free Software Foundation (fundación por el software libre) está orgullosa de tener una base de miembros tan dedicada y diversa que se expande en un amplio rango de edades, economías, países y culturas. Vemos nuestra comunidad en el trabajo todos los días con voces de apoyo por la libertad y trabajando duro para hacer contribuciones positivas al mundo del software libre.
Esperamos continuar construyendo nuestra capacidad como organización para comunicar, trabajar con, y conocer las necesidades de la comunidad del software libre. Como el miembro más nuevo del equipo de la Free Software Foundation, uniéndome como gerente de campañas en Mayo del 2007, he sido testigo de primera mano de esfuerzos de la comunidad, y puedo decirles que el flujo de apoyo y trabajo que veo suceder es destacable y es una cosa maravillosa ser parte de ello. Me gustaría compartir algunas de ellas con ustedes:
A través de la actualización de cinco licencias mayores, incluyendo la GNU GPL v3 y GNU AGPL v3, hemos recibido miles de comentarios y sugerencias sobre múltiples borradores de cientos de individuos de todo el mundo.
En nuestros esfuerzos a través de campañas para eliminar el DRM, hemos alcanzado más de 25.000 individuos que se anotaron en DefectiveByDesign.org, y ma? de 30.000 firmas en cartas y peticiones, cientos de individuos tomándose el tiempo de su día para unirse a nosotros en protestas y en acciones. Y el resultado nos golpea, vemos tanto productores como distribuidores empezando a adoptar plataformas de marketing anunciando “música libre de DRM” y oficiales en la BBC Trust citando nuestras protestas y demandas, mientras toman los pasos necesarios para comenzar a alejarse del DRM. El DRM es ahora visto como una práctica no-ética.
Por último, he sido testigo de la dirección y determinación de nuestro presidente, Richard Stallman, quien el año pasado dió más de 90 charlas invitado para más de 8.000 individuos únicos al rededor del mundo. Su dedicación para la causa de la libertad del usuario y el software libre es incansable e inspiradora. Pero, es el flujo de apoyo e ideas que siguen sus visitas al rededor del globo lo que hace mi trabajo recompensante y que valga la pena, porque es a través de este proceso que sé que su duro trabajo está pagando y que el movimiento del software libre está creciendo firmemente y fortaleciéndose.
Estoy ansioso de trabajar y hablar con muchos de ustedes este año. Y en nombre de mí y todo el staff en la Fundación por el Software Libre, agradecemos a todos su apoyo. Y ahora, es nuestro deber volver ese apoyo en éxito.
Para aquellos miembros que puedan llegar a nuestra reunión anual de miembros el 15 de marzo, por favor apúntense hoy. Y para aquellos que no pueden llegar, esperamos que nos sigan a través del blog en vivo y se unan a nosotros en IRC por un par de horas y pregunten a nuestros directivos de junta y staff preguntas y le den consejos e ideas para el año entrante. Los miembros pueden unirse a la discusión ahora en los foros de miembros.
Sinceramente,
Joshua Gay
Gerente de campañas
Free Software Foundation
» Leer más, comentarios, etc...
xailer.info (esp)
Enero 31st, 2008 - [Enlace local]
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti)
Instalación de ODAC en Windows x64
Enero 31st, 2008 - [Enlace local]
La instalación de ODAC.NET para Windows x64, no es trivial. Si usas Windows 2008 x64, Vista x64, 2003 x64, o XP x64, y necesitas desarrollar usando los Oracle Data Access Components, lo siguiente te interesa.
Imagino que a estás alturas habrás visto por internet multitud de alternativas para solucionarlo, pero ninguna te ha convencido, así que pondré aquí un resumen, y la solución sencilla y fácil.
El problema viene, porque el cliente de Oracle, usado entre otros por ODAC, no soporta ser ejecutado desde directorios que contienen paréntesis, como es el caso de Program Files (x86) usado en Windows x64 para instalaciones de software de 32 bits, por ejemplo el cliente de Oracle. Se manifiesta normalmente con el mensaje de error ORA-12154: TNS:could not resolve the connect identifier specified o ORA-6413: Connection not open. Cause 64-bit Microsoft OS's install 32-bit applications into the following location "C:\Program Files (x86)\...".
La primera opción para arreglarlo, pasa por aplicar algunos parches de Oracle en nuestra instalación. Lamentablemente esos parches solo están accesibles para usuarios que pagan el soporte a Oracle en el Metalink.
La segunda consiste en reinstalar todos los programas que usemos en una carpeta que no contenga paréntesis, ellos afecta a todas las herramientas que deban usar el cliente de Oracle. En este caso, no suele ser suficiente la creación de un hardlink de una ubicación a otra, se debe forzosamente reinstalar.
La tercera consiste en utilizar ODAC de Oracle 11g (11.0.6.20), que no tienen ese problema, aunque no siempre es una transición suave cuando nos referimos a entornos ya existentes.
La clave, está en que aunque no se dice en ningún sitio, el paquete de Oracle 10g Release 3 Client (10.2.0.2.3), incluye también una versión de ODAC, que en este caso, no tiene el problema con las rutas que contienen paréntesis, y por tanto soluciona el problema, por lo que reemplaza a los ODAC 10g Release 2 (10.2.0.2.21) y anteriores.
A la hora de agragar la referencia al assembly ODAC en nuestro proyecto, las cosas quedan así:
<!-- ODAC 10g Release 2 -->
<add assembly="Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
<!--ODAC 10g Release 3 -->
<add assembly="Oracle.DataAccess, Version=1.102.3.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
<!-- ODAC 11g -->
<add assembly="Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89B483F429C47342"/>![]()
Artículo publicado originalmente en Bitácora de Javier Gutiérrez Chamorro (Guti) - http://guti.bitacoras.com.
» Leer más, comentarios, etc...
Picando Código
Reunión abierta del JUGUY
Enero 31st, 2008 - [Enlace local]
Vuelve a la actividad el Grupo de Usuarios Java del Uruguay, ya pensando en el Javauy 2008! A continuación la noticia:
Volvimos de las vacaciones y estamos planificando el año 2008. La idea es generar una reunión abierta entre los usuarios del Grupo para diagramar las actividades y comisiones de trabajo.
La fecha propuesta es: Lunes 11 de febrero a las 19:30 horas
Lugar: Spikerman 2324Dentro de las actividades y tareas se encuentran: (pueden existir más)
Evento anual
* lecciones aprendidas en el evento pasado
* encuesta a los auspiciantes y patrocinantes
* cuando comenzar a trabajar en el evento
* ¿asosicación civil?
* entrega de premiosEventos intermedios
* temas de interés y talleres
* armado y planificación de los eventosSitio Web
* generar artículos técnicos
* skin del sitio
* boletìn quincenalForo
* coordinar el foroBibliotecas
* Manejar los libros y prestamos (reclamar los libros y los comentarios en el sitio)
* pedir librosGrupos de usuarios amigos
* generar lazos entre grupos de usuarios java (Chile, Argentina, Brasil, etc.)
* Eventos en conjunto
* intercambio infoSaludos a todos y los esperamos.
Equipo Juguy
Para saber más: Reunión abierta del Juguy
O visiten los foros en: foro.juguy.org
» Leer más, comentarios, etc...
Picando Código
Richard Stallman es el nuevo Chuck Norris
Enero 31st, 2008 - [Enlace local]
A consecuencia de un mail, donde Richard Stallman contaba cómo no usaba un navegador web sino que manda un link a un demonio que usa wget para obtener la página y mandársela de vuelta, surgió el nuevo Chuck Norris de la internet. En Reddit se publicó una lista inicial, y su comunidad se encargó de agrandarla. A continuación, algunas de las afirmaciones:
- Cuando Richard Stallman usa el comando sudo, pierde permisos.
- Cuando Richard Stallman apunta a una computadora con Windows, ésta tiene una violación de segmento.
- La barba de Richard Stallman está echa de paréntesis.
- El ADN de Richard Stallman está en binario.
- El sistema nervioso de Richard Stallman es totalmente wireless.
- El cerebro de Richard Stallman acepta comandos UNIX.
- El cerebro de Richard Stallman puede tener triple booteo.
- Si Richard Stallman tiene 1GB de RAM, y tú tienes 1GB de RAM, Richard Stallman tiene más RAM que tú.
- Richard Stallman come cables ethernet. Por eso inventaron el inalámbrico.
- Richard Stallman tiene una katana. Suficiente dicho.
- Richard Stallman escribió un programa que divide entre cero.
- Richard Stallman no usa discos comprimidos, los aprieta.
- El compilador de Richard Stallman tiene miedo de reportar errores.
- Richard Stallman escribió el compilador que Dios usó. El Big Bang fue la primera violación de segmento del universo.
- Richard Stallman compiló con éxito un kernel de popcorn.
- Richard Stallman no escribe programas, se escriben solos como reverencia.
- Richard Stallman puede hacer que un loop infinito termine.
- El programa anti-virus de Richard Stallman cura el HIV.
- La computadora de Richard Stallman no tiene reloj. Define qué tiempo es.
- Richard Stallman escribió un programa para computar el último dígito de Pi.
- Richard Stallman no utiliza navegadores web, manda un link a un demonio que usa wget para obtener la página y mandársela de vuelta.
- Richard Stallman no lo necesita, ya que ya leyó la internet.
- Algunas personas usan piyamas de Linus Torvalds. Linus Torvalds usa piyamas de Richard Stallman.
- No hay procesos de desarrollo de software, solo algunos programas que Richard Stallman permite existir.
- Richard Stallman maneja un camión de helados cubierto de Gnu’s.
- Richard Stallman comió 72 onzas de filete una vez. Pasó los primeros 45 minutos codificando una nueva extensión para Emacs en elisp.
- En un living promedio, hay 1242 objectos que Richard Stallman podría usar para escribir un S.O., incluyendo el cuarto mismo.
- Richard Stallman no tiene madre, se codificó a sí mismo.
- Cuando Richard Stallman no apunta a una computadora con Windows, ésta tiene una violación de segmento.
- Richard Stallman no tiene problemas para usar emacs. Lo escribió con sus 4 manos, mientras la quinta usaba emacs para escribirse a sí mismo.
- Richard Stallman no duerme, escribe código.
- Richard Stallman puede escribir un loop muerto que se ejecuta en menos de 10 ms.
- Richard Stallman es el arquitecto de la matrix.
- Richard Stallman puede escribit “int main();”, compilarlo, y obtener una copia funcional de HURD. La única razón por la que no lo ha hecho todavía es porque quiere darle práctica a otros hackers GNU.
- Algunas personas revisan sus computadoras por virus, los virus revisan sus computadoras por Richard Stallman.
- Richard Stallman puede decirte si tu programa va a
- Richard Stallman no es soltero, simplemente aplica su preferencia por código re-usable a las mujeres… lo que significa que duerme con nuestras mujeres.
- Richard Stallman escribe sus programas desde cero, empezando por minar el hierro y soplando el vidrio para hacer una computadora.
- Richard Stallman puede resolver el problema de la detención… en tiempo polinómico.
Si a alguien se le ocurren más…
» Leer más, comentarios, etc...
.: El Blog de Inwe :.
Zend_Form
Enero 30th, 2008 - [Enlace local]
Una de las novedades más importantes, que trae la nueva versión de Zend Framework (v1.5), es el nuevo componente Zend_Form, el cual te ofrece las herramientas necesarias para crear formularios y elementos de formulario, simplificando así tanto la creación como la validación, el ordenado, filtrado y agrupamiento de estos.
Hay un manual sencillo en la web de DevZone: Lifting the Skirt on Zend Framework 1.5 - Zend_Form
php, zend framework, zend form» Leer más, comentarios, etc...
Picando Código
La gran lista por-hacer de un Geek
Enero 30th, 2008 - [Enlace local]
Cosas que hace un geek, desde que se levanta hasta el final del día. Una “To-Do list” o “lista por-hacer” de esas que escribimos y vamos tachando al realizar cada objetivo:
Otra traducción, parte de las obras maestras de Kludge, traducido del original:
The Great Geek To Do List.
Publicado bajo licencia Creative Commons.
» Leer más, comentarios, etc...
Pensamientos ágiles
La historia de VNC
Enero 30th, 2008 - [Enlace local]
¿Alguna vez os he comentado que mi jefe es un crack? Pues lo es. No sólo sabe muchísimo sino que además siempre te sorprende con alguna historia interesante. Hoy me estuvo comentando como nació VNC y como se hizo Open Source. Desconozco si es una historia conocida, seguro que en algún lado estará publicada o habrá salido, pero bueno, a mi me ha gustado bastante así que voy a hablar un poco de ello.
Todo empezó hablando sobre Open Source y como muchos proyectos Open Source habían tenido éxito gracias a haber tomado la decisión en un determinado momento de liberarlos como código abierto. Hace 12 años mi jefe trabajaba en los Olivetti Research Laboratories de la universidad de Cambridge, que posteriormente pasaron a ser los laboratorios de Oracle y más tarde se convirtieron en los laboratorios de AT&T, nombre por el que quizás hayan sido más famosos.
Él trabajaba en omniORB un motor de CORBA que todavía está en uso y cuyo rendimiento era altísimo llegando a latencias de microsegundo por aquellos tiempos. OmniORB fue el primer proyecto Open Source lanzado por el laboratorio. Inicialmente eran muy reacios a liberar el código fuente y los proyectos que realizaban, y éste motor fue como la primera prueba. El resultado fue un éxito, y el proyecto ganó más y más popularidad.
Al mismo tiempo que realizaban este proyecto, otro equipo del laboratorio jugaban con algo que se conocían como Active Badge System que era un sistema de localización de personas. El caso es que las salas donde trabajaban estaban llenas de dispositivos de infrarojos para detección de personas. Cada persona llevaba un pequeño "badge" en su ropa que emitía señales infrarojos que se detectaban por los dispositivos de la sala. Mediante este sistema desde un control central podías saber dónde se encontraba cada persona en un momento dado.
Como aplicación práctica utilizaban los teléfonos. La idea era que si una persona recibía una llamada, el sistema detectaba dónde se encontraba dicha persona y el teléfono que tuviese más cercano se pondría a sonar sin que la persona no tendría que volver hasta su puesto. El sistema funcionaba muy bien. Incluso iban mucho más allá y disponían de un ordenador que a partir de todas las señales de infrarojos y de un modelo tridimensional en VRML de las salas era capaz de dibujar dónde se encontraban las personas y el modelo se iba actualizando en tiempo real.
Buscando más aplicaciones para esto del Active Badge fue como de repente surgió la idea de compartir un escritorio. Sería como con los teléfonos, el usuario se acercaría al ordenador y el "Active Badge System" detectaría donde se encuentra el usuario y le enviaría el escritorio remoto. VNC ya existía por entonces aunque su finalidad era algo diferente.
Una cosa llevó a la otra, se hizo Open Source, y ahí está. ¿Quién no lo ha utilizado alguna vez?
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti)
Acid 3
Enero 30th, 2008 - [Enlace local]
Toqué el tema del test Acid 2, donde Opera sacaba buena nota, así que ahora que se está desarrollando el test Acid3, no he podido evitar ejecutarlo en mis navegadores.
Lo he probado con últimisimas versiones de navegadores (Seamonkey 2 y Opera 9.50), y con algunas más antiguas y estables (Firefox 2, Internet Explorer 7, Opera 9.25 y Safari 3).
Como se puede ver con la puntuación obtenida, Opera, sigue liderando la prueba...
- Firefox x64 2.0.11 (Gecko 1.8.1.11): 53/100.
- Internet Explorer 7.00.6000.16575: 14/100.
- Opera 9.25.8827: 51/100.
- Opera 9.50.9755 Beta: 62/100.
- Safari 3.04 Beta (513.15): 43/100.
- Seamonkey 2.0 alpha 1 (Gecko 1.9 beta 3): 58/100.
En todos los casos, el resultado queda lejos de la referencia, por lo que los desarrolladores tienen todavía bastante trabajo que hacer.
Artículo publicado originalmente en Bitácora de Javier Gutiérrez Chamorro (Guti) - http://guti.bitacoras.com.
» Leer más, comentarios, etc...
.: El Blog de Inwe :.
Zend Framework 1.5 Preview Release
Enero 30th, 2008 - [Enlace local]
Dentro de pocos días se lanzará la versión 1.5 del Zend Framework, aunque ya se encuentra disponible la descarga de la Preview Release. A parte de mejorar gran parte de los componentes ya existentes, se han añadido nuevas funcionalidades y componentes, entre las que destacan:
- Nuevo componente Zend_Form con soporte para elementos de formulario con AJAX
- Nueva acción y vista para facilitar y automatizar las peticiones AJAX y sustitución de los formatos de respuesta
- Adaptadores para la autentificación de Infocard, OpenID y LDAP
- Soporte para búsquedas complejas con Lucene, incluyendo fuzzy, rango de fechas y búsquedas con comodines
- Soporte para el formato del fichero de índices de Lucene 2.1
- Ayudantes de vistas parciales, de marcadores y de acción para la composición de vistas avanzadas y renderizado
- Nuevo componente Zend_Layout para facilitar y automatizar el diseño de los sitios web
- Soporte de UTF-8 para documentos PDF
- Nuevos servicios web Technorati, SlideShare y Remember the Milk
Descárgalo desde la web de Zend Framework
php, zend framework» Leer más, comentarios, etc...
diaztorres.com
Efecto Aladino ( Genie effect )
Enero 29th, 2008 - [Enlace local]
Acabo de publicar en www.madeinflex.com una adaptación del efecto Aladino o Genie effect a Flex.
» Leer más, comentarios, etc...
PHPBSD.net
HTML Purifier, evita los ataques XSS y valida tu HTML
Enero 29th, 2008 - [Enlace local]
HTML Purifier es una librería para filtrar HTML escrita en PHP que permite eliminar el código malicioso (XSS) a la vez que comprueba que el HTML valide contra el estándar correspondiente.
Una de las principales diferencias de HTML Purifier comparada con otras librerías de filtrado HTML es que descompone por completo el HTML y verifica que cada uno de los elementos se encuentre dentro de una whitelist de elementos permitidos en lugar de limitarse a buscar elementos prohibidos en una blacklist (normalmente desfasada). A la vez que elimina el código no deseado también hace algo poco común en librerías de este tipo, valida que el HTML cumpla el estándar correspondiente y si no lo cumple realiza las modificaciones necesarias para corregirlo.
Puedes usar HTML Purifier tanto para filtrar datos de entrada, en el caso de que sea posible recibir código HTML, como el HTML de salida de tu aplicación. Lo más frecuente es usarla para filtrar datos de entrada como comentarios, emails, el resultado de algunos editores WYSIWYG, etc.
Se ha de tener presente que dado su funcionamiento interno es una librería muy potente pero pesada y lenta, no es para nada recomendable filtrar la salida de tu aplicación cada vez que generas código HTML. Mucho mejor filtrar la entrada y asegurar que el contenido de tu sistema está limpio. En todo caso para filtrar la salida se convierte en algo obligatorio trabajar con algún sistema de cache (generar páginas estáticas, un reverse proxy, en BD capturando el output-buffer, etc.)
A continuación explico brevemente su instalación y uso.
Instalación
1) Descargar el archivo htmlpurifier-3.0.0.tar.gz y descomprimirlo en el servidor. No es necesario que esté accesible para los usuarios, puedes colocarlo fuera del DocumentRoot. Ten en cuenta que la última versión (la 3.0) sólo es compatible con PHP5.
2) Poner los permisos adecuados a los directorios que HTML Purifier usará para cachear algunos archivos. Los directorios en cuestión son DefinitionCache/Serializer y todos sus subdirectorios. Si tenemos acceso por shell al servidor lo solucionamos con un:
chmod -R 0777 HTMLPurifier/DefinitionCache/Serializer
Utiliza 0777 o 0775 según convenga, el objetivo es permitir al servidor web escribir en estos directorios.
3) Es necesario tener instalada la extensión iconv si quieres trabajar con un enconding distinto de UTF-8 y si quieres una salida más bonita del HTML también es necesaria la extensión tidy.
4) Para mayor comodidad puedes incluir el directorio de la HTML Purifier en tu include_path a pesar de que es recomendable sólo hacer require() cuando vayas a usarla, es una librería bastante grande.
Usando la librería
-
$dirty_html = '<strong>prueba';
-
require_once '/directorio_de_htmlpurifier/library/HTMLPurifier.auto.php';
-
//require_once 'HTMLPurifier.php';
-
$config = HTMLPurifier_Config::createDefault();
-
$config->set('Core', 'Encoding', 'ISO-8859-1');
-
$config->set('HTML', 'Doctype', 'HTML 4.01 Transitional');
-
$purifier = new HTMLPurifier($config);
-
$clean_html = $purifier->purify($dirty_html);
-
echo $clean_html;
En el ejemplo se incluye el archivo HTMLPurifier.auto.php indicando la ruta completa, si has añadido el directorio de la librería en tu include_path puedes incluir HTMLPurifier.php directamente (usa la línea comentada).
En este ejemplo simple se está configurando HTML Purifier para que trabaje con 'HTML 4.01 Transitional' codificado en 'ISO-8859-1'. Por defecto la librería trabaja con 'XHTML 1.0 Transitional' en 'UTF-8', si este es el único tipo de documento y codificación que necesitas puedes eliminar las llamadas a set() y no es necesario crear el objeto $config. Existen muchos otros parámetros de configuración que se merecen una ojeada aunque para un funcionamiento normal no es necesario tocar casi nada.
También existen plugins para varios CMS conocidos para empezar a usar HTML Purifier de una forma todavía más fácil. Entre ellos está el plugin HTML Purified para WordPress y el módulo HTML Purifier para Drupal.
Etiquetas en Technorati: artículos, htmlpurifier, php, programación, seguridad, webmaster, xssartículos, htmlpurifier, php, programación, seguridad, webmaster, xss
» Leer más, comentarios, etc...
4 bits blog
Aprendiendo GTK+: Contenedores
Enero 29th, 2008 - [Enlace local]
A partir de este capítulo intentaré explicaros los widgets, que considero básicos, de GTK+ y a partir de ahí seréis vosotros quienes tengáis que ampliar conocimientos. Pero antes de eso todavía toca explicar una de las características de GTK+, que quizá le hacen algo especial respecto a otros, son los contenedores.
Los contenedores
Una aplicación GTK+ viene definida por un widget de una ventana (que explicaré a continuación) en el cual se colocan los otros widgets (entradas de texto, etiquetas, botones, …) para formar una interfaz gráfica de usuario. La peculariedad de GTK+ es cómo se colocan dichos widgets, para ello se hacen uso de otros widgets llamados contenedores, éstos sirven para (como su propio nombre indica) contener otros widgets, de modo que para distribuir los widgets por la ventana primero deberemos colocar algún contenedor sobre el cual insertar dichos widgets. Esto hace de GTK+ diferente a otros lenguajes de interfaces gráficas, en los cuales los widgets se colocan por coordenadas.
Hay varios widgets básicos de contenedores:
- GtkHBox: Es un contenedor horizontal, quiere decir que los widgets se colocan horizontalmente.
- GtkVBox: Es un contenedor vertical, quiere decir que los widgets se colocan verticalmente.
- GtkTable: Crea una tabla de MxN contenedores, los widgets se colocan en la posición AxB que queramos dentro de nuestra tabla MxN. Este se diferencia del resto en las funciones usadas para colocar los widgets, usará las suyas propias en lugar de las de GtkBox que explicaré a continuación.
(Como podéis ver os enlazo a la documentación de la API de GTK+ para cada widget, para mí es el mejor recurso de documentación.)
Los widgets GtkHBox y GtkVBox, como podéis ver en la API, sólo tienen una función asociada:
-
GtkWidget *gtk_hbox_new (gboolean homogeneous, gint spacing);
Esta función sirve para crear un GtkHBox (para GtkVBox habría que cambiar hbox por vbox en el nombre de la función). Recibe dos parámetros que sirven para que los widgets se distribuyan en tamaños iguales (homogeneous) y para definir los pixels por defecto entre widgets (spacing).
Hay que entender que para que estos widgets ejerzan de contenedores hay que usar las funciones de GtkBox, que es algo así como una interfaz que define operaciones para sus hijos, entre ellos los anteriores widgets. De GtkBox, las funciones más importantes son:
-
gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding);
Esta función sirve para colocar widgets de izquierda a derecha (en cualquier GtkHBox) o de arriba a abajo (en cualquier GtkVBox).
-
gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding);
Esta función sirve para colocar widgets al revés que la anterior.
Donde los parámetros de cada una de estas funciones son:
- box: Es el contenedor en el que se va a colocar el widget pasado como parámetro child.
- child: El widget que queremos colocar en box.
- expand y fill: Estos parámetros no sabría explicarlos bien, ya que lo mejor es ver el resultado de modificar cada uno. En el ejemplo que dejaré al final podréis comprenderlo mejor.
- padding: Este es fácil para cualquiera que haya hecho una web, es el espacio (en pixels) que se dejará entre el widget y los vecinos de éste, o el borde del contenedor si es el primero o último.
También existen otras dos funciones que nos ahorran trabajo si queremos dejar los paráemtros por defecto de los contenedores, éstas son:
-
gtk_box_pack_start_defaults (GtkBox *box, GtkWidget *widget);
Esta función sirve para colocar widgets de izquierda a derecha (en cualquier GtkHBox) o de arriba a abajo (en cualquier GtkVBox).
-
gtk_box_pack_end (GtkBox *box, GtkWidget *widget);
Esta función sirve para colocar widgets al revés que la anterior.
Para que podáis entender esto mejor os dejo este ejemplo, es el que viene en el tutorial oficial de GTK+.
» Leer más, comentarios, etc...
MadeInFlex
Efecto Aladino ( Genie effect )
Enero 29th, 2008 - [Enlace local]
En esta ocasión os presento el efecto Aladino o Genie effect adaptado a Flex, para aquellos que no lo conozcáis, este efecto es el que se produce (por defecto) al minimizar una ventana en el sistema operativo OS X de Apple, este efecto fue "inventado" por Bas Ording y patentado por Apple Computer, en este enlace podéis ver una referencia de la patente.
Para los que tengáis la suerte de trabajar con un Macintosh podéis ver el efecto a cámara lenta si pulsáis la tecla SHIFT al hacer click en el botón de minimizado de una ventana. Cuando lo vemos a velocidad normal aparentemente parece que la ventana se distorsiona y se alarga hasta la parte inferior de la pantalla, pero nada más lejos de la realidad, primeramente la ventana se reduce en su parte inferior, manteniendo la parte superior intacta y después comienza a bajar.
» Leer más, comentarios, etc...
Pensamientos ágiles
El nuevo motor de almacenamiento de MySQL se llama Maria
Enero 29th, 2008 - [Enlace local]
Vaya nombre ha escogido Michael Videnius para lo que es el nuevo y reluciente motor de almacenamiento MySQL. Según comenta en su blog, aunque el trabajo lo comenzaron hace un par de años, sólo ha sido en los últimos cuatro meses cuando se han puesto realmente serios con él.
Maria viene a sustituir al ya vetusto y siempre criticado MyISAM, pero no será parte estándar de las distribución hasta MySQL 6.0. La idea es la de proporcionar un motor rápido y compacto como MyISAM para modos no-transaccionales pero al mismo tiempo solucionar las carencias de éste como son la falta de transaccionalidad. Pero eso todavía será para Maria 2.0. Por ahora la versión que han lanzado es una alternativa a MyISAM pero con tolerancia a caidas del servidor.
Muchos bloggers se han hecho eco de esta noticia, aunque creo que no demasiados sitios web ya que sólo he visto la noticia en Artima. Kevin Burton comenta por ejemplo que al menos tenemos una opción más, aunque habrá que esperar hasta que podamos tirar a la basura MyISAM e InnoDB. Por su parte, Colin Charles y Giuseppe Maxia han han estado intentando romper Maria pero parece que realmente el motor sobrevive a fallos.
La verdad es que el motor promete bastante. A ver si con suerte, ahora que Sun Microsystems está detrás de la compañía quizás esto avance incluso más rápido.
» Leer más, comentarios, etc...
Navegapolis
Scrum: ¿de remedio a enfermedad?
Enero 29th, 2008 - [Enlace local]
Esta es la comparación que Jason Gorman hace entre la propagación de los virus y los consultores de Scrum. Jason es un consultor inglés, beligerante y sarcástico con quienes, con mayor o menor conocimiento de los principios de la agilidad, dogmatizan anclados en ella.
» Leer más, comentarios, etc...
programania
Zend Framework 1.5
Enero 29th, 2008 - [Enlace local]
La nueva versión del Zend Framework está en camino. Muchas son las novedades que traen, pero las mejoras se encuentran especialmente centrada en la composicion de Views y el uso de AJAX. La verdad es que me está costando integrar elegantemente AJAX y ZF. Creo que ésta versión será una gran mejora.
Mejoras en Views y AJAX:
- Nuevo componente Zend_Form que soportará elementos de formulario con AJAX.
- Nuevos helpers para el action y las views que automatizarán y facilitarán el procesado de respuestas AJAX.
- Nuevo componente Zend_Layout que simplificará la creación y control de la apariencia (layout) de la aplicación desarrollada.
Además traerá integración con sistemas de autenticación como Infocard, OpenID y LDAP, y con servicios web como Technorati, SlideShare y Remember the Milk.
Por supuesto, trae algunas novedades más y mejoras a los componentes existentes. Todavía queda para que el ZF sea tan maduro como otros frameworks en PHP, pero yo creo que camina en una buenísima dirección y a gran velocidad.
Fuente original: Zend Framework in Action.
» Leer más, comentarios, etc...
Pwned's blog
Consumiendo WebService de un XBAP
Enero 29th, 2008 - [Enlace local]
Al estar intentado traspasar una aplicacion WPF a un XBAP, me he topado con varios errores que no tenia previsto, entre ellos que el WebService no podia ser utilizado de la misma manera y aun dejando de lado las excepciones por los permisos del aplicativo.
Las aplicaciones WPF se ejecutan de modo local con permisos Full Trust, mientras que las aplicaciones XBAP (Xaml Browser Application) lo hacen de modo Partial Trust y al intentar utilizar archivos locales del ordenador me mostraba errores de permisos al igual cuando intentaba hacer uso del WebService, eran errores de permisos en red.
La solucion a este problema es instalar un certificado de seguridad temporal que por default se nos crea con el XBAP y tiene por nombre: [NombreAplicacion]_TemporaryKey.pfx
Saludos



