Link del día: Máquinas virtuales en la web

Hace pocas horas Peteris Krumins (@pkrumins) anunció que en poco tiempo estará saliendo al público su nuevo proyecto con James Halliday.

Dicho proyecto, llamado StackVM, tiene como propósito poder insertar máquinas virtuales en páginas web, darles conectividad entre ellas con simple pasos como drag & drop, y la cantidad de usos que esto podría tener son miles.

Entre los ejemplos que él menciona en su anuncio, están la posibilidad de dar una demo “live” de un software (que podría incluir por detrás todo el entorno necesario para mostrarlo, incluyendo servidores de bases de datos, incluyendo routers, etc). Podría demostrar online (sí, en la misma página web) el funcionamiento de un software cliente servidor, de un software firewall, o cosas que por lo general son muy complejas de demostrar.

Otro de los ejemplos es la enseñanza, testeos de seguridad, o la posibilidad de que los estudiantes realmente interaccionen con entornos virtuales sin otra necesidad que un navegador.

Otro de los ejemplos es el testeo de aplicaciones. Imaginen probar su software en un entorno Linux, un Mac OS, un Windows en distintas versiones, sin más que un navegador.

Actualmente están de a poco liberando muestras para distinta gente, solo tienen que apuntarse para ser tenidos en cuenta si es que lo quieren probar.

Soy un zorrinito virtual.

(Read more →)

Link del día: Ahora hay que reaprender PHP

Gracias a @Analton llegué a un artículo llamado Never user $_GET again, que habla de cómo ya no deberíamos utilizar más las archi-conocidas variables globales de GET y POST al programar en PHP. No sólo eso, sino que explicando los conceptos de validación y sanitización nos deja como paso siguiente ir al manual de PHP, y explorar una sección que quizá muchos ya no tengamos del todo frescas.

Esta sección es la de Filtering, en donde nos vemos introducidos a distintas funciones que ya efectúan validaciones de determinados tipos de entrada en particular, y nos permiten filtrar el resto de lo ingresado para obtener valores correctos, o al menos, lo suficientemente corregidos como para que no dañen nuestro código.

” ¿Desde cuando está eso ahí?”, algunos preguntarán. Desde PHP 5.2, de forma que ya tiene un ratito ahí, no sé como a muchos se nos pasó de largo. Aprovechen a reaprenderlo y será más fácil programar la entrada de datos!

Soy un zorrinito preprocesado.

(Read more →)

Link del día: Bases de datos pre-armadas

Esperemos que pronto podamos volver a la frecuencia común de los links del día. Mientras tanto, intentemos mantenerlos cortitos para que no tomen demasiado tiempo.

Hoy los dejo con SQL Dumpster, un sitio con una muy buena idea, pero desafortunadamente, algo abandonado. La idea del sitio es que podamos agregar nuestro script SQL con los datos que queramos compartir al mundo. Cualquiera, nosotros incluidos, podemos navegar por los scripts disponibles según lo que necesitemos. Por ejemplo, ¿necesitamos un listado de países? No hace falta más que ir a la sección de scripts geográficos y lo encontraremos listo para ejecutar en nuestra base de datos. ¿Queremos un listado de tipos de empleo? Ahí están.

Como esos podrían haber muchos más que no sean útiles, y si el sitio se hiciera conocido, sin duda tendría muchos scripts muy útiles.

Soy un zorrinito compartido.

(Read more →)

Link del día: Recursivi(recursivi(recursivi.dad)dad)dad

Probablemente conozcamos ya el concepto de recursividad. Si no lo conocen, para entenderlo van a tener que entender el concepto de recursividad. =P

La recursividad, según la define la Wikipedia, es un método de resolución de problemas que se basa en su propia definición. Para decirlo de forma más tangible, un problema se puede reducir a más de un problema de la misma naturaleza pero de más fácil resolución. (El típico ejemplo es el factorial: n! = 1 × 2 × 3 × … × n puede resolverse como n × (n-1)!, que se puede resolver como n × (n-1) × (n-1-1)!, hasta que (n-…) = 1 y entonces 1! = 1, 2! = 2 × 1 = 2, 3! = 3 × 2 = 6, 4! = 4 × 6 = 24, etc.).

