Monday, February 28, 2011

¿Qué es UUID?

El otro día estaba buscando en mi servidor NFS unas plantillas de Joomla para un sitio web que estoy ayudando a construir, pero me di cuenta que las plantillas no estaban por ninguna parte, continué buscando, pero al final no encontré nada, sólo logré encontrar algunas plantillas en el disco duro de mi laptop, las cuales me salvaron la vida y con las que pude reconstruir lo que había comenzado días atrás; finalmente subí al servidor NFS el contenido de las plantillas para almacenarlas en el directorio del proyecto, pero la pregunta es: ¿qué pasó con las plantillas originales que yo guardé? Lo más extraño es que ese disco en el cual yo guardo mis datos, fotos, música, etc., que por cierto es un disco externo, le hago respaldo diario a eso de las 3am, hacia otro disco externo usando el programa rsync, así que decidí buscar las plantillas en el disco de respaldo, pero tampoco hubo éxito, la misma información del disco de datos estaba en el disco de backup, menos los archivos que yo buscaba.

Para hacer corta la historia, descubrí que fue lo que pasó y el porqué las plantillas desaparecieron, la respuesta es la siguiente, pero primero veamos la configuración del sistema: actualmente tengo conectados a una laptop con Fedora 13, dos discos duros externos de 1TB cada uno, montados en los directorios /mnt/data y /mnt/backup, estos discos estan conectados por medio de los puertos USB, las particiones de datos y backup se identifican como /dev/sdb1 y /dev/sdc1 respectivamente, los cuales aparecen en el archivo /etc/fstab. Hasta ahí todo bien; para hacer el respaldo del disco de datos, utilizo rsync+crontab como dije anteriormente y el comando que utilizo para tal es el siguiente ya en el archivo crontab:

0 3 * * * rsync -av --delete /mnt/data/ /mnt/backup/

De esta forma el backup es realizado a las 3 AM todos los días, parte de la culpa de la pérdida de los archivos que yo buscaba se encuentra en esa línea de comandos, específicamente en el parámetro --delete, este parámetro lo que hace es mantener una copia exacta del folder de origen en el destino, de esa forma cualquier archivo que ha sido borrado del origen, es tambien eliminado del destino al momento de hacer el backup; ahora la explicación es que los discos en algún momento se desmontaron (posiblemente por una falla eléctrica) y cuando volvieron a montarse lo hicieron en el punto de montaje contrario, el disco de respaldo, o backup, con archivos faltantes fue montado como el disco de datos, por tanto cuando el comando rsync fué ejecutado por el crontab, el disco de origen no tenía las plantillas en las cuales yo habia trabajado, pero si estaban en el disco de backup y gracias a la opción --delete estas fueron borradas.

Ahora la pregunta es ¿cómo prevenir que ésto suceda nuevamente?, la respuesta esta en el Identificador Unico Universal o UUID, por sus siglas en inglés, y utilizarlo para identificar a los discos externos al momento de montarlos por medio del archivo /etc/fstab como se muestra a continuación:

Primero, tenemos que obtener los UUID de los discos externos que estoy utilizando para posteriormente actualizar estos datos en el archivo /etc/fstab, podemos hacer uso del comando blkid de la siguiente forma:

$ blkid /dev/sdb1
/dev/sdb1: UUID="a1849435-8fd4-4fb6-8432-07f4b4973297" TYPE="ext3"

O también podemos hacer uso del siguiente comando para ver los UUID de todos los discos en el sistema:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jan 5 19:20 0a021fff-4a8a-4df9-8c2a-db06c644a11d -> ../../sda1
lrwxrwxrwx 1 root root 10 Feb 15 17:31 0c630398-7933-4f74-aef0-ac2bc63333ec -> ../../sdc1
lrwxrwxrwx 1 root root 10 Jan 5 19:20 14efb499-dcc5-42e2-a13c-37741fc5d0da -> ../../sda3
lrwxrwxrwx 1 root root 10 Jan 5 19:20 42f2f283-d5d5-4a84-9720-70bf549a8b45 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jan 5 19:20 a1849435-8fd4-4fb6-8432-07f4b4973297 -> ../../sdb1
[fdiaz@fcofs ~]$

Con la información anterior, actualizamos el archivo /etc/fstab:

$ more /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Dec 12 11:05:45 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=14efb499-dcc5-42e2-a13c-37741fc5d0da / ext4 defaults 1 1
UUID=0a021fff-4a8a-4df9-8c2a-db06c644a11d /boot ext3 defaults 1 2
UUID=42f2f283-d5d5-4a84-9720-70bf549a8b45 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
UUID=a1849435-8fd4-4fb6-8432-07f4b4973297 /mnt/data ext3 defaults 1 3
UUID=0c630398-7933-4f74-aef0-ac2bc63333ec /mnt/backup ext3 defaults 0 0

Ahora cada vez que el sistema inicia, lo cual pasa unas dos veces al año, pero en caso de que la energía eléctrica falle o cuando me voy de vacaciones, el sistema se encargará de montar el disco correcto en el punto de montaje adecuado y no tendré el problema de perdida de datos cuando el comando rsync sea ejecutado al hacer el respaldo de los discos.

¿Pero, qué es el UUID? bueno es un identificador usado en algunas aplicaciones de software, está estandarizado por la Fundación de Software Libre, u OSF por sus siglas en inglés, como parte del Ambiente de Computación Distribuido (o DCE: Distributed Computing Environment).

