XSS – Cross-Site-Scripting III

Defendiendo Nuestra Aplicación.


El primer modo de defensa que veremos, será la defensa de nuestra aplicación, misma que nos enseñara técnicas sencillas para defender nuestro sitio mediante la validación de entradas de datos.


Tenemos que tener claro que lo que debemos hacer es impedir la entrada de scripts en nuestros campos de inserción de datos, validando cada entrada para asegurarnos que no contenga código que pueda afectar nuestra aplicación o a nuestros usuarios.




  1. Limitación de caracteres de entrada.
    Lo primero que debemos hacer

XSS - Cross-Site-Scripting II

Al referirnos al Cross-Site-Scripting podemos encontrar bastante material didáctico acerca del tema, algunos de ellos describen los modos de ataques como directos e indirectos, pero realmente creo que podemos simplificar y enfocar de una forma mas directa en dos simples componentes que son:


1. Ataque al usuario.
2. Ataque al Aplicativo.


XSS - Cross-Site-Scripting I

El Cross-Site-Scripting, conocido también como XSS por sus siglas en ingles, es una vulnerabilidad que muchos desarrolladores dejan pasar por alto, quizás por falta de un planeamiento de análisis de riesgos en el proceso de diseño, desarrollo e implementación de sus aplicativos, o simplemente no lo vean como una falla que les va a presentar problemas en su aplicación, incluso por desconocimiento de esta vulnerabilidad.


¿ASP.Net o PHP?

Hace algún tiempo inicié con una serie de posts sobre .NET y por razones de tiempo no pude continuar con la regularidad que me hubiera gustado, pero bueno, aquí estoy de nuevo retomando los temas pendientes.

¿Peras o manzanas?, así de absurdo es intentar comparar estas 2 tecnologías. Es como querer comparar un camión con una carretera. Igualmente puede resultar decir cosas como “PHP es mejor que ASP.NET” (o viceversa), en todo caso el punto de comparación adecuado sería PHP con ASP “clásico” (la versión anterior), tecnología obsoleta desde el año 2000 aprox. Personalmente conozco las 2 tecnologías y he trabajado varios años con cada una de ellas. Pero bueno, entonces, ¿Cuál es la diferencia?…

PHP es un lenguaje de scripts, es decir que cada vez que se solicita una página PHP, se necesita interpretar el código para después ejecutarlo. Sin embargo, esto también tiene sus ventajas como por ejemplo, para hacer un cambio en un script PHP, solo se necesita guardar el archivo y listo. En general no es necesario compilar, registrar DLL’s o componentes en el sistema operativo del servidor.

En el caso de ASP.NET recordemos que es parte de toda una plataforma de desarrollo, la plataforma .NET. Como decía en el post anterior, el .NET no sólo sirve para crear páginas Web. Es por esto que ASP.NET se convierte en una opción mucho más poderosa en cuanto a la versatilidad. Al ser ASP.NET un componente de interface de todo el .NET Framework, ASP.NET puede servir para crear una interface Web rápida y fácilmente de por ejemplo, una aplicación Win32 (o de escritorio) reutilizando casi todo el código, o construir rápidamente una capa de Servicios (Web Services) que pueda ser aprovechada por aplicaciones móviles, Web y de escritorio simultáneamente. Esto tiene un valor muy grande sobre todo para empresas, donde el beneficio es construir rápidamente (y por lo tanto más barato) aplicaciones que puedan interactuar con otras ya existentes en la organización, o inclusive hacerlo con productos ya existentes.

Sin embargo, la implementación de una aplicación ASP.NET puede no ser tan simple como copiar y pegar los archivos. Y esto es porque ASP.NET solo se interpreta una vez, se pre-compila y cada vez que se ejecuta una página, el código se ejecuta directamente, sin pasar por la interpretación. Esta forma de interpretar el código solo una vez y después ejecutar directamente el código “compilado” es muy similar a la forma en que funcionan las páginas Web de JAVA (Una comparación de iguales sería más bien ASP.NET y JSP). En el caso de PHP, hay un producto desarrollado por Zend, que permite hacer un proceso similar de “pre-compilación”, para no tener que interpretar en cada solicitud el código con productos como el Zend Optimizer.

ASP.NET fue creado para poder desarrollar aplicaciones empresariales, que sean rápidas de desarrollar, que permitan ser escalables (en general agregar más servidores fácilmente), que puedan ejecutar procesos críticos o de alto impacto en la operación de la empresa, etc. Por todo lo anterior, el argumento de que “PHP es gratuito” no es necesariamente válido para una organización, donde el valor que tiene su información los hace no escatimar en la inversión para implementar sus sistemas. Es de sobra sabido que simplemente con los costos de licenciamiento de Windows, SQL Server (y toda la gama de productos extra que se pueden agregar), el costo de crear una aplicación puede crecer bastante, sin embargo el tiempo de desarrollo puede ser dramáticamente menor, lo que para la mayoría de las empresas resulta más redituable al poder tener en mucho menos tiempo una aplicación que empiece a recuperar la inversión rápidamente.

PHP es open source, y fue creado como hobbie. Está pensado específicamente para el Web y también tiene como objetivo ser extremadamente fácil de aprender. Sin embargo, por su naturaleza open source, ha tenido que pasar por un largo proceso de entrar al mundo empresarial y a ganarse el respeto como para que se decida crear una aplicación crítica en PHP. Hoy en día ha empezado a ganar mucho terreno en este campo, gracias a que algunas empresas han decidido utilizar el open source para su infraestructura y PHP es la elección natural en ese proceso. También gracias a los esfuerzos de Zend (empresa fundada por los inventores de PHP) de hacerlo atractivo para las empresas con iniciativas como el reciente Zend Framework o la Zend Platform que tratan de atender requisitos empresariales puntuales.

Otro hecho que debe ser interpretado con cuidado, es la penetración en el Web de cada tecnología. Estadísticamente, PHP es amo y señor del Web, ya que posee la mayor cantidad de sitios, sin embargo, la gran mayoría de esos sitios son páginas personales, blogs (basados en scripts como WordPress), foros (basados en scripts como phpBB), etc. que en su mayoría no son sitios con fines de poner en línea procesos críticos de negocio empresariales, por lo tanto es una cifra que no necesariamente significa que al ser la tecnología más utilizada sea “mejor”.

Así que, cuando oigas esta pregunta podrás responder con algo así como “Depende lo que quieras hacer, que plataforma tienes disponible, que presupuesto, que tan crítico es el proceso que quieres automatizar, es necesario interactuar con otras aplicaciones?, cuáles son tus necesidades de performance, etc”. Finalmente en este mundo del desarrollo de sistemas es mejor ser versátil que estar “casado” con uno u otro lado de la moneda

CODEORGAN:¿A qué suena tu sitio web?

Buen día SQLeros!! En esta ocasión estaba langareando en Internet y me encontré con una aplicación muy interesante, la cual esta desarrollada en Flash, y convierte el sitio web que le proporcionamos en una linda canción (Bueno a veces no pero esta chusca la cosa esta :) ).





[caption id="" align="aligncenter" width="300" caption="http://www.codeorgan.com/"]http://www.codeorgan.com/[/caption]

Ahora según nos cuenta el About del sitio, codeorgan, toma le código de la página y analiza el el contenido del cuerpo y lo transforma en musica, removiendo todos los caracteres que no se encuentran en la escala musical, es decir solo deja de la A a la G, despues de esto selecciona el sintetizador para el sonidito, donde se utiliza el número total de caracteres en el sitio.


Actualmente se cuenta con 10 estilos de sintetizadores y estos son utilizados de acuerdo a un porcentaje del contenido del sitio.


Y finalmente para definir el ritmo de la batería se utiliza la razón entre el número de caracteres de la página y el número de caracteres que son notas musicales y de igual forma se cuenta con 10 patrones de batería.


Al final de todo la (pinche) página suena (no!?). Acá el vinculo CODEORGAN.


Un Saludo!!


¿Qué es el CAPTCHA y RECAPTCHA?

Para poder distinguir a los humanos de los robots en las páginas web, sobre todo para evitar el spam y otros abusos, aparecieron los CAPTCHA: esas letras y números, normalmente distorsionadas que tienes que identificar en un formulario para que te deje enviarlo. Este término, marca registrada propiedad de la Carnagie Mellon University, es el acrónimo de “Completely AutomatedPublic Turing test to tell Computers and Humans Apart”. El Test de Turing tiene como objeto ver la capacidad de una máquina de mostrar inteligencia. Descrito por el profesor Alan Turing en 1950 el test consiste en una conversación entre un juez humano y otros dos interlocutores, uno humano y el otro una máquina, mediante un programa de teletipos o chat, para comprobar estrictamente la capacidad de la máquina de expresarse, no de reproducir palabras. Si el juez no es capaz de diferenciarlos, la máquina habrá pasado el test. Por eso los CAPTCHA están considerados tests de Turin inversos, ya que es el humano el que ha de demostrar su condición.


Los primeros CAPTCHA eran generados por programas que distorsionaban las imágenes, pero hecha la ley hecha la trampa, los chicos malos pronto encontraron métodos para saltárselos. Así que cada vez se hicieron más complejos añadiendo líneas y motivos de fondo.


