брокеры опционов
алиэкспресс цены в рублях

Tratame bien!

Tratar imágenes satelitales suele obligarnos a utilizar paquetes de software propietarios (cerrados!) desarrollados para tal fin. Estas aplicaciones suelen tener una universo de funcionalidades tan inmenso que no solo marean al usuario inexperto (como yo) sino que para tareas muy específicas termina siendo más complejo adaptarnos al “bendito” programa que resolver el problema en cuestión.

Si bien ya soy bastante manso, un dejo de rebeldía adolescente y la inquietud de una divina amiga franchuto-argentina me llevó a indagar otro tipo de solución.

Por suerte existe Python. Un lenguaje en el que se pueden hacer muchas cosas respetables, sabiendo muy poco del mismo (bue, tampoco es que yo soy muy respetuoso). El tema es que usando PyRaster -una colección de herramientas basadas en Python- se puede procesar eficientemente imágenes raster. Esta herramienta usa la Librería de Abstracción de Datos Geoespaciales GDAL (Geospatial Data Abstraction Library) para leer/escribir alrededor de 100 formatos de imágenes y tratarlos como una matriz estándar, por lo que, independientemente del formato se utilizan los mismos procesos.

Instalación

Descargar el módulo PyRaster de acá y luego importalo desde el programa principal.

Dependencias

-No me digás que tenés que tener instalado Python?
-Obvio querid@, (probado con la versión 2.6 sin problemas), pero además se debe instalar:

  • Numerical Python: Numpy 1.2.1 or greater
  • Pyhon bindings for GDAL: python-gdal 1.5.4 or greater

En debian/ubuntu:

#aptitude install python-numpy python-gdal

Aprendiendo a leer y escribir

En el siguiente código se lee la imagen prueba0.img (una imagen Erdas Imagine .img de formato HFA) y se obtienen los metadatos (header o información general sobre la imagen), así que los valores de todos los píxeles de la banda/layer 1 de la imagen en forma de matriz. Al final, y se muestra en pantalla el pixel de la fila 0, columna 1.

import rasterIO

file_pointer = rasterIO.opengdalraster(‘prueba0.img’)
driver, XSize, YSize, proj_wkt, geo_t_params = rasterIO.readrastermeta(file_pointer)
kelvin_band = rasterIO.readrasterband(file_pointer, 1)
print kelvin_band[0][1]

Y bue, así se hace eso que dije. Justo iba a escribir algo trascendental pero me acabo de quedar sin tinta.

Matrix revolutions

Si cuando era un puber con excesivo brillo en el rostro alguien me decía que laburar con matrices iba a estar relacionado con informática, hubiese levantado sutilmente mis hombros con mi mejor cara de “oliendo excremento”.

El tema es que las matrices andan por todos lados. En primer año de la carrera uno las agarraba, las manoseaba (gauss-jordan), las daba vuelta (inversión), las tumbaba (transposición) y un sin fin más de operaciones (casi todo lo que indica el libro hindú) sin tener real dimensión de cuán involucradas estaban en el mundo.

No solo fotos o imágenes satelitales, cualquier problema que involucre varias incógnitas y ecuaciones termina idefectiblemente en una matriz a resolver (Ax=b).

El mundo gnulinuxero nos ha bien-acostumbrado a buscar, renegar, probar, indagar una y otra vez en un ciclo casi infinito (casi infinito = infinito) hasta alcanzar la solución a nuestros problemas. Así es que uno presupone que al transitar un nuevo camino se topará con decenas de obstáculos hasta alcanzar lo buscado.

Ah Si?

NO!
No fue así, en el primer intento ya estaba resolviendo un simple sistema matricial utilizando rutinas REcontraREmilREprobadas y que por años luz serán más eficientes de las que pueda llegar a programar yo en mis mejores sueños. Asi es como puse a buscar las librerías BLAS y LAPACK para que hagan el laburo por mi o mis compañeros.

Lo primero que vamos a hacer es instalarlas, luego algún lenguaje para usarlas (por ahora solo en fortran) y finalmente un ejemplo para probar que la cosa ande.

Instalación BLAS+LACPACK

#aptitude install libblas3gf libblas-doc libblas-dev liblapack3gf liblapack-doc liblapack-dev