La idea detrás del UUID es permitir que diversos sistemas puedan identificar componentes de software de forma única, de esta forma se pueden identificar objetos de forma inequívoca con cierta confianza de que no encontrará otro objeto con el mismo identificador. Entre los usos más comunes de esta tecnología se encuentran:
  • Los UUID se utilizan para nombrar objetos COM;
  • Sistemas de particionamiento de discos duros;
  • Second Life lo utiliza para identificar todos los objetos existentes en su mundo virtual;
  • etc.

El UUID es un número de 16 bytes(128 bits), con una cantidad aproximada de 3 x 10³⁸ posibles combinaciones de números, en su forma canonica consiste de 32 numeros hexadecimales, presentados en 5 grupos y separados por guiones, siguiendo el patrón 8-4-4-4-12, haciendo un total de 36 caracteres (32 numeros y 4 guiones), asi tenemos los siguientes ejemplos de identificadores UUID:

550e8400-e29b-41d4-a716-446655440000
0c630398-7933-4f74-aef0-ac2bc63333ec
a1849435-8fd4-4fb6-8432-07f4b4973297

Las especificaciones técnicas, algoritmos y una implementación de UUID se encuentran en el documento RFC 4122 para quienes esten interesados en profundizar más al respecto sobre las diferentes versiones y variantes de los UUID, asi como sus usos en otras áreas.

Hasta la próxima.

http://www.ietf.org/rfc/rfc4122.txt
http://en.wikipedia.org/wiki/Universally_unique_identifier
http://wiki.secondlife.com/wiki/UUID

Tuesday, January 11, 2011

-15 grados centígrados


-15 grados centígrados nos dieron los buenos días este Martes 11 de enero del 2011 (bueno estaba a -17C cuando nos levantamos, pero al momento de salir a la calle ésta había subido 2 grados centígrados) la temperatura está muy por debajo del punto de congelamiento del agua y los carros no sólo es a veces difícil encenderlos, sino que también el hielo acumulado en las calles hace de estas pistas de patinaje para los mismos. Esta semana pasada además de las bajas temperaturas hemos tenido problemas de mucho aire contaminado por el humo de los vehículos que se ha estado acumulando en la atmósfera, pero al menos en este aspecto el aire esta mejorando, el frente frio que nos esta afectando ha desplazado la mayor parte de este aire contaminado; de hecho la semana pasada mientras se observaba una capa muy densa en el aire, se lograba ver el disco solar de una forma muy peculiar, como visto a través de filtros en un telescopio, tanto que mi hija cuando lo vio penso que era la luna como podrán ver en la foto de la derecha.

Hasta la próxima.




Wednesday, October 27, 2010

Moviendo Casas


Suena extravagante, pues no lo es tanto, posiblemente han visto programas en el discovery channel al respecto, donde companias se dedican al exclusivo negocio de mover grandes estructuras, como casas, puentes, etc.

En esta oportunidad vemos como aca esta casa que sirvio de oficinas de una compania constructora, luego que terminaron sus funciones en esta area, es tiempo de moverla a otro sitio donde funcionara nuevamente como oficina temporal. Talvez logran apreciar en la foto, la plataforma de un trailer, esta bajo la casa, se pueden observar las ruedas abajo de la casa al lado izquierdo y al lado derecho de la casa, esta previamente ha sido desconectada de los simientos y posteriormente levantada de los mismos para meter la plataforma del trailer que se encargara de transportarla a su nuevo destino.

Es divertido incluso ver anuncios de ventas de casa donde el precio de la misma esta casi por los suelos, pero tienen el requisito que luego de comprarla, el nuevo dueño se la tienen que llevar, y eso paso hace unos meses con unas casas en un area donde pasaria una nueva carretera, la ciudad ordeno la venta de las casas, pero estas no podian permanecer en el terreno, sino que tenian que ser retiradas del lugar una vez fueran adquiridas.

Pueden encontrar mas fotos de este tipo si hacen un busqueda por imagenes de house movers en Google.


Saludos y hasta la proxima.

Monday, October 11, 2010

We got a new pet at home!

My kids has been asking for a dog in the last months, so in order to see how they're going to feel with a pet at home, we decide to build one, this little guy was built using the Lego Mindstorm set, which is a line of programmable robotics/construction toy that comes in a kit containing many non traditional pieces as well as sensors, cables and the main computer called the NXT brick, which is were you connect the sensors, store and run the programs.

So this little fella, goes around the house, avoiding much of the big obstacles (like walls), turns his head and using the ultrasound sensor (eyes) can see where there's more room to go; using the sound sensor (nose) , it can try to follow you if you call him; one good thing about him, it won't bark and won't do any mess, unless you program it :D

I remember using some of the first Lego Dacta sets back in 1998, when I was working for Futurekids in El Salvador, a company focused on the teaching of computers to young kids, and robotics was one of the areas, at that time we use a controll module that was connected to the wall and the sensors were connected to this module, those were pretty much static designs, but fun to watch.

The design, building steps and programs for the Robo-Puppy can be found here: NXT Programs

More info:

Tuesday, September 21, 2010

Jupiter a su máxima expresión.

