lunes, octubre 24, 2005

Invitación. Conferencia y charla de ruby

Titulo: Ruby on Rails
Ponentes: Sebastián Mantilla, Norberto Ortigoza, Bruno Unna y Juan Carreón.

Fecha: 26 de octubre 2005
Hora: 18:00 hrs
Ubicación: Auditorio Javier Barros Sierra, edificio principal, Faculta de Ingeniería, C. U. UNAM.

Resumen: Web 2.0 es una nueva forma de trabajar en la red, caracterizada por su gran interactividad: los usuarios aportan el contenido. Una nueva generación de Internet requiere una nueva generación de herramientas.

Ruby on Rails representa la sintesis de la batalla entre «scripting languages» y arquitecturas formales.

+--------------------------------------------+

Charla Virtual: Introducción a la programación con Ruby
Fecha: Viernes 28 de Octubre

Horario: 18:00 hrs
Lugar: #lidsol en el canal de irc en el servidor de irc freenode.net

+--------------------------------------------+

viernes, octubre 14, 2005

Tip: Cuando solo root puede montar dispositivos

En algunas distribuciones y en algunos casos, el montado automático de "memorias usb" o no esta habilitado, o no puede hacerlo, aunque la memoria se encuentre en perfecto estado.

Para esos casos, si solo root puede montarlo, la tarea sería la siguiente para hacer una copia de los archivos que queremos manipular como un usuario normal.

># mount /dev/"archivo_dis" /"ruta_montar"
archivo_disp := puede ser sdaX o solamente sda, en caso de tener dispositivos SCSI, será el siguiente libre.
ruta_motar := Es la ruta del directorio asociado al dispositivo, generalmente esta contendio en /mnt

># cp -r /"ruta_montar" /"dir_interes" /"lugar_deseado"
dir_interes := subdirectorio que contiene los archivos que deseamos manipular
lugar_deseado := la ruta donde queremos colocar los archivos que vamos a manipular, puede ser /home/usuario/copia_mem por ejemplo o /tmp/copia_temp_mem

># chown -R "nuevo_dueño":"nuevo_grupo" /"lugar_desado"/"dir_interes"
nuevo_dueño := nick del nombre del usuario que modificará los archivos
nuevo_grupo := grupo al que pertenece el usario que modificará los archivos

># chmod -R "permisos" /"lugar_deseado"/"dir_interes"
permisos := permisos numéricos o por banderas para modificar los permisos del dir_interes.

># cd ~; umount /"ruta_montar"
Antes de desmontar el dispositivo asegurarse que no se esté usando y estar en cualquier lugar menos en /"ruta_montar"

y lo más importante
># logout

Después de esto, como usuario normal al que se le asignó el directorio, podrá manipular los archivos.
Nota: el directorio al que se le asocia el dispositivo debe existir ( /"lugar_deseado").
Ejemplo:

>$ su - root
># mount /dev/sda1 /mnt/mem_usb
># cp -r /mnt/mem_usb/mis_diagramas /home/usuario
># chown -R usuario:users /home/usuario/mis_diagramas
># chmod -R 660 /home/usuario/mis_diagramas
># umount /mnt/mem_usb
># logout
>$

jueves, octubre 13, 2005

Cuando el tiempo de ejecución importa

Cuando se programa una aplicación, generalmente la rapidez de los componentes no resultan un factor tan importante como antaño (velocidad del procesador, velocidad de acceso a memoria, etc), porque la máquina trabaja tan rápido como el más lento de sus componentes.

Cuando la aplicación interactua con un usuario, será tan rápido el proceso, como la velocidad de respuesta del usuario.

Es común encontrar en la Internet discusiones sobre la ventaja en rendimiento de un lenguaje compilado sobre uno interpretado.

Este rendimiento no resulta en ventaja real en tiempo de ejecución cuando existe un usuario que interactuará con la aplicación. Y si puede ser un factor en tiempo de desarrollo el lenguaje ocupado. Por ejemplo, realizar una aplicación en lenguaje C puede resultar en un tiempo muy largo de desarrollo en comparación con el tiempo de desarrollo en Python de esa misma aplicación. Y puede ser que el rendimiento final sea insignificante porque existe una interacción con un usuario.

Sin embargo, a pesar de que en muchos casos no importará mucho si se usa un lenguaje interpretado o un lenguaje compilado para programar una aplicación dada; hay casos especiales en que el rendimiento si importa.

El computo científico se caracterisa porque mediante computadoras buscan simular comportamientos de interés para la comunidad científica. Simular comportamiento de proteínas, reacciones nucleares o atómicas, comportamiento de fluidos, etc.

Estas simulaciones son muy complejas y demanda un gran poder de cálculo. En algunos casos, se tiene sistemas de ecuaciones que tratan de aproximarse a la descripción del comportamiento del fénomeno de interes; y estos sistemas de ecuaciones no siempre se pueden resolver de manera analítica, y cuando es posible, el tiempo que ha de invertirse en su solución puede ser demasiado.

Para resolver estos sistemas, se utilizan métodos numéricos que nos den una aproximación lo mejor posible a la solución real. Y estos métodos se programan para que sea una computadora quien realice el trabajo de cálculo.

Este proceso puede tardar desde horas, hasta meses; así que los investigadores que se dedican a realizar estas tareas, buscan métodos más eficiente así como también les importa que el lenguaje que van a usar genere un programa que se ejecute lo más rápido posible, porque una diferencia del 10 % cuando se habla de meses, es una ganancia significativa.

martes, octubre 04, 2005

Errores costosos de novato

Hace algunos días mientras creaba un directorio, para colocar algunos archivos que iba a agregar a un repositorio cvs; cometí el error de remover el directorio original con el comando rm -rf mi_directorio, al confundirlo con el que había creado para el cvs.

Como las particiones son ext3, al buscar informacion sobre recuperacion de datos eliminados accidentalmente encontré que en la mayoría de las referencias daban por perdidos los archivos, porque al elimiar un archivo, el sistema operativo elminina cualquier referencia a la ubicación física de los datos.

Este error muestra que mientras no se esté totalmente habituado al uso del sistema operativo, es conveniente considerar lo siguiente

  1. Asegurarnos, antes de borrar cualquier cosa, que realmente no sirve ó que ya tiene un respaldo
  2. Siempre que se desee borrar un grupo de archivos es bueno como primer paso usar el comando pwd, para sersiorarse que estamos donde queremos borrar.
  3. Nunca usar el mismo nombre de directorio que otro, aunque se encuentren en diferentes niveles de anidación.
  4. Si se usa ambiente gráfico, utilizar la papelera de reciclaje.
  5. No usar la bandera f (forzado), hasta no estar completamente seguro
  6. De ser posible y aunque tedioso al principio, utilizar la bandera i (interactivo), cuando se usa el comando rm. Bandera que hace a rm preguntar para confirmar por el borrado de un archivo.
Estas consideraciones también hay que tenerlas en cuenta cuando se maneja el comando mv, que puede sobreescribir archivos que tengan el mismo nombre pero diferente contenido.

Por ultimo, es posible recuperar un archivo borrado accidentalmente, pero no es una tarea trivial.