25 de julio de 2011

Su Cerebro Sobre Google


Los motores de búsqueda como Google y IMDb pueden hacer papilla su memoria. Eso es lo que el  psicólogo Betsy Sparrow de la Universidad de Columbia dijo del uso de tales sitios. "Desde el advenimiento de los motores de búsqueda, estamos reorganizando la forma en que recordamos las cosas", dijo Sparrow. "Nuestro cerebro dependen de Internet para la memoria de la misma manera en que se puede confiar en la memoria de un amigo, familiar o compañero de trabajoRecordamos menos la información misma al saber dónde la podemos encontrar."  De Columbia's Research magazine: La investigación de Sparrow revela que nos olvidamos de las cosas que estamos seguros de que podemos encontrar en Internet. Somos más propensos a recordar lo que se cree que no está disponible en línea. Y somos más capaces de recordar dónde encontrar algo en Internet que recordar la información en sí.

Tomado de: http://www.infoworld.com/t/technology-business/20-the-weirdest-wackiest-and-stupidest-tech-stories-2011-so-far-167607-0

18 de julio de 2011

Error del desarrollador: Los errores de programación más peligrosos


Ningún lenguaje o plataforma garantizan la seguridad de las aplicaciones mientras que 
los desarrolladores repitan las mismas viejas equivocaciones. 
 
By Neil McAllister
Traducido by Andrea Lozada

A los programadores a menudo les gusta hablar de cómo una nueva herramienta o una nueva version de sus plataformas favoritas harán el código más rápido, fácil o elegante. Aunque esto puede ser cierto, se ignora cuán difícil y cuidadoso es actualmente el proceso de desarrolo de software de calidad.

Caso en cuestión: la  lista de CWE/SANS de los 25 errores de sofware más peligrosos. Cada año, los editores de la lista aprovechan la experiencia de los principales expertos en software de seguridad para clasificar los errores de programación por frecuencia, gravedad y la probabilidad en que estos conducirán a vulnerabilidades explotables. Este año la lista fue publicada esta semana, y las malas nociticias son unas pocas sorpresas que contiene.