Instalación gfortran

#aptitude install gfortran

Ejemplito a resolver

  <pre>\begin{bmatrix}  3.1 & 1.3 & -5.7 \\  1.0 & -6.9 & 5.8 \\  3.4 & 7.2 & -8.8  \end{bmatrix}  \begin{bmatrix}  x_1 \\  x_2 \\  x_3  \end{bmatrix}  =  \begin{bmatrix}  -1.3\\  -0.1\\  1.8  \end{bmatrix}</pre>

Programita a compilar (test1.f)

c solving the matrix equation A*x=b using LAPACK
	Implicit none
c declarations, notice single precision
	Real*4 A(3,3), b(3)
	integer i, j, pivot(3), ok
c define matrix A
	A(1,1)=3.1
	A(1,2)=1.3
	A(1,3)=-5.7
	A(2,1)=1.0
	A(2,2)=-6.9
	A(2,3)=5.8
	A(3,1)=3.4
	A(3,2)=7.2
	A(3,3)=-8.8
c define vector b, make b a matrix and you can solve multiple
c equations with the same A but different b
	b(1)=-1.3
	b(2)=-0.1
        b(3)=1.8
c find the solution using the LAPACK routine SGESV
	call SGESV(3, 1, A, 3, pivot, b, 3, ok)
c
c parameters in the order as they appear in the function call
c    order of matrix A, number of right hand sides (b), matrix A,
c    leading dimension of A, array that records pivoting,
c    result vector b on entry, x on exit, leading dimension of b
c    return value
c
c print the vector x
	do i=1, 3
	   write(*,*) b(i)
	end do
	end

Compilación

$gfortran -lblas -llapack test1.f -o test1.bin

Ejecución y resultado

$./test1.bin
1.0000001
1.0000004
1.0000004

Para mayor información: busque más información!!

C’est fini

 

Instalar Debian en una netbook

La interpretación del título es literal, acá voy a mostrarme como preparar un pendrive usb para instalar debian testing en una netbook.

Al día de hoy la versión testing de debian se denomina, wheezy, y claro está que será la  que reemplace a la actual estable, squeeze.

En términos generales lo que tenemos que hacer es:

1- Darle al usb los archivos necesarios para que sea booteable

2- Cargar en el usb una imagen para llevar adelante al instalación

Ahora bien, llevamos adelante el primer paso:

1.a- Descargamos el boot.img.gz de la rama testing

1.b- Extraemos el archivo escribiendolo en el usb (/dev/sdc)

# zcat boot.img.gz > /dev/sdc

1.c Montamos el usb en algún directorio, por ejemplo, /mnt :

#mount /dev/sdc /mnt

Ahora, continuamos con la segunda parte.

2.a Descargamos la iso del net-install (debian-testing-i386-netinst.iso) correspondiente a la misma versión del boot.img.gz,

2.b La copiamos al usb, que tenemos montado en /mnt :

#cp debian-testing-i386-netinst.iso /mnt

Finalmente desmontamos y nos queda bootear la netbook desde el usb y comenzar la instalación…

wheezy

FLISOL 2011

Una vez más se realiza en Santa Fe una  nueva edición del Festival Latinoamericano de Instalación de Software Libre (FLISOL). Junto con el LugLi (Linux Users Group of Litoral) se ha organizado este evento,  que es considerado el más grande del mundo referido al Software Libre.

Nuevamente este año se ha superado la cantidad de sedes. En Argentina ya hay confirmadas 34 localidaes y además en 20 países con alrededor de 200 ciudades. Así es que en todo el continente latinoamericano se estará instalando Software Libre el mismo día!

Si dictarán charlas, talleres y por supuesto instalaciones.

Acercate, instalá libertad!

Lugar: CTA – Rivadavia 3185
Día y Hora: Sábado 9 de Abril de 10hs a 18hs.
Más info: http://www.flisolsantafe.com.ar
Registrate: http://es.amiando.com/flisol2011

 

frases piolas

Cada vez nos cuesta más pensar que hay cosas que nos superan: todavía no somos capaces de desplazar placas tectónicas.

Martin Caparrós

Blues local

Como todos sabrán, no solo de pan vive el hombre.