En estos dias de septiembre del 2010, 20 al 22, es cuando el planeta gaseoso mas grande de nuestro sistema solar se encuentra en su punto mas cercano a nuestro planeta (perigeo), la Tierra y Jupiter se encuentran cada 13 meses, pero como las orbitas no son circulos perfectos, no siempre se encuentran a la misma distancia. En esta oportunidad, Jupiter estara 75millones de kilometros mas cerca que lo normal, y pasara asi por las siguientes semanas, pero anoche era el dia que mas cerca estarian; la Tierra y Jupiter no estaran a esta distancia sino hasta el 2022.

La vista por el telescopio fue excelente, las fotografias no hacen honor a lo que se ve desde el objetivo del telescopio, algo curioso de las fotografias es que se observa como el cinturon sur ecuatorial de Jupiter ha desaparecido por completo, segun los cientificos esta debajo de nuves que se han elevado mas en la atmosfera del gigante gaseoso y solo es cuestion de tiempo para que reaparezca de nuevo.

Aqui les dejo unas fotos de la sesion de anoche, que las disfruten, por cierto, al ver por un telescopio la imagen se invierte, la parte superior de las fotos es el polo sur de Jupiter, al igual que las fotos de la luna, donde se observa el crater Tycho en el polo sur.
















Thursday, September 9, 2010

Reglas de Cálculo (Slide Rulers) destinadas a la extincion?


Quien ha escuchado hablar de las reglas de cálculo? posiblemente algunos, pero quién ha visto a alguien usar una? o más raro, quién ha usado una antes?

El uso de las reglas de cálculo decreció considerablemente con el advenimiento de las llamadas calculadoras de bolsillo, que antes no eran tan de bolsillo como ahora, pero esa fue la causa principal de su desaparición. Yo use una regla de cálculo alla por el 88-90, en esa epoca para calcular algoritmos, y si no se podia usar una calculadora, era necesario aprender a usar las tablas de logaritmos y tablas trigonometricas, de esas si posiblemente algunos se acuerden, asi que en lugar de usar las tablas de logaritmos, yo usaba la regla de cálculo y los profesores estaban de acuerdo con eso. El uso de las reglas de cálculo esta relegado ahora a un pequeño grupo de personas que recuerdan como se utilizaban; posiblemente personas muy observadoras habran visto el uso de una de estas en la pelicula Apollo 13, cuando los operadores en la Tierra, hacian calculos para mantener con vida a los astronautas en el modulo lunar. Recuerdo que en San Salvador, en la tienda de articulos de dibujo llamada Diseõ, vendian estas reglas de cálculo, pero cuando ya nadie se acordaba de ellas fueron sacadas de inventario y cuando alguien preguntaba si aun tenian, las regalaban, de hecho yo tengo varias de esas.

Las reglas de cálculo fueron inventadas alla por 1620-1630, luego que John Napier publicara su estudio sobre los logaritmos, Edmund Gunter de Oxford desarrolló un dispositivo que era capaz de efectuar cálculos mediante escalas logarítmicas; la primera descripción de este aparato fue en Paris en 1624 por Edmund Wingate, matemático inglés en su libro titulado: Uso de la regla de proporciones en aritmética y geometría. En 1630, William Oughtred de Cambridge inventó una versión circular, y luego en 1632, combinando manualmente dos reglas usando el diseño de Gunter, esta última dio pie al diseño de la regla de cálculo tal y como se le conoce en la actualidad.

En su forma más básica, la regla de cálculo usa dos escalas logarítmicas con las cuales se pueden efectuar multiplicaciones y divisiones. Otras reglas más complejas, permiten operaciones como raiz cuadrada, exponentes, logaritmos y trigonometría. En general, las reglas consisten de tres bandas lineales de igual longitud, alineadas en paralelo y dispuestas de tal forma que la porcion central pueda moverse libremente entre las otras dos. Las otras dos bandas por lo general estan fijas y no se mueven. Algunas reglas llamadas duplex, tienen escalas en ambos lados de las bandas; además de las bandas con escalas logaritmicas existe un componente transparente llamado cursor que se desliza y permite localizar con mas precisión resultados ubicados en bandas no adyacentes o localizados al lado inverso de la regla.

Muchos modelos de reglas de cálculo fueron creados a lo largo del tiempo, muchas de ellas especializadas para determinadas tareas en áreas de ingeniería, navegación, negocios, etc; algunas aún se encuentran en relojes en la forma de reglas de cálculo circulares y son utilizadas por lo general en la navegación aérea para el cálculo de velocidad, combustible, entre otras cosas.

La época de oro de las reglas de cálculo ha pasado y ahora son solo objetos raros escondidos en algun cajón o en lugares privilegiados en manos de coleccionistas. En mi opinion, es mas útil darle a un joven una regla de calculo, que una calculadora y con esto podemos salvar a un objeto tan importante en la historia de la matemática de la extinción.


Referencias y más información:
Hasta la próxima.
 ___       ___  _         ___ _
| __|_ ___| \(_)__ _ __| _ ) |___ __ _
| _/ _/ _ \ |) | / _` |_ / _ \ / _ \/ _` |
|_|\__\___/___/|_\__,_/__|___/_\___/\__, |
|___/

Monday, August 23, 2010

Panorama

