Archivos de Diciembre de 2007

Al cabo de un año, el perro se parece al amo

¿Recuerdan el refrán? A los informáticos nos pasa lo mismo. De tanto trabajar con ordenadores, acabamos pensando como tales.
Los ordenadores son sólo máquinas, para hacer su trabajo necesitan unas instrucciones precisas, no entienden ambigüedades ni sutilezas. Las personas que nos dedicamos a la informática, en numerosas ocasiones, también.

Con su permiso, voy a contarles una batallita.
Hace unos años estaba encargado del mantenimiento de un programa de contabilidad y gestión de almacén. Según se iba acercando la implantación del euro, hubo que hacer modificaciones en el programa para que mostrase todos los importes en pesetas y euros.

Tras una breve reunión con los usuarios, se decidió añadir un campo adicional en los formularios y una columna más en los listados con el importe convertido en euros. Era un trabajo sencillo, y al cabo de una semana el cliente ya tenía la modificación hecha.

Al cerrar el mes, recibí una llamada del cliente, me contaba que los totales en euros que daba el programa y los que recibía de los proveedores no coincidían, eran errores pequeños, del orden de céntimos de euro, uno o dos euros a lo sumo, pero estaban ahí.

Lo primero que pensé fue que el factor de conversión (1 € = 166,386 pta) lo había puesto mal, revisé donde aparecía y estaba bien. Lo siguiente fue revisar el proceso de conversión a euros: multiplicaba el importe en pesetas por el factor de conversión y el resultado lo redondeaba a dos decimales. Todo parecía correcto.

Al final, hablando con personas que trabajaban en contabilidad me enteré que para pasar a euros el redondeo no es el mismo que el redondeo “matemático”: pasando de pesetas a euros se redondea siempre “hacia arriba”. De los diversos criterios “matemáticos” para redondear, uno de los más utilizados es el “redondeo al par más próximo”.

Pesetas Euros
Redondeo “monetario” Redondeo “matemático”
10,105 10,11 10,10
10,115 10,12 10,12
10,125 10,13 10,12
10,135 10,14 10,14

Pues bien, mi programa utilizaba una función que redondeaba “matemáticamente”. Se cambió la función para que redondease “hacia arriba” y todo arreglado en unos minutos.

¿Por qué surgió este problema? Fue un doble error, del cliente y mío. Del cliente por presuponer que yo sabía cómo se redondea “monetariamente”, y mío por no preguntarlo (pienso que la forma de redondear “matemática” es más precisa y promedia los errores de redondeo mejor que el método “monetario”: tengo la mente un tanto cuadriculada, y así trabajo).

Conclusión: los informáticos, en muchas ocasiones, pensamos diferente que nuestros usuarios.

La próxima vez que llame al informático de su oficina no le diga “no puedo imprimir”.
Dígale
al tratar de imprimir en la impresora X, me salta un cuadro de error que dice ‘La junta de la trócola se ha descogorciado. Aceptar/Cancelar’“.
Verá cómo su informático tarda menos en arreglar el problema y lo hace con una sonrisa en el rostro.

Si está encargando al programador un listado de clientes no le diga “quiero un listado de los clientes“. Mejor será “quiero un listado de clientes, ordenados por su CIF ascendentemente, con 50 líneas como máximo por pantalla y la posibilidad de reordenar el listado por apellidos, fecha de alta en el sistema o número de teléfono“.

No tema agobiar a un informático nunca con un exceso de información (relevante, eso sí). Nos gusta y lo agradecemos.

Comentarios (12)

Un canon mal pensado

Estos días se vuelve a hablar mucho del canon que se aplica a los soportes y dispositivos que pueden reproducir archivos multimedia.

Entiendo la necesidad de compensar a los autores de alguna forma por la copia privada de sus obras. Creo que la mayor parte de los consumidores está de acuerdo con esto. La copia privada es legal y está reconocida por una directiva de la Unión Europea, así como esta compensación.