Así que este sábado aburrido, en el que no tenía ganas de laburar, ni de leer, y para colmo se me suspendió el futbol, no me quedó otra que revivir al frustrado músico interior.

Homenajeando al bluesman argentino Norberto Pappo Napolitano, a 6 años de su lamentable muerte, me animé con un pequeño blues sacado de algún método por ahí..

little blues

En sincronía

Para sincronizar directorios o archivos entre sistemas pinguinísticos no hay demasiados problemas, una rápida búsqueda en google nos muestra cientos de ejemplos. Instalamos el rsync, tiramos un par de comandos y ya está todo andando.

Lamentablemente no solo de pinguinos y ñues está hecha la vida, sino también de malditas ventanas. A la larga o a la corta vamos a tener que renegar en cómo usar en el sistema de bill algo que era tan simple en nuestro sistema preferido.

Así que acá voy a dejarme una breve referencia de cómo hacer andar el rsync utilizando clientes windows hacia un servidor Debian GNU/Linux.

La situación es la siguiente: varias PCs corriendo windows deben sincronizar determinados directorios contra un servidor Debian GNU/Linux.
Ahora, por qué no lo copiamos usando el scp directamente? porque lo que queremos es subir solamente los cambios, las diferencias, y porque pretendemos poder restablecer una subida de datos ante un eventual corte. Estas características nos la brinda el rsync.

Paso a paso.

1- Configuramos en el servidor para que el rsync corra como servicio.

1.a Instalamos

#aptitude install rsync

1.b Lo configuramos

Esto se puede hacer de varias maneras, yo lo hice desde inetd. Fue la primera alternativa que probé y me anduvo sin problemas.
Copiamos el archivo de ejemplo del rsync, ubicado en /usr/share/doc/rsync/examples/rsyncd.conf, con destino /etc

cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf

Además de parámetros globales tenemos diferentes módulos en donde indicamos qué usuarios se podrán conectar, el directorio al que se sincronizará y un corto etcétera. Por ejemplo:

[modulo_pc1]

path = /home/pcs/pc1
comment = Dir de la PC1 (requires authentication)
uid = nobody
gid = nogroup
read only = false
auth users = norberto_napolitano
secrets file = /etc/rsyncd.secrets

Lo único que voy a destacar de la configuración previa es que el archivo rsyncd.secrets debe ser del modo usuario:contraseña, para el ejemplo sería, norberto_napolitano:blueslocal
Donde el usuario es norberto_napolitano y la contraseña es blueslocal. Este archivo debe tener permisos de lectura/escritura SOLO para el root (chmod 600), sino NO VA A FUNCIONAR.

1.c Lo dejamos disponible como servicio.

Agregamos en /etc/inetd.conf la siguiente linea:

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

Luego de toquetear el rsyncd.conf mandamos al inetd  la señal HUP

killall -HUP inetd

Por último, dejamos en /etc/default/rsync la linea:

RSYNC_ENABLE=inetd

2 Configuramos el cliente windows

Para tener funcional el cliente rsync en windows, vamos a instalar el cygwin y ahí tildaremos el paquete rsync.
Una vez hecho esto, solo hará falta ejecutar el comando para realizar la sincronización del directorio que deseemos contra el directorio configurado en el módulo del servidor.
Por ejemplo, en la linea de comandos:

C:\cygwin\bin>rsync.exe -avrPO /cygdrive/c/dir_a_sincronizar/ norberto_napolitano@www.miservidor.com.ar::modulo_pc1

Lo único que debemos saber, además de las opciones del rsync, es que el cygwin mapea las unidades del windows bajo /cygdrive, así, en el ejemplo previo, el directorio dir_a_sincronizar bajo el disco “c:\” se lo referencia haciendo /cygdrive/c/dir_a_sincronizar/

A la salida del tunel

Como dije en el post previo, ahora vamos a ver como crear y configurar todo lo necesario para el cliente del openvpn. Resumiendo, lo que vamos a hacer es acceder al servidor y crear el certificado, luego llevarlo (junto a un par de archivos que se crearon) al cliente y crear la configuración del mismo.Antes de esto, un poco de teoría informal y liviana.

