No has iniciado sesión
Conectar al sistema | Registrar usuario
ProgramacionWeb - Ayuda al webmaster Eloi 

Blog de eloi  

Lista de posts en el blog  

4 votos
WebLog La verdadera Ley de Murphy: Diseño y Programación Defensivos
11/10/2009, 1 comentarios.
Edward Aloysius Murphy, era un ingeniero aeroespacial estadounidense al servicio de las Fuerzas Aéreas de los Estados Unidos. Sirvió cómo piloto en el Pacífico, China, Myanmar ( Birmania ) e India y entró cómo Oficial de Investigación y Desarrollo en el Wright Air Development Center de la Wright-Patterson Air Force Base al finalizar la Segunda Guerra Mundial.

Trabajó en el diseño de experimentos para poner a prueba la resistencia del cuerpo humano ante las grandes desaceleraciones usando trineos con cohetes ( proyecto MX981 de las Fuerzas Aéreas de EEUU ), diseñado cuadros de mandos para aviones, en los sistemas de eyección de aviones experimentales, en sistemas de seguridad del proyecto Apollo ( que llevó al hombre a la luna en 1969 ) y terminó su carrera diseñando los sistemas de seguridad y control automático del helicóptero Apache.

La Ley de Murphy

Mientras trabajaba con los trineos impulsados por cohetes, observó que los sensores de fuerza instalados en las correas del arnés de John Paul Stapp ( al que vemos tripulando un trineo en la ilustración anterior ) daban lectura 0 porque estaban mal conectados. Tras este suceso Murphy formuló una idea que tomaría como filosofía en su trabajo:
"Si hay varias maneras de hacer una tarea, y uno de estos caminos conduce al desastre, entonces alguien utilizará ese camino."
El equipo de técnicos del proyecto, que trabajaba en los dispositivos diseñados por Murphy, acuñó una versión eufemística de su idea, que es la que se ha hecho popular:
"Si algo puede salir mal, lo hará"
Fue John Stapp quien hizo saltar la frase a los medios de comunicación, cuando en una rueda de prensa dijo:
"Nosotros hacemos todo nuestro trabajo teniendo en cuenta la ley de Murphy".
Y en respuesta a una pregunta de un periodista, que solicitaba más información sobre la misteriosa ley, Stapp contó a la prensa la versión satírica de la frase de Murphy.

Murphy y "su" ley

Mientras seguía trabajando en el diseño de nuevos proyectos, la popularidad de la versión satírica de su ley, que él consideraba "ridícula, trivial y errónea", seguía creciendo a su pesar.

Cuando Murphy intentó hacer tomar en serio su versión de su propia ley, lejos de conseguir cambiar una idea que ya había saltado a la cultura popular, sólo consiguió, al parecer, aumentar su frustración y su obsesión en defender su paradigma de diseño hasta su muerte en 1990.

El diseño defensivo

Pese a la popularidad de la versión satírica de su idea, la auténtica ley de Murphy, originó una técnica de diseño llamada Diseño Defensivo, consistente en prever y buscar soluciones para evitar fallos en la utilización de un dispositivo que puedan llevar a un resultado inesperado.

En la actualidad, pese a que prácticamente nadie conoce la versión auténtica de la ley de Murphy, vemos ejemplos de diseños realizados teniéndola en cuenta en la mayoría de dispositivos que tenemos a diario en nuestro alrededor. Un cable USB, HDMI, SCART... está diseñado para que sólo pueda conectarse de forma correcta, un programa informático valida los datos introducidos para que sean correctos...

Sin embargo, por ser anteriores al diseño defensivo o por descuido, encontramos también multitud de ejemplos de diseños que permiten el error. Las pilas cilíndricas, por ejemplo, permiten ser introducidas con los polos invertidos, siendo un claro ejemplo de lo que la ley de Murphy pretendía evitar. Pero, no porque si se puede poner del revés siempre probarás primero al revés ( que puedes comprobar que no es cierto ), sino por que deberían estar diseñadas para que no indujeran a error.

La programación defensiva

