jueves, julio 15, 2010

El huevo o la gallina ?

Curiosamente hace un par de días hablábamos con mis hijos de que fue primero si el huevo o la gallina, en ese momento luego de un par de chistes típicos les dije que desde mi perspectiva la gallina era primero, y allí empezó el cuento de que no pues si la gallina debió salir del huevo, y el huevo debió ponerlo la gallina, pero me mantuve en mis dichos por lo siguiente:


Las aves proceden de dinosaurios bastante antiguos y pequeños como por ejemplo, los primeros fósiles identificados como aves vinculan su ascendencia a los reptiles, posiblemente a dinosaurios terópodos de pequeño tamaño del periodo triásico (hace entre 245 y 208 millones de años). El primer fósil de ave que se conoce es Archaeopteryx, que tiene un tamaño parecido al de una paloma pequeña. Sin ser estudioso de los dinosaurios y su evolución he llegado a la conclusión de que estos animales cambiaron su forma de reproducción con el tiempo debido a de seguro a cambios climáticos, cambios en la flora y fauna, además de cambios en sus depredadores, no se como se habrán reproducido los ancestros reptiles de las gallinas pero me imagino que mediante crías vivas, y debido a estos cambios antes mencionados, las llevaron a cambiar su forma de reproducción al huevo.

Hoy un estudio me da la razón en algo las gallinas fueron primero, hay mucho por descubrir pero me mantengo en mi idea inicial, para mi primero fue la gallina !.

lunes, julio 12, 2010

Teorema de los 4 Colores aplicada a Grafos

El Teorema de los 4 colores establece que cualquier plano dividido en regiones contiguas puede ser coloreado usando a lo más 4 colores, ( no aplicable a otras superficies como el toro ) de forma que dos regiones adyacentes cualesquiera (que tengan un borde en común, no sólo un punto) tienen colores distintos. Por ejemplo, el siguiente plano dividido puede colorearse con sólo 4 colores:


Aunque hay casos en que es posible colorear un plano de forma válida usando menos colores, el teorema se sigue cumpliendo, ya que dice que hacen falta como mucho 4. Este teorema es usado por los cartógrafos desde siempre, pero no había suscitado interés en los matemáticos desde que se planteó aproximadamente en 1850, este teorema recién pudo ser comprobado (no sin algunos reparos) en la década del 70, apoyado por computación.

Ante esto (a mis ex alumnos de Estructura de Datos seguro les traerá mas de algún dolor de cabeza), nos podemos dar cuenta que este teorema es perfectamente aplicable a la teoría de grafos, para poder desarrollar algunos ejercicios, o mas aún podemos advertir que es perfectamente factible mediante este teorema dar solución a ciertos trabajos que nuestros programas realizan en forma diaria (mediante los registros) .

En teoría de grafos, el problema se puede formular convirtiendo el mapa en un grafo plano tal que cada región es un vértice y las aristas van desde los vértices que se corresponden con regiones adyacentes. La solución sería aquella en la que cada vértice tiene un color, de forma que dos vértices adyacentes no tengan el mismo color. Estimados como ven en la siguiente imagen se representa claramente mediante grafos el teorema de los 4 colores (el programa que implementa este grafo queda de tarea)

Mapa 4 Colores

En general, un grafo es k-coloreable si necesita k colores como mínimo para ser coloreado. A este número se le llama número cromático del grafo, y se representa con la letra χ. El problema de calcular el número cromático de un grafo es NP-duro, aunque existen distintos algoritmos de clase P que se basan en ciertas asunciones para tipos concretos de grafo.

Aplicación de Teorema de los 4 colores en Compiladores usando grafos

Cuando un compilador ha calculado ya la serie de instrucciones para máquina abstracta, el siguiente paso es asignar los registros de la CPU a cada variable, teniendo en cuenta cuando se necesita cada una y cuando deja de utilizarse, para optimizar la ejecución al máximo y acceder a memoria el menor número de veces posible, agilizando así la ejecución.