¿Para qué quiero una vpn?
Porque resulta que tenés varias pcs que tienen internet pero no podés acceder directamente a ellas (por ej, su ip no es pública) y querés ingresar y usarlas como si estuvieses en una misma red pero además quisieras resguardar del ojo ajeno todo el tráfico que hay entre vos y ellas. Y bueno, esa es una posible cuestión, te armas un servidor openvpn al que todos las pcs se conectan y arman una especie de LAN, y vos desde tu amada máquina hacés lo mismo.

Crear certificado para el cliente
1- Estando en el servidor, ingresamos al directorio /etc/openvpn/easy-rsa/2.0/ y hacemos:

# source vars
# ./build-key nombre_cliente_vpn

Aceptar todos los valores por defecto y cuando aparece Common Name, ponemos nombre_cliente_vpn . Luego le damos todo enter y todo que sí. Terminado este proceso, tendremos adentro del directorio keys/ un conjunto de archivos nombre_cliente_vpn.* y ca.crt .

2- Con estos archivos hacemos un tar.gz que enviaremos a la pc cliente bajo /etc/openvpn.

tar -cvzf nombre_cliente_vpn.tar.gz nombre_cliente_vpn.crt nombre_cliente_vpn.csr nombre_cliente_vpn.key ca.crt

Configurar el cliente
1- Usando como base el archivo de ejemplo lo copiamos a /etc/openvpn/

#cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .

2- Lo imprescindible es modificar la ruta de alguno de los archivos que se nos generaron para el certificado y la ip del servidor al que debe conectarse para armar la vpn y el tipo de cifrado (igual al que elegimos en el server). Sería:

# certificados
ca ca.crt
cert nombre_cliente_vpn.crt
key nombre_cliente_vpn.key

# servidor y puerto
remote www.miservidordevpn.com.ar 1194

#cifrado
cipher AES-128-CBC

3- Una vez hecho esto, iniciamos el openvpn y listo

#/etc/init.d/openvpn start

El lector aplicado entenderá que esto fue escrito al vuelo de pájaro, por ende se han omitido ciertos detalles que pueden ser observados en los archivos de configuración que se mencionaron. Por ejemplo, si la red es udp, o tcp, si se usan 1024 o 2048 bits para la encritación, así como un sin fin de particularidades.

De túneles y esas cuestiones

Acá voy a explicar muy brevemente cómo armar una VPN utilizando el OpenVPN.

Ahora, yo me pregunto ¿Qué es una VPN?
No es la gran cosa, en criollo es una red montada sobre otra red. ¿Que qué? Si, por ejemplo tenemos internet que es una red bastante grande y queremos hacer otra red sobre esta. Claro, además a esa red la vamos a poder ver solo quienes formemos parte de la misma, por ende los datos irán encriptados para que solo nosotros podamos hacer uso de ella. A estos datos que transferimos de manera transparente por un caño que solo deja ver lo de adentro a los miembros de la red privada se lo llama tunel: muy original!

Una vez hecha la intro, vamos a instalar y configurar tanto el cliente como el servidor. Vale la pena aclarar que una vez instalado (en sistemas debian o basados en debian) tendremos el directorio del OpenVPN vacío, dependiendo lo que pongamos ahi dentro funcionará como cliente o servidor o ambas cosas.

Instalación
Tanto en el cliente como el servidor la instalación es la misma:

aptitude install openvpn

Configuración del Servidor
1- Copiamos al directorio /etc/openvpn/ el directorio de /usr/share/doc/openvpn/examples/easy-rsa/ y luego descomprimimos el archivo openssl-0.9.6.cnf.gz

# cp -a /usr/share/doc/openvpn/examples/easy-rsa/ .
# gunzip openssl-0.9.6.cnf.gz

2- Editamos el archivo vars (adivinen que es cada cosa!)

export KEY_COUNTRY=AR
export KEY_PROVINCE=Santa-Fe
export KEY_CITY=Santa-Fe
export KEY_ORG=”NN”
export KEY_EMAIL=”emiliano.lopez@tu-dominio.com.ar”

3- Ejecutamos un par de comandos para generar los certificados de autoridad

#. vars
#./clean-all
#./build-ca

4- Creamos el certificado para el servidor, notar que cuando nos pida Common Name va la palabra server:

#./build-key-server server

.. le damos que si (y) a todo.

5- Nos queda generar los parámetros de Diffie Hellman, el algoritmo  utilizado para establecer de forma segura una clave común entre dos  extremos en un medio no amigable: internet.

#./build-dh

6- En todos los pasos previos hicimos lo necesrio para que nuestro servidor tenga con qué hacer una vpn, ahora falta configurarlo usando como base el archivo ubicado en los ejemplos del openvpn:

# zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > server.conf

7- Ahora tenemos que modificar este archivo diciendole dónde estan los certificados, parámetros, etc;

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem

8- Descomentamos el sistema de cifrado (en el cliente vamos a tener que usar el mismo) y el usuario y grupo con el que corre el demonio del openVPN:

cipher AES-128-CBC # AES
user nobody
group nogroup

El archivo de configuración habla por si solo, cada opción nos explica muy bien para qué sirve y qué hace. El tema es que voy a dejar para otro post todo lo necesario para la configuración del cliente.
Nos vemos a la salida del tunel!

Los grandes matemáticos

NewtonVaya uno a saber por qué, pero siempre me ha interesado conocer más sobre la vida de aquellos matemáticos ilustres que dos por tres aparecen en nombres de teoremas, leyes o ecuaciones. Aún recuerdo pasarme largo tiempo leyendo todas las anécdotas presentes en el libro Álgebra Lineal de Grossman sobre los matemáticos, incluso mas interesado en saber de la vida de Gauss que realizar una reducción gaussiana de una matriz de 5×5.

Resulta que la semana pasado me fui a comprar algún libro, estaba interesado en “Los Mitos”, de Felipe Pigna, cuando de casualidad me encontré con “Los grandes matemáticos” de E.T. Bell. Sin dudarlo lo sumé al carrito y al día de hoy, aún no abrí el de historia argentina y estoy por la mitad del otro.

Es apasionante conocer detalles y anécdotas sobre estos tipos: Descartes, Fermat, Pascal, Newton, Leibinz, Bernoulli, Euler, Lagrange, Laplace, Gauss, Boole, Hermite, Kronecker, Riemann, Poincaré, Cantor, etc.

Muchas veces uno se pregunta, ¿qué carajo estaba haciendo este tipo para darse cuenta de esto? o también, ¡qué aburrido que habrá estado para descubrir esto!!  (por no ser vulgar). Este libro no solo  nos introduce a los momentos históricos que vivían, sino también nos detalla las “invenciones” de cada uno sin dejar de lado anécdotas que demuestran lo adelantados que eran.

Acá les dejo una pequeña historia, elegida casi al azar, del libro:

En 1696, Johann Bernoulli y Leibniz lanzaron dos endiablados desafíos a los matemáticos de Europa. El primero tiene aún importancia; el segundo no es de la misma clase. Supongamos dos puntos fijados al azar en un plano vertical. ¿Cuál es la forma de la curva que una partícula debe seguir (sin fricción) bajo la influencia de la gravedad, para pasar del punto superior al inferior en el menor tiempo? Este es el problema la braquistócrona, (tiempo mínimo). Después de que el problema tuvo en jaque a los matemáticos de Europa durante seis meses , Newton oyó hablar de él por primera vez el 29 de enero de 1696, cuando un amigo se lo comunicó. Acababa de llegar a su casa, fatigado, después de una larga jornada en la Casa de la Moneda. Después de cenar resolvió el problema (y también el segundo), y al día siguiente comunicó sus soluciones anónimamente a la Royal Society. A pesar de todas sus precauciones, no pudo ocultar su identidad. Mientras estuvo en la Casa de la Moneda, Newton se opuso a los esfuerzos de los matemáticos y hombres de ciencia que querían arrastrarle a discusiones de interés científico. Al ver la solución, Bernoulli exclamó inmediatamente: “Ah, reconozco al león por su garra”. (No es esta una traducción exacta del latín de Bernoulli). Todos reconocieron a Newton, y lo habrían hecho aunque tuviera un saco de monedas sobre su cabeza y no dijera su nombre.

Social Widgets powered by AB-WebLog.com.

Social Widgets powered by AB-WebLog.com.

Social Widgets powered by AB-WebLog.com.