La programación defensiva la aplicación de la idea anterior al diseño de software para garantizar el funcionamiento esperado de un elemento de la aplicación ante cualquier situación por extraña que pueda parecer.

Recuerdo un proyecto en el que se realizó un formulario que solicitaba la ubicación del usuario para su localización en un mapa. Para esta tarea decidimos utilizar los campos "país" y "población", al poco tiempo descubrimos que algunos usuarios podían confundir población con número de habitantes si se situaba junto a país. En ese momento, ya había varios usuarios registrados de los cuáles no sabíamos su población.

Ese problema, lo solucionamos dejando esos usuarios sin localizar y cambiando la palabra "población" por "localidad" en el formulario. Pero lo hubiéramos evitado si hubiéramos tenido más en cuenta la programación defensiva validando mejor los campos del formulario.
 
2 votos
WebLog La importancia de usar conexiones seguras
12/05/2009, 0 comentarios.
Los que seguís alguna fuente de noticias sobre la Red ya habréis notado el goteo de noticias sobre ataques a servidores DNS encargados de una zona determinada. por ejemplo, hace apenas unos días el ataque a los servidores encargados de la zona .pr permitió un deface en varias páginas web locales ( google.com.pr por ejemplo ), otro en Nueva Zelanda afectó a MSN y la semana pasada ocurría lo mismo con Google marruecos.

¿Que esta ocurriendo?

Estos ataques, que empiezan a proliferar y que con toda probabilidad se harán más frecuentes en los próximos días, se están realizando explotando vulnerabilidades de inyección SQL en los paneles de administración de los dominios de primer nivel. Esto significa que aprovechando fallos en el control de los parámetros por URL de paneles de gestión de dominios de primer nivel ( por ejemplo el dominio .pr ) un atacante puede hacer que cualquier petición a google.pr ( o cualquier otro dominio .pr ) en lugar de llevar a los servidores de Google lleve a otro ordenador.

Si bien en los casos conocidos hasta el momento los atacantes se han limitado a hacer crecer su ego mostrando un mensaje en lugar de las páginas afectadas, el problema es mucho más serio ya que nada les hubiera impedido mostrar, en lugar de una firma, una página igual que la original con el fin de capturar los datos de acceso de los usuarios.

En el supuesto caso de querer capturar los datos, el usuario no sabría que no está accediendo realmente a la página que desea e introduciría sus datos confiado, entonces el hacker podría guardar estos datos para por ejemplo robar la identidad de la victima como ocurrió recientemente con Christian de Maestros del Web.

¿Que debo hacer?

Si bien cómo usuario no podemos solucionar las vulnerabilidades de los servidores DNS, tenemos una herramienta para evitar que nuestros datos caigan en malas manos, el HTTPS.

Usando HTTPS en lugar de HTTP, por ejemplo https://gmail.com/, un tercero de confianza certificará que la página en la que estamos es realmente la página en la que queremos entrar.


Sin embargo, en caso de que se nos envíe a una página falsa, el navegador mostrará un mensaje similar a este:

Conclusión

Si queremos evitar problemas, es conveniente que nos aseguremos de estar usando una conexión segura ( HTTPS ) cada vez que introduzcamos nuestros datos en una página web, sobretodo en bancos, cuentas de correo...
 
4 votos
WebLog Vuelta al Internet de los 70: Ley de los 3 avisos
06/05/2009, 0 comentarios.
La red de intercambio de paquetes CYCLADES, financiada por el gobierno francés a principios de los 70, es una de las primeras redes de ordenadores que existieron en el mundo. Su conexión con las redes inglesa NPL, italiana ESA y europea EIN la convierte en una de las primeras piezas de lo que ahora conocemos cómo Internet.

Pese a su corta vida, apenas 6 años, debida al al desarrollo de un proyecto más ambicioso, CYCLADES nos dejó un legado sin el cual Internet no habría llegado a ser lo que es ahora. CYCLADES introdujo la separación entre la capa host ( el sobre ) y la capa media ( la carta ). Permitiendo simplificar y abaratar los dispositivos de red que ahora tenían suficiente leyendo el sobre y no todo contenido y funcionaban con mucha más ligereza y permitían enviar mayor cantidad de datos.