La forma usual de resolver este problema empieza con un análisis de flujo, del que se calcula el llamado grafo de interferencia. Por ejemplo, dado el siguiente código que empieza con las variables k y j, y termina con las variables d, k y j (asumiendo un pseudoasembler):

  1. k, j

  2. g = mem[ j + 12 ]

  3. h = k -1

  4. f = g * h

  5. e = mem[ j + 8 ]

  6. m = mem[ j + 16 ]

  7. b = mem[ f ]

  8. c = e + 8

  9. d = c

  10. k = m * 4

  11. j = b

  12. d, k, j

Podríamos dibujar un grafo con estos datos a priori, pero necesitamos ir desde el final hacia arriba analizando el uso de y aparición de cada variable, por ejemplo, d es necesaria en la transición 11→12, ya que su valor debe ser devuelto en el estado 12. Paso a paso hacia atrás, se ve que en el estado 9 se le asigna un valor, por lo que ha de mantenerse hasta el estado 12. Si continuamos hacia atrás, se ve que no es usada anteriormente, por lo que se concluye que d debe mantenerse en las transiciones 9→10→11→12. De forma parecida, j debe mantenerse en 11→12, ya que es en 11 donde se le asigna un valor. Sin embargo, retrocediento puede verse que desde el estado 1 es usada hasta el estado 6, a partir de donde su valor puede desecharse hasta el estado 11. Así pues, j debe mantenerse en las transiciones 1→2→3→4→5→6 y 11→12. Continuando con cada variable, construimos la siguiente matriz de interferencia:

Matriz de Interferencia

Matriz que, a su vez, se corresponde con el siguiente grafo de interferencia, en donde cada vértice es una variable y las aristas unen las variables que están vivas al mismo tiempo y, por tanto, deben estar en registros distintos de la CPU:

Grafo de Interferencia

Como se ve, el grafo puede colorearse de forma válida con 4 colores. La idea detrás de este grafo es que dos vértices adyacentes contienen variables que deben guardarse en registros distintos. Así, el color asignado a cada vértice se corresponde con un registro de la CPU, y por ello ambos vértices deben tener colores distintos.

De esta forma, 4 registros son válidos para el anterior programa, asignando cada variable al registro de color correspondiente. En general, si la CPU tiene n registros y el número cromático del grafo de interferencia es m, no será necesario llevar variables a la memoria RAM si m es menor o igual que n.

Mucho de este material es sacado de otra WEB, pero me parece importante la visión y enfoque del teorema aplicado a grafos y su solución aplicado a compiladores, es posible mejorar este grafo, por supuesto, recibo comentarios.


miércoles, septiembre 10, 2008

Redes Sociales

Mmmm...hace rato que no escribo en el blog...de hecho ya ni acordaba de él, es que soy un poco crítico del uso que se les da a las redes sociales, es un fenómeno digno de un estudio sociológico cada vez mas gente se inscribe en este tipo de redes fijence en "Feisbuk" ;-), la cantidad de usuarios que tiene en chile...es impresionante, pero aún no entiendo la gracia que tiene en tener mas y mas amigos, he visto algunos tipos que tienen 400 o más amigos....es una locura, todo es virtual la "amistad" es eso virtual la gracia del compartir se pierde entre bits y clics...por ejemplo me ha pasado que me agregan como amigo ciertas personas que en la calle ni me miran, pero en Feisbuk me saludan...plop !!....como explicamos este fenómeno ??...otro punto es el poco grado de seguridad que tienen los usuarios de este tipo de redes, si algunos ponen en su perfil hasta como se llama el gato..es decir les falta poner el N° de la tarjeta de crédito para que los inescrupulosos de siempre hagan lo que quieran con su información...pero amigos vamos si con poner el nombre BASTA.
Los títulos, grados, y los cargos son los primeros en salir al frente, es la carta de presentación de cada usuario de red social...cual es la idea buscar trabajo, algunos dicen que sirve, alguna empresa seria buscaría algún profesional en una red social ?', me cabe la duda, yo por lo menos desconfiaría de un tipo que pone hasta el nombre de la vieja de la esquina en su perfil, donde queda el límite de la información disponible, después reclamamos por que nuestros datos fueron "hackeados" desde algún sitio del estado y están a disposición de todos...si uds. ponen la misma información en línea..de que me hablan....
Ojo con los datos y con la información que sus hijos e hijas ponen en la red, cuidado con el grooming, ya que en Chile ese delito y muchos otros NO están tipificados, nuestra pobre ley sobre delitos informáticos (ley 19223)con 4 miserables articulos es un verdadero ASCO (pero eso da para otro post).