Un panorama (o panorámica) (derivada del griego πᾶν "all" + ὅραμα "sight") es cualquier vista tipo gran angular que representa un espacio físico, ya sea en pintura, dibujo, fotografía, etc. La palabra panorama fue originalmente acuñada por el pintor irlandés Robert Barker para describir sus pinturas panorámicas de Edinburgo, estas eran proyectadas a una superficie cilíndrica y desde una perspectiva interior, fueron exhibidas en Londres en 1792. El término paneo, utilizado en la producción de películas y videos, se deriva de la palabra panorama.

Siempre que tengo la oportunidad, tomo fotografías en secuencia para luego unirlas y hacer una panorámica de estas, la mejor forma de tomar las fotografias en secuencia es siempre comenzar desde la izquierda hacia la derecha, es recomendado montar la cámara sobre un tripode para mantener la camara fija en el centro de la panorámica, y finalmente recordemos que las fotografias siguientes deben de tomarse sobreponiendo (un 20-30%) la nueva imagen sobre la foto anterior; algunas cámaras traen software para crear las panorámicas, pero en mi caso, para hacer las uniones de las diferentes fotografías que componen la panorámica, nada mejor que Gimp + Pandora, no, no hablo del sitio de radio on line, sino de un script (plugin) diseñado para la construcción de panorámicas; básicamente lo que hay que hacer es bajar el script del sitio web, guardarlo en el área de scripts de Gimp y luego desde el menú de Filtros->Combinar se puede crear la panorámica y en unos segundos tenemos algunos resultados como los que muestro a continuación.


Norte de la ciudad de Quito en mayo del 2006.
Lago Silver ubicado en el cañon de American Fork, UT

Panoramica de la ciudad de Las Vegas en Enero de 2010
Mina de Cobre en la ciudad de Bingham, UT

El uso del plugin es relativamente sencillo, más detalles se pueden encontrar en la página web del plugin, así como también los pasos para utilizarlo.

Saludos y hasta la próxima.

Enlaces:

Mas informacion en wikipedia: panorama

Plugin de Gimp para crear panoramas: Pandora Plugin

Mina de cobre en Bngham, UT: Kennecott Copper Mine

Ciudad de San Francisco de Quito, Ecuador

Wednesday, August 18, 2010

A 30,000 pies de altura.


El internet ha logrado envolver nuestras vidas cotidianas de tal forma que sin el estamos como en un vacio, muchas personas despiertan y lo primero que hacemos es revisar el correo, ver las noticias del dia, entre otras cosas antes de disponernos a trabajar; y los que trabajamos en informatica es como que el trabajo nunca termina; nos ha tocado vivir una era de avances tecnologicos y mediaticos sin precedentes, al grado que ahora el unico lugar mas cercano que aun no tiene internet es la Luna; pero con la falta de interes en la luna por parte de los programas espaciales, creo que la proxima frontera sera el 4to planeta a.k.a. Marte.


Regresando el dia de ayer, me encontre con que el internet ahora esta disponible por un modico precio de $4.95 mientras el avion esta en ruta a su destino, asi que me suscribi al servicio y en menos de 2 minutos ya estaba conectandome al messenger, revisando por donde estaba sobrevolando el avion (flightstats) y ademas contacte a mis amigos en el IRC de linux.org.sv y a mi esposa, que se asusto pensando que habia perdido el vuelo y estaba de regreso en el aeropuerto, como minutos antes habia estado conectado desde el internet wireles del aeropuerto. Asi que el resto del vuelo lo pase entretenido hablando con mis amigos y mi esposa e hijos.

Una vez el vuelo llego a su destino nos pidieron que apagaramos nuestros equipos electronicos y hasta ahi llego el uso del internet en el avion, pero es algo mas a la lista de cosas que ahora se pueden hacer a mas de 30,000 pies (9 Km aprox) de altura.

Saludos y hasta la proxima.

Friday, August 13, 2010

Perseidas 2010

Para los que aun no se animan a levantarse a las 3 o 4 de la madrugada a ver el show, les cuento como nos fue ahora por la manana, mi hijo, mi suegro y yo nos levantamos a eso de las 4am de hoy viernes 13, y nos dispusimos afuera del frente de la casa, hacia el este que es donde aparece la constalacion de Perseo (los meteoros parecen venir de esa constelacion, por eso el nombre de Perseidas), asi que nos acomodamos cada uno en su silla a disfrutar del "show".

Yo logre contar 48 estrellas fugaces, mi suegro solo logro ver 3 de ellas, pero fueron casi bolas de fuego las que el vio, y mi hijo conto 15, de las cuales algunas vi yo, otras no, asi que posiblemente la cuenta total andaria cerca de las 60, aproximadamente en una hora, desde las 4:30 a las 5:30 de la manana, ya cuando comenzaba a ponerse un poco claro por estas latitudes y mi hijo ya estaba cayendo de sueno.

Segun reportan, el espectaculo aun podra verse esta noche, asi que los que aun no han visto, intenten en la madrugada de manana sabado, ya que manana no trabajan (espero) y luego de ver las estrellas pueden ir a dormir hasta el medio dia.

Saludos.

Mas detalles y foto cortesia de: http://spaceweather.com/

Tuesday, August 3, 2010

UFO or not? / OVNI o no?

This is what happen when you start taking random pictures of the sky, this picture (left) was taken a month ago during the hot air balloon celebration down there in Provo, I was taking pictures to the balloons when I notice the moon and took a picture of it; what I surprise for me that when I was looking at the pictures I noticed a small thing below the moon (see 2nd picture), you can see in the square a magnification of that object, and then I start asking this question: what is it? Doesn't look like a plane, or helicopter, it's to high to be one of those, how about a satellite, the ISS? It's the closest, but if it's not, what do you think it is?