Lo curioso es que esto no solo aplica a la matemática, ni a la forma de programar algoritmos. Pensemos en una especie de recursividad conceptual. Por ejemplo, la definición de la palabra definición. O en un método para mostrar cómo se resuelve ese método.

Y ese último caso que queremos ver es el que trataremos hoy. Russ Cox publicó en su blog research!rsc un artículo llamado Zip Files all the way down, en donde cuenta cómo generó un archivo zip que se contenía a sí mismo. (Por supuesto, está ahí para que lo bajemos y revisemos a gusto.) También cuenta cómo es que se embarcó en la empresa de generar un programa que escribiera su propio código fuente. Cómo lo hizo? Hay que leer el artículo. ;)

Soy un zorrinito de zorrinito de zorrinito de zorrinito de …

(Read more →)

Link del día: 1, 2, 3... Regex!

¿Recuerdan los posts viejos sobre cómo convertir un texto en una expresión regular acorde (Text2RE), y sobre cómo visualizar las expresiones regulares (ReAnimator)?

Bueno, si esas les gustaron o les fueron útiles, vamos a dar dos nuevas utilidades para trabajar con expresiones regulares.

La primera de ellas es Regular Expression Library (o RegexLib). Como su nombre lo indica, es básicamente una librería de distintas expresiones regulares para distintos usos. Podemos buscar también por categoría o palabra clave, y tras eso, elegir del listado aquellas que tienen una mejor puntuación, o la que mejor se adecúe a nuestras necesidades. Por supuesto también podemos contribuir con las nuestras, y al mismo tiempo probarlas en el mismo sitio.

La segunda herramienta es RegExr, de GSkinner (gracias Seinkraft!), una herramienta basada en Flash que nos permitirá experimentar con expresiones regulares, basándonos en nuestro propio texto, o en expresiones de ejemplo pre-armadas que podemos seleccionar para utilizar. Podemos luego guardar las que hayamos construido para su posterior uso, y también ver las que otra gente ha construido.

Soy un zorrinito regular.

(Read more →)

Link del día: Datos, todos en uno

Quizá muchos sepamos que existen varios agregadores de datos para la vida web. Lo que hacen es coleccionar datos de distintos lugares y mostrarlos en uno solo. Muy bueno para poder mantener toda nuestra actividad web concentrada, y poder mostrarnos de alguna forma en ese lugar en particular.

Ha habido varios intentos de esto, pero uno de los más interesantes para probar es Pubwich, una aplicación web open source creada en PHP que nos permite incorporar varios servicios. Según parece, tiene actividad muy reciente, por lo que de a poco iremos encontrando mejores funcionalidades, más integraciones y menos bugs. Los servicios que actualmente son soportados son Delicious, Dribble, Facebook, Flickr, Github, Goodreads, LastFM, Readernaut, Reddit, Slideshare, StatusNet, Twitter, Vimeo, Youtube, y pronto estarán sumados Digg, Ffffound, y Foursquare. Como extra, podemos integrar cualquier feed RSS o Atom, con lo que incluso si nuestro servicio no se encuentra definido, de alguna forma podemos darle más funcionalidad.

Y este servicio solo requiere Apache y PHP5. Podemos bajar el código para usarlo desde su repositorio en Github, o ver un demo online. Personalmente, creo que estaría mucho mejor si es que guardara datos viejos y nos permitiera visualizarlos.

Alguno lo utiliza? Qué opinan ustedes?

Soy un zorrinito integrador.

(Read more →)

Link del día: Laboratorio de Seguridad

Jarlsberg (un tipo de queso) es el nombre de una aplicación hosteada en Google App Spot dedicada al entrenamiento informático. Esta herramienta nos provee de una plataforma libre en donde podemos probar ataques de seguridad y no romper nada. Al mismo tiempo, los tutoriales también nos irán explicando los distintos conceptos y la forma en que deben de ser aplicados en este caso en particular. Es decir, tenemos tanto teoría como práctica.

Por supuesto que esta aplicación también forma parte de Google Code University, el cual se encuentra repleto de distintos cursos relacionados (y no tanto también) al desarrollo.