Bueno era eso un poco hablar sobre las redes sociales y lo que provoca en cada uno de nosotros, yo soy crítico pero las uso..plop !!!

viernes, enero 11, 2008

Fingerprint con Ubuntu en Lenovo T60

Tengo un Thinkpad Lenovo T60, y le instalé Ubuntu apenas me lo pasaron (window$ pasó a mejor vida así de rápido), pero no hay software para hacer funcionar el fingerprint, busqué por la página de Lenovo y nada, todo lo que hay es para que funcione con el SO del tio Bill.....hasta que San google me iluminó y gracias a algunos hackers y después de un pequeño trabajo, mi reconocedor de huellas FUNCIONA !!!! (perdón por el grito). Les interesa saber como...bueno acá vamos...... Básicamente necesitamos el paquete Bioapi para PAM para bajar el paquete vayan acá instalen luego debemos bajar el driver para que nuestro dispositivo sea reconocido, generalmente el chip es de la empresa UPEK, por lo que deben bajar este driver , extraigan e instalen...como...bueno vamos allá....:

cd /path/al/directorio/donde/quedó/el/driver/
sudo su -
sh install.sh /usr/lib

Luego asignamos los permisos necesarios para que las aplicaciones y el usuario pueda utilizar el driver..
ojo que donde
dice usuario , deberá ir el username con el que te loguearás:
addgroup --system bioapi
ddgroup --system usbfs
adduser usuario  bioapi
adduser usuario usbfs
chown -R root:bioapi /usr/var/bioapi/
chmod -R 770 /usr/var/bioapi/
chown -R root:usbfs /proc/bus/usb
chmod -R g+X /proc/bus/usb
Ahora debemos setear el usb file system para que pueda ser usado por los usuarios, para hacerlos,
hagan los siguiente,
primero debemos saber el Id del grupo de usbfs, para saber el ID:
cat /etc/group | grep usbfs | cut -d':' -f 3

editen fstab y agreguen la siguiente línea, deben reemplazar ID , por el valor que les devolvió
el comando anterior
sudo nano fstab
none /proc/bus/usb usbfs defaults,devgid=ID,devmode=0660,busgid=ID,busmode=0770,
listgid=ID
,listmode=0660 0 0

Ahora debemos cambiar los permisos en UDEV:

sudo nano /etc/udev/rules.d/40-permissions.rules


buscamos la línea:


SUBSYSTEM=="usb_device", MODE="0664"

la cambiamos por esta:

SUSYSTEM=="usb_device", MODE="0660", GROUP="usbfs"

Necesitamos ahora bajar la utilidad llamada sample para enrolar nuestro detector de huellas con el sistema
extraigan el archivo e instalenlo:

cd /path/al/directorio/donde/quedó/el/archivo/
cd NonGUI_sample
chmod a+x sample
./Sample
Para enrrolar un nuevo usuario presionen (c) e ingresen el nombre de usuario con
el que se quieren conectar,
luegopresionene(v) para que puedan ingresar sus
huellas, aparecerá la iimagen para que pueden escanear la huella digital,
deberán
hacerlo 3 veces, una vez que la reconozca solo presionen (q) para salir de la
aplicación.

Les creará un archivo .bir con el nombre de usuario ingresado, por lo que deberań
moverlo a su /home:


mv usuario.bir /home/usuario/