000 OOO ooo

Esto es lo que pasa cuando se toman fotografias al azar de cielo, la fotografia de la izquierda(arriba) fue tomanda hace un mes en el festival de globos aerostaticos de la ciudad de Provo, con motivo de las celebraciones de la independencia de Estados Unidos, cuando para mi sorpresa observo que hay un objeto pequenio bajo la foto de la luna; en la siguiente imagen pueden ver en recuadro el objeto aumentado, ahi fue cuando comenze a preguntar: que es eso? No parece un avion, no parece un helicoptero, ademas esta a mi punto de vista, demasiado lejos; puede ser un satelite, la estacion espacial internacional, etc.; pero y si no lo es: que crees que es?

Monday, August 2, 2010

Zim - A Desktop Wiki


Zim brings the concept of a wiki to your desktop. Store information, link pages and edit with WYSISYG markup. Creating a new page is as easy as linking to a non-existing page (:NewPage:). Pages are stored in a folder structure and can have attachments.

This tool can be used to keep track of TODO lists or ideas, to take notes during a meeting or to draft any other kind of text (blog entries, important mails, etc.).

Zim handles several types of markup, like headings, bullet lists and of course bold, italic and highlighted. This markup is saved as wiki text so you can easily edit it with other editors. Because of the autosave feature you can switch between pages and follow links while editing without worries.

http://zim-wiki.org/


___ ___ _ ___ _
| __|_ ___| \(_)__ _ __| _ ) |___ __ _
| _/ _/ _ \ |) | / _` |_ / _ \ / _ \/ _` |
|_|\__\___/___/|_\__,_/__|___/_\___/\__, |
|___/

Tuesday, July 13, 2010

Viva Las Vegas!


Luego de unas merecidas vacaciones y tambien tomarme tiempo para disfrutar con mi mama y sobrina a quienes no veia desde hace un buen rato, y con el fin de despejarnos la mente y dejar atras los problemas de la vida cotidiana nos fuimos unos dias a la ciudad del pecado (Sin City) como suelen llamarle por aca a la ciudad de Las Vegas en el estado de Nevada, a menos de 6 horas (por freeway a 75mph en promedio) de donde vivimos, era una visita obligada (segun mi sobrina), asi que nos fuimos en el fin de semana de las celebraciones del 4 de julio; Las Vegas es una ciudad que cambia constantemente, hace un par de dias mostre en GBuzz dos fotos con 6 anios de diferencia y los cambios que la ciudad ha tenido en este tiempo, ahora hay otro tren elevado que circula al rededor de un nuevo complejo de edificios llamado City Center en el corazon de la Strip (como se le conoce a Las Vegas Blvd). Este complejo aun se encontraba en construccion en septiembre pasado y ahora es uno de los puntos mas visitados. Nuevos hoteles como el M, en el punto mas al sur de la Strip, pero definitivamente muy al sur, tanto que es el unico hotel en esa zona. El trafico esta vez estaba mas tranquilo, no tanto loco al volante y finalmente no habia tanta construccion en el freeway al lado de las vegas como en otras oportunidades.

La comida, un poco mas cara, pero abundante en los buffete que van desde los $8 hasta los $20 o mas en algunos hoteles; las atracciones, al menos esta vez no me quede con las ganas de subirme al big shot del hotel Stratosphera, que se encuentra en el piso 112 de la torre, y que lo acelera a unos 45mph en unos 3-4 segundos. Ahora hay una nueva diversion en la torre y es lanzarse amarrado de una cuerda desde el piso 112 hasta la base de la torre, claro un cable de acero lo baja a uno a cierta velocidad para dar la impresion de que se esta cayendo, era comico ver como algunas personas ya al borde del edificio no querian saltar y tenian que empujarlos para saltar.

Gente, no importa si es dia feriado o no, gente es lo que mas hay en las vegas, la temperatura estaba a todo vapor literalmente, hubo dias que la temperatura andaba por los 46 - 47 grados centigrados, suficientes para sentirse mal si no se toma suficiente liquidos o se hace uno a la sombra, otros trataban de combatir el calor en las piscinas de los hoteles.

Otros eventos durante al visita a las vegas fueron la visita del presidente Obama a Las Vegas, los partidos del mundial de futbol, y finalmente la visita a la represa Hoover en el borde entre Nevada y Arizona. Creo que pasamos un buen momento por alla, no ganamos dinero en las maquinas, pero si ganamos muchos recuerdos y memorias que perduraran por mucho tiempo.

Hasta la proxima

Thursday, July 1, 2010

:(){ :|:& };:

http://en.wikipedia.org/wiki/Fork_bomb

Una bomba fork es una forma de ataque del tipo denegación de servicio sobre un computador que implementa la operación fork, o alguna funcionalidad equivalente mediante la cual un proceso es capaz de crear otro proceso.

Una bomba fork funciona creando una gran cantidad de procesos muy rápidamente con el objetivo de saturar el espacio disponible en la lista de procesos mantenida por el sistema operativo del computador. Si la tabla de procesos se llega a saturar, entonces no se pueden iniciar nuevos programas hasta que no se cierre alguno. En el caso que esto suceda, es muy poco probable que se pueda iniciar un programa útil ya que los procesos de la bomba estarán esperando para poder crear nuevos procesos a la primera oportunidad que se les conceda.