Uno de los investigadores del proyecto, Hubert Zimmerman, uso la experiencia obtenida para desarrollar el modelo teórico OSI de 7 capas, en el que se inspira el actual sistema de comunicación TCP/IP. Éste último es el protocolo sobre el cuál funciona el Internet actual y sin separación de capas no sería posible.

Y lo que Francia nos da, Francia nos lo quita. Pues parece que todos los países de Europa están dispuestos a adoptar clones de la innovadora ley francesa de los tres avisos. Ley según la cuál las operadoras de Internet instalarán un dispositivo de red que detecte los usuarios que comparten archivos con derechos y tras 3 avisos les cortará la conexión.

Para que este dispositivo pueda saber si el contenido de un paquete es susceptible de tener derechos de autor, tiene que leer más allá del sobre , leer toda la carta y guardar los casos sospechosos. Y tiene que haber dispositivos para cubrir todos los puntos de la red, porque si queda un agujero la gente lo va a usar.

Es decir, suponiendo que dejemos de compartir archivos con derechos ( de lo contrario en 3 avisos no tendremos ese problema ) estaremos castigados a pasar todas nuestras comunicaciones por un dispositivo cuyo uso se descartó a principios de los 70 por caro, ineficaz y que además hoy en día sería un blanco fácil para piratas informáticos que colapsando unos pocos dispositivos podrían tirar Internet de todo un país.



Una vez más, nuestros gobernantes nos demuestran su pericia en nuevas tecnologías con una idea brillante: Si el problema es que se "piratea" más "cultura" que antes.... volvamos al pasado.
 
3 votos
WebLog Rebelión 2.0 digg, facebook y ahora también Menéame!
01/05/2009, 0 comentarios.
Parece que el tema del día en la Blogosfera es la rebelión de los usuarios de la red social Menéame contra los administradores del sitio.

Menéame, una red social donde los usuarios votan noticias al estilo Digg, ha sufrido un episodio similar a la rebelión de los usuarios del mismo Digg tras la censura por la publicación de las claves de encriptación del HD-DVD. Este tipo de rebelión 2.0 lo encontramos cada vez con más frecuencia en redes sociales cómo Digg, Facebook.... en los que los usuarios utilizan todos los medios que les ofrece la misma red social para hacer reclamaciones a las empresas que la administran.

Hoy, una parte significativa de usuarios de Menéame ha iniciado protestas contra la decisión de su equipo de administradores de banear a un usuario aplicando ( según los usuarios descontentos de forma indiscriminada ) las políticas de moderación del sitio. Ciertos usuarios descontentos han publicado, en la misma red social, noticias en contra de su administración ( prácticamente todas las publicadas durante el día) y han repetido la conducta que ha llevado a la expulsión al primer usuario, consiguiendo su fin de ser expulsados en su apoyo.


Captura de la noticia más popular en el momento de la publicación de este post.


La principal consecuencia de estas acciones ha sido la práctica inutilidad de la página durante el día de hoy, puesto que los usuarios que han entrado buscando noticias de actualidad política, corrientes de opinión... sólo han encontrado noticias y críticas sobre lo sucedido. Lo mismo ocurrió con Digg con el tema de la clave del HD-DVD, hasta que los administradores claudicaron y dejaron publicar la noticia, digg estuvo inundado de noticias que formaban parte de la protesta. Prácticamente el bloqueo del sistema, cómo en una huelga general.

Desde mi punto de vista, este tipo de episodio es un motivo de éxito para las herramientas que lo sufren, en este caso el software de Menéame. Ya que implica que estas aplicaciones web 2.0 proporcionan a sus usuarios las herramientas necesarias para protestar en contra de las medidas adoptadas por sus propietarios.

Sin embargo, me parece también una muestra de incompetencia a dos niveles de sus equipos de administración, equipos a los que parece que se les da mejor el trato con algoritmos que con personas. En un primer nivel, la incompetencia de no saber adaptarse a las peticiones de los usuarios y comunicarles correctamente las decisiones. En un segundo nivel, la de intentar controlar el uso que los usuarios hacen de la red si tener los medios y procedimientos adecuados consiguiendo todo lo contrario de lo deseado.
 
