20 de mayo de 2013

Usando cálculo numérico para mejorar un programa

Este es el problema que teníamos era el siguiente al intentar leer un archivo desde una posición p0 fallaba, pero desde otras posiciones todo funcionaba correctamente.
El archivo en cuestión era un .mpg que contenía un video con audio. Estos archivos no están pensados para que se pueda acceder de manera aleatoria, sino para ser usado en modo de streaming.
Podemos pensar el problema del siguiente modo, queremos encontrar la función h(t) = p tal que dada un tiempo t, nos devuelva la posición donde empieza el cuadro de video t.
Pero lo que podemos averiguar es g(p) = t, es decir dada una posición p a que tiempo t de cuadro de video corresponde. Podemos suponer que al principio tenemos g(0) = 0, y que si P es la posición máxima de video, y T es el tiempo máximo entonces tenemos g(P) =T.
Luego dado un tiempo t intermedio entre 0 y T, podemos aplicar cualquier método de búsqueda de raíces a f(x) = g(x) - t.
En nuestro caso lo que sucedía es que la función g no se comportaba muy bien el la cercanía de la posición problemática. La función g es monótona y creciente, pero la convergencia era lenta, y el programa para evitar demorar demasiado y parecer colgado generaba un error.

19 de mayo de 2013

Pasos para usar ssh sin ingresar un password

  1. Generamos un par de clave privada/pública:
    $ ssh-keygen [-t tipo] [-b longitud]
    Opcionalmente podemos especificar la longitud de la clave y el tipo. El tipo puede ser rsa, dsa, ecdsa. Con longitud especificamos la cantidad de bits de la clave. Podemos presionar Enter cuando nos pide un palabra de paso para cifrar la clave privada, si queremos más seguridad podemos ponerle una palabra de paso y usar ssh-agent para cargar la clave privada.
  2. Copiamos la clave pública a la computadora donde queremos ingresar.
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub
    El par de claves se crean dentro de ~/.ssh, la clave pública en id_rsa.pub y la clave privada en id_rsa. El comando ssh-copy-id agrega la clave pública a , en el archivo ~/.ssh/authorized_keys donde se guardan las de claves autorizadas una por renglón.