Las bombas fork no sólo ocupan espacio dentro de la lista de procesos, también consumen tiempo de proceso y memoria de la máquina donde se ejecutan. Como resultado de esto, los ordenadores se vuelven lentos e incluso se pueden volver inutilizables dada la falta de memoria y la imposibilidad de aprovechar el procesador.

Una forma de prevenir el ataque de una bomba fork es limitar el número de procesos que un usuario puede ejecutar. Cuando un proceso intenta crear otro proceso y el propietario de dicho proceso ya posee la cantidad máxima de procesos que se le ha asignado, el intento de creación del nuevo proceso falla. El máximo número de procesos asignado a cada usuario debe ser lo suficientemente bajo para poder resistir la ejecución simultánea de una bomba fork por cada usuario y dejar libres los suficientes recursos como para poder restaurar el sistema.

Ejemplos de bombas fork tenemos (advertencia, no ejecutar a menos que se guarde toda information actualmente abierta; en algunos casos existe la posibilidad de daniar el sistema):


Bash
:(){ :|:& };:


C:
#include

int main(void)
{
for(;;)
fork();
return 0;
}

PHP:
while(pcntl_fork()|1);


Python:
import os

while True:
os.fork()



___ ___ _ ___ _
| __|_ ___| \(_)__ _ __| _ ) |___ __ _
| _/ _/ _ \ |) | / _` |_ / _ \ / _ \/ _` |
|_|\__\___/___/|_\__,_/__|___/_\___/\__, |
|___/

Thursday, June 24, 2010

rm -rf * : Too many arguments

El otro dia que estaba queriendo borrar unos archivos que ya no necesitaba, pero el problema es que eran demasiados para el limite de argumentos que soporta el kernel de linux, y este error ocurre cada vez que el usuario pasa mas argumentos de los que el sistema soporta, y esto aplica a todos los comandos como: ls, cp, rm, etc.

Asi que habia que buscar una alternativa (workaround) para el comando rm -rf *, entonces es cuando otros comandos de Bourne Shell pueden ser utiles para completar esta tarea, asi que aqui les muestro dos alternativas:

for i in *; do rm -rf $i; done

De esta forma el comando for toma un archivo a la vez y lo coloca en la variable $i; dentro del loop se ejecuta el comando rm para finalmente borrar el archivo; resultado, los archivos son eliminados, que es lo que se deseaba desde el principio.

Otra alternativa para realizar esta tarea es mediante el comando find:

find . -type f -name '*' -exec rm -rf {}\;

El comando find pasa cada archivo que coincide con la busqueda y ejecuta el comando rm -rf en cada uno de ellos, completando al final la tarea deseada.

Hay otras alternativas, pero las dejo para la investigacion, de hecho una de ellas es el modificar, en el kernel de Linux, la variable que permiten incrementar el limite de parametros que se pueden pasar en una linea de comandos, pero ojo, esto require del conocimiento de los cambios que se haran y de como compilar un nuevo kernel de Linux; una pista, busquen en /include/linux/binfmts.h.

Saludos y hasta la proxima.

___ ___ _ ___ _
| __|_ ___| \(_)__ _ __| _ ) |___ __ _
| _/ _/ _ \ |) | / _` |_ / _ \ / _ \/ _` |
|_|\__\___/___/|_\__,_/__|___/_\___/\__, |
|___/

Tuesday, June 8, 2010

What is Gopher?

gopher n. 1. Any of various short tailed, burrowing mammals of the family Geomyidae, of North America. 2. (Amer. colloq.) Native or inhabitant of Minnesota: the Gopher State. 3. (Amer. colloq.) One who runs errands, does odd-jobs, fetches or delivers documents for office staff. 4. (computer tech.) Software following a simple protocol for tunneling through a TCP/IP internet.

If we use that last definition and with one click of your browser (I hope you are using Firefox) you've just taken several years back in Internet time. Close your eyes and grip your terminal. Imagine there's no Websites (it's easy if you try). Imagine that there's a Commodore 64 on your desk, or maybe a 386.

Now open them again.

You're in the year 1991, when University of Minnesota computer scientists, fed up with the limitations of FTP for downloading files and the overhead of having to log into computers for everything, decided to come up with a friendlier method of accessing data over the then largely vacant and much smaller Internet. The result was Gopher, a simple and easy to understand menu system that allowed once hideously complicated systems and services to be strung together for straightforward usage. And Gopher Was Good.

In fact, Gopher was so good that for several years, Gopher sites sprang up all over. You could get weather reports on Gopher, news, mailing lists, even software.

Then Mosaic came out barely a year or so later and plunged the world into darkness and all seemed lost under the choking strands of the World Wide Web. And Gopherspace lay all but forgotten.

But Gopher's still out there. And what's more, you'll find it surprisingly useful, even years after the Web became a household word. Why?

  • It's easy to set up.
  • It's easy to write content for and facilitates organization.
  • It doesn't need much system power to run -- either from the server or from your computer. It can run on systems with little CPU power or memory.
  • It supports many things that the Web does, even if it looks less attractive. You can still view images, search and download programs, and ...
  • ... since Gopher has less data to transfer, it's frequently faster.

Save the Gopher! Explore Gopherspace with Veronica-2 and find out about the hidden world the Gophers once dug. And think how different the world would be if that darn Mosaic had never been written ... :-)