[Reciba las noticias de desarrollo de software y conocimientos desde  InfoWorld's Developer World newsletter. | Y agudice sus habilidades de Java con JavaWorld Enterprise Java newsletter.]
 
La lista de este año no sólo es predecible, es redundante. De los 25 errores citados, demasiados pueden ser atribuidos a los mismas fundamentales equivocaciones-- errores que han existido casi desde los albores de la programación. ¿Nunca vamos a aprender?

Los mismos errores una y otra vez
 
Encabezando la lista está la "inadecuada neutralización de elementos especiales usados en un comando SQL," también conocida como la temida vulnerabilidad de inyección SQL, la pesadilla de las aplicaciones Web en todas partes. Según el anual de IBM X-Force Trend y Risk Report, la frecuencia de los ataques de inyección SQL aumentó 200 veces entre 2008 y 2009, y los investigadores de IBM han visto por lo menos un ataque de inyección SQL en "escala global" cada verano durante los últimos tres años.

Inyección SQL es usualmente el resultado de una indebida validación de la entrada de un usuario, donde la aplicación analiza la forma de los datos en una consulta SQL sin comprobar si contiene código SQL potencialmente dañiño. Pero la inyección SQL no es la única manera en la que la entrada del usuario puede salir mal. De la lista de los 25 principales errores, mas o menos una cuarta parte de ellas pueden ser atribuidos a la inadecuada validación de entrada, incluyendo la inyección de comandos del sistema operativo, desbordamientos de búfer, cross-site scripting, falta de validación de rutas del directorio e incontroladas salidas de cadenas de formato.

Incluso más que los errores de validación de entrada, este año la lista de los 25 principales está plagada de errores de seguridad de aplicaciones de todo  tipo. Algunos de ellos suena esotericas, como "inclusion de funcionalidad de la no confiable esfera de control",  pero de todos estos errores,el de más alto rango en la lista es "falta de autenticación de función critica" -- en otras palabras, el atacante puede tener acceso porque no había ninguna cerradura en la puerta para empezar.

Que podes aprender de nuestros errores

Los desarrolladores cometen este tipo de errores por dos razones principales. En primer lugar, pueden estar operando bajo la errónea suposición  de que una determinada función es demasiado oscura para ser vulnerable; ellos no alcanzan a comprender el grado en que los atacantes pueden estar dispuestos a analizar el flujo de sus aplicaciones para encontrar debilidades. Más a menudo, sin embargo, simplemente no tienen consideración de como una importante función puede ser la seguiridad de su aplicación. Como las aplicaciones se vuelven más complciadas y sus funciones se distribuyen a través de múltiples sistemas y recursos, es particularmente fácil perder la pista de una idea grande de seguridad.

La lista completa CWE/SANS es detallada y completa, de facil lectura y lleno de asesoramiento específico y valios. Si usted maneja un proyecto de desarrollo de software, estaría bien pasar el enlace por todos los de su equipo y animarles a estudiarlo a fondo. Incluso una lectura superficial, sin embargo, abre paso a ideas de rendimiento que todo desarrollador debe tener en cuenta.

Primero, conocer sus herramientas y no aceptar sus características ciegamente. Entre las recomendaciones específicas dadas en la lista de CWE/SANS son joyas como " Si usted esta usando PHP, configurar la aplicación para que no se utilicen registros globales". Este consjo en particular es tan viejo como las montañas, y en reallidad ha sido la configuración por defecto a partir de PHP 4.2. A partir de PHP 5.3 la característica en cuetión ha qeudado en desuso. Los desarrolladores que persisten en usar las características de las plataformas de riesgo porque están ahí, a pesar de incontables recomendaciones, al contrario, merecen lo que reciben.

Segundo, no ponga demasiada fe en su plataforma solo porque dice que es más seguro. POr ejemplo, manejar lenguajes como Java y C# elimina la posibilidad de desbordamientos de búfer, haciendo los límites de comprobación en tiempo de ejecución. Esto significa que los programadores de java y C# son protegidos del tercer error en la lista de CWE/SANS . Pero ni Java ni C# hace nada para protegerse de las vulnerabilidades de la inyección SQL causads por la pobreza de validación de la entrada de un usuario, las cuales ocupan un lugar aún más alto en la lista de desbordamiento de bufer.  Cualquier plataforma  es tan segura como el código que se ejecuta en él.

En tercer lugar, los datos de seguridad es difícil. A menos que seas un especialista, la criptografía parece un arte arcano, y es tentador para tratarlo simplemente como polvo mágico que se puede espolvorear en sus aplicaciones para hacerlas más seguras. Del mismo modo, es muy fácil introducir puertas traseras en el esquema de autenticación si usted no trata la seguridad como un principio fundamental en el proceso de diseño de software. La aplicación incorrecta, inconsistente o ingenua de las técnicas de seguridad es especialmente insidiosa, ya que crea una falsa sensación de seguridad, incluso, ya que conduce a graves vulnerabilidades.

Por último, y lo más importante, la lista nos recuerda que  las vulnerabilidades de software están en todas partes, y prácticamente ningún proyecto de desarrollo es completamente seguro. Con el ritmo  acelerado de los ataques de Internet, ahora no es el momento de reducir  el personal de control de calidad o  escatimar en las pruebas y la revisión del código. Sin importar las herramientas que usted elija, el desarrollo de aplicaciones seguras es un retador y laborioso, pero muy importante, ahora más que nunca. Tengamos cuidado ahí fuera.

Este artículo, "Developer error: The most dangerous programming mistakes," originalmente apereció en InfoWorld.com. Lea más en Neil McAllister's Fatal Exception blog y siga las últimas noticias de programación en InfoWorld.com. Para las últimas noticias de las tecnologías de negocio, seguir InfoWorld.com enTwitter. 

6 de marzo de 2011

Multiplicacion Matrices Java


public void ingresoMatrices() {

        m = Integer.parseInt(JOptionPane.showInputDialog("Escriba el numero de filas de la Matriz A"));
        n = Integer.parseInt(JOptionPane.showInputDialog("Escriba el numero de columnas de la Matriz A"));

        matrizA = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrizA[i][j] = Integer.parseInt(JOptionPane.showInputDialog("MATRIZ A:\n Escriba el numero de la fila " + (i + 1) + " y la columna" + (j + 1)));
            }
        }
  m1 = Integer.parseInt(JOptionPane.showInputDialog("Escriba el numero de filas de la Matriz B"));
        n1 = Integer.parseInt(JOptionPane.showInputDialog("Escriba el numero de columnas de la Matriz B"));

        matrizB = new int[m1][n1];
        for (int x = 0; x < m1; x++) {
            for (int y = 0; y < n1; y++) {
               matrizB[x][y] = Integer.parseInt(JOptionPane.showInputDialog("MATRIZ B:\n Escriba el numero de la fila " + (x + 1) + " y la columna" + (y + 1)));
            }
        }
    }