Lo que no es de recibo es que esta compensación repercuta indiscriminadamente sobre los consumidores. ¿Por qué voy a pagar 12 € más por un disco duro externo que sólo utilizo para hacer copias de seguridad de mis archivos? ¿Por qué tengo que pagar un sobreprecio en los DVDs que compro para copiar mis fotos? Al final vamos a tener que hacer las copias de seguridad en unidades de cinta, que no estan “canonizadas”.

No estamos hablando de piratería, ése es otro tema. Estamos hablando de una tasa que se aplica sistemáticamente, se efectúe o no la copia privada.

Se escuchan argumentos muy pueriles a favor del canon: que si está implantado en toda Europa, que si es la única forma de compensar a los autores, etc. No valen estas justificaciones. Si algo está mal pensado, está mal pensado se haga donde se haga.

Hay que buscar otro mecanismo.
Señores políticos, entidades de gestión: piensen, que es su trabajo. Encuentren otra forma de compensar a los autores sin gravar injustamente a todos los consumidores.

Comentarios (6)

Las tripas de un ordenador

“Tengo que ampliar la RAM”, “el disco duro esta lleno”, “esta CPU es muy potente”, …

Nuestro lenguaje cotidiano está lleno de tecnicismos y referencias a dispositivos informáticos. ¿Sabemos realmente su significado y cuál es su función?

Hagamos un poco de historia.

Las primeras computadoras electrónicas se empezaron a diseñar y construir en los años 30-40 del siglo XX. Eran artilugios de un tamaño monstruoso que funcionaban a base de válvulas de vacío, condensadores, resistencias y otros componentes electrónicos de uso común.
Sin embargo, pese a su aparente primitivismo, muchas de estas primeras computadoras ya tenían un estructura similar a la que encontramos en los ordenadores actuales: una parte se ocupaba de realizar los cálculos y operaciones lógicas, otro componente estaba especializado en almacenar instrucciones y resultados de los cálculos y, finalmente, otro conjunto de dispositivos se encargaba de recibir datos de entrada y presentar o emitir los datos procesados.

Como decíamos, hoy los ordenadores tienen una estructura muy similar.
Examinemos los más importantes, simplificando bastante y siguiendo un criterio no muy académico.

1. CPU
Son las siglas de “Central Processing Unit” (Unidad Central de Proceso).
Básicamente desempeña varias funciones diferenciadas, asignadas cada una de ellas a un subsistema dentro de la misma CPU.

  • Mantener un mecanismo de sincronización o temporización para todas las operaciones que realiza. El dispositivo más habitual es un generador de pulsos periódicos, comúnmente llamado “reloj”.
  • Controlar o gestionar el funcionamiento general de todas las operaciones y procesos que se llevan a cabo.
  • Leer e interpretar las instrucciones que están almacenadas en la memoria.
  • Hacer los cálculos y operaciones lógicas necesarias.
  • Guardar resultados intermedios e instrucciones temporalmente. Estos se almacenan en unas memorias internas de la CPU llamada registros.

Coloquialmente llamamos “CPU” a la caja del ordenador (en modelos de sobremesa), pero esta denominación no es correcta: en la caja realmente se encuentran la CPU, la memoria, los discos duros, la fuente de alimentación y más componentes.
La velocidad de funcionamiento de una CPU se suele medir como la frecuencia del reloj interno (hertzios o múltiplos, del orden de GHz en las CPUs actuales)

2. Memoria principal
También llamada RAM (Random Access Memory, memoria de acceso aleatorio), en referencia a su funcionamiento.
En la memoria principal se almacenan datos e instrucciones. Para entendernos: en la memoria en un momento dado está cargado tanto el programa que estamos ejecutando (por ejemplo, el procesador de textos) como los datos que maneja el programa (el texto que estamos escribiendo).
La memoria principal suele ser volátil, esto es, si se apaga el ordenador, su contenido se pierde. Por esta razón se necesita algún dispositivo de almacenamiento permanente, para guardar los programas que necesitamos para trabajar y los datos con los que trabajamos.
Actualmente la memoria principal en ordenadores personales suele ser de cientos de Mb a algunos Gb [*]