Ahora necesitamos instalar el plugin Bioapi para PAM, extraigan y debemos compilar..
no se preocupen ...acá va como:

sudo apt-get install libpam0g-dev build-essential
cd /path/al/directorio/donde/extrajeron/el/archivo/
./configure --libdir=/lib --enable-file-store && make
sudo make install

Si no tira mensajes de error, el plugin quedó instalado, ahora en un terminal digiten o
copien los siguientes comandos:


cd ~
sudo bash
SERIAL=`BioAPITest | sed -ne "/Fingerprint/{n;n;s/^.*: \(.\{9\}\)\(.\{4\}\)\(.\{4\}\)\
(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/gp}"`

mkdir -p /etc/bioapi/pam/$SERIAL
cp usuario.bir /etc/bioapi/pam/$SERIAL/
exit

Ahora debemos activar nuestro detector de huellas, por lo que en el mismo terminal
hagan esto:


sudo nano /etc/pam.d/common-auth

(yo uso nano...si quieren vi..o gedit....o pico....o el editor del gusto que sea dará lo
mismo)


En el archivo que editaron comenten las líneas con un # (para restaurarlo si algo
va mal) y peguen lo siguiente:


#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350}
/etc/bioapi/pam/

password sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350}
/etc/bioapi/pam/

auth required pam_unix.so nullok_secure

graben y salgan del archivo, finalmente debemos modificar a sudo ya que es parte
de nuestra nueva configuración:


sudo nano /etc/pam.d/sudo

Al igual que el archivo anterior comente las líneas con un # y peguen esto:

#%PAM-1.0
#@include common-auth
auth required pam_unix.so nullok_secure
@include common-account

Ahora a probar, cuando estén en la ventana de logueo, ingresaran vuestro username
y les aparecerá la ventana
para que deslicen el dedo, reconocerá la huella e
ingresará a la sesión del usuario indicado.


Salu2

Daemon

sábado, octubre 06, 2007

Criptografía Cuántica, o el fin del problema de la Seguridad de Información

En este post no pretendo explicar en su profundidad el concepto de "Criptografía Cuántica", pero si pretendo lanzar las primeras líneas que permitan a mis queridos contertulios adentrarse en este maravilloso mundo de la Seguridad Informática y en especial en los algoritmos criptográficos, bueno vamos al grano.

Primero comenzaré explicando qué la Criptografía Cuántica, como Uds. ya habrán intuido se baza en las leyes de la Física cuántica, es decir, en el estudio del comportamiento de la materia a pequeña escala o de partículas pequeñas, la Física cuántica o la Mecánica Cuántica como también es conocida se aleja de la ley de la Realitividad General de Einstein, de hecho, Einstein jamás estuvo de acuerdo con Planck en sus postulados, pero los Físicos de hoy han podido acercar ambas corrientes para poder despejar algunas de las interrogantes planteadas respecto del origen del Universo hasta nuestros días, una de ellas, es la teoría de cuerdas, teoría que es respaldada por Stephen Hawking, pero bueno esto da para otro post, sigamos con la Física Cuántica, El concepto de partícula "muy pequeña" atiende al tamaño en el cual comienzan a notarse efectos como la imposibilidad de conocer con exactitud, arbitraria y simultáneamente, la posición y el momento de una partícula, es decir acá aparece el primer concepto importante a tomar en cuenta, y este concepto se conoce como el principio de incertidumbre de Heisenberg, que postula que no se pueden determinar con exactitud ciertos pares de variables como posición y momento lineal ya que al hacerlo se altera la capacidad de medición de la segunda partícula.
Con estos datos ya podemos entrar en tierra derecha para explicar el funcionamiento de la "Criptografía Cuántica".
La idea principal es ocupar los fotones para poder enviar información, en este caso se utiliza lo que se conoce como el "qubit" (representado en el dibujo adjunto) (quantum Bit) y Spin (momento angular intrínseco) de los fotones para lograr la alineación deseada en el envío, ya que los electrones pueden tener su spin alineado en Spin-Up o Spin-Down, con estos datos prodemos representar el 1 y el 0 (bit de Shannon), luego ya solo basta implementar algún algoritmo que permita pasar de la teoría a la práctica de modo que podamos ocupar la "Criptografía Cuántica", finalmente como se podrán haber dado cuenta este tipo de criptografía se asume segura por el principio de incertidumbre de heisenberg.
En el siguiente post explicaré un algoritmo y despejaremos las dudas planteadas acá.