2 votos
WebLog Los comentarios más curiosos de código fuente real
30/04/2009, 0 comentarios.
Acabo de encontrar vía digg un fragmento de código de Xee ( un visor de imágenes para Mac ) que con el siguiente comentario:
 
000 
001 
002 
003 
004 
005 
006 
007 
008 
009 
010 
011 
012 
013 
014 
015 
016 
017 
018 
019 
020 
021 
022 
023 
024 
025 
026 
027 
028 
// At this point, I'd like to take a moment to speak to you about the Adobe PSD format.
// PSD is not a good format. PSD is not even a bad format. Calling it such would be an
// insult to other bad formats, such as PCX or JPEG. No, PSD is an abysmal format. Having
// worked on this code for several weeks now, my hate for PSD has grown to a raging fire
// that burns with the fierce passion of a million suns.
// If there are two different ways of doing something, PSD will do both, in different
// places. It will then make up three more ways no sane human would think of, and do those
// too. PSD makes inconsistency an art form. Why, for instance, did it suddenly decide
// that *these* particular chunks should be aligned to four bytes, and that this alignement
// should *not* be included in the size? Other chunks in other places are either unaligned,
// or aligned with the alignment included in the size. Here, though, it is not included.
// Either one of these three behaviours would be fine. A sane format would pick one. PSD,
// of course, uses all three, and more.
// Trying to get data out of a PSD file is like trying to find something in the attic of
// your eccentric old uncle who died in a freak freshwater shark attack on his 58th
// birthday. That last detail may not be important for the purposes of the simile, but
// at this point I am spending a lot of time imagining amusing fates for the people
// responsible for this Rube Goldberg of a file format.
// Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this,
// I had to apply to them for permission to apply to them to have them consider sending
// me this sacred tome. This would have involved faxing them a copy of some document or
// other, probably signed in blood. I can only imagine that they make this process so
// difficult because they are intensely ashamed of having created this abomination. I
// was naturally not gullible enough to go through with this procedure, but if I had done
// so, I would have printed out every single page of the spec, and set them all on fire.
// Were it within my power, I would gather every single copy of those specs, and launch
// them on a spaceship directly into the sun.
//
// PSD is not my favourite file format.
 
El comentario, introducido en una revisión del archivo XeePhotoshopLoader.m hecha por Paracelsus ( un programador involucrado en el proyecto Xee ) viene a significar algo así:
Llegados a este punto, me gustaría tomar un momento para hablar del formato Adobe PSD.
PSD no es un buen formato. PSD no es ni siquiera un mal formato. Llamarlo así sería un insulto para otros malos formatos cómo PCX o JPEG. No, PSD es un formato abismal- Habiendo trabajado con este código ( cargador de imágenes PSD ) durante varias semanas, mi odio hacia PSD ha crecido hasta convertirse en un rabioso fuego que quema con la feroz pasión de un millón de soles. Si hay dos formas de hacer algo, PSD lo hará de las dos en lugares distintos. Luego inventará tes formas más en las que ningún se humano sano pensaría y también se usarán. PSD hace de la inconsistencia un arte ( ... ) Intentar obtener datos de un PSD es cómo intentar encontrar algo en el ático de tu viejo y excéntrico tío que murió en un espantoso ataque de tiburón en su 58º cumpleaños ( ... )
Paracelsus se despacha a gusto en un curioso comentario estilo blog , lo que me ha recordado otros comentarios curiosos...

El punto flotante del diablo en Quake III

En el archivo q_math.c del código fuente de Quake III encontramos:
 
000 
001 
  i  = * ( long * ) &y;  // evil floating point bit level hacking
  i  = 0x5f3759df - ( i >> 1 ); // what the fuck?
 
Los comentarios dicen "hack a nivel bit a bit para el punto flotante diabólico" y "que cojo***"

El incomprendido

En el archivo slp.c ( codigo de intercambio de contexto ) del código fuente de Unix, encontramos mi comentario de Unix favorito:
 
000 
/*  You are not expected to understand this */
 
La traducción de este fragmento vendría a decir: "No se espera que entiendas esto".

Una mierda complicada

En el código fuente de Mercurial, el control de versiones utilizado en el desarrollo en Mozilla cómo sustitución de SVN, encontramos bastantes tacos en comentarios, a destacar:
 
000 
001 
002 
003 
004 
/* this is some convoluted shit... this creates a file, inits it with
 * the path parsed above (chromeLocation), makes a url, and inits it
 * with the file created. the purpose of this is just to have the
 * canonical url of the stupid thing.
 */
 
En este comentario del archivo nsChromeRegistry.cpp pone algo así cómo:
Esto es una mierda compleja... crea un archivo, lo inicia con la ruta parseada ( ... ) el propósito de esto es sólo tener la url canónica de la cosa estúpida.

Al estilo Chunk Norris

En el archivo listing_engine.inc del código fuente del CMS MySource Matrix encontramos el siguiente comentario:
 
000 
// do it CHUNK Norris style
 
El comentario nos invita a hacerlo al estilo Chunk Norris, chunk significa "fragmento" y es un concepto usado frecuentemente al trabajar con información.

Ask Bill

En el archivo bmp_cod.h del código fuente de libjasper ( implementación libre del códec de JPEG usada por ejemplo en Ghostscript ) se hace la declaración de estructuras para el manejo de BMP:
 
000 
001 
002 
003 
004 
005 
006 
007 
008 
009 
010 
011 
012 
013 
014 
015 
016 
017 
018 
/* BMP header. */
typedef struct {
 
        int_fast16_t magic;
        /* The signature (a.k.a. the magic number). */
 
        int_fast32_t siz;
        /* The size of the file in 32-bit words. */
 
        int_fast16_t reserved1;
        /* Ask Bill Gates what this is all about. */
 
        int_fast16_t reserved2;
        /* Ditto. */
 
        int_fast32_t off;
        /* The offset of the bitmap data from the bitmap file header in bytes. */
 
} bmp_hdr_t;
 
Uno de los comentarios dice: "Pregunta a Bill Gates de que va todo esto" y en el siguiente dice "ditto" o "exactamente lo mismo dicho antes"
 
4 votos
WebLog La batalla por la primera notícia llevada al absurdo
Madrid 21/04/2009, 1 comentarios.
Ya hablé de la importancia del uso de contenido original en el curso de SEO, esto es debido a que los buscadores ( precisamente con el fin de posicionar mejor el contenido original ) clasifican en mejor posición al primer documento que habla sobre un determinado tema.

Esto significa, que el primer medio que publica una noticia, se lleva las visitas de las personas que buscan información sobre la misma en Google, visitas que suelen generar enlaces en otros medios ( digg, menémae, otras páginas de notícias, blogs que se hacen eco de la misma... ) que la utilizan cómo fuente de referencia.

Y cómo las visitas generan ingresos, se ha ido convirtiendo en habitual redactar ( e incluso últimamente publicar ) las noticias antes de que ocurran para tener más posibilidades de ser el primero. Es muy frecuente, que prensa digital y blogs, escriban antes de que termine un partido de fútbol importante, una noticia para cada posible resultado ( victoria de uno, de el otro, empate ).

Como siempre, cuando una técnica puede aportar beneficios económicos ( cómo la preparación anticipada de noticias ), alguien tiene que llevarla hasta un nivel absurdo que la convierta en despreciable. Tan despreciable cómo lo que hicieron ayer en la página web de Cuatro ( cadena de televisión española ) publicando la noticia de la muerte de Steven Hawkin a raíz de su ingreso en el hospital en estado grave. De esta manera, si Hawkin hubiera muerto ( afortunadamente parece que está estable ) habrían sido los primeros en publicar la noticia y se llevarían las visitas de los que buscaran información sobre este hecho.


Captura de pantalla de la noticia publicada el 20/04/09
Noticia original: http://www.cuatro.com/outle...ultpro_95/

No tengo palabras para describir mi desprecio hacia alguien capaz de esperar la muerte de una persona para ser los primeros en publicar su defunción y llevarse algunos ingresos publicitarios. Si supiera el nombre de quien ha publicado la noticia, por lo menos podría publicar la noticia de la muerte de su decencia, que si no está ya muerta le queda bien poco.
 
2 votos
WebLog ¿Seguro que soy humano?
19/03/2009, 0 comentarios.
Anteriormente ya hemos hablado de los captcha, aquellas imágenes indescifrables que aparecen en los formularios de registro de páginas web y cuya funcionalidad es determinar si el formulario es rellenado por una persona o por un ordenador.

V6s43z4
Con el paso del tiempo, los sistemas automatizados para rellenar formularios se han sofisticado para poder saltar este tipo de protección leyendo el texto de la imagen, lo que ha llevado a sofisticar también los captcha deformando cada vez más las letras, poniendo fondos que se confunden con el texto...

unchanedis
De hecho, creo que se han sofisticado y complicado tanto, que dejan de tener su propia función ( distinguir personas y máquinas ) para desarrollar una nueva y molesta función: Distinguir entre superdotados visuales y personas/máquinas.


KEZ5


Con este último ejemplo, el nuevo modelo de captcha de MegaUpload, me costó tres intentos y otras tantas dioptrías darme cuenta que había 4 letras y no 3 como pensaba.
 
2 votos
WebLog Nuevo mobiliario de oficina
Blanes, Catalunya 18/02/2009, 4 comentarios.
He acabado de instalar el nuevo mobiliario ( de IKEA por supuesto ) para la oficina desde donde trabajo, entre otras cosas en esta web, os enseño una foto del resultado.



También he terminado de instalar el nuevo material informático, que ha permitido la migración de la web al nuevo servidor que parece funcionar sensiblemente mejor:
- Servidor: AMD LE-1600 1Gb de RAM ( se ampliará próximamente )
- SAI: MGE UPS Protection Center 420

Ahora ya sabéis donde vive ProgramacionWeb.net [;]
 
3 votos
WebLog MoviLISTILLO
Blanes, Catalunya 29/01/2009, 1 comentarios.
Suelo revisar los logs de accesos de ProgramaciónWeb para detectar abusos por parte de robots, ataques y parecido y banear las direcciones IP pertinentes.

Una de las secciones donde recibimos más abusos es la Herramienta Ver el país de una IP (herramienta que nos da el país de una determinada dirección IP), donde es frecuente que encontremos que una determinada Dirección IP está lanzando peticiones automatizadas para detectar el país de un visitante en una página web ajena.

Hoy he detectado uno de estos casos, pero si normalmente se trata de páginas web pequeñas que realizan algunas peticiones cada hora, el caso de hoy era diferente, el número de peticiones era altísimo, hasta 5 por segundo y me ha picado la curiosidad a ver quién podía estar abusado con tanto morro.


Captura del log de accesos

Y tratandose de morro... ¿de quien iba a ser esta dirección 217.116.4.181? Pues, cómo no podía ser de otra forma, de una empresa de Politonos y Mensajitos para el móvil: MOVILISTO ( Grupo iTouch Movilisto S. L., compañia del grupo Buongiorno )

Y que hacer en este caso ¿Banear la IP? Sería una opción, pero sería mas divertido hacer que el sistema en lugar de devolver el país que toca, siempre devuelva un mismo país, así que con un par de líneas, el sistema dirá que todas las IP son de Bolivia:
 
000 
001 
002 
003 
004 
005 
006 
007 
<?php
// $ip es la IP del usuario, no la IP consultada
if ( $ip == '217.116.4.181' ) {
$code 'BO';
$code3 'BOL';
$name 'Bolivia';
}
?>
 
¿Cuanto tardarán en darse cuenta? [d]
 
4 votos
WebLog Los exámenes de história no soportan PHP
05/10/2008, 3 comentarios.
Es una lástima que los exámenes de historia no soporten PHP, habrá que empezar a desarrollar un papel para examen con Apache y PHP preinstalado:



Vía Humor Geek
  
 Páginas: 1 2
 
 
 
Estadísticas para
eloi.programacionweb.net:
 Última semana: 21481 impresiones | 14259 visitantes
 Último mes: 83356 impresiones | 57872 visitantes