3. Memoria auxiliar o secundaria.
Son los dispositivos en los que la información se guarda de forma más o menos permanente (discos duros, CDs, DVDs, memorias externas -USB y similares-, etc)
Son más lentos que la memoria principal y por esta razón cuando arrancamos un programa (el navegador, por ejemplo), primero se lee del disco duro y se transfiere el programa a la memoria principal. La CPU entonces accede a la memoria principal y “lee” las instrucciones que debe llevar a cabo.
La capacidad de almacenamiento en los discos duros actuales está comprendida entre decenas y centenas de Gb.

A veces el conjunto de instrucciones de un programa es demasiado grande y no cabe en la memoria. En este caso, sólo se carga parte del programa en la memoria principal. Cuando se necesitan más instrucciones, se leen del disco duro. Este último acceso es menos rápido, por lo que, si este acceso al disco duro es muy frecuente, tendremos la sensación subjetiva de que “el ordenador va lento”.

4. Dispositivos de entrada y salida
Monitores, teclados, ratones, escáneres, impresoras, … Todos son dispositivos que permiten introducir y/o recuperar información en el ordenador e interactuar con las personas que los utilizan.

Podemos generalizar y decir que las unidades funcionales de un ordenador mantienen una jerarquía, y que, cuanto más “abajo” en esta jerarquía, mayor lentitud de funcionamiento.

El componente más rápido es la CPU, seguido de la memoria principal, la memoria auxiliar y los dispositivos de entrada-salida. El “componente” más lento somos nosotras, las personas.

(*) En próximas entradas hablaremos de hertzios, megas, gigas y demás unidades.

Para saber más

Comentarios (7)

Herramientas para desarrollo Web

Este “post” me sirve de repaso y recordatorio de mis herramientas más o menos habituales de desarrollo web. Mi trabajo habitual es con PHP en el servidor y los típicos HTML, CSS y JavaScript en el navegador. También suelo utilizar Python en el servidor para tareas programadas (cron) y otros desarrollos.

Todas estas herramientas son libres (o al menos, gratuitas) y multiplataforma: de hecho trabajo indistintamente en equipos con Windows, Mac OSX y Linux.

  • IDE
    Aunque sea un tanto pesado, Eclipse es una herramienta estupenda, por lo menos para mí. Los ‘plugins’ que más utilizo son:

    • SFTP Plug-in for Eclipse.
    • PDT (PHP Development Tools).
    • PyDev para desarrollar en Python.
    • Aptana es un IDE construido sobre Eclipse para desarrollo web.
  • Editores
    Para edición más o menos rápida, un editor genérico con resaltado de sintaxis y alguna otra monería siempre viene bien.

    El editor jEdit también es una opción estupenda, a medio camino entre un editor sencillo y los IDEs más pesados. Hay multitud de plugins muy útiles ((S)FTP, HTML, PHP, …)

  • Clientes (S)FTP
    Imprescindibles para subir archivos al servidor o editar “in situ”. No me gustan los clientes FTP tradicionales en los que editas en local y luego subes, para arreglos rápidos no es cómodo bajar, editar y subir.

    • Para Windows, WinSCP. Puede funcionar como cliente de (S)FTP tradicional o se puede configurar para editar en el mismo servidor.
    • Para Mac, la herramienta MacFusion permite montar como unidades locales servidores FTP o SFTP.
    • En Linux se puede utilizar el mismo administrador de archivos (Konqueror o Nautilus) para acceder a servidors FTP o SFTP.
  • Navegadores
    Aparte de tener instalados todos los navegadores posibles, conviene tener un navegador que permita depurar, inspeccionar código fácilmente, …
    El navegador Firefox tiene muchas extensiones útiles para desarrolladores web. Mis preferidas son:

    • Web Developer. Entre sus muchas funcionalidades destacan la posibilidad de controlar las cachés del navegador, las “cookies”, validar código “on-line”, regla para medir distancias en pantalla, …
    • Firebug. Permite inspeccionar el árbol DOM del documento activo, seleccionar elementos, editar estilos, depurar JavaScript, analizar el tiempo de carga de una página, … Imprescindible.
    • Professor X. Proporciona información sobre las cabeceras HTML.
  • Servidor web y BBDD
    Muchas veces es conveniente hacer los desarrollos en un servidor local antes de subirlo a los servidores “corporativos”. Aunque en algunos S.O. (Linux y/o Mac) viene ya habilitado el servidor web, no siempre nos sirve (por problemas con versiones de Apache/PHP, MySQL o lo que sea).
    Existen algunas distribuciones que empaquetan un servidor web (Apache), PHP y un servidor de BBDD (MySQL, generalmente). El proyecto Xampp proporciona distribuciones para distintos S.O. (Windows, Linux o Mac OSX) muy cómodas y sencillas de usar.
