Ahorre $318 en una portátil: pídala con Ubuntu

Parece que hay un motivo más para recomendar Ubuntu Linux. Si comprás una portátil con Ubuntu te ahorrás $318 (USD 100) con respecto a la misma portátil con Windows.

En esta imagen pueden ver la configuración y el precio con Ubuntu:

Configuración con Ubuntu

Y en esta se ve la misma configuración (con una mínima diferencia en la velocidad del procesador) y el precio con Windows Vista Home Basic.

Configuración con Windows

Más allá de unos pocos megahertz de diferencia entre un procesador y el otro (que no explican la diferencia de precio), la diferencia en el software que viene en una y otra es abismal, aunque no en el sentido que todos se imaginan. La opción de Ubuntu es mucho más completa.

Windows Vista home Basic no incluye los efectos 3D de escritorio, cosa que Ubuntu sí trae. La portátil con Windows trae como suite de oficina el Microsoft Works, pero Ubuntu trae la suite de OpenOffice.org que es mucho más completa y está mano a mano con el producto estrella de Microsoft en ese rubro (Microsoft Office).

La portátil con Windows trae un antivirus por 30 días. La opción de Ubuntu no necesita tal cosa porque la amenaza de virus en la plataforma Linux es mínima.

Además Ubuntu trae más juegos, el navegador Firefox, cliente de mensajería instantánea (todos los protocolos) y un cliente de correo y organizador personal que es muchísimo más completo que el Outlook Express. Además hablar de Ubuntu es hablar de un escritorio muy integrado, con cientos de aplicaciones ya instaladas y repositorios en línea desde los que se pueden descargar e instalar miles de aplicaciones y herramientas de todo tipo para infinidad de tareas.

Además Ubuntu se actualiza desde Internet cada 6 meses. Si ya se es poseedor de una licencia de Windows o si se quiere instalar Windows de cualquier manera, la opción es interesante: se ahorran $318 y se obtiene un hardware compatible con Windows y Linux de manera de poder tener un sistema con ambos sistemas instalados.

Para configurarte tu portátil con Ubuntu o Windows podés ir a la página del fabricante que las vende en Argentina y toda latinoamérica.

Dell ahora vende PCs con Ubuntu Linux

Dell ya vende computadoras con Ubuntu para usuarios domésticos en Argentina y varios países de Latinoamérica. Lo mejor de poder elegir es que el mismo equipo con Ubuntu es más barato que con Vista.

Con Ubuntu

PROCESADOR    Procesador Intel Pentium  dual-core E2180 (1MB L2 Cache,2.00GHz,800 FSB)
SISTEMA OPERATIVO    Ubuntu Linux, versión 7.1 con DVD Playback
MEMORIA    Memoria de 1GB Doble Canal DDR2 SDRAM a 667MHz- 2DIMMs
MONITOR    Monitor de Panel Plano con Pantalla Ancha de 17″ SE178WFP
TARJETA DE VIDEO    Intel Graphics Media Accelerator 3100 Integrada
DISCO DURO    Disco Duro de 80GB Serial ATA (7200RPM) c/DataBurst Cache™
DISPOSITIVO ÓPTICO    Unidad Quemadora de DVD+/-RW de 16X
TARJETA DE SONIDO    Audio Integrado de 7.1 Canales
TECLADO    Teclado Dell USB
MOUSE    Mouse Dell de Nivel Inicial
MODEM    Modem Data Fax PCI de 56K
UNIDAD FLOPPY Y LECTOR DE MEDIOS    Sin Unidad de Floppy
INTERFASE DE RED    Tarjeta Ethernet 10/100 Integrada
BOCINAS    Parlantes Dell A225 2.0
SERVICIO DE SOPORTE    1 Año de Garantía Limitada + 1 Año de Servicio en Sitio al Siguiente Día Hábil

Precio: $2.698 (Moneda local, incluye fletes, importación e IVA.)

Con Windows Vista

PROCESADOR    Intel Pentium dual-core processor E2160 (1MB L2,1.80GHz,800 FSB)
SISTEMA OPERATIVO    Windows Vista Home Basic Original – Español
MEMORIA    1GB Dual Channel DDR2 SDRAM at 667MHz- 2DIMMs
MONITOR    Monitor Dell 17″ Widescreen Flat Panel SE178WF
TARJETA DE VIDEO    Intel Graphics Media Accelerator 3100 Integrada
DISCO DURO    Disco Duro SATA de 80GB (7200RPM) w/DataBurst Cache™
DISPOSITIVO ÓPTICO    16X DVD+/-RW Drive
TARJETA DE SONIDO    Integrated 7.1 Channel Audio
TECLADO    Dell USB Keyboard, SP
MOUSE    Dell Entry Mouse
MODEM Y TARJETA INALÁMBRICA    56K PCI Data Fax Modem
UNIDAD FLOPY Y LECTOR DE MEDIOS    No Floppy Drive Included
BOCINAS    Dell A225 2.0 Speakers
SOFTWARE DE PRODUCTIVIDAD    Microsoft Works 9.0
SOFTWARE DE SEGURIDAD    McAfee Security Center, Spanish (only 30 Day Protection)
SOFTWARE DE ADOBE    Adobe Acrobat Reader 8.1
SERVICIO DE SOPORTE    1 Year Limited Warranty plus 1 Year NBD On-Site Service
Digitial Music    No Digital Music Software Requested
Labels    Windows Vista Basic
Servicios Extendidos    International Processing
INTERFASE DE RED    Integrated 10/100 Ethernet