Daemon

sábado, septiembre 08, 2007

Cómo anda tu fé por estos días ?

Desde hace un tiempo me está picando el bichito de saber quién fué en verdad Jesús, me crié en un Colegio Católico y siempre he estado reodeado de gente de la misma corriente religiosa, de hecho creo definitivamente en Jesus y Dios, pero mi formación científica se ha hecho presente con mucha fuerza este último tiempo, para llegar a saber en que consiste la fé y quién fué Jesus, ese niño que nace en Belén y que hasta ahora guía nuestros rumbos de una u otra forma.
Necesito saber y tratar de entender sobre la figura del "hijo de Dios", pero necesito datos tangibles e irrefutables de la "Santidad" de Jesús, no dudo que existió y que fué importantísima su figura en sus tiempos y los posteriores, pero las preguntas van en la dirección de los milagros, de la resurrección y la ascención al "cielo", cómo poder determinar que todo eso sucedió feacientemente?, la Iglesia Católica no refuta estas preguntas y cuando preguntamos mas allá desde el punto de vista científico, la respuesta es que esto es una cosa de fé...pero que es la fé...es creer en algo sin tener una prueba tangible ??..debo decir que mi fé no está muy buena estos días, según el mismo jesús soy un hombre de poca fé...será por que mi cuerpo no tiene activado el gen de la fé ??, será que el pensamineto científico es mas fuerte en estos tiempos que la fé en Dios y en Jesús.
Las preguntas son difíciles de contestar y no puedo dejar de expresar que en cierta medida la cosa me complica, por un lado quiero investigar y saber más sobre el hijo de dios y luego dejo que mi fé me de esa tranquilidad que sentimos aquellos que creemos, pero cuando sentimos esa tranquilidad que nos da la fé, es por qué la llamada molécula de la fe (5-HT1A - Dimetiltriptapina) a entrado en mi sangre y al igual que las endorfinas me generan un estado de tranquilidad y relajo. He estado leyendo sobre las investigaciones que se realizan sobre el "gen de la fé", científicos de distintos paises se han lanzado a buscarlo e individualizarlo, pero que pasará si finalmente lo encontramos, como cambiará la forma de ver al mundo y enfrentarlo entonces ??..que pasará con las distintas religiones que giran en torno al hijo de Dios.
Veamos algo del "gen de la fé", esto comienza con ciertos neurocientíficos que están investigando la posibilidad cierta de que exista en nosotros un gen denominado el gen de la fé, es decir, según esto si este gen está activado estaríamos programados (mi área) para creer, se han realizado algunas investigaciones con distintos tipos de distintas creencias en donde estimulando ciertas áreas del cerebro se logró que ellos siendo de distintas creencias, sintieran la misma sensación de estar en "comunión con Dios", esto se entendería ya que el cerebro secreta neurotransmisores que hacen sentir la proximidad y sensación de presencia "divina", pero esto no se queda ahí existe otros grupos de científicos que están urgando en nuestro ADN para buscar el gen llamado el "gen de la fé o el gen de Dios", un gen que permitiría que ciertos individuos tengan esa mayor aproximación hacia la autotrascendencia, existe un candidato fuerte y es el gen VMAT2, gen que poseemos todos los seres humanos pero que como cualquier otro, puede dependiendo de la metilación (inserción de grupos metilo en el ADN) o la modificación de las histonas activarse o desactivarse.
Por lo tanto si existe este gen estamos efectívamente programados para creer ??.
Finalmente debo indicar que la Psicología evolutiva me está ayudando a entender estas preguntas, aunque mi formación Católica hace que me reprima en la búsqueda de la verdad sobre Jesús y la fé, mi formación científica me insta a seguir.
Mi fé en estos días sube y baja......
"Jesus dijo que el reino de Dios está dentro de ti y en todo a tu alrededor, no en edificios de madera y piedra, corta un trozo de madera y ahi estaré, levanta una piedra y ese soy yo" ---Evangelio de Santo Tomas (Estigma)