Comentarios (3)

Triple arranque en iMac

ADVERTENCIA:
Puedes perder todos tus datos y cargarte tu precioso y flamante Mac si haces todo lo que sigue a continuación. Tú mism@. Estás advertid@.

Ingredientes:

  • Un Mac
  • BootCamp
  • rEFIT
  • RsyncX
  • Un disco duro externo
  • Un CD de instalación de Windows
  • Un CD de instalación de Linux (Ubuntu en mi caso)
  • Mucha paciencia …

Pantalla inicial

Vamos a suponer que partimos de la situación más habitual: un Mac con el sistema operativo instalado y el disco duro interno con una sóla partición [1].

Lo primero es hacer una copia de seguridad de todo el disco en un disco duro externo. Con la utilidad RsyncX se puede hacer esta copia y marcarla como “arrancable” para iniciar el Mac desde el dispositivo externo. En esta página se explica en detalle.

Una vez terminada la copia arrancable, apagamos el Mac y reiniciamos desde el disco externo (mantener pulsada la tecla Alt (?) y seleccionar el dispositivo externo)

El sistema arrancará normalmente (un poco más lento) y podremos acceder al disco duro interno y reformatearlo [2] con la herramienta “Utilidad de Discos”. Hay que dejarlo con tres particiones: una para Mac OSX, otra para Windows y otra para Linux (no necesariamente en ese orden). Si intentamos hacer más particiones, tendremos luego problemas, al tratar de “convertir” el esquema de particiones del formato “Mac – EFI” al formato “PC – Bios”. Eso quiere decir que nada de tener el Linux con /home en una partición, /var en otra y / en otra ;-)
Por supuesto, vamos sin swap [3]

La partición para Mac la formatearemos con el sistema “Mac OS Plus (con registro)”, la partición para Windows como “Sistema de archivos MS-DOS” y la partición Linux en cualquier formato, ya luego la pasaremos al sistema de ficheros Linux.

Una vez preparado el disco interno, restauramos (utilizando la herramienta RsyncX) la partición Mac OS desde la copia de seguridad en el disco externo (desde la que ahora mismo estamos ejecutando el sistema operativo).

Reiniciamos desde el disco duro interno, que ahora tendrá tres particiones (cuatro si contamos la partición oculta).

Instalamos BootCamp y rEFIF. BootCamp lo utilizaremos para tener el disco de controladores para Windows, pero no tocaremos el disco duro: ya lo tenemos preparado.

Reiniciamos con el disco de Windoze dentro. Arrancamos desde el CD e instalamos Windows.

Reiniciamos con el disco de Linux dentro. Arrancamos desde el CD e instalamos Linux.

rEFIT debería mostrarnos las tres entradas posibles, si no es así, deberemos entrar en el icono pequeñito “Partition Tool” y cuando nos pregunte si queremos sincronizar la tabla GPT con la tabla MBR decirle que “sí”.

[1] Mentira cochina: siempre hay una pequeña partición y oculta al principio del disco. Ocupa unos 200 Mb.
[2] PROCEDIMIENTO DESTRUCTIVO: NOS CARGAREMOS EL DISCO DURO INTERNO.
[3] Podemos hacer que Linux use un fichero como swap en vez de una partición.

Comentarios (2)

<- artículos más recientes      « Página Anterior