Precio $2.744 (Moneda local, incluye fletes, importación e IVA.)

Notemos que la máquina con Windows además de ser 46 pesos más cara tiene un procesador de 1,8 GHz contra uno de 2 GHz de la que viene con Ubuntu. Además la máquina con Windows Vista trae menos software que la que viene con Ubuntu que trae cientos de programas ya instalados y miles más en los repositorios listos para instalar. Entre las cosas que Ubuntu trae y no Windows podemos está un procesador de texto, planilla de cálculo, herramientas de desarrollo, muchos más juegos, Firefox, etc. Además la versión de Windows Vista no tiene los efectos 3D del escritorio, pero Ubuntu sí los trae.

Equipo con Ubuntu (click para agrandar)

Configuración con UbuntuPrecio con Ubuntu

Equipo con Windows Vista (click para agrandar)

Configuración con Windows VistaPrecio con Vista

Costo de servicios de datos en telefonía móvil

En el gráfico se aprecia el costo por megabyte en pesos (3,20 pesos equivalen a 1 dólar) de los diferentes servicios de transferencia de datos mediante teléfonos móviles.

Los valores de los planes de alta velocidad de 256MB, 512MB y 1GB se toman asumiendo que el usuario llega al límite de transferencia mensual. Por ejemplo si accede a plan de 256MB y sólo usa 100 MB el costo por megabyte será mayor. Pero a su vez si se pasa de esos 256MB pagará un excedente de entre $0,31 y $0,61 por MB. Esto implica que se consigna el menor costo posible con cada plan (ya que el MB excedente es más caro que el incluído en el plan). El abono ilimitado no tiene costo por MB excedente, pero al pasar los 3.5BG de transferencia en el mes la velocidad pasa a ser como la de GPRS (4 KB/s).

Se observa una enorme desproporción entre GPRS y los servicios más veloces: es entre 50 y 300 veces más caro. Evidentemente está faltando una oferta de Internet a velocidad GPRS/EDGE que contemple usos ocasionales o que no requieren alta velocidad sin tener que pagar tan caro. Por ejemplo, Internet GPRS 10 megas a $10 y el MB excedente al precio actual ($0,01 por KB).

Los mensajes SMS evidentemente son un negocio fabuloso. Son más de 100 veces más caros que el GPRS y es mucho más barato enviarse e-mails convencionales por GPRS entre teléfonos con esa capacidad.

Un email que contenga 160 caracteres puede ocupar exagerando mucho 1 KB y sumándole la transferencia necesaria para verificar la casilla (envío de contraseña y demás acciones del protocolo POP3) llegaríamos a 2 KB totalizando entre envío y recepción 4 KB. El costo para cada uno de los usuarios sería de 2 centavos contra los 17 centavos que actualmente cuesta enviar un SMS. Un ahorro del 76%.

Otra forma de verlo es pensar cuántos SMS hace falta enviar en un mes para llegar al abono de datos más barato (3.5G de 256MB a $49): 289. Es decir que enviando 10 SMS por día estamos superando el monto que nos permitiría transferir 256 MB de datos. Mucha gente seguramente envía 10 SMS por día, sobre todo cuando escribe mensajes largos que se parten en varios.

La función scanf y la lectura de la entrada de teclado

El objetivo es explicar por qué nunca hay que usar la función scanf para leer la entrada del teclado.

Cuando se lee la entrada generada por el teclado se deben tener en cuenta algunos aspectos:

  1. lo leído es generado por un ser humano que como tal se equivoca;
  2. el programa no accede al teclado mismo sino que es el sistema operativo el que le pasa los datos ingresados de alguna manera.

El primer aspecto ya alcanza para descartar scanf como herramienta válida para leer la entrada del teclado. La función está hecha para leer con un formato determinado y es imposible estar seguros de que un humano va a respetar ese formato sin ningún error. A pesar de esto, miles y miles de ejemplos de código que lee de teclado en C usan scanf aportando confusión y haciendo caer en el error a quienes recién se inician.

El otro aspecto es más técnico y requiere más explicación. Cuando se dice que programa lee del teclado en realidad lo que está haciendo es leer de un área de memoria llamada “buffer del teclado”. Por la naturaleza de los teclados su buffer es un “buffer de línea”, eso significa que los datos que vienen del teclado se incorporan de a líneas enteras y no carácter por carácter. Es por eso que cuando leemos de ahí, por más que ingresemos muchos caracteres, hasta que no ingresamos el fin de línea (enter) el programa no lee nada y se queda trabado esperando que haya algo en el buffer.