Daemon

lunes, septiembre 03, 2007

Sabes que es la Ingeniería Social ??

Según Wikipedia, la Ingeniería Social es:

"Ingeniería social es la práctica de obtener información confidencial a través de la manipulación de usuarios legítimos. Un ingeniero social usará comúnmente el teléfono o Internet para engañar a la gente y llevarla a revelar información sensible, o bien a violar las políticas de seguridad típicas. Con este método, los ingenieros sociales aprovechan la tendencia natural de la gente a confiar en su palabra, antes que aprovechar agujeros de seguridad en los sistemas informáticos. Generalmente se está de acuerdo en que “los usuarios son el eslabón débil” en seguridad."

Bueno los newbies se preguntarán, donde y como se usa la Ingeniería Social, pues bien unos de los ataques es el Phishing, algo muy difundido hoy en día y que cada vez con mayor repercusión por la gran cantidad de usuarios inexpertos (y algunos no tanto), usuarios que no están capacitados en materias de seguridad informática y que trabajan diariamente conectados a la gran red. Que necesitamos para no ser victimas del Phishing o también de la Ingeniería Social, algunos consejos útiles:

  1. Desconfiar
  2. Aprender a decir NO
  3. Asegurarse por distintos métodos si la información es de buena fuente o de una fuente segura
  4. No abrir y menos responder email de desconocidos o que traen adjuntos en inglés o subject muy sugerentes (tipo ESTO TE GUSTARÁ, DA CLIC Y DIVIÉRTETE, etc)
  5. Si no estas seguro de con quién estas hablando, verifica su identidad de alguna manera
  6. No dejes datos verdaderos en sitios de Internet
  7. Jamas verifiques correos desconocidos
  8. Si realizas transacciones On line verifica tus contactos (Banco, Email, Web) antes de comenzar
  9. Jamás des clic directamente sobre un link de un banco, Institución Financiera, casa comercial, etc, prefiere escribir la dirección directamente sobre tu navegador
  10. No des tus datos por correo o teléfono
  11. No dejes Password, cuentas de correo, nombres de usuario a vista de todo el mundo
  12. Se un poco paranoico (en este caso es bueno serlo...si se que algunos lo son ya.....)
Fijate que unos de los Crackers (Hacker) mas famosos es decir, Kevin Mitnick solo utilizó tecnicas de Ingeniería Social para penetrar ciertos sitios y servidores, sin ocupar ningún software o forzar agujeros de seguridad, solo utilizó 4 conceptos que nosotros los seres humanos utilizamos día a día, a saber:

  • Todos queremos ayudar.
  • El primer movimiento es siempre de confianza hacia el otro.
  • No nos gusta decir No.
  • A todos nos gusta que nos alaben.

Entonces algunos consejos que nuestros padres nos daban de pequeños son aplicables acá:

  1. Cuídese y no hable con extraños
  2. No entregue información importante (no divulgue su dirección, etc)
  3. Desconfíe de las personas que recién conoce
  4. Cuando se sienta en peligro, pida ayuda
Siguiendo estas guías y para aquellos que trabajan en organizaciones donde hay Informáticos no debiese ser víctimas de ataques vía Ingeniería Social. Para quienes quieran interiorizarse más pueden postear y nos ponemos de acuerdo, no se olviden de poner todos sus datos en el Post para poder ubicarlos.

Daemon

Instalador gráfico en FreeBSD

Estimados todos, está calentito un proyecto para realizar un instalador gráfico en FreeBSD 7.0, visiten este link para que vean los screenshots.

Daemon