Lo último son los reCAPTCHA cuyo lema ya casi lo explica todo (stop spam, read books), en lo que viene a ser un divertido ejercicio de “recontra-ingeniería-inversa”. El sistema es parecido, pero en vez de utilizar fondos raros o rayas, te presentará un par de palabras sacadas de libros antiguos que los programas de reconocimiento de escritura (OCR) no han sido capaces de identificar a los que además se le añade distorsión. Así que de paso que demuestras que eres humano, colaboras en la digitalización de libros antiguos. Según los datos de reCAPTCHA cada día se completan 60 millones de CAPTCHAs en todo el mundo, así que de la “computación distribuída” hemos pasado a la “computación distribuída humana”.


Además reCAPTCHA es gratuito y puedes implementarlo en tu blog (hay plugin para WordPress), y tiene una opción sonora para personas con problemas visuales.


Un Saludo!!

MariaDB, La Hermanita Menor de MySQL

Es por todos sabido que Oracle ha adquirido Sun, y con ello lo que Sun había adquirido meses atrás, hablo en concreto de MySql.


MySql es o era (no sé cuál de los dos calificativos es correcto) el sistema de bases de datos Open Source más famoso y utilizado en el mundo.


Sin embargo, ahora tenemos que Sun forma definitivamente parte de Oracle, y Oracle tiene ahora la "patita" en máquinas de Sun, la "pattita" en lenguajes con Java, y la "patita" de bases de datos con MySql, pero Oracle es famosa precisamente por tener un gestor de bases de datos muy poderoso, el propio Oracle que da nombre a la compañía, así que, ¿qué hacer con MySql?.


Hay que tener en cuenta además, que la sombra de Oracle es muy larga y lo suficientemente ancha como para ocultar a MySql de la faz de la tierra. La incertidumbre por lo tanto, es bastante grande con respecto al futuro de MySql.


De momento no ha hecho nada "raro" con MySql, sin embargo, hay mucha gente que comenta que Oracle va a empezar a cobrar soporte con MySql y en el futuro...:s ya veremos qué...;) igual incluso hasta desaparece...


Aún y así, un irreducible finlandés no se va a quedar de brazos cruzados.
Hablo de Ulf Michael Widenius a quién se le conoce con el apodo de "Monty" (blog de Monty).


Monty es el principal autor de MySql y miembro fundador de MySql AB, empresa que fue adquirida en Febrero de 2008 por Sun Microsystems como comentaba anteriormente. Por la nada depreciable cantidad de 16 millones de € ($ 252883200 MXN).


Con la venta de MySql, Monty se embolsó mucho dinero y en Febrero de 2009 dejó Sun para montar una nueva compañía. Los motivos por los que dejó Sun no están claros.


Lo peor para Oracle, es que Monty se ha puesto a crear un nuevo motor de bases de datos de datos teniendo en mente a MySql y agregándoles "esas" cosas que quería haberle agregado a MySql en su día y que por las razones que sean, no ha podido llevar a cabo.


La iniciativa de Monty tiene que ver sobre todo con la adquisición de Sun por parte de Oracle.


Adquisición maestra, ya que se ha manejado la situación estratégica de forma expecional. Primero Sun compra MySql,  todo normal y coherente, no!?.


Luego Oracle compra Sun, y aquí aparecen las dudas. Monty duda de la compra (seguramente se sintió engañado/decepcionado/triste como amante de un sistema gestor de bases de datos abierto).


El departamento de la libre competencia de la Unión Europea analiza entonces si vulnera la libertad, pero aunque Oracle y Sun tienen un frente común en el mundo de las bases de datos, no es menos cierto que al tener Sun sus departamentos de Hardware y Software con Java a la cabeza, se ha hecho claramente la vista gorda sobre MySql.


Sin dudas, siento que esto ya estaba pactado de ante mano y Monty fue engañado. Quitaron a MySql, y así Oracle solo tendría un único competidor real y de importancia, hablo de SQL Server.


Al menos a Monty le quedó la tranquilidad de haberse hecho rico. Pero Monty es como comentaba antes, un hombre irreducible y tenía pensado vengar su honor como si de un duelo se tratara.


En Internet apareció entonces una iniciativa impulsada por el propio Monty para salvar a MySql, hecho que motivó que Monty se adentrara en esta aventura.


El producto en el que anda trabajando se llama MariaDB. El nombre de Maria se debe a su hija menor.


En realidad, MariaDB es un fork (bifurcación, branch o rama) que parte del código base de MySql. Es decir y como ellos lo comentan en el wiki de la página MariaDB es un upgrade de MySQL.


La empresa de Monty encargada de llevar a cabo la aventura de MariaDB se llama Monty Program AB.


El icono elegido por Monty en este caso es una foca, icono que posiblemente utilice para sus distribuciones.




MariaDB Logo
MariaDB Logo


Ahora bien... ¿cuál es la versión actual de MariaDB?.
La versión actual es MariaDB 5.2.0 Beta que está basada en MySql 5.1.


Monty afirma que esta versión es estable, aunque no quiere decirlo muy alto porque es una versión en desarrollo y por lo tanto, no debería ser utilizada en producción.


El caso es que a Oracle le ha salido un emergente y posible competidor, porque el irreducible Monty no tiene pensado dejar tirada a la Comunidad y va a hacer todo lo posible por sacar adelante el proyecto de MariaDB.


Por su hija y por él mismo, va a luchar para prevalecer su honor. Una noticia que personalmente celebro de pie.

Diferencias entre TRUNCATE y DELETE en MySQL

Si os habeis preguntado alguna vez las diferencias entre truncate y delete en la base de datos MySQL Server. Aquí os pongo una pequeña explicación de cuando utilizar una u otra.


TRUNCATE


Este comando borra todas las filas de una tabla sin registrar las eliminaciones individuales en el log de transacciones.


Por ejemplo:


[sourcecode lang="sql"]TRUNCATE Cursos;[/sourcecode]


Borra todos los registros de la tabla Cursos


DELETE


DELETE borra las filas de una tabla, pero registra las eliminaciones individuales en el log de transacciones. Podemos utilizar la clausula WHERE para filtrar las filas que necesitemos eliminar.


Ejemplo:


[sourcecode lang="sql"]DELETE FROM Cursos  WHERE CursoId = 50;[/sourcecode]


DIFERENCIAS ENTRE TRUNCATE Y DELETE




  • Ambas eliminan los datos, no la estructura.

  • Solo DELETE permite la eliminación condicional de los registros.

  • DELETE es una operación registrada en el log de transacciones y trucate no.

  • TRUNCATE es una operación registrada en el log de transacciones, pero como un todo, en conjunto, no por eliminación individual. TRUNCATE se registra como una liberación de las páginas de datos en las cuales existen los datos.

  • TRUNCATE es más rápida que DELETE.

  • Ambas se pueden deshacer con un ROLLBACK.

  • TRUNCATE reiniciará el contador para una tabla que contenga una columna IDENTITY.

  • DELETE mantendrá el contador de la tabla para una columna IDENTITY.

  • TRUNCATE es un comando DDL(lenguaje de definición de datos) mientras que DELETE es un DML(lenguaje de manipulación de datos).

  • TRUNCATE no desencadena un TRIGGER, DELETE sí.

  • TRUNCATE recrea una tabla.


CUANDO USARLAS




  • Usar Truncate es más rapido que Delete si vas a borrar toda una tabla y no te importan los indices(identity) o bien quieres resetearlos.

  • Usar Delete para borrados selectivos.

  • Usar Delete en caso de tener Foreign Key, es decir .. usarla en caso de borrados en cascada.

Google Over SSL

Hace unos pocos días, fue de conocimiento público el hecho de que Google había estadorecolectando datos de redes Wi-Fi abiertas a través de sus vehículos asociados con el servicio Google Street View. Una oleada de protestas y dos demandas después, el asunto parece haber sido corregido en Mountain View, aunque la ignorancia por parte de miles de usuarios al dejar sus redes Wi-Fi completamente abiertas y sin una protección eficientesigue tan vigente como antes del incidente (N. del. R.: Cierren sus redes. No es broma.). Mientras tanto, Google se encuentra trabajando sobre una capa extra de protección para los resultados de las búsquedas hechas en su motor. En otras palabras, ha aparecido unaversión beta del clásico portal de Google, con una conexión segura utilizando el protocolo criptográfico SSL.




Google SSL



es Facebook. La gente acostumbra a ingresar a la red social con la clásica dirección WWW, pero si agregan una "s" al http, verán que Facebook tiene certificado de seguridad, y es compatible con esta clase de conexión. Google ha incluido conexiones seguras en varios de sus servicios, como es el caso de Gmail, pero ahora es el turno del portal de búsquedas. Actualmente el servicio se encuentra en fase beta, y es posible que los usuarios obtengan un rendimiento inferior al acostumbrado, pero lo hemos estado probando desde hace un buen rato, y no hemos tenido inconveniente alguno.

Tal vez pase algún tiempo hasta que la conexión segura en el portal de búsquedas de Google se convierta en la opción por defecto. Google ha explicado que la conexión segura sólo encripta las palabras claves y los resultados enviados. En caso de que el ordenador se encuentre infectado por alguna clase de malware o keylogger que pueda registrar la actividad del usuario, dicha conexión segura sería irrelevante, pero nunca está de más contar con una capa extra de seguridad. Desde todo punto de vista esto se ve como una especie de compensación ante el "error" cometido con los coches de Google Street View. No es necesario decir que Mountain View deberá tener más cuidado para la próxima, pero esto ha servido para que los usuarios obtengamos algo mejor. Después de todo, las búsquedas encriptadas no suenan nada mal.

Numeros Aleatorios Reales Con Random.Org