public void multiplica() {
int matrizResultado[][] = new int[m][n1];

        if (n == m1) {
            int suma = 0;
            for (int i = 0; i < matrizA.length; i++) {
                for (int k = 0; k < matrizB[0].length; k++) {
                    suma = 0;
                    for (int j = 0; j < matrizA[0].length; j++) {
                        suma += (matrizA[i][j] * matrizB[j][k]);
                    }
                    matrizResultado[i][k] = suma;
                }
            }
        } else {
            areaTexto.setText("No se puede efectuar la operación,\n las matrices"
                    + " no tienen la dimensión adecuada");
            return;
        }
        mostrarResultado(matrizResultado);
    }

public void mostrarResultado(int matriz[][]) {

        String salida = "";

        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[i].length; j++) {
                salida += matriz[i][j] + "\t";
            }
            salida += "\n";
        }

        areaTexto.setText(salida);
        areaTexto.setEditable(false);
    }
}

29 de enero de 2011

Sueños Parte 1


Comparto con ustedes una página del diario de Juli.Es importante la secuencia de los sueños.

Sabado, 29 de enero de 2011

Tuve estos sueños, y me levante y los escribi en papel, los transcribi y aunque pude haber cambiado la forma de redaccion, quice dejarlo como lo escribi en paple ( si le cambie alguna que otra cosa, como una coma o asi). Fueron sueños llenos de sentimientos y como cuando uno dice, tan reales, y escribi lo que senti, por eso puede que sea un poco cursi para vos depronto, pero a mi me gustaron mucho.....

Sueño 1: 

Estaba en una casa, como que habia una rumba, porque habia mucha gente, Andrea tambien estaba ahi, lo sabia aunque no la viera. La busque por todas partes, me sentia ya desesperada de no encontrarla. Como que me habia llamado porque tenia una llamada perdida, pero no la oí por la bulla del sitio. Entre en desespero , necesitaba llamarla. A los que le preguntaba por andrea me decian que la habian visto pero se habia ido por no encontrarme. Me decian que estaba bien, pero igual necesitaba llamarla, le pedi a jose antonio que me prestara el celular y no quizo, no le gustaba la idea de que llamara a andrea, me acuerdo que de rabia me dio un billete de 50 y otro de 2mil que para que la llamara, pero el sabia que por ahi no vendian minutos. Me acuerdo que desespere mas cuando me llego un mensaje de andrea diciendo “si queres me llamas, para que no diga que no tenia mi numero, es 3188912080”. Finalmente creo que encontre de donde llamar pero en eso llego mi hermano y me quito la plata, no me acuerdo porque estaba llorando él. Luego oí noticias de andrea, que se habia ido a tomar y que estaba mal. yo ya iba para alla a recogerla. Cuando llego ximena y como que la habia llamado y ximena me dice “que ya viene para aca”.

Luego me dijeron (cuando pregunte donde estaba andrea) “ella esta sentada lla”, señalaba un sitio, fui para alla y luego me dijeron “mirala ahi”. Estaba vomitando cuando la vi, y vomite un poquito yo tambien de la impresion. Despues me acerque a ella, le limpie el vomito y la meti a una bañera (despues de quitarle la ropa vomitada), la bañe, me acuerdo tambien que la cargue para quitarle la ropa vomitada, le di agua para que se juagara la boca. La vesti con ropas comodas y la acoste, y yo me quede abrazandola y sobandole la panza hasta que se acabo el sueño. Se sentia tan increiblemente bien cuidarla...

Sueño 1.a:

Despues de ese sueño, tuve otro, en el que le contaba a mi mama sobre el sueño 1 con andrea, lo contaba yo con que dicha, no por lo que paso en el sueño, sino porque podia hablar con mi mama acerca de andrea y mi mama la aceptaba y todo. Estaba yo feliz.



Sueños Parte 2


Sueño 2:

El otro sueño tambien fue con andrea, me acuerdo ir caminando muy contenta, abrazandola con la mano derecha encima de su hombro derecho, yo iba al lado izquierdo de ella. Por donde ibamos caminando era como un sendero en un bosque, a la izquierda habian arboles, y a la derecha un muy verde prado, el sendero era como de tierra cubierta por hojas secas (cafes) y humedas, este era como de metro y medio o 2 de ancho. Ibamos caminando muy felices, al frente de nosotras venia un grupo de personas, y por un momento nos sentimos extrañas, de que nos fueran a ver mal el grupo de personas y en eso nos sonreímos y me sentia como que ya no tuvieramos que preocuparnos de los demas. Estabamos como bien vestidas, asi se sentia, pero no recuerdo que llevabamos puesto, solo recuerdo que estabamos elegantes. En eso, en el momento en que nos sonreimos, busque mi mano izquierda y ella tambien busco en su mano izquierda, y ahi estaban, teniamos argollas en el dedo anular de nuestras mano izquierda. OMG!! nos acababamos de casar, sii!!, estabamos casadas. Recuerdo que las argollas no eran las mas bonitas, ni las mas caras, pero eso no importaba, estabamos casadas!!! :)



Sueños Parte 3


Sueño 3

Del tiempo de los anteriores sueños, recuerdo que no era ps como decir, mañana me caso, recuerdo que el sueño 1 era el mas cercano a este tiempo, pero no era como decir un mes, estaba mas despuesito. El sueño en el que nos casamos si estaba mas lejitos de esta epoca o de la del sueño 1, estabamos mas grandes, mas maduras, habrian pasado un par de años. y esteel sueño 3, ya han pasado muchos años, somos como jovenes adultas, por ahi tendriamos mas o menos 30 años mas o menos.

Estabamos durmiendo abrazadas, estabamos en alta mar, en un barco, un barco nuestro. No era tan grande, pero tenia su habitacion. Era como si ubieramos vivido toda una vida, asi casadas y amandonos. En eso me despierto y no estabas al lado mio, y hay sentimiento como de angustia, como de que algo estaba pasando, me levanto, salgo de la habitacion, subo, y estaba oscuro, como cuando las nubes oscuras salen a las 5 de la tarde, todo se movia, estabamos en una tormenta y nos estabamos hundiendo. 
 
Vos (Andrea) sacabas el agua a montones con un balde lo mas rapido que podias, yo de una empiezo a sacar una mercancia que habia, en como un compartimiento del barco, que parecia las neveras donde venden helado. La mercancia era comida que se habia llenado de agua, parecia una sopa, no recuerdo de que era la mercancia pero se sentia como que era deliciosa y valiosa. Sabia que teniamos que botar la mercancia para salvarnos. con un balde empece a botarla, vos me ayudabas, pues ya no habia agua en el barco, pero nos seguiamos hundiendo.
 
En eso te mire, nos miramos y para ese entonces no necesitabamos hablar para comunicarnos. Cogimos la nevera de la mercancia y la voltiamos y la echamos toda al mar. Creimos que con eso bastaria para dejarnos de hundir, pero nos seguiamos hundiendo. Entonces en eso no lo pense 2 veces y me tire al mar, vos me gritabas que no lo hiciera, que volviera y me subiera, yo te decia que yo iba a estar bien. Pero vos sabias que asi yo me tirara del barco, eso no iba a impedir que se siguiera hundiendo. Solo querias que yo estuviera a tu lado ( sentimiento: tristeza) porque sabias que nos ibamos a hundir y que todo acabaria ahi, pero sabias y yo tambien, que mientras estuviera a tu lado todo iba a estar bien. Ahi perdi el conocimiento y despertamos como en una playa pero mas adentro, por donde empieza la selva de una isla. 
 
Caminamos hasta mas adentrico de la selva, hasta donde habiand un poco de laminas de madera y pedazos tambien, era nuestro barco destruido. Al mirarnos sentia tanto amor entre nosotras y tanta vida recorrida al lado tuyo. Nos acostamos en las laminas de madera, yo encima tuyo, de medio cuerpo, y me embargo un sentimiento de tanta tristeza, porque sentia que la muerte me estaba buscando y senti que pronto todo acabarian, y sentia esa tristeza no tanto por la muerte mia, sino porque iba a estar tan lejos de ti, y te iba a dejar sola...
 
Entonces yo arriba tuyo mirandote fijamente a los ojos, te dije con mis ojos aguados “Si he de morir mañana, quiero que sepas que te he amado siempre, que te amo y (que si mañana no despierto que sepas) que te amaria por siempre (o hasta el resto de la vida, creo que dije)”. y me dormi en tu pecho y ahi desperte.