La forma en la que se llena el buffer del teclado nos permite estar seguros de 2 cosas:

  1. si el buffer no está vacío, sí o sí hay al menos un fin de línea;
  2. el buffer siempre tiene un carácter de fin de línea al final.

El primer problema que presenta scanf es que no siempre lee el carácter de fin de línea. Eso depende del formato que se usa. Cuando se usan “%d” o “%s” el fin de línea queda en el buffer y será leído en la próxima invocación a una función que lea del teclado. Esto genera incertidumbre en cuanto a qué hay en el buffer al momento de ir a leer. La primera vez está vacío, pero en las veces subsiguientes puede ser que tenga algunos caracteres que quedaron sin leer.

El segundo problema es que scanf no lee hasta el fin de línea (aunque lo deje sin leerlo) sino que lee hasta que se acaba el formato especificado. Si se le pide que lea un entero (“%d”) y se ingresan 2 enteros separados por un espacio o por una letra lee el primero y deja el resto en el buffer. Nuevamente esto genera incertidumbre en las lecturas subsiguientes no sabemos si quedaron caracteres ingresados anteriormente.

El tercer problema es más grave porque puede ocasionar que se cuelgue el programa. Scanf no controla que la cantidad de caracteres leídos sea menor o igual al tamaño del arreglo o string que se le pasa por parámetro. Si se esperan leer 10 caracteres es típico leerlos en un arreglo de 11 (uno para el fin del string), pero si el usuario ingresa 11 caracteres, scanf va a escribir más allá del fin de arreglo con el consiguiente error de memoria. Si usamos un formato que especifique la longitud máxima entonces el problema no será pasarse del tamaño del arreglo, sino que nuevamente dejaremos sin leer caracteres en el buffer.

El último problema es que scanf no permite detectar la mayoría de los errores de ingreso de datos del usuario. Cuando mandamos a leer un entero (“%d”) y el usuario ingresa letras, scanf nos devuelve un entero fruto de una conversión de las letras a número. ¿Cómo determinar si el usuario ingresó letras o realmente ese número? Imposible.

Para leer en forma correcta del teclado, es necesario asegurarse de 3 cosas.

  1. Dejar el buffer vacío luego de la lectura (leer siempre hasta el fin de línea). Es la única manera de evitar que las lecturas posteriores lean caracteres ingresados anteriormente y que no esperan.
  2. Leer carácter por carácter almacenándolos en un arreglo (o donde se quiera) teniendo en cuenta el tamaño disponible. Los caracteres que no entren igual deben ser leídos (para cumplir el punto anterior). No hay forma de predecir cuantos caracteres se van a leer.
  3. Ver de qué manera se puede informar que lo leído no es lo esperado de manera de que no se confundan un valor válido con uno erróneo. Por ejemplo, si se están leyendo números y se ingresan letras, devolver -1 puede interpretarse como un valor que señala el error o como un valor leído correctamente. Hay que elegir un valor que no pueda ser confundido con uno válido.

A modo de ejemplo del punto 3, la función getchar a pesar de que que lee caracteres el tipo de retorno no es char sino int. De esa manera cuando devuelve un valor -1 no puede confundirse con un carácter ya que estos son todos positivos.

Alguno se preguntará para qué existe scanf que es una función que lee de teclado, si no hay que usarla para ello. La respuesta radica en un detalle: scanf y algunas otras funciones como getchar no leen de teclado, sino que leen de la entrada estándar. Si no se indica lo contrario, la entrada estándar proviene del teclado, pero es muy simple hacer que provenga de un archivo cualquiera. Hay muchos programas en C que jamás se invocan sin establecer que la entrada estándar provenga de algún archivo. En esos casos, scanf puede ser útil, sobre todo si el archivo fue generado con printf.

Actualizado: Hace un tiempo publiqué cómo leer un entero de teclado. Ahora le corregí un bug y le mejoré el uso de memoria.

Marcas de Cigarrillos Raras

Las tabacaleras del mundo son unas pocas. La mayoría son transnacionales con subsidiarias en muchos países, pero las marcas con las que se venden cigarrillos son miles y miles. Sirven para que el fumador reciba algo más que humo en sus pulmones: son símbolo de status, dan personalidad, estilo, distinción o simplemente envían un mensaje hacia los demás o hacia el propio fumador.

He aquí la marca CHE de Austria, también presente en Alemania y en versión chilena llamada “El Che“. La versión belga es más linda que la austríaca.

El Alemania tienen la marca Evita que también se vende en Polonia.

En Perú se vende una marca Inca y otra La Llama.

En Rusia después de la caída del comunismo parece que todo lo estadounidense vende.

Las imágenes son de un coleccionista que tiene una colección enorme de paquetes de cigarrillos (llenos).