So how do you get to gopher, well click in any of the following urls, and no it's not http:// it's gopher://
Do you search the gopher?
 ___       ___  _         ___ _    
| __|_ ___| \(_)__ _ __| _ ) |___ __ _
| _/ _/ _ \ |) | / _` |_ / _ \ / _ \/ _` |
|_|\__\___/___/|_\__,_/__|___/_\___/\__, |
|___/

Friday, June 4, 2010

La aspiradora del sistema solar.

Si Jupiter se le conoce tambien como la aspiradora del sistema solar, por que? Dado su gran tamanio y campo magnetico que se extiende a millones de kilometros de distancia, es capaz de atrapar objetos muy distantes en su orbita, tal fue el caso del cometa Shoemaker-Levi 9 que en el 94 se desintegro al ingresar a la atmosfera de Jupiter.

El anio pasado tambien en julio, Jupiter aparecio de repente con una mancha gigantesca, producto del encuentro del planeta con algun cometa o meteorito (foto inferior).
Pero nuevamente ayer, como se muestra en la foto de arriba, se puede observar un destello producto del ingreso de otro objeto en la atmosfera de Jupiter.

Muchos astronomos piensan que esa cualidad de Jupiter de ser capaz de atraer mucho del material errante en el sistema solar ha permitido la existencia de vida aqui en la tierra, pues de lo contrario, es posible que nuestro planeta fuese bombardeado por un cometa o meteorito cada 50 anios aproximadamente.

Wednesday, May 19, 2010

Bash en la vida cotidiana.

Para los que todos los dias tenemos que trabajar con bash en nuestros sistemas, ya sea como administradores de sistemas, desarrolladores, etc. sabemos lo importante que es para nosotros la linea de comandos, y que mejor si podemos aprender algunos trucos para agilizar ese trabajo, asi aqui les presento un par de ellos:

ctrl+r:
Bash registra cada uno de los comandos que ejecutamos en una bitacora, y esta nos permite regresar a ellos cuando los necesitamos u olvidamos los parametros de un determinado comando que tanto trabajo nos costo construir; una de las formas de hacer esto es mediante las teclas de flecha hacia arriba y abajo, lo cual nos lleva a los comandos ingresados con anterioridad y navegar a travez de ellos. Pero si necesitamos encontrar el comando con mayor rapidez, podemos hacer uso de la busqueda rapida, esta busca entre los comandos ingresados aquellos que inician con las letras que ingresamos luego de la combinacion de teclas ctrl+r, Bash comenzara una busqueda y nos mostrara aquellos comandos que coinciden con las letras que estamos ingresando; si el comando mostrado no es el que estamos buscado, podemos seguir presionando ctrl+r para ir al siguiente resultado de la busqueda y asi sucesivamente; una vez encontrado el comando deseado, damos enter para ejecutarlo inmediatamente o las teclas de flechas izquierda o derecha para editarlo, en caso que deseamos editar la linea antes de ejecutarla.

!! y !#
Este es otro par de combinacion de simbolos que permiten agilizar nuestras actividades en Bash, el primero !! nos permite ejecutar exactamente el comando ingresado anteriormente. En cuanto al segundo, este nos permite ejecutar el comando #, donde el numero especificado es el numero asignado por la secuencia del comando history.

Por ejemplo, si al ejecutar el comando history, vemos el siguiente resultado: (salida ha sido truncada)
44 history
45 cd Backup/
46 history
47 yum
48 #?

Al ejecutar !45 equivale a ejecutar nuevamente el comando: cd Backup/

Pregunta: que almacena Bash en la variable denominada $?

Si conoces otros trucos de la linea de comandos, compartelos.

Wednesday, May 12, 2010

Ayer Pascal, C, Python, ahora Ruby, manana Go?