Pero si es que quieren trabajar con entornos hackeables para experimentar / jugar / aprender, siempre tienen a WebGoat, las aplicaciones “Hacme” de Foundstone, y otras varias más linkeadas desde IronGeek (BadStore, Damn Vulnerable Web App, Moth, Mutillidae, Standford Security Bench, Vicnum y WebMaven).

Soy un zorrinito seguro.

(Read more →)

Link del día: Optimizar tu máquina, sin saber nada

Me gusta cuando las aplicaciones son capaces de encerrar mucha complejidad detrás de algo simple de entender y fácil de usar. Este es uno de esos casos. La finalidad de esta aplicación, llamada Soluto (“Anti-Frustration Software”), es de permitir monitorear el inicio de las distintas aplicaciones (sólo Windows por ahora), elegir cuáles deben cargar y cuáles no, cuáles deben ser demoradas para un momento posterior y de esa forma mejorar el tiempo de inicio.

La interfaz es totalmente intuitiva, y muy atractiva. Aviso que para lograr esto hacen uso de la tecnología .NET (dependencia que debemos de tener instalada, o será instalada por nosotros). Tras instalarlo vamos a reiniciar y ver cómo Soluto monitorea nuestro inicio. Luego podremos verificar cuáles son los programas o servicios que están cargando al inicio y que podrían removerse para mejorar esta velocidad.

Y cómo saber cuál remover y cuál no? Soluto lo muestra claramente en dos formas distintas. La primera forma es una clasificación que hace, en donde existen tres grandes categorías: lo que sin duda podemos remover, lo que podemos dudar o debemos ser más interiorizados como para decidir, y los que son requeridos y no podemos tocar.

En el fondo todo se basa en la segunda forma de clasificación, que es a través de la configuración de los distintos usuarios. Soluto nos va a mostrar qué porcentaje de usuarios ha hecho qué cosa con cada uno de los programas. Nosotros también podemos brindar nuestras sugerencias.

Por último, Soluto también nos muestra un historial de “velocidades” de inicio, para que podamos ver de qué forma ha mejorado o empeorado nuestra performance de booteo desde que lo hemos instalado y a través de las distintas configuraciones e instalaciones.

La web: http://www.soluto.com/

Soy un zorrinito optimizado.

(Read more →)

Link del día: Javascript PDFs

Hace no mucho se hizo popular un script llamado pdf.js, un agregado sobre node.js que permite la generación de archivos PDFs directamente desde el navegador. Más allá de la novedad, parece que este es solo un proyecto de los muchos que tiene Marak Squires, un ingeniero de software que publica cosas muy interesantes, sin mentir (como lo dice él).

En su blog encontraremos cosas de verdad interesantes para los que se desarrollen en este área, como por ejemplo Front-End Developer Manifesto, una guía práctica de puntos a seguir para aquellos que desarrollan HTML/JavaScript.

Por si no fuera poco, me encontré con su sitio en GitHub, y ahí podemos ver la enorme cantidad de proyectos que tiene, muchos de ellos relacionados íntimamente al JavaScript. Unos ejemplos de su autoría son machine.js (un convertidor de hojas de estilo CSS a máquinas de estado), JSLINQ (una migración de LinQ a node.js), node_mailer (una utilidad para el envío de emails desde el browser), say.js (un text-to-speech en JavaScript), play.js (para reproducir sonidos), o asciimo (sitio web - para crear arte ASCII).

Tenemos mucho para ver, pero seguro que algo de todo eso nos será útil, y por qué no, quizá podamos extenderlo.

Soy un zorrinito JavaScript.

(Read more →)

Link del día: Xyle

Xyle es un debugger HTML/CSS para Safari (ya que seguramente todos los que utilicen Firefox estarán muy contentos con Firebug). Cabe destacar que si bien Xyle es solo para entornos Mac, la forma de presentación de la información es bastante distinta, algo novedosa. Personalmente, me parece algo intuitiva a la vez de elegante, con lo cual con mucho gusto lo probaría.

Para leer un review al respecto (y una pequeña comparación con Firebug), pueden leer un artículo de DesignShack sobre HTML & CSS Debugging Tools, o un review de Xyle Scope en el blog de Carsonified.

Soy un zorrinito debugger.

(Read more →)