martes, 29 de enero de 2013

Números Random

[http://imgs.xkcd.com/comics/random_number.png]

Discusión:
En ésta entrada, discutiremos la imagen anterior, donde al principio al verla se nos hará un poco raro si no estamos acostumbrados a la aleatoriedad.

Siendo un poco geeks muchas veces dedicamos tiempo haciendo funciones o buscando como hacer un algoritmo o complementado uno, para garantizar que estamos obteniendo un número aleatorio, muchas veces lo que se tiene es una frecuencia, pero ésta se va repitiendo siendo no aleatoria, así que lo que se hace es alargar la frecuencia y así hacerlo un poco mas aleatorio.
Ya volviendo un poco a la imagen no sabemos que es el valor que nos regresará, más que probabilidades de cuál podría ser el número.
En la imagen podemos ver que al momento de ser llamada la función nos regresara siempre el 4, pero como se comento, no podemos determinar si es aleatorio, ya que puede regresarse cualquier valor.

Ya finalizando des dejo otra imagen que saque de random.org donde podemos encontrarnos con el mismo problema, donde puede que haya visto número aleatorios anteriormente y al momento de dar el valor se menciona nuevamente el mismo número.

[http://www.random.org/analysis/dilbert.jpg]


Referencia:

jueves, 24 de enero de 2013

Tarea 1: Flujo de Información

Para esta entrada, se nos pidió simular como es el flujo de la información generando una cierta cantidad de palabras con longitud dada y su contenido son caracteres binarios aleatorios, una vez obtenido se crea otra palabra a partir de la primera dada y dependiendo de la probabilidad de ruido que se haya pedido en determinado carácter es obtendrá la nueva palabra y se crean otras dependiendo del número de iteraciones. Tener las dos palabras con el número de intentos nos servirá para comparar el totales de éxitos que se obtuvo al transmitir la palabra.

Para tener más datos congruentes y tener una buena simulación, hay que realizar la prueba con diferentes valores tanto la longitud de la palabra, la probabilidad de salir uno y cero, la frecuencia de ésta y las iteraciones de la nueva palabra.

Esto se puede lograr, ya sea haciendolo todo en python estableciendo los parámetros y metiéndolos en un archivo ó tener un bash aparte donde mandaremos llamar nuestro archivo en python y lo meteremos en varios bucles, para que nos de sus diferentes resultados y finalmente graficarlos.

Código:
Programa en python donde generamos la frecuencia de las palabras:


Bash que llama nuestro programa en python para correrlo varias veces:


Programa en gnuplot para graficar los resultados obtenidos

Resultados:
Los resultados de como salió nuestra simulación podemos verlos en la siguiente imagen, donde x es el valor de las veces que se corrió el programa y y es la cantidad de éxitos que se obtuvieron.

Archivos generados:




Plot:



**Nota, la imagen en sí no es muy congruente, así que crearé otro plot donde se tome la probabilidad de unos, ceros y la frecuencia que se obtiene.

Referencia:
http://elisa.dyndns-web.com/~elisa/teaching/comp/info/channel.pdf

martes, 22 de enero de 2013

Tarea 1: Protocolo RFC 2818

El RFC 2818 original lo puden encontrar en éste link, éste estandar describe como se emplea TLS (Transport Layer Securiity) para asegurar la transferencia de hipertexto (HTTP) de las conexiones a través de internet. También lo que hace es distinguir el tráfico, del inseguro por el uso de un puerto de diferente servidor.


[http://www.techpresentations.org/w/images/graphviz/506e126c81c2108588c955a74dfdf400.png]

Con éste estanadar, se deriban otros o se complementan como el protocolo de comunicación por sockets que va muy relacionada a ella.

El estandar 2818 nace del HTTP [RFC2616] donde fue utilizado originalmente abierto en Internet. Sin embargo, el aumento del uso de HTTP para aplicaciones sensibles ha requerido medidas de seguridad. SSL y TLS sus sucesores fueron diseñados para proporcionar canales orientados hacia la seguridad.

Este tipo de protocolo proporciona autenticación y privacidad de la información entre extremos sobre Internet. Habitualmente, sólo el servidor es autenticado (es decir, se garantiza su identidad) mientras que el cliente se mantiene sin autenticar.


Algunso casos:
Algunos casos donde nos podemos encotrar éste tipo de problemas, viene siendo principalmente en la comunicación de servicios web al emplear algún puerto específico de conexión. Un caso a mencionar en el ambito laboral és en el desarrollo de aplicaciones, donde un determinado puerto tiene que estar habilitado para la correcta comunicación con el servidor.

Otro de los casos como se mencionó es en los servicios web, hace dos semanas estaba implementando la lectura de una comunicación y me encontraba con el problema que el usuario no estaba identificado, ya que lo estaba haciendo con JQuery (cliente) y despues de estar investigando descubrí que en el servicio web, no se puede hacer una comunicación si del lado del cliente no ésta identificado, necesitando en si un certificado o empleando otra forma de servidor.

Teoría:

Conexión de Sesión:
El agente que actúa como cliente HTTP también debe actuar como el cliente del TLS. Se debe iniciar una conexión con el servidor en el puerto apropiado y luego enviar el ClientHello TLS. Cuando conexión de TLS se ha terminado, el cliente puede entonces iniciar la primera solicitud HTTP. Todos los datos HTTP debe ser enviada como "datos de aplicaciones" TLS.

Conexión de Cierre
TLS debe iniciar un intercambio de alertas de cierre antes de cerrar la conexión. Una implementación TLS puede, después de enviar una alerta de cierre, cerrar la conexión sin tener que esperar a que el cliente envía su alerta de cierre, generando un "cierre incompleto". Esto sólo se debe hacer cuando la aplicación sabe que ha recibido todos los datos de los mensajes que le importa.

Número de puerto
Los primeros datos que un servidor HTTP espera recibir del cliente es la producción Request-Line. Los primeros datos que un servidor TLS espera recibir es la ClientHello. Por consiguiente, la práctica común ha sido la de ejecutar HTTP / TLS a través de un puerto separado con el fin de distinguir a qué protocolo se está utilizando. Cuando HTTP / TLS se ejecuta a través de una conexión TCP / IP, el puerto que es empleado es 443. 

Identidad del Servidor
En general, HTTP / TLS son peticiones generadas por eliminación de referencias a un URI. Como consecuencia de ello, el nombre de host del servidor es conocido por el cliente. Si el nombre está disponible, el cliente deberá comprobar que en contra de la identidad del servidor.

Identidad del cliente
Normalmente, el servidor no tiene conocimiento de lo externo la identidad del cliente. Si un servidor tiene tal conocimiento éste es comprobando por una cadena de certificado que tiene el usuario


Formato URI
HTTP / TLS se diferencia de HTTP URI utilizando el identificador 'https' protocolo en lugar del identificador 'http' protocolo. Un URI que especifica ejemplo HTTP / TLS es: 

https://www.example.com/ ~ smith / home.html

Otros:
Navegadores que emplean TLS
[http://es.wikipedia.org/wiki/Transport_Layer_Security]

Detección de carros vía aérea

Para esta entrada se pidió buscar un artículo que fuera relacionada con las aplicaciones de visión computacional.



Lo que busca este artículo es detectar carros vía fotos aéreas, el problema que esta resolviendo es detectar los objetos que en este caso son carros pequeños, las sombras que hay en ellas y las variaciones que se tiene en la imagen en diferentes puntos de vista.