Lejos ha quedado la epoca en que daba clases de Teoria de Lenguajes de Programacion alla por el 96-99 para la carrera de computacion en la UCA, donde hablabamos de los automatas finitos, analizadores lexicos/sintacticos, expresiones regulares, etc, atras ha quedado la epoca en que usabamos el compilador Turbo C/Pascal de Borland, o Modula-2 para quienes programaron en ese lenguaje, ahora los lenguajes son orientados a objetos, paradigma que comenzaba a despegar por aquellos anios en El Salvador, pocos eran los que intentaban descifrar de que se trataba, pero que ahora es un elemento indispensable en los nuevos y modernos lenguajes de programacion, asi como una herramienta indispensable para los programadores actualmente. Lisp se podria decir que era de los lenguajes mas avanzados a su epoca, utilizado primordialmente en sistemas de Inteligencia Artificial (al igual que Prolog), tenia problemas de eficiencia (no se si culpar a la recursividad por tal razon) asi como no era facil tratar de resolver cualquier problema de la vida real mediante formulas matematicas y recursividad; Pascal y Basic digamos que eran los lenguajes que nos motivaron a estudiar computacion, ensamblador fue el que nos hizo lograr entender como los circuitos digitales dentro de la computadora colaboran entre ellos en una sincronia de reloj, para calcular la serie de Fibonacci, buscar numeros primos o simplemente resolver una ecuacion de segundo grado. Finalmente C, era como la llave a todas nuestras respuestas, el problema era como usar la llave, siendo un lenguaje de alto-medio nivel, dispone de gran habilidad para desarrollar programas en casi cualquier rama, por eso se le denomina lenguaje de proposito general, como tambien estar lo suficientemente cerca del hardware para ser eficiente y descubrir los secretos del BIOS y cambiar el vector de interrupciones de la computadora (para los que haciamos programas residentes en memoria o TSR(Terminate and Stay Resident ).

Se acuerdan de los lenguajes de cuarta generacion, pues si no se acuerdan de ellos es por que nunca los conocieron o trabajaron en ellos, originalmente desarrollados con el fin de resolver un grupo en particular de problemas, (principalmente en el ambito de los negocios y reemplazar al omnipresente COBOL), tenemos a PowerBuilder, Natural, entre otros, que durante algun tiempo se creia eran la respuesta a los sistemas empresariales, cuando aparecio el Internet; HTML (aun que no un lenguaje de programacion), pero que gano popularidad con el advenimiento del Internet y las paginas web y el Dot Com; Java, JavaScript, PHP, Perl son otros de los grandes protagonistas de las nuevas generaciones de aplicaciones que poblarian la red en los anios venideros uniendo fuerzas con bases de datos como MySQL/PostgreSQL.

Actualmente, la lista de lenguajes de programacion es enorme y llena de todo tipo de lenguajes destinados a una gran gama de posibles probemas de la vida cotidiana o no tan cotidiana, en los ultimos 3 anios Python se ha ajustado muy bien en cubrir las necesidades que require mi trabajo de control de calidad de software, automatizando pruebas de software, pero actualmente la empresa donde trabajo, el lenguaje que mas utilizan es Ruby, de hecho una de las librerias que utlizamos para hacer pruebas esta en ese lenguaje, asi que aqui me tienen leyendo/aprendiendo un poco de Ruby en un rato que tengo libre en el trabajo, eso significa otro lenguaje a la bolsa, no esta nada mal, pero luego de Ruby que? Erlang? Go? Nimrod? Ioke?

Y ustedes en que lenguaje programan/crean scripts?

Saludos.

El archivo /etc/passwd

Los que trabajamos en sistemas Unix/Linux sabemos (espero) que este archivo contiene informacion sobre cada usuario que puede ingresar al sistema, el archivo tambien contiene, entre otros datos, la informacion necesaria para verificar la autenticidad del usuario, mediante la contrasenia, pero en algunos otros sistemas, esta informacion es transferida hacia otro archivo llamado /etc/shadow.

Este archivo puede ser leido por todos los usuarios, pero solamente el administrador o aquellos usuarios con permiso pueden editarlo.

El otro dia un amigo en el canal #linux.org.sv en IRC, preguntaba como podia hacer que un usuario al ingresar al sistema mediante ssh, solo pudiese tener acceso a una aplicacion en particular y si deseaba salirse de ella, al hacerlo, el sistema lo desconectaria inmediatamente; bueno la solucion estaba en el archivo /etc/passwd, si observamos bien en el archivo, el ultimo campo de cada linea corresponde al shell que atiende al usuario una vez este ingresa al sistema, pero que tal si en lugar de colocar el shell que atendera al usuario, colocamos el nombre y ubicacion de otro programa?, bueno este atendera al usuario mientras utilize el programa, pero una vez este termine de usarlo, el sistema lo desconecta automaticamente.

Veamos un ejemplo: Ojo, no intenten esto con su usuario, mi recomendacion es que creen un usuario de pruebas para hacerlo, pueden usar el siguiente comando en Linux, en el siguiente ejemplo usaremos el programa top, asi este usuario solo podra ver el resultado del comando top una vez ingrese al sistema:

$ sudo adduser -s /usr/bin/top testuser

Ahora asignemosle un password al usuario mediante:

$ sudo passwd testuser

Una vez el password ha sido asignado, observen la nueva linea en el archivo /etc/passwd y observen como la ultima columna en lugar de apuntar a un shell, apunta a /usr/bin/top; intentemos ingresar al sistema mediante este usuario, podemos usar el comando su:

$ su testuser

Una vez damos la contrasenia, en lugar de recibir un prompt ($) de un nuevo shell, vemos como el programa top inicia automaticamente, y cuando lo cancelamos mediante
la tecla "q", el usuario es automaticamente desconectado; para confirmarlo usamos el comando "whoami", debemos estar de regreso en nuestro usuario original y no el usuario de pruebas. Pueden confirmar esto tambien haciendo un 'tail -f' sobre el archivo /var/log/auth.log donde veran que el usuario sale al instante de cerrar top.

Que pasa si en lugar de /usr/bin/top cambian por /sbin/nologin?

Saludos.

Friday, April 16, 2010

Que es Scratch?

Scratch es un lenguaje de programacion que permite de forma facil crear historias interactivas, animaciones, juegos, musica, arte, etc. y posteriormente compartir estas por medio del Internet. A medida que se crean los proyectos, se aprenden conceptos importantes sobre matematica y computacion, al mismo tiempo que se desarrolla el pensamiento creativo, razonamiento sistematico y el trabajo en equipo.



Sitio oficial: http://scratch.mit.edu/

Instrucciones para instalarlo en Linux: http://info.scratch.mit.edu/Linux_Installer