Hola SQLeros, el día de hoy les presento una aplicación web que es muy interesante se encuentra en la dirección RANDOM.ORG.





[caption id="attachment_306" align="aligncenter" width="300" caption="RANDOM.ORG"]RANDOM.ORG[/caption]

Lo peculiar es la forma en que los numeros aleatorios son generados, tal vez  se han preguntado cómo las máquinas predecibles como las computadoras pueden generar aleatoriedad.


En realidad, los números aleatorios usados en la mayoría de los programas de compudatora son pseudo-aleatorios, lo que significa que cada numero se genera en una forma predecible mediante una fórmula matemática.


Esto está bien para muchos propósitos, pero no puede ser al azar en la forma en que lo esperamos, por ejemplo si estás acostumbrado a juegos de azar o a la lotería.


RANDOM.ORG ofrece auténticos números al azar para cualquier usuario de la  Internet. El azar viene de ruido atmosférico, que para muchos propósitos es mejor que el algoritmos de números pseudo-aleatorios que se  utilizan normalmente en los programas de la computadora.

La gente usa RANDOM.ORG para la creación de dibujos, la lotería y sorteos, para realizar juegos, etc. , para aplicaciones científicas y para el arte y la música.


El servicio ha existido desde 1998 y fue construido y está siendo operado por Mads Haahr de la Facultad de Ciencias de la Computación y Estadística en el Trinity College de Dublín en Irlanda.


No esta demás señalar que la página cuenta con un API el cual esta expuesto en intenet y se puede consumir desde distintos lenguajes de programación con sus respectivas implementaciones.


Después de una breve platica sobre este servicio haremos un ejercicio en PHP.


Supongamos que necesitamos obtener un intervalo de números aleatorios para hacer alguna actividad.


[sourcecode lang="php"]
< ?php
/* Titulo: Numeros Aleatorios Reales Con Random.Org
* Autor: RammsZeñábI.
* Blog: SQLeros.Com.Ar 2010
*Funcion para recolectar una serie de numeros aleatorios desde la página RANDOM.ORG
* $numeros, es la cantidad de numeros que se decean obtener por defecto es 1.
* $minimo, es el intervalo izquierdo de la serie por defecto es 0.
* $maximo, es el intervalo derecho de la serie por defecto es 10.
* $base, es la base de la serie de los numeros obtenidos, por defecto es 10.
* $formato de la serie resultante puede ser "plain" o "html" por defecto es "plain".
*/
function aleatorioDeRandomDotORG($numeros=1,$minimo=0,$maximo=10,$base=10,$formato="plain")
{

$repuesta_http=""; //guardamos la serie de los numeros generados
$servidor="www.random.org"; //el dominio a donde crearemos la conexión.
$consulta="/integers/?num=$numeros&min=$minimo&max=$maximo&col=1&base=$base&format=$formato&rnd=new"; //la consulta GET que harémos.
$puerto=80; //puerto a donde se conecta el socket.
$tiempoEspera=30; //tiempo de espera para la conexión.

//Creamos un socket y si todo sale muy bien
if($fsock = fsockopen($servidor,$puerto, $errno, $errstr, $tiempoEspera))
{
//ejecutamos la consulta
@fputs($fsock, "GET $consulta\r\n");
// y leemos los datos.
while (!@feof($fsock))
{
//guardamos en la variable lo que leemos
//agregamos la marca "," para separalas por comas al final.
$repuesta_http .= fgets($fsock, 128).",";
}
//Cerramos el socket.
fclose($fsock);
}
//y finalmente devolvemos un arreglo con los valores de la serie.
return explode(",",$repuesta_http);
}
?>


Creación de Numeros Aleatorios Usando RANDOM.ORG


< ?php
//probamos el codigo.
$cosa=aleatorioDeRandomDotORG(5);
//ahora mostramos los valores.
echo "
    ";
    for($i=0;$i {
    echo "
  1. $cosa[$i]";
    }
    echo "";
    ?>

    SQLeros.Com.Ar



    [/sourcecode]

    Bueno un Saludo!!

Corriendo Wordpress ¿En SQL Server?

Creo que la posibilidad de correr Wordpress con SQL Server será del agrado de muchos, ya que por fin existe una solución tanto de forma local como en la nube mediante el uso de Windows Azure SQL Azure.


Existen dos formas de realizar la instalación:




  • Distribución: esta es la forma más fácil de empezar. Incluye la última versión de Wordpress con el parche de SQL Server ya aplicado.

  • Parche: son únicamente los archivos modificados, mismos que pueden ser aplicados a la versión de Wordpress que descargues.


El propósito de este parche es proporcionar una abstracción en la estructura de la base de datos dentro de Wordpress, causando un mínimo de errores en el core de Wordpress y sin perdidas en las características del CMS.


El tutorial completo de instalación consta tan sólo de 8 pasos.


Enlace: Download WordPress on SQL Server Distro & PatchWordpress on MicrosoftGetting Started

Microsoft Visual Studio 2010 En Castellano

Visual Studio 2010 es la nueva versión del entorno de desarrollo integrado para sistemas Windows que incorpora nuevas características mejoradas que hacen que todo el proceso de desarrollo, desde el diseño a la implementación, sea más sencillo.

Con este lanzamiento Visual Studio 2010 cuenta con versiones en inglés, francés, alemán, japones y español.

Visual Studio 2010 dispone de las soluciones, 2010 Profesional, 2010 Premium, 2010 Ultimate y Test Profesional 2010 que podrás compararse desde www.microsoft.com.

Interesados pueden encontrar más información acerca de Visual Studio 2010 así como acceder a la compra o descarga de una versión de prueba desde www.microsoft.com.

¿Que diablos es foobar?

Hola que tal SQLeros, me da mucho gusto que me estén leyendo en este post. Ahora hablaremos un poco de  los terminos  foobarfoobar, and baz,  esta palabra, ¿cosa?, ¿termino?, o lo que sea que se usa en la jerga informatica desde ya hace tiempo.


Pero apoco nunca se han preguntado (que chingaos) ¿cual es su significado?


Buscando un poco por la Internet, me he encontrado muchas cosas muy interesantes (y que realmente me han sorprendido) como:


la definición de la Wikipedia nos dice:



Foo es un término genérico ampliamente usado para aludir a cualquier entidad informática cuyo nombre se ignora o no se quiere expresar. Por sí misma la palabra foo no tiene un significado preciso, solamente es una representación lógica en el sentido en que las letras xy se usan en álgebra para representar un número desconocido.

La palabra foo aparece en el idioma inglés como un neologismo dada su popularidad en describir conceptos en las ciencias informáticas y muchas personas la consideran un ejemplo canónico de una variable metasintáctica. Se usa de forma amplia en la literatura informática anglosajona, generalmente en los ejemplos de programaciónpseudocódigo. La Real Academia Española no reconoce esta palabra como parte del idioma español.

El origen de tal palabra no está muy claro porque tiene antecedentes muy complicados, incluyendo una larga historia en los guiones decómicscaricaturas. Sintácticamente podría ser una abreviación de File Or Object.

Tal como se pueden nombrar a personas desconocidas como fulanomenganoperenganocitranozutano, en la informática también existe una familia de palabras como foobarfoobarbaz.

foobar en Facebook


¡Un RFC sobre la etimología del Foo!


Tambien como lo explica la wikipedia y demas definiciones es usada para describir, objetos, elementos o alguna cosa que es muy trivial o no tiene ninguna relevancia en el contexto.


Para dar ejemplos de código, configuraciones y demás aplicaciones en las que se muestra el comportamiento mas no el valor del elemento, objeto, cosa.


[sourcecode lang="php"]
< ?php
if($foo>$bar):
echo $foo;
endif;
?>
[/sourcecode]

Un Saludo!

El móvil de Hansel y Gretel

Anoche le contaba a la Nina un cuento infantil muy famoso, el Hansel y Gretel de los hermanos Grimm. En el momento más tenebroso de la aventura los niños descubren que unos pájaros se han comido las estratégicas bolitas de pan, un sistema muy simple que los hermanitos habían ideado para regresar a casa.Hansel y Gretel se descubren solos en el bosque, perdidos, y comienza a anochecer. Mi hija me dice, justo en ese punto de clímax narrativo: “No importa. Que lo llamen al papá por el móvil”.


Yo entonces pensé, por primera vez, que mi hija no tiene una noción de la vida ajena a la telefonía inalámbrica. Y al mismo tiempo descubrí qué espantosa resultaría la literatura —toda ella, en general— si el teléfono móvilhubiera existido siempre, como cree mi hija de cuatro años. Cuántos clásicos habrían perdido su nudo dramático, cuántas tramas hubieran muerto antes de nacer, y sobre todo qué fácil se habrían solucionado los intríngulis más célebres de las grandes historias de ficción.
Piense el lector, ahora mismo, en una historia clásica, en cualquiera que se le ocurra. Desde la Odisea hasta Pinocho, pasando por El viejo y el mar, Macbeth, El hombre de la esquina rosada o La familia de Pascual Duarte. No importa si el argumento es elevado o popular, no importa la época ni la geografía.


Piense el lector, ahora mismo, en una historia clásica que conozca al dedillo, con introducción, con nudo y con desenlace.


¿Ya está?
Muy bien. Ahora ponga un teléfono móvil en el bolsillo del protagonista. No un viejo aparato negro empotrado en una pared, sino un teléfono como los que existen hoy: con cobertura, con conexión a correo electrónico y chat, con saldo para enviar mensajes de texto y con la posibilidad de realizar llamadas internacionales cuatribanda.


¿Qué pasa con la historia elegida? ¿Funciona la trama como una seda, ahora que los personajes pueden llamarse desde cualquier sitio, ahora que tienen la opción de chatear, generar videoconferencias y enviarse mensajes de texto? ¿Verdad que no funciona un carajo?


La Nina, sin darse cuenta, me abrió anoche la puerta a una teoría espeluznante: la telefonía inalámbrica va a hacer añicos las nuevas historias que narremos, las convertirá en anécdotas tecnológicas de calidad menor.


Con un teléfono en las manos, por ejemplo, Penélope ya no espera con incertidumbre a que el guerrero Ulises regrese del combate.


Con un móvil en la canasta, Caperucita alerta a la abuela a tiempo y la llegada del leñador no es necesaria.


Con telefonito, el Coronel sí tiene quién le escriba algún mensaje, aunque fuese spam.


Y Tom Sawyer no se pierde en el Mississippi, gracias al servicio de localización de personas de Telefónica.


Y el chanchito de la casa de madera le avisa a su hermano que el lobo está yendo para allí.


Y Gepetto recibe una alerta de la escuela, avisando que Pinocho no llegó por la mañana.


Un enorme porcentaje de las historias escritas (o cantadas, o representadas) en los veinte siglos que anteceden al actual, han tenido como principal fuente de conflicto la distancia, el desencuentro y la incomunicación. Han podido existir gracias a la ausencia de telefonía móvil.


Ninguna historia de amor, por ejemplo, habría sido trágica o complicada, si los amantes esquivos hubieran tenido un teléfono en el bolsillo de la camisa. La historia romántica por excelencia (Romeo y Julieta, de Shakespeare) basa toda su tensión dramática final en una incomunicación fortuita: la amante finge un suicidio, el enamorado la cree muerta y se mata, y entonces ella, al despertar, se suicida de verdad. (Perdón por el espoiler.)


Si Julieta hubiese tenido teléfono móvil, le habría escrito un mensajito de texto a Romeo en el capítulo seis:


M HGO LA MUERTA,PERO NO STOY MUERTA.NO T PRCUPES NIHGAS IDIOTCES. BSO.


Y todo el grandísimo problemón dramático de los capítulos siguientes se habría evaporado. Las últimas cuarenta páginas de la obra no tendrían gollete, no se hubieran escrito nunca, si en la Verona del siglo catorce hubiera existido la promoción “Banda ancha móvil” de Movistar.


Muchas obras importantes, además, habrían tenido que cambiar su nombre por otros más adecuados. La tecnología, por ejemplo, habría desterrado por completo la soledad en Aracataca y entonces la novela de García Márquez se llamaría ’Cien años sin conexión’: narraría las aventuras de una familia en donde todos tienen el mismo nick (buendia23, a.buendia, aureliano_goodmornig) pero a nadie le funciona el messenger.


La famosa novela de James M. Cain —’El cartero llama dos veces’— escrita en 1934 y llevada más tarde al cine, se llamaría ’El gmail me duplica los correos entrantes’ y versaría sobre un marido cornudo que descubre (leyendo el historial de chat de su esposa) el romance de la joven adúltera con un forastero de malvivir.


Samuel Beckett habría tenido que cambiar el nombre de su famosa tragicomedia en dos actos por un título más acorde a los avances técnicos. Por ejemplo, ’Godot tiene el teléfono apagado o está fuera del área de cobertura’, la historia de dos hombres que esperan, en un páramo, la llegada de un tercero que no aparece nunca o que se quedó sin saldo.


En la obra ’El jotapegé de Dorian Grey’, Oscar Wilde contaría la historia de un joven que se mantiene siempre lozano y sin arrugas, en virtud a un pacto con Adobe Photoshop, mientras que en la carpeta Images de su teléfono una foto de su rostro se pixela sin remedio, paulatinamente, hasta perder definición.


La bruja del clásico ’Blancanieves’ no consultaría todas las noches al espejo sobre “quién es la mujer más bella del mundo”, porque el coste por llamada del oráculo sería de 1,90€ la conexión y 0,60€ el minuto; se contentaría con preguntarlo una o dos veces al mes. Y al final se cansaría.


También nosotros nos cansaríamos, nos aburriríamos, con estas historias de solución automática. Todas las intrigas, los secretos y los destiempos de la literatura (los grandes obstáculos que siempre generaron las grandes tramas) fracasarían en la era de la telefonía móvil y del wifi.


Todo ese maravilloso cine romántico en el que, al final, el muchacho corre como loco por la ciudad, a contra reloj, porque su amada está a punto de tomar un avión, se soluciona hoy con un SMS de cuatro líneas.


Ya no hay ese apuro cursi, ese remordimiento, aquella explicación que nunca llega; no hay que detener a los aviones ni cruzar los mares. No hay que dejar bolitas de pan en el bosque para recordar el camino de regreso a casa.


La telefonía inalámbrica —vino a decirme anoche la Nina, sin querer— nos va a entorpecer las historias que contemos de ahora en adelante. Las hará más tristes, menos sosegadas, mucho más predecibles.


Y me pregunto, ¿no estará acaso ocurriendo lo mismo con la vida real, no estaremos privándonos de aventuras novelescas por culpa de la conexión permanente? ¿Alguno de nosotros, alguna vez, correrá desesperado al aeropuerto para decirle a la mujer que ama que no suba a ese avión, que la vida es aquí y ahora?


No. Le enviaremos un mensaje de texto lastimoso, un mensaje breve desde el sofá. Cuatro líneas con mayúsculas. Quizá le haremos una llamada perdida, y cruzaremos los dedos para que ella, la mujer amada, no tenga su telefonito en modo vibrador. ¿Para qué hacer el esfuerzo de vivir al borde de la aventura, si algo siempre nos va a interrumpir la incertidumbre? Una llamada a tiempo, un mensaje binario, una alarma.


Nuestro cielo ya está infectado de señales y secretos: cuidado que el duque está yendo allí para matarte, ojo que la manzana está envenenada, no vuelvo esta noche a casa porque he bebido, si le das un beso a la muchacha se despierta y te ama. Papá, ven a buscarnos que unos pájaros se han comido lasmigas de pan.


Nuestras tramas están perdiendo el brillo —las escritas, las vividas, incluso las imaginadas— porque nos hemos convertido en héroes perezosos.


por Hernán Casciari

El Kamasutra y La Criptografia

Esta visión general de varios algoritmos criptográficos es una historia cronológica de la criptografía, cuyos orígenes se remontan a la antigüedad y que con el tiempo ha sido objeto de constante evolución.

Ten en cuenta que este cuadro no es completo.

El primer texto escrito data de hace más de 6000 años. El arte del cifrado ha existido desde hace cerca de 3000 años.







































































































































































































































































































c. 1900 ACEn el antiguo Egipto se usaron símbolos que no eran los normales.
c. 1500 ACLos fenicios diseñaron un alfabeto.
c. 1000 ACSe usaron otros símbolos distintos a los normales en la antigua Mesopotamia.
c. 600 ACEn Palestina se cifran textos usando un algoritmo simple de sustitución monoalfabética Atbash.
c. 500 ACLos espartanos cifran mensajes utilizando Scytale.
c. 400 ACEl Kamasutra describe un algoritmo de cifrado por sustitución monoalfabética.
c. 200 ACEl historiador griego Polybius describe el cifrado de Polybius por primera vez.
c. 100-44 ACJulio César inventa un código para cifrar sus mensajes (el Código César). Éste es el algoritmo de sustitución monoalfabética más conocido.
c.500-1400DCLa "edad oscura de la criptografía" empieza en Europa: Durante este periodo la criptografía es considerada como magia negra y se pierde gran parte del conocimiento que se tenía hasta la época. Por otro lado, la criptografía florece en Persia.
855 DCAparece el primer libro sobre criptografía en Arabia. Entre otras cosas, Abu 'Abd al-Raham al-Khahil ibn Ahmad ibn'Amr ibn Tammam al Farahidi al-Zadi al Yahamadi (Abu-Yusuf Ya’qub ibn Ishaq al-Kindi, conocido como Al-Kindi) describe orgulloso en su libro un mensaje griego descifrado que es deseado por el emperador bizantino. Su criptoanálisis se ha basado en un análisis de frecuencia ayudado con el conocimiento de una pequeña porción del comienzo del texto original -- este mismo criptoanálisis es el que se empleará en la Segunda Guerra Mundial contra Enigma.
1379El papa Clemente VII ha escapado a Avignion y ha ordenado a su secretario, Gabrieli di Lavinde (Parma), diseñar un nuevo código para cifrar sus mensajes. Este código consiste en una combinación de sustituciones de letras individuales y palabras codificadas. Gabrieli ha creado una lista de las palabras más comunes que son sustituidas por combinaciones de dos letras y el resto de palabras que no están en la lista son cifradas utilizando sustitución monoalfabética.
Debido a la sencillez de este código, será utilizado durante los próximos 450 años, sobre todo en los círculos diplomáticos.
1412En Arabia se escribe una enciclopedia con 14 tomos en donde se explican conceptos de criptografía. En ella, además de las técnicas de sustitucióntransposición, se explica un método consistente enrepetidas sustituciones de cada carácter del texto claro. Es la primera vez en la historia que habla de un método como éste.
Siglo XVEn Italia se produce un boom de la criptografía debido un alto desarrollo de la vida diplomática.
1466Leon Battista Alberti, uno de las figuras líderes del Renacimiento Italiano, publica su libro "Modus scribendi in ziferas", en donde habla por primera vez del disco de Alberti, el primer sistema polialfabético que se conoce. Alberti es el secretario de un cuerpo oficial perteneciente a la corte papal que se encarga únicamente de labores relacionadas con la criptografía. Por todo esto, Alberti será conocido como el "padre de la criptografía".
1518Se imprime el primer libro sobre criptografía cuyo título es "Polygraphia libri sex", escrito por el abad Johannes Trithemius en lengua alemana. En este libro también se describen cifrados polialfabéticos con las nuevas tablas de sustitución rectangulares.
1563Giovanni Battista Porta publica "De Furtivis Literarum Notis", un libro en el que describe distintos métodos de cifrado y criptoanálisis. En él se menciona el primer cifrado por sustitución digráfica.
Finales del s.XVIFrancia toma la delantera en criptoanálisis.
1577El brillante criptoanalista flamenco Van Marnix cambia el rumbo de la historia europea al descifrar una carta española en donde se explicaban los planes para conquistar Inglaterra enviando tropas desde los Países Bajos.
1585El diplomático francés Blaise de Vigenère publica su libro "Tractié de Chiffre" en donde presenta el primer sistema polialfabético con autoclave, conocido como "Le chiffre indéchiffrable" aunque más adelante se le cambiará el nombre por el de el cifrado de Vigenère.
La idea de la autoclave perdurará en el tiempo y se aplicará en los algoritmos futuros como el DES en los modos CBC y CFB.
1586Se intenta llevar a cabo el complot Babington por el cual se asesinaría a la reina Elisabeth I de Inglaterra y se colocaría en el trono a Mary Stuart, Reina de Escocia. El "Servicio Secreto Británico" pone fin a esta trama y consigue los nombres de los conspiradores, condenando a Mary Stuart.
Mary se comunicaba a través de cartas con sus conspiradores. Pero el mensajero, que era un espía de Elisabeth realizaba copias exactas de cada carta y las enviaba a Francis Walsingham, secretario del estado de Elisabeth, que a través de Thomas Phelippes consiguió descifrarlas revelando el complot.
Pero la cosa no quedó ahí, Walsingham quería saber la identidad de los conspiradores por lo que hizo que Phelippes añadiera una posdata a una carta, de manera que en la respuesta a la carta, Mary incluyó el nombre de los implicados.
Siglo XVIIComienza la era de las cámaras negras. La mayoría de los gobiernos disponen de departamentos en donde profesionales se encargan de romper los cifrados a los que tienen acceso.
1623Sir Francis Bacon describe un método de esteganografía: cada letra del texto claro es reemplazada por un grupo de cinco letras formado por una combinación de las letras 'A' y 'B' que se intercalan en un texto normal con una fuente diferente. Este método es el precursor del que luego será conocido como codificación birania de 5 bits.
1628Antoine Rissignol se convierte en el primer criptoanalista contratado a tiempo completo tras descifrar un mensaje del enemigo gracias al cual se puso fin al sitio que los hugonotes ejercían sobre Realmont. Desde entonces, el papel del criptoanalista ha sido fundamental en toda organización militar.
1700El zar de Rusia utiliza una gran tabla de códigos de 2000-3000 sílabas y palabras para cifrar sus mensajes.
1795Thomas Jefferson diseña el primer dispositivo de cifrado cilíndrico, conocido como la "rueda de Jefferson". Sin embargo, no lo utilizará nunca, por lo que caerá en el olvido o, más bien, no se llegará a hacer público.
1854El matemático inglés Charles Babbage inventa un dispositivo de cifrado cilíndrico similar al de Jefferson. Además, descubre un método de criptoanálisis para romper el, hasta ahora conocido, "cifrado irrompible" que diseñó Vigenère. Es por ello que a partir de este momento se conocerá como el cifrado de Vigenère, aunque en realidad esto no se hará público hasta su muerte ya en el siglo XX.
Siglo XIXLa criptología encuentra un lugar en la literatura: Arthur Conan Doyle, Julio Verne, Edgar Allan Poe...
1854El físico inglés Charles Wheatstone inventa un cifrado que utiliza una matríz de 5x5 como clave. Su amigo, Lord Lyon Playfair, barón de Saint Andrews lo hace público en círculos militares y diplomáticos y, por ello, se conocerá como el cifrado de Playfair.
1863Friedrich Kasiski (1805-1881), un importante prusiano, desarrolla métodos estadísticos de criptoanálisis que fueron capaces de romper el cifrado de Vigenère.
1883Se publica "La Cryptographie militaire" de Auguste Kerckhoff von Nieuwendhoff. Esto supondrá un hito en la criptografía telegráfica de la época. Contiene el "principio de Kerckhoff", que exige basar la seguridad de un método de cifrado únicamente en la privacidad de la clave y no en el algoritmo.
1891El francés Etienne Bazeries inventa un dispositivo cilíndrico conocido como el cilindro Bazeries que, en principio, es similar a la rueda de Jefferson. Se publicará su diseño en el año 1901, después de que el Ejército francés lo rechace.
1917El descifrado de los telegramas de Zimmermann por el Servicio Secreto Inglés provocó la crítica entrada de los EEUU en la Primera Guerra Mundial
1917El americano Gilbert S. Vernam, empleado de AT&T, desarrolla la cinta aleatoria de un sólo uso, el único sistema criptográfico seguro.
1918El criptoanalista francés, Lieutenant Georges Painvin rompe el cifrado ADFGVX, que es el que usaba el ejército alemán desde un poco antes del fin de la Primera Guerra Mundial. Este algoritmo consistía en un cifrado en dos pasos; primero se realizaba una sustitución (cada letra era sustituida por un bi-grama a través de una matriz que hacía de clave) y después, los bi-gramas se dividían en columnas que se reorganizaban.
1918Arthur Scherbius y Richard Ritter inventan la primera Enigma. Al mismo tiempo, la máquina de rotores es inventada y patentada por Alexander Koch (Países Bajos) y Arvid Damm (Suecia).
1920William F. Friedman (1891-1969), tras ser galardonado como el padre de la criptografía estadounidense, diseña (sin relación con Kasiski) métodos estadísticos para criptoanalizar el cifrado de Vigenère.
1921El californiano Edward Hebern construye la primera máquina de cifrado basada en el principio de losrotores
1922La rueda de Jefferson es redescubierta en los EEUU, cuyo cuerpo de marines la rediseña y la utiliza durante la Segunda Guerra Mundial.
1923La máquina de rotores Enigma, diseñada por el alemán Arthur Scherbius, se revela en el International Post Congress. Además, Scherbius funda la compañía "Chiffriermaschinen AG" para comercializar Enigma en todo el mundo.
1929Lester S. Hill publica el artículo "Cryptography in an Algebraic Alphabet". El cifrado de Hill aplica álgebra (multiplicación de matrices) para cifrar.
1940Los espías alemanes utilizan micropuntos.
1940Alan Turing rompe Enigma con la idea de la Bomba de Turing que concibió basándose en el trabajo deMarian Rejewski.
1941Se descifran los mensajes con los que se comunicaban los japoneses en donde se hablaba del inminente ataque a Pearl Harbor. Esto es debido a la labor de un equipo dirigido por William Frederick Friedman, que rompió la máquina japonesa Purple.
Muchos historiadores creen que el criptoanálisis acortó en una año la Segunda Guerra Mundial.
1948/1949Claude Shannon establece la bases matemáticas de la teoría de la información y publica "Communication Theory of Secrecy Systems", en donde expone un algoritmo de cifrado teóricamente irrompible que debe satisfacer los requisitos de la cinta aleatoria de un sólo uso.
1973David Elliott Bell y Len LaPadula desarrollan el modelo Bell-LaPadula que formaliza las normas de acceso a la información clasificada, con la intención de lograr la confidencialidad de los datos.
1973-1975Ellis, Cocks y Williamson desarrollan un algoritmo de cifrado de clave pública para el gobierno británico (GCHQ). Este descubrimiento no será conocido públicamente hasta 1997.
Debido a esto, los métodos de cifrado asimétrico serán nuevamente reconstruidos de forma independiente y, esta vez sí, públicamente por Diffie, Hellman, Rivest, Shamir y Adleman, que serán considerados los descubridores de la criptografía de clave pública.
1975Diffie y Hellman describen que los procedimientos de clave pública son teóricamente posibles, a pesar de que se ha intentado demostrar lo contrario.
1976Whitfield Diffie y Martin Hellman publican "New Directions in Cryptography". Que introduce un nuevo método de distribución de claves criptográficas, lo que era hasta la fecha uno de los problemas fundamentales de la criptografía. Este mecanismo será conocido como el protocolo Diffie-Hellman de intercambio de claves.
1977El algoritmo inventado por IBM en 1975, DES (Data Encryption Standard), es elegido por el NIST (FIPS PUB-46) como el algoritmo de cifrado estándar de los EEUU.
1977El algoritmo RSA, llamado así por sus desarrolladores, Ronald Rivest, Adi Shamir y Leonard Adleman, es publicado. RSA supone el primer procedimiento de clave pública utilizado en la práctica y ocupa el puesto de ser la contribución criptológica más innovadora del siglo XX.
1979Los primeros cajeros automáticos (Automatic Teller Machines) utilizan DES para cifrar los códigos PIN.
1982El físico Richard Feynman diseña el modelo teórico de una computadora cuántica.
1984Charles H. Bennett y Gilles Brassard describen la criptografía cuántica (BB84 protocol).
1985Goldwasser, Micali y Racoff descubren el procedimiento de conocimiento cero.
1986De forma independiente, Neal Koblitz y Victor Miller proponen usar curvas elípticas como modelo de criptografía de clave pública.
1991Xueija Lai y James Massey desarrollan el algoritmo IDEA en Suiza, que será usado en el software criptográfico PGP.
1991DSA es elegido por el NIST como algoritmo estándar de firma digital.
1991PGP (Pretty Good Privacy) es diseñado por Phil Zimmermann como un software gratuito y de código libre, con el fin de cifrar e intercambiar archivos con una gran seguridad. Esta es la primera vez que el cifrado híbrido (combinación de criptografía simétrica y asimétrica) es aplicada a un programa popular para usuarios finales. El objetivo principal era el de cifrar los archivos adjuntos del correo electrónico (que más tarde también fue cubierto por el estándar S/MIME).
1994Peter Shor concibe un algoritmo para ordenadores cuánticos que permite la factorización de enteros largos. Este es el primer problema interesante para el que los ordenadores cuánticos han prometido una importante aceleración, y que, por lo tanto, genera un gran interés en este tipo de ordenadores.
Agosto 1994El protocolo de cifrado SSL 1.0 es publicado por Netscape Communications y es soportado por todos los navegadores web. No obstante, el protocolo de transporte de SSL (TLS) no se limita a la aplicación de HTTPS.
Octubre 1995S/MIME, un mecanismo estándar para la seguridad del correo electrónico, es publicado como RFC 1847 y cuenta con el apoyo de todos los clientes de correo electrónico. S/MIME (Secure/Multipurpose Internet Mail Extensions) describe una manera consistente para enviar y recibir mensajes de correo electrónico seguros (firmados y/o cifrados). Se basa en el estándar de Internet MIME. Sin embargo, S/MIME no sólo se limita al correo.
S/MIME y SSL son los protocolos criptográficos que se utilizan con mayor frecuencia en Internet.
17 de Julio de 1998El ingenio de la EFF conocido como Deep Crack, rompe una clave DES con un ataque de texto claro conocido en 56 horas (Los RSA Laboratories lanzan el desafío DES II).
19 de Enero de 1999Deep Crack y distributed.net rompen una clave DES con un ataque basado en texto claro conocido en 22 horas y 15 minutos (Los RSA Laboratories lanzan el desafío DES III)
Octubre 2000Tras la competición pública que ha durado 5 años, el algoritmo Rijndael es elegido por el NIST como el sucesor de DES y pasa de denominarse AES (Advanced Encryption Standard).
Desde el 2000Weil Pairing es utilizada para los nuevos esquemas de compromiso como IBE (Identity Based Encryption, que resultó ser más interesante desde un punto de vista teórico que desde un punto de vista práctico).
Agosto 2004En la conferencia Crypto 2004, los investigadores chinos muestran debilidades estructurales en común de las funciones de hash (MD5, SHA), lo que las hace vulnerables a ataques de colisión. Estas funciones de hash todavía se usan en casi todos los protocolos criptográficos. Los investigadores chinos no publicaron todos los detalles.
Mayo 2005Jens Franke y otros factorizan un número RSA-200 de 663 bits de longitud.
Abril 2007El protocolo WEP de codificación en LAN inalámbrica fue roto por tres investigadores del TU Darmstadt. Asumiendo suficiente tráfico de datos en la red, sólo se tarda unos dos minutos en obtener el 95% de todas las claves de codificación utilizadas.
Agosto 2007En la conferencia Crypto 2007 se mostró un algoritmo para romper el sistema inmovilizador utilizado en millones de coches. Durante la presentación, Eli Biham, Orr Dunkelman,entre otros,  pudieron mostrar un ejemplo donde una correspondiente llave de coche se copió en 48 horas con la potencia de computación de 50 PCs.
Agosto 2007David Hulton y Joshua Laykey rompieron el algoritmo de codificación A5, de marca registrada, usado por muchos operadores de GSM. Esto implica que en redes móviles afectadas, incluso las más cortas llamadas de voz o los mensajes SMS pueden descifrarse fácilmente por un PC normal, mostrando así que "seguridad por oscuridad" no es un buen enfoque.
Diciembre 2007Se descifró el algoritmo de autenticación de las tarjetas de chip Mifare, el cual  se usa en miles de aplicaciones por un billon de tarjetas expedidas. Sin embargo, la última generación (Mifare DESFire), que utiliza DES/3-DES, no se ve afectada.
Diciembre 2009Chris Paget y Karsten Nohl dieron a conocer, que su Proyecto de crackeo A5/1 construyó las tablas de compromiso espacio-tiempo de 2 Terabyte. A5/1 fue ahora definitivamente quebrado.
Diciembre 2009Jens Franke et al. factorizaron el número RSA-768 de 768 bits de longitud.

Algo muy interesante es que en el Kamasutra, exista una de las descripciones más antiguas de encriptación por sustitución, este texto fue escrito el siglo IV d.C. por el sabio hindú Vatsyayana (Cuyo nombre es muy parecido al de esta página. ñ_ñ), sin embargo basado en manuscritos datados de más de 800 años (séc. IV a.C..).

El Kama-Sutra recomienda que las mujeres estudien 64 artes, incluyendo la culinaria, la forma de vestir, masaje y la preparación de perfumes. La lista también incluye algunos artes menos obvios como prestidigitación, ajedrez, encuadernación de libros y carpintería.

En la lista, la de número 45 es la mlecchita-vikalpa, el arte de la escritura secreta, indicada para ayudar las mujeres a esconder los detalles de sus relaciones. Una de las técnicas recomendadas es la de formar pares aleatorios de letras del alfabeto y después sustituir cada letra del texto original por la correspondiente en el par.

Ahora un ejemplo en PHP. ñ_ñ
[sourcecode language="php"]
< ?php

//Cifrado KamaSutra: SQleros.Com.Ar
$letras=array( array('A','D','H','I','K','M','O','R','S','U','W','Y','Z'),
array('V','X','B','G','J','C','Q','L','N','E','F','P','T')
);

function kamasutra($texto,$letras)
{ $ArregloAuxiliar=array();
for($i=0; $i{ $ArregloAuxiliar[$letras[0][$i]]=$letras[1][$i];
$ArregloAuxiliar[$letras[1][$i]]=$letras[0][$i];
}
$result = "";
for($i=0; $ireturn $result;
}

$blog="SQLeros.Com.Ar";
echo "

Cifrado KamaSutra: $blog";
echo "Letras:";
for($i=0; $i".$letras[0][$i].""; echo '';
for($i=0; $i".$letras[1][$i].""; echo '

';
echo 'Texto sin cifrar: '.$blog.'
';
echo 'Texto cifrado: '.kamasutra($blog,$letras).'
';
?>
[/sourcecode]

El resultado: Aquí, Un Saludo. Y Claro comenten!

Android corriendo en un iPhone


Que opinará Steve Jobs de este vídeo que muestra como Android OS de Google, corre en su aclamado iPhone, después de haber dicho que Android es para ver porno.

¿Qué es MVC?

Modelo Vista Controlador es un patrón de arquitectura de software que se utiliza mucho en aplicaciones web, separandola en tres capas (modelo, controlador y vista)

El Modelo se encarga de interactuar con la base de datos y también se ejecuta las reglas de negocio.
El Controlador procesa las peticiones de la pagina web (vista), y envía estos datos a la capa modelo, para que esta le devuelva la información adecuada para mostrarla en la capa vista.
La vista es el código HTML que se muestra al usuario, con la información proveniente del controlador.



¿Porqué útilizar MVC?

El fácil mantenimiento de código en un futuro, ya que al estar separadas los distintos procesos según su tipo.
Si quisieramos por ejemplo cambiar de tipo de base de datos, solo tendremos que cambiar la capa modelo.

Para una mejor percepción de esta arquitectura, muestro la transformación de una lista de artículos de un blog.

Este código es lo necesario para cumplir con el proposito de listar los artículos

< ?
// conexion a la base de datos
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

// consulta SQL para traer los artículos
$resultado=mysql_query('SELECT fecha, titulo FROM articulo', $cn);
?>

Listado de Artículos




< ?php

// recorre el resultado pintando la fecha y titulo
while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
echo "";
echo "";
echo "";
echo "";
}
?>
Fecha Titulo
".$fila['fecha']." ".$fila['titulo']."


< ?php
//cerramos la conexion
mysql_close($cn);
?>

Observaciones

En la misma pagina nos conectamos al servidor ( solo funcionara si es MySQL ) y seleccionamos una base de datos.
Realizamos una consulta (no hay manejo de errores y/o excepciones).
Pintamos el código HTML (combinamos código HTML dentro del código PHP, dejando los tags (, ) ilegibles para la persona que implemente los estilos).


Utilizando el Controlador y la Vista

El ejemplo anterior los separaremos en dos archivos, uno se llamara controlador y el otro vista.

controlador.php

view plaincopy to clipboardprint
< ?
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $cn);
$articulos = array();

while($articulo = mysql_fetch_assoc($resultado))
{
$articulos[] = $articulo;
}

mysql_close();

require('vista.php');
?>
vista.php

view plaincopy to clipboardprint

Listado de Articulos




< ?php foreach($articulos as $articulo): ?>




< ?php endforeach;?>
Fecha Titulo
< ?php echo $articulo['fecha']?> < ?php echo $articulo['titulo']?>

De esta manera tenemos separada en el controlador.php casi todo el código php con la lógica de negocios, mientras que en vista.php solo recorremos un array con datos.
Lo recomendable en la vista seria utilizar instrucciones PHP mas conocidad, como: if, endif, foreach, endforeach. Y no utilizarlas con llaves “{”, ya que dificulta reconocer donde empieza y termina.

Otro problema seria si queremos utilizar nuevamente el listar articulo en otra pagina, tendríamos que reescribir el controlador.php de nuevo.
Para esto separaremos el controlador(controlador.php) en modelo.php y controlador.php.

Utilizando el Modelo

modelo.php

view plaincopy to clipboardprint
< ?php

function getArticulos()
{
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $cn);
$articulos = array();

while($articulo = mysql_fetch_assoc($resultado))
{
$articulos[] = $articulo;
}

mysql_close();
}
?>
controlador.php

view plaincopy to clipboardprint
require('modelo.php');

$articulos = getArticulos();

require('vista.php');
Despues de esta separación el controlador quedaría tan solo como un agente para pasar datos del modelo hacia la vista, pero en aplicaciones mas complejas el controlador es quien realiza las tareas de autenticación de usuarios, manejo de sesiones, filtrar y validar entradas de datos por GET o POST.



Cambiando el gestor de Base de Datos

La respuesta seria, cambiar todas las funciones del modelo (mysql_connect, mysql_query, …) por las correspondientes, y eso nos tomaría mucho tiempo.
Para hacer un mejor uso de MVC o mejor dicho cambiando el patrón un poco, se podría separar el modelo en dos capas:

La capa de Acceso a Datos
La capa de Abstracción de la Base de Datos
Si se diera el caso de cambiar de gestor de base de datos, solo tendríamos que actualizar la capa de abstracción de la base de datos

Ejemplo de las dos capas

Abstracción de datos

view plaincopy to clipboardprint
function crearConexion($servidor, $usuario, $clave)
{
return mysql_connect($servidor, $usuario, $clave);
}

function cerrarConexion($cn)
{
mysql_close($cn);
}

function consulta($consulta, $base_datos, $cn)
{
mysql_select_db($base_datos, $cn);

return mysql_query($consulta, $cn);
}

function getResultado($resultado, $tipo = MYSQL_ASSOC)
{
return mysql_fetch_array($resultado, $tipo);
}
Acceso a Datos

view plaincopy to clipboardprint
function getTodosLosArticulos()
{
$cn = crearConexion('localhost', 'usuario', 'clave');

$resultado=consulta('SELECT fecha, titulo FROM articulo', 'db', $cn);

$articulos = array();
while ($articulo = getResultado($resultado))
{
$articulos[] = $articulo;
}

cerrarConexion($cn);

return $articulos;
}
Ahora tenemos la capa de Acceso a Datos sin ninguna dependencia de funciones de alguna gestor de base de datos, y podremos reutilizar las funciones de la capa de abstracción de base de datos en otras funciones de acceso a datos de nuestro modelo.
SharpDevelop es un entorno de desarrollo diseñado para crear aplicaciones en .NET. Resulta ideal sobre todo para los programadores en C#, aunque es capaz de generar código en Visual Basic.NET, de esta forma los desarrolladores con menos necesidades verán como les permite crear sus formularios de forma visual.

Soporta los Framework .NET 2.0, 3.0 y 3.5, aportando compatibilidad con Visual Studio Express y Visual Studio 2008. Gracias a que este paquete es de código abierto los desarrolladores pueden crear sus propios añadidos (http://wiki.sharpdevelop.net/3rdPartyAddins.ashx ) para mejorar las cualidades y automatizar tareas a la hora de generar nuestro código fuente.
Integra diferentes herramientas orientadas a la calidad de nuestro código como un potente Debugger que nos permitirá localizar cómodamente los errores, un sistema de análisis de código automático, una unidad de comprobación y lo mejor, un sistema de control de versiones (TortoiseSVN) con el que mantener y compartir el código sin temor a perder nuestros avances.
Te lo puedes descargar en: http://www.icsharpcode.net/OpenSource/SD/
Pagina web: http://www.icsharpcode.net/OpenSource/SD/

Los diez errores más comunes en el diseño de una base de datos

Hola SQLeros,Louis Davidson es un experto en el diseño de Base de Datosy es autor del libro SQL Server 2005 Database Design and Optimization en el artículo aquí enlazado presenta los diez errores más comunes en el diseño de una BD que el ha detectado a lo largo de su experiencia:




  • Mala planeación del diseño

  • Ignorar la normalización

  • Estándares de nomenclatura deficientes

  • Falta de documentación

  • Una sola tabla para guardar todos los valores del dominio

  • Usar columnas GUID como la única llave de una tabla

  • No usar las funcionalidades SQL para preservar la integridad de los datos

  • No usar Stored Procedures para acceder a los datos

  • Intentar construir objetos genéricos en los stored procedures

  • Falta de pruebas


En mi experiencia la mayoría de los desarrollos donde he trabajado presentan algunas de estas deficiencias en su base de datos. Creo yo que en muchos de los casos es porque se deja a un programador diseñar la base cuando debe ser haber un DBA involucrado en el proceso. Se que muchos proyectos no pueden pagar el sueldo de un DBA en exclusivo pero creo que al menos debe haber un DBA por organización que supervise el diseño elaborado por los programadores, lo mejore y le de su visto bueno.
Con las bases de datos pasa como con el diseño web, cuando se deja en manos de un programador elresultado puede ser un desastre e imagino que la mayoría de ustedes ha tenido que lidiar con chapuzas como una tabla totalmente desnormalizada (digo a veces está bien desnormarlizar para ganar en desempeño pero hay límites) y que necesita de 5 o más campos para tener una llave compuesta (y dile adios a tu idea de usar un ORM para la capa de datos), o una tabla con 20 campos que se llaman campo1, campo2, .. campoN y que nadie en la organización sabe que diablos es el campo7 o quién era el encargado de actualizarlo pero sin él tu aplicación no funciona, en fin no seguiré descargando mi frustración aquí :P . En mi opinión una forma de evitarle frustraciones a los otros programadores es que, dado que las empresas no van a querer pagar un DBA para auxiliarte en el 70% de los casos,nosotros nos documentemos con artículos como el de Louis para realizar un mejor trabajo que programar no es solo usar Spring o el último patrón de diseño.

Snaptü: Facebook, Twitter y Más En La Palma de Tú Mano!

Facebook tiene una muy bien conocida versión móvil de su web que en la mayoría de los casos sirve para realizar las actividades más comunes dentro de nuestra red social favorita desde cualquier dispositivo móvil que pueda navegar al menos sitios wap, y de hecho es la forma en la que lo utilizan miles de personas que tienen más a mano su celular que una computadora en muchas ocasiones. Pero como toda versión móvil de un sitio web, sus características y uso resultan muy limitados en experiencia y funcionalidad, y mientras que en Windows Mobile ya existe una aplicación oficial de Facebook creada por Microsoft al mismo tiempo que casi todo sistema operativo para smartphones tiene al menos una similar en calidad, en un celular común es más difícil conseguir algo por el estilo para despegarse de la muchas veces incómoda versión móvil de su sitio web.


imageUna buena opción que se puede usar si se atraviesa por este dilema es Snaptu, una aplicación compatible con cualquier celular que admita aplicaciones Java J2ME, y que consiste es una plataforma de widgets con diversas funciones y servicios. Aunque está orientado mayormente al mercado británico, este servicio permite utilizar a Facebook desde su aplicación móvil como un widget más, permitiéndonos una forma de ingresar mucho más dinámica y con más practicidad que desde su web móvil. Con Snaptu Facebook se pueden ver y enviar mensajes a nuestros contactos fácilmente, ver imágenes de los mismos en pantalla completa, y también tendremos la opción de enviarles una invitación para que descubran Snaptu. En el video a continuación puede verse la fluidez de su interface.




Para descargar la aplicación de Snaptu sólo hace falta ingresar con el celular a m.snaptu.com, cabe señalar que en el video esta en ingles, pero se puede cambiar el lenguaje de la aplicación. Existiendo también un video disponible que muestra como hacerlo paso a paso desde uno, aunque también se puede ingresar desde una PC y luego transferir la aplicación al teléfono vía el cable de datos. Como sucede en todos los casos en los que se usa una aplicación que realiza consumo intensivo de transferencia de datos por Internet, hay que tener en cuenta si utilizamos Snaptu muy asiduamente que a menos que tengamos algún plan de datos contratado con nuestro operador de telefonía celular ó activada la opción de banda ancha ramms y también debemos ser conscientes de las posibles implicancias con respecto a la privacidad cada ves que habilitamos el acceso a una cuenta nuestra, en este caso de Facebook, a un tercero. Si tenemos estos dos temas cubiertos, Snaptu Facebook es una alternativa ideal para evitar la limitada web móvil de Facebook y utilizarlo de una forma más placentera y práctica.


Un Saludo!

VSTS 2010. Herramientas de Diseño y Arquitectura






Get Microsoft Silverlight


Plataforma de Microsoft Ibérica, nos habla sobre las novedades que incorpora el nuevo Visual Studio 2010 para los arquitectos de software.

César presenta de forma práctica algunas de estas novedades, desde el soporte integrado para UML 2.1, pasando por la arquitectura por capas y terminando con el nuevo Architecture Explorer.

Agencia Espacial Mexicana

AEM

Tuvieron que pasar cuatro años para que laAgencia Espacial Mexicana fuera realidad. Con 280 votos a favor en la Cámara de Diputados, los legisladores aprobaron este martes la creación de este nuevo organismo que coordinará la política espacial de México. La iniciativa fue presentada en abril de 2006, y después de numerosas modificaciones y discusiones, al fin ha sido aprobada su creación.

José Hernández, astronauta mexico-americano, ha mostrado su alegría porque el país cuente con un proyecto espacial. Hernández ha aceptado la propuesta de los legisladores para fungir como asesor de la agencia. El presupuesto inicial del organismo será de 10 millones de pesos, y se empleará en esta primera etapa para el diseño institucional. Aún no se define la sede, aunque el estado que cuenta con más posibilidades para albergarlo es Hidalgo, seguido de Campeche yYucatán. El objetivo es que la Agencia Espacial Mexicana no sólo sea un organismo descentralizado, sino también autosuficiente.

La Agencia Espacial Mexicana estará conformada por un consejo de quince integrantes, y será encabezada por el Secretario de Comunicaciones. Entre los integrantes estarán subsecretarios de Gobernación, Relaciones Exteriores, Educación Pública, Hacienda, Defensa Nacional y Marina; así como los rectores de la Universidad Autónoma de México (UNAM), del Instituto Politécnico Nacional (IPN), entre otros miembros del ámbito académico.

La creación de la Agencia Espacial Mexicana ha desatado un debate encarnecido en diferentes sectores de la población (basta darle un vistazo a los comentario del periódico El Universal). Mientras unos lo ven como un gran impulso para el desarrollo científico y tecnológico del país, otros lo ven como un despilfarro presupuestal y un gasto en un rubro innecesario. ¿Inversión o capricho? La mejor opinión, como siempre, es la de ustedes. ¿Qué opinan del nacimiento de esta nueva agencia?

Crear Servicio Web En PHP Con NüSoap

1.- Para que funcione el ejemplo descárgate las clases de NüSOAP desde la pagina del proyecto http://sourceforge.net/projects/nusoap/.

2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.

3.- Luego ejecutas en tu Servidor MySQL el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.

4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo siguiente:
[sourcecode language="php"]
< ?php
require_once('lib-nusoap/nusoap.php');

$server = new soap_server;

$ns="http://localhost/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service
$server->configurewsdl('MiWebService'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;

/************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/
$server->wsdl->addComplexType(
'ArregloProductos', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos
),
'tns:Productos'
);

/************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/
$server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '',
array(
'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Precio' => array('name' => 'Precio', 'type' => 'xsd:string')
)
);

/*METODO DEL WEB SERVICE*/
function ListarProductos($estado){
if($estado!=''){
$db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados
$db_result = $db->connect ("localhost", "root", "","db_productos");
$sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection
$result = $db->query($sql);
if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra
$db->close();
$i=0;
if($result->num_rows>0){
while($row = mysqli_fetch_assoc($result)){
$toc[$i]['ProductoID'] = $row["producto_id"];
$toc[$i]['Nombre'] = $row["nombre"];
$toc[$i]['Precio'] = $row["precio"];
$i++;
}
$result->free; //liberando memoria
return $toc;
}
}
return '';
}

/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarProductos', // Nombre del Método
array('estado' => 'xsd:string' ), // Parámetros de Entrada
array('return' => 'tns:ArregloProductos') //Datos de Salida
);

/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;
?>
[/sourcecode]



Si deseas puedes descargar el ejemplo completo desde aquí. Varios usuarios me han hecho la observación en la cual no funciona el código, esto es por el nombre de la carpeta comprimida que llame SQLeros-NüSoapEjemplo.zip, para que funcione bien solo cambienle el nombre por: SQLeros-NuSoapEjemplo.zip

También veremos como consumir el servicio desde C#,VB.Net y Java. Saludos

Ctrl Alt Supr

Enero de 2004. La prensa especializada deja caer entre sus artículos uno dedicado a un ingeniero de IBM que despues de muchos años abandona la empresa. ¿Qué puede tener de especial una persona para merecer ese titular? El protagonista de esta historia se llama David J. Bradley. Tiene 55 años. Formó parte del equipo que creó el primer ordenador personal. Debe sus quince minutos de fama a haber sido quien ideó la combinación de teclas "Control+Alt+Supr" para reiniciar un ordenador.


Por esta razón Bradley entra en el Club de los Históricos de ARRAI.


¿Cuantas veces hemos usado esta combinación de teclas para reiniciar nuestros equipos? El "Control+Alt+Supr" (en inglés "Control+Alt+Delete") es uno de los pequeños iconos culturales del mundillo de la informática.


Corría el año 1981. 12 ingenieros, "los 12 del patíbulo", creaban en los laboratorios de IBM situados en Boca Ratón, Florida, el primer ordenador personal, el IBM-PC. Entre ellos estaba David J. Bradley. Fue el encargado de diseñar la BIOS de aquel primer equipo de uso doméstico. El resto de su trabajo para el "gigante azul" queda empañado por la anécdota: la creación del código de reinicio del PC.



El ingeniero David Bradley


Entró en IBM en 1975, y formó parte a partir de 1980 del equipo que desarrolló el primer ordenador personal. Entre otras cosas, es responsable del código de la ROM BIOS que llevaban los primeros PCs. Despues de 28 años y medio en IBM, Bradley la abandonó en enero de 2004. En la actualidad continúa impartiendo clase en la Universidad Estatal de Carolina del Norte. Para este ingeniero en electricidad e informática, cuantos más estudiantes vayan a carreras de ciencia y tecnología, mayor será la fuerza económica del país (en su caso, de los Estados Unidos).


David J. Bradley



Control Alt Delete


¿Por qué se desarrolló esta función? Bradley explica que a principios de los 80 en IBM se estaban haciendo pruebas de forma intensa con nuevo hardware y nuevo software. Esto provocaba que los ordenadores se quedasen colgados con facilidad. Para volver a arrancar un equipo era necesario apagarlo, esperar unos segundos a que reposara para no provocar daños al hardware, volver a arrancarlo y esperar por las rutinas de autocomprobación que ejecutaba el PC. Se tardaba más de un minuto en volver a tener el equipo operativo.


La idea de Bradley era crear un mecanismo que permitiese el reinicio "en caliente", sin tener que seguir todo ese proceso. El ahorro de tiempo era considerable, y por eso esta funcionalidad, que en un principio estaba destinada únicamente a ser conocida por los desarrolladores de IBM, se difundió paulatinamente entre el público.


¿Porqué esas tres teclas?


¿Por qué estas tres teclas? Se trataba de encontrar una combinación que no se pudiese teclear por accidente. Se eligieron dos teclas de uso poco común (Control y Alt) y la tercera se buscó justo al otro lado del teclado. Al principio Bradley pensó en la tecla "+", pero creyó que DELETE tendría más sentido. Una vez definida la solución, Bradley afirma que programarla no le llevó más de cinco minutos.



La actualidad de "Control Alt Delete"


Ya no es lo que era, ahora es más. Las versiones de Windows 2000 y XP capturan esta combinación y ofrecen un panel de opciones: el administrador de tareas, cerrar sesión o apagar de forma civilizada. En los casos extremos en que esto ya no funciona, no hay más remedio que volver al fatídico botón de reset.


Tambien se incorpora en Windows 2000 para arranque de sesión, con lo que "Control+Alt+Supr", tambien conocido como "La llave de Vulcano", o "El saludo de los tres dedos", ha dejado definitivamente de ser un truco no escrito a ser una combinación de teclas de obligado conocimiento, mucho más usada si cabe.



Hacerlo famoso


Cuando se celebraba el vigésimo aniversario de la creación del Pc, compartían escenario en una mesa redonda Bill Gates y David Bradley, entre otros. Durante una parte del evento, el tema de conversación era el mecanismo de reinicio. En el vídeo cuyo enlace ofrecemos se puede oir a Bradley bromeando con Gates, aunque este último no pone cara de estar divirtiéndose. Bradley dice: "Hacerlo llevó cinco minutos, no sabía que iba a crear un icono cultural. Pero tengo que compartir el mérito, puede que yo lo haya inventado, pero ha sido Bill el que lo ha hecho famoso."


Seguramente, Bradley fue el primer sorprendido por la fama alcanzada por su código. Algo que en principio era simple, que no llevó más de cinco minutos, se acaba convirtiendo en un icono cultural. Quizá esto nos puede enseñar a apreciar los detalles y los trabajos pequeños. Si están bien hechos y son útiles, pueden convertirse en algo con un gran significado.


La idea de Bill Gates es distinta. Adoptó el código de Bradley, le era útil y lo utilizó como un complemento para construir algo mayor. Es tambien una forma de ver como lo que hacemos, si lo compartimos, puede servirle a otra gente. Aunque podemos adivinar que Gates hubiese preferido que el "Ctrl+Alt+Supr" no fuese tan conocido por sus usuarios.


Ahora una rola del reno renardo al respecto.


Ctrl Alt Supr - Reno Renardo

Hola que tal el día de hoy les traigo una página web que en lo particular me gusta mucho.  Por que esta actualizando día a día y tiene buenas publicaciones les hablo de WowEbook.Com.Get your ebook right now!

Wow Ebook.Com

Una página en la cual podremos ver una gran gama de manuales, tutoriales,libros de referencia,etc.

Ampliamente recomendable proporciona material muy bueno y sobre todo …

Bueno ya se darán cuenta.

Un Saludo SQLeros.