Kimball Art Center

Kimball Art Center es un interesante diseño arquitectónico por parte de B.I.G. Architects, obra que estará ubicada en los Estados Unidos, exactamente en la ciudad de Park City del estado de Utah. Este proyecto comprenderá hasta 2.800 m2 de construcción.

Imágenes tras el salto:


(Clic en las imágenes para ampliarlas)







Nota: Este tipo de artículos se muestran en el blog para los amantes del diseño y la arquitectura, y como no, para que todos nos alimentemos de ideas. El buen diseño y la innovación también son bienvenidos en la informática.

Vía |
Fubiz
Fuente | B.I.G. Architects

Jugando Aliens en un Commodore 64



Quienes tuvieron la oportunidad de estar frente a un ordenador de 8 bits como un Commodore 64, tan retro ya en esta época, les hará mucha gracia ver el videojuego de Aliens corriendo en él. Y si ya lo habían visto, no importa, es bueno revivir viejos momentos, ¿o no les parece?



VíaSuper Punch

Lo más valorado en el Centro de software de Ubuntu


Diferencias en las manos informáticas


Imagen muy graciosa vista en Geeks are Sexy con titulo original "Hands on computing", que nos muestra los diferentes perfiles de las manos sobre el teclado, aunque creo que faltaron algunos ejemplos... ¿qué opinan?

Ubuntu visto en las pantallas de un McDonald's de Australia



Más propaganda como la vista en la Valla publicitaria de Ubuntu, claro que esta vez en un modo algo inconsciente pero que no quita la alegría de saber que nuestro preciado sistema operativo es utilizado cada día más, tanto en uso doméstico como empresarial.

¡A seguir difundiendo Ubuntu y Linux en general!  


Vía | Ubuntu Vibes

Los usos menos comunes de Portal


Vía | How-to Geek

Juego de Tronos disponible en pre-orden y en Blu-Ray


Oportunidad grandiosa para hacer un pre-pedido de Juego de Tronos (1ra temporada) desde Amazon por US$34.99 o vía descarga desde iTunes por US$39, no sólo por su oferta en precio, también dispone de una calidad de vídeo 1080p HD, DTS-HD Master Audio 5.1, al igual que contiene 7 comentarios de audio, 1 comentario de vídeo, media hora de toma de cortometrajes... ¿quieres más?, ¡entonces corre a adquirirlo antes de que se agote!

Vía | Super Punch

La mejor arma para amenazar en batalla, Imperial Walker Volkswagen [Imagen]

Vía | Neatorama

Últimas distros liberadas

Esta última semana ha sido bastante activa en cuanto a liberación de distribuciones Linux.


Tiny Core Linux 4.3

Distribución Linux muy ligera (apenas 12MB), que contiene un entorno mínimo para trabajar, pero que es completamente extensible. Esta distribución es ideal para equipos antiguos o con muy pocos recursos. Incorpora un escritorio gráfico ligero, suficiente para un sistema de administración o servidor, pero podemos instalar otros escritorios más potentes. Se ejecuta completamente en RAM, por lo que la rapidez y su gestión están aseguradas, aunque puede ser montada desde un dispositivo de almacenamiento permanente, o ser instalada también en un dispositivo de almacenamiento persistente.


Enlaces:
Página | Página Oficial de Tiny Core Linux
Anuncio | Anuncio de Tiny Core Linux 4.3
Descarga | Página de Descargas


PC Linux OS 2012 Phoenix Edition

Popular distribución en EEUU con un buen grado de usabilidad y sencillez para el usuario. Esta versión incorpora escritorio ligero XFCE 4.8.3, con buen promedio user-friendly. El Kernel de Linux es 2.6.38.8, que, sin ser de los últimos, es muy estable y funciona muy bien en equipos algo desfasados y con pocos recursos. El servidor Xorg ha sido actualizado a la versión 1.10.4, mejorando el rendimiento gráfico y contamplando tarjetas 3D, como Nvidia, Intel o ATI. El gestor de paquetes soporta RPM, apt y Synaptic.


Enlaces:
Página | Página Oficial de PC Linux OS
Anuncio | Anuncio de PC Linux OS 2012 Phoenix Edition
Descarga | Página de Descargas


Parted Magic 2012_2_19

Esta distribución es muy socorrida y utilizada para reparar, crear y gestionar particiones de discos duros, además de otras muchas utilidades. Incluye las herramientas Parted y GParted para la gestión de particiones de todo tipo (btrfs, ext2, ext3, ext4, fat16, fat32, etc.). Posee utilidades forenses y de bajo nivel para hardware, tales como Partimage, TestDisk, Truecrypt, Clonezilla, G4L, SuperGrubDisk, ddrescue, etc




Enlaces:
Página | Página Oficial de Parted Magic
Descarga | Página de Descargas


System Rescue CD 2.5.0

Esta distribución es otra joya que conviene tener cerca, pues, además de la gestión de particiones que realiza Parted Magic, posee utilidades de rescate y reparación de sistemas después de alguna catástrofe, además de herramientas de administración. Está basada en Gentoo, y arranca en LiveCD o LiveUSB. Posee el Kernel de Linux 3.0.21, y posee herramientas tan útiles como GNU Parted, GParted, GRUB,  PartImage, TestDisc, PhotoRec, FSArchiver, FSTools, Midnight Commander, editores, herramientas de red, Samba, NFS, etc.



Enlaces:
Página | Página Oficial de System Rescue CD
Lista de utilidades | Herramientas de System Rescue CD
Descarga | Página de Descargas
Novedades | Novedades en la versión 2.5.0


Red Hat Enterprise Linux 5.8

No hace falta una presentación para esta distribución veterana y que, sin duda alguna, es la distribución número 1 a nivel empresarial. La empresa del "sombrero rojo" ha sabido demostrar año tras año, con dedicación y esfuerzo, mejorar esta distribución que incorporar lo mejor en seguridad, en rendimiento, en virtualización, mejora de rendimiento hardware (dispositivos de almacenamiento, red, tarjetas gráficas, etc), configuración y gestión de la administración de sistemas, escalabilidad, alta disponibilidad, etc.

Enlaces:
Página | Página Oficial de RedHat Enterprise Linux
Anuncio | Anuncio de Red Hat Enterprise Linux 5.8
Notas técnicas | Notas Técnicas de RHEL 5.8
Notas de la versión | Notas de la Relaase RHEL 5.8


Ubuntu y KUbuntu 10.04.4 (Lucid Lynx) LTS

Cuarta actualización de esta distribución de Ubuntu para escritorio y para servidores, tanto para Gnome como para KDE, con mejoras y correcciones de todo tipo (administración, seguridad, rendimiento, etc.), con CDs y DVD para arquitecturas i386 y amd64.


Enlaces:
Página | Página Oficial de Ubuntu
Anuncio | Anuncio de Ubuntu / KUbuntu 10.04.4 LTS
Descarga Escritorio | Página de descargas Escritorio
Descarga Servidor | Página de descargas Servidor


Distribuciones próximas a salir

En esta semana también han aparecido "development releases", es decir, distribuciones de desarrollo o de testing, previas a la versión definitiva. Entre estas distribuciones, caben destacar la de Mageia (el fork de Mandriva, liderada por los propios creadores y la comunidad), la de FreeBSD y la de OpenSuse.

Mageia 2 Beta 1 es anunciada


Continuando con el calendario de desarrollo de Mageia 2, se ha anunciado su Beta 1, aunque con algunos días de retraso, programada anteriormente para salir el pasado 20 de enero.

Como siempre en este tipo de lanzamientos, tenemos sus características principales:

  • Última versión estable del kernel 3.2.6
  • Dracut como herramienta para la creación de imágenes initrds
  • KDE 4.8.0
  • GNOME 3.3.x 
  • Paquetes de LXDE
  • PCManFM 0.0.10
  • Pencil-Planner 0.4.4b
  • Paquete de software de animación tradicional
  • Amarok 2.5
  • Reproductor de música Cantata 0.3.0

Descarga
Mageia-2-beta1-i586-DVD.iso (3,418MB, MD5, torrent)
Mageia-2-beta1-x86_64-DVD.iso (3,465MB, MD5, torrent)



Vía |
DistroWatch

IPv6 comenzará a funcionar en junio


A partir del 6 de junio del presente año será lanzado oficialmente al mundo el funcionamiento de IPv6, que llega para ampliar la conectividad de internet con la sustitución del limitado IPv4, si todo sale bien. Algunas compañías que realizaron pruebas con el cambio de protocolo no presentaron inconveniente alguno. Recordemos que en países como India, China, y otros países asiáticos que son densamente poblados ya se ha presentado el inconveniente de las agotadas direcciones IPv4.

Empresas como Facebook, AT&T, RedIRIS, o sitios web como The Pirate Bay y Menéame, harán el cambio del protocolo en el día previsto del lanzamiento. 


Vía | Gizmodo

Angry Birds Space



"Es un pequeño vuelo para un ave, un gran salto para el reino de las aves"

Angry Birds Space está programado para ser ofrecido al público el próximo 22 de marzo por parte de la compañía Rovio, quien traerá con esta nueva versión de su adictivo juego, algunas características interesantes relacionadas con la gravedad, y obviamente, nuevos niveles de juego para seguir arrojando pájaros por doquier. Así que a esperar y bienvenido sea.

TGIF: El observatorio Keck en stop motion


Interesante stop motion del observatorio Keck situado en la cima del volcán inactivo Mauna Kea de Hawái, donde podemos echar un vistazo a todo el trabajo realizado con sus dos telescopios (cada uno con 10 metros de diámetro) para conseguir tan grandiosas imágenes del espacio. Para la captura de las imágenes fueron utilizadas una Canon G11, Canon 20Da, Canon 40D, Canon 60 D y una Canon 5D MKII.

Tener la página de inicio de Ubuntu con Yahoo! en tu navegador , ¡todavía es posible!



Como lo explican en OMG! Ubuntu!, tener la página de búsqueda de Ubuntu con Yahoo! como inicio todavía es posible, lo único que hay que hacer es ingresar a nuestro navegador favorito la dirección start.ubuntu.com/10.04/Yahoo/ y luego guardarla como predeterminada. Más fácil, imposible.

Objetos en Ruby

El lenguaje de programación Ruby contempla el paradigma de la orientación a objetos, la cual encapsula o abstrae la programación en módulos llamados objetos, simulando los objetos del mundo real, los cuales tienen unas características (propiedades) y realizan acciones (métodos).

Todo parte de una clase, que define el molde de cualquier objeto de esa especie. Una vez definida la clase, se crean objetos o instancias de dicha clase, con entidad propia. Por ejemplo, una clase Vehiculo define las propiedades y métodos comunes a todo tipo de vehículo. Un objeto coche es una instancia de la clase Vehiculo.

El siguiente ejemplo ilustra estos conceptos. Crearemos el archivo Vehiculo.rb con el siguiente código:


Entre las línea 1 y 28 se define la clase Vehiculo. El método initialize es un método constructor, el cual se ejecuta automáticamente cuando se crea el objeto. En este caso asigna las propiedades que se pasan por parámetro.

Las variables propias de la clase se diferencian de las pasadas por parámetro, en que les antecede el símbolo @ (ampersand)

Se han definido las acciones arrancar y apagar, las cuales cambian el valor de la propiedad encendido, y muestran un mensaje con el resultado de la acción.

El método to_s es similar al toString() de Java, el cual se utiliza para extraer los valores de las propiedades clave del objeto, retornando un String con dichos valores.

Las líneas 31 y 40 son clave, pues crean los objetos (variables) coche y moto a través del método new, pasando los valores correspondientes al constructor (número de ruedas y color). El acceso a los métodos de un objeto se realiza mediante el nombre de la variable (u objeto), seguido de un punto y del nombre del método.

Las líneas 37 y 49 asignan el valor nil a los objetos. Con esto se asigna un valor nulo y pasan al colector de basura, destruyendo el objeto y liberando memoria.

La línea 47 visualiza todos los métodos del objeto coche. Además de initialize, arrancar, apagar y to_s estarán definidos, por defecto, otros métodos comunes a cualquier objeto que se cree en Ruby. Si la clase definida hubiese heredado o implementara alguna interfaz, los métodos de la clase padre o de la interfaz, también se heredarían.

Existe un método especial llamado object_id, el cual hereda cualquier objeto, y que retorna el código o identificador único del objeto, como instancia única. Por ejemplo, si se crearan los objetos coche1coche2 coche3, al acceder a su object_id, éste será distinto. Una instancia es una entidad o existencia única, como lo puede ser físicamente un coche o una persona.

Al igual que en otros lenguajes de programación orientados a objetos, es posible definir el acceso a sus miembros (métodos y propiedades). Por defecto, son públicos, es decir, que se pueden acceder desde cualquier lugar.

Los miembros protegidos (protected) pueden ser accedidos desde clases del mismo paquete.

Los miembros privados (private) sólo pueden ser accedidos desde métodos definidos dentro de la propia clase.

La definición del acceso sería la siguiente:

class Clase


   def metodo
      # Por defecto es público
   end


   # A partir de aqui el acceso es protegido
   protected


   def metodo1
      # Acceso protegido
   end


   # A partir de aqui el acceso es privado
   private


   def metodo2
      # Acceso privado
   end
end

OS X Mountain Lion es anunciado por Apple


Desde Apple se ha anunciado la última actualización de su sistema OS X con nombre en clave Mountain Lion, exactamente la versión 10.8, que incorpora muchas características nuevas y que nos sorprende a la vez por su rápido movimiento tras el lanzamiento de OS X Lion hace sólo 7 meses atrás.


En el día de hoy se podrá descargar una beta gratuita para desarrolladores y para los demás usuarios entrará a disposición en este próximo verano.


Vía |
TechCrunch

Mockup de la pantalla de bloqueo en Gnome






Hermoso mockup del que podría ser el próximo screen lock para el entorno de escritorio Gnome. Los diseños son obra de Jakub Steiner, empleado de Red Hat y colaborador del proyecto Gnome, basándose en los conceptos de smartphones y tablets con sistema operativo WebOS, hasta del mismo Windows 8 con su interfaz Metro.



Vía | Muy Linux
Fuente | GNOME Live!

Welcome to Earth


Welcome to Earth, impresionante timelapse que
reúne las escenas de 179 vídeos en uno solo, en uno universal.

La lista completa de todos los vídeos utilizados en este 
timelapse se puede visualizar desde el perfil público de Luc Bergeron en Google+.



La carcasa de la manzana mordida para un producto de la manzana mordida... [WTF!]


Así como lo ven, una carcasa de estilo único con la representación de una manzana mordida para iPhone, roja o verde,  y con un precio de US$17.50. El mejor gadget sin duda y de todos los tiempos... para algunos. 

¿Por qué no se le ocurrió a los de Cupertino antes?

Vía | 7Gadgets

Ya está aquí LibreOffice 3.5

Ya llegó, ya está aquí... LibreOffice, la mejor suite de ofimática libre que jamás hecha. Así, al menos, lo pregonan en su anuncio ("The best free Office suite ever"). Durante 16 meses, una media de 80 desarrolladores al mes, han creado una suite que hoy, más que nunca, es la alternativa libre a Microsoft Office.
Durante los últimos 16 meses se han reparado muchos bugs y problemas heredados, rehaciendo gran parte de código para conseguir una versión más rápida, estable y segura.

Algunas de sus características principales son:
- Writer (procesador de textos):
   - Nuevo corrector ortográfico en inglés y otros idiomas
   - Características tipográficas mejoradas, para dar un aspecto profesional a los documentos
   - Ventana interactiva que cuenta palabras en tiempo real
   - Nueva interfaz de usuario para las cabeceras, pies de página y salto de página
- Impress / Draw (presentaciones / diseño de dibujos):
   - Importador mejorado de formas personalizadas y Smart Art desde PPT/PPTX
   - Característica para embeber paletas de color/multimedia en documentos ODF
   - Un nuevo intercambiador de vista para la consola del presentador
   - Nuevos finales de línea para diagramas mejorados
   - Filtro para importar desde Microsoft Visio
- Calc (hoja de cálculo):
   - Soporte de hasta 10.000 celdas
   - Nueva área de entrada multi-línea
   - Nuevas funciones Calc conforme a las especificaciones ODF OpenFormula
   - Mejores rendimientos cuando importa ficheros de otras suites ofimáticas
   - Múltiples selecciones en autofiltro
   - Número ilimitado de reglas para formateo de celdas
- Base (base de datos):
   - Nuevo driver integrado para PostgreSQL

Enlaces de interés:
Página | Página oficial de LibreOffice
Anuncio | Anuncio de Document Foundation
Descarga | Página de descargas de LibreOffice
Característica | Características de LibreOffice

Gwibber podría incluir soporte para Google+ en Ubuntu 12.04


Hemos visto como en el cliente de microblogging Gwibber se han ido incorporando algunas características interesantes tanto en su interfaz gráfica, funciones y código, que posiblemente para el lanzamiento de Ubuntu 12.04 veamos un nuevo plugin con integración a la red social de Google+.

El proyecto ha sido creado por Ken Vandine, quien hace parte del equipo de Ubuntu. 
Pueden obtener más información desde Launchpad y colaborar si lo desean.

Vía |
I love Ubuntu

Toxic, videojuego diseñado por una niña de 11 años


Hace un buen tiempo que habíamos publicado en el blog la noticia que titulaba "Jacob Barnett de 12 años de edad, podría ser nuestro próximo Einstein", y ahora, enterados mediante la misma fuente, el sitio web de Dvice, tenemos a Hannah J. Wyman como otra niña con mucho talento. Hannah es una niña de 11 años que diseñó el videojuego Toxic y fue ganadora de la Koda Cup patrocinada por Microsoft.

El juego en acción lo pueden observar tras el salto:


Presentando Google Chrome Beta para Android


"La velocidad y la simplicidad de Chrome, ahora en tu teléfono Android y Tablet PC.


Navegación rápida en el teléfono móvil o tablet con Android, y lleva tu experiencia de Chrome personalizado contigo dondequiera que vayas. Chrome para Android está disponible, inicialmente en versión beta, en Android 4.0 Ice Cream Sandwich."



Para instalar Chrome en sus dispositivos con sistema operativo Android, deben comprobar primero en este enlace la disponibilidad de la aplicación en tu país.

Opera 11.61, un navegador web de pura raza

A diario, miles de millones de usuarios de todo el mundo navegan por internet a través de una aplicación llamada navegador web. Los primeros puestos han estado disputados durante mucho tiempo entre Google Chrome, Internet Explorer, Mozilla Firefox y Apple Safari. Decantarse por un navegador u otro siempre ha sido un criterio de plataforma (Internet Explorer sólo funciona en Windows), de usabilidad o de gusto. La mayor parte de funcionalidades están cubiertas, con menor o mayor acierto y calidad.

Sin embargo, en la foto no se suele aparecer Opera, un navegador que merece un puesto de honor y de importancia, pues desde hace años, ha sido el mayor innovador de funcionalidades para un navegador (que después han sido imitadas por sus homólogos), y posee una calidad intachable.

La última versión de Opera nos brinda muchas características:
- Nuevo motor de renderizado, proporcionando una experiencia de internet más rápida y estable. Compatibilidad con sitios Web. Carga de páginas más rápida. Mayor estabilidad en la navegación.
- Nuevo diseño de en el cliente correo electrónico integrado. Mejoras de diseño. Agrupamiento de mensajes. Navegación más sencilla.
- Personalización del navegador. Agrega o elimina botones de la barra de herramientas. 
- Gestos visuales del ratón
- Multitud de extensiones
- Aumento de velocidad en conexiones wifi muy concurridas, mediante Opera Turbo
- Función de acceso rápido de sitios favoritos
- Sincronización de accesos rápidos, contraseñas y otros datos útiles, entre ordenadores y dispositivos, mediante Opera Link
- Disponible en Windows, Linux, MacOS, Tablet, smartphones, etc. 
- Administrador de contraseñas
- Mediante Opera unite se puede compartir contenidos con otras personas sin tener que cargar archivos a un sitio web, tales como música, fotos u otros formatos.
- Opción visual y gradual de Zoom en la parte inferior. Se aplica a fuentes, imágenes, etc.
- Acceso instantáneo a los marcadores
- Administración eficiente de marcadores
- Selección del estilo y del diseño del navegador
- Creación de atajos personalizados, de teclado, de gestos del ratón...
- Al pasar el ratón por la pestaña muestra una vista previa de la página
- Recuperación de pestañas que se han cerrado
- Protección de pestañas para que no se cierren
- Ajuste de las miniaturas de vista previas en las pestañas
- Guardado de pestañas abiertas como una sesión
- Apilación o agrupación de pestañas
- Gestión de descargas. Descarga inmediata al guardar. Pestaña de descargas con el progreso de las descargas en curso.
- Gestión de suscripciones de noticias con Opera Mail, a través de RSS
- Corrección ortográfica mientras se escribe. El botón derecho permite corregir errores.
- Eliminación de distracciones. Bloqueo de imágenes, plugins, ventanas emergentes, etc.
- Carga de plugins únicamente cuando sean necesarios
- Multitud de widgets con aplicaciones interesantes. Pueden permanecer en el escritorio funcionando aunque se cierre el navegador.
- Soporte de descarga bittorrent
- Búsqueda desde el campo de dirección (URL)
- Sugerencias de búsqueda mientras se escribe.
- Uso de cualquier motor de búsqueda de forma instantánea
- Potencia de búsqueda dentro de una página
- Corrección inteligente de direcciones erróneas
- Posee el motor JavaScript más rápido de todos (llamado Carakan)
- Soporte para el HTML 5 más reciente
- Biblioteca de gráficos de alto rendimiento, elegante y veloz
- Soporte de geolocalización
- Seguridad añadida a la navegación Web. Revisión de la seguridad de un sitio antes de su acceso, consultando virus, gusanos, vulnerabilidades, etc., en agencias líderes de seguridad.
- Navegación privada, garantizando operaciones bancarias, de compras, etc.
- Consulta de la seguridad de los sitios web
- Control de huellas de los sitios web
- Actualización automática del navegador, extensiones, plugins...
- Depuración de código integrada con Opera Dragonfly.
- Y mucho más


Enlaces de interés:
Características | Características de Opera

¡Carcasas para tu iPhone con estilo retro!



¿Fanático de los productos Apple desde el inicio de sus tiempos?. Las carcasas retro para tu iPhone ya están a la venta por US$44.95 y en 4 diferentes estilos gracias a Schreer Delights: Original ipod, Retro iMacRetro Macintosh y G4 Graphite.

Vía | Geekosystem

Sabayon Linux 8 liberado

Se ha liberado la versión 8 de Sabayon, una distribución Linux basada en Gentoo, que le confiere una gran dosis de seguridad, pero añadiendo sencillez en la instalación y en el uso. Es altamente configurable gracias a las técnicas de desarrollo de Gentoo, asegurando los principios de Rendimiento, Versatibilidad y Estabilidad.


Entre sus características, cabe destacar las siguientes:
- Kernel Linux 3.2 con Fusion Kernel
- Escritorio Gnome 3.2.2
- Escritorio KDE 4.7.4
- Escritorio XFCE 4.8
- Actualización de muchos paquetes y bugs
- Soporte nativo para sistema de archivos btrfs
- LibreOficce 3.4.4
- Centro Multimedia XBMC 10.1
- Repositorio de más de 12.000 paquetes

Enlaces de interés:
Página Oficial | Página oficial de Sabayon
Descarga | Página de descargas
Wiki | Wiki de Sabayon
Características | Características de Sabayon Linux 8

Toma de contacto con Ruby


Hace mucho tiempo que quería tomar contacto con un lenguaje de programación que ha tenido mucho auge en Japón y en EEUU, y que en España está tímidamente haciéndose conocer. En los últimos años, Ruby se está haciendo un hueco importante entre los lenguajes de programación, especialmente para la Web, gracias a su framework Ruby On Rails (RoR).

Ruby es un lenguaje de programación orientado a objetos, reflexivo e interpretado, con una sintaxis inspirada en Python y en Perl, y con una implementación de software libre. El intérprete de este lenguaje está disponible para varias plataformas, tales como Windows, Linux o MacOS. Fue creado en 1995 por Yukihiro "Matz" Matsumoto. La principal característica de este lenguaje es que está pensado para la productividad.

Para empezar a realizar cosas con este lenguaje tenemos una "shell" o consola (como en Python), donde podemos probar antes de generar el código final del programa. En el caso de Ruby, la consola se llama irb (Interface Ruby shell).

Lo más sencillo a probar es una simple operación matemática:

irb(main):001:0> 2+2
=>4

O un literal o cadena de caracteres, escrito entre comillas dobles o simples:

irb(main):002:0> "Soy Rafael"
=>"Soy Rafael"

La diferencia con otros lenguajes de programación es que en Ruby todo es un objeto y, por tanto, se puede acceder directamente a sus métodos y propiedades. Por ejemplo, en el último ejemplo, hemos usado un literal, que es un objeto de tipo String. Por tanto, se puede acceder a los métodos de dicho objeto:

irb(main):003:0> "Soy Rafael".length
=>10
irb(main):004:0> "Soy Rafael".reverse
=>"leafaR yoS"

El método length retorna la longitud del literal, mientras que el método reverse retorna el literal invertido.

El operador "+" permite sumar dos números, pero en el caso de los literales, permite concatenar dos literales en 1:

irb(main):005:0> "Soy " + "Rafael"
=>"Soy Rafael"


El operador "*" permite multiplicar dos números, pero en el caso de los literales permite repetir dicho literal n veces:

irb(main):006:0> "Rafael"*3
=>"RafaelRafaelRafael"

Sin embargo, si se intenta realizar cualquier otro tipo de operación matemática, ésta dará un error, ya que un literal tiene distinta naturaleza de los números. Lo mismo ocurriría si se desea ejecutar un método de literal para un número. Por ejemplo, lo siguiente daría un error:

irb(main):007:0> "El resultado es: " + 2+2                                            
=> TypeError: can't convert Fixnum into String

Para poder llevar a cabo ésto será necesario que los valores sean del mismo tipo, y para ello, disponemos de métodos de conversión o "casting":

irb(main):008:0> "El resultado es: " + (2+2).to_s                                     
=> "El resultado es: 4"

El método to_s (to string), permite convertir un valor numérico a un literal. En el ejemplo se ha utilizado el paréntesis para englobar el resultado del número.

El siguiente ejemplo realiza la operación inversa, es decir, convierte un literal a un número para poder realizar la operación matemática:

irb(main):009:0> 20 + "4".to_i                                                        
=> "24"

El método to_i (to integer), convierte el valor a un número de tipo entero.

Los siguientes ejemplos convierten un número en literal, y después ejecutan un método específico para literales:

irb(main):010:0> 365.to_s.reverse
=> "563"
irb(main):011:0> 65535.to_s.length                                                    
=> 5

Ruby también trata arrays, que son colecciones de valores. Dichas colecciones se especifican encerrando entre corchetes ([ ]) los valores que lo conforman. El siguiente ejemplo crea un array con una serie de valores numéricos:

irb(main):012:0>  [20, 15, 45, 78, 27]                                                 
=> [20, 15, 45, 78, 27]

Los arrays también son objetos, y como tales, también tienen métodos que realizan acciones:

irb(main):013:0> [20, 15, 45, 27].max                                                 
=> 45                                                                   
irb(main):014:0> [20, 15, 45, 27].min                                                 
=> 15                                                                   
irb(main):015:0> [20, 15, 45, 27].length                                              
=> 4                                                                    
irb(main):016:0> [20, 15, 45, 27].reverse                                             
=> [27, 45, 15, 20]

El método max (maximum) retorna el valor más alto del array. El método min (minimum) retorna el valor más bajo del array. El método length retorna la longitud del array, es decir, el número de valores que contiene. El método reverse retorna los valores del array en orden inverso.

Para facilitar el uso de los valores, Ruby permite almacenar los valores se pueden almacenar variables, las cuales, serán automáticamente del tipo de los valores que contienen. Las variables almacenan los valores bajo un nombre fácil de recordar, y mediante el cual se refiere a dichos valores. Por ejemplo, si la lista anterior se trata de una lista de préstamos, la cual se va a utilizar para varias operaciones, lo mejor es almacenarlo en una variable que repetir la lista constantemente:

irb(main):017:0> prestamos = [20, 15, 45, 27]                                            
=> [20, 15, 45, 27] 
irb(main):018:0> print ticket[1]                                                      
20=> nil                                                 
irb(main):019:0> prestamos.sort!                                                         
=> [15, 20, 27, 45]
irb(main):020:0> prestamos.sort!.reverse                                                 
=> [45, 27, 20, 15]

En este ejemplo, se almacena la lista en la variable prestamos. Las siguientes operaciones se realizan sobre la variable. En primer lugar, se visualiza el valor que se encuentra en el array, en la posición 1 (las posiciones dentro del array comienzan en 0 y terminan en longitud-1, y se accede a la misma indicándolo entre corchetes). A continuación, el método sort! ordena la lista de menor a mayor. Por último, ordena la lista y, a continuación, se invierte el orden de la lista (ordenación de mayor a menor).

Un literal es un array de caracteres. Probemos lo siguiente:

irb(main):021:0> texto = "en un lugar de la Mancha, de cuyo nombre no quiero acordarme"                                                                       
=> "en un lugar de la Mancha, de cuyo nombre no quiero acordarme"       
irb(main):022:0> texto['lugar']='sitio'                                               
=> "sitio"                                                              
irb(main):023:0> print texto                                                          
en un sitio de la Mancha, de cuyo nombre no quiero acordarme=> nil

La variable texto contendrá un literal, que en sí mismo en su array de caracteres. La segunda sentencia, busca la subcadena 'lugar' dentro del array, y reemplaza su valor por 'sitio'. La última sentencia muestra el valor del literal con el resultado, en donde 'lugar' ha sido sustituido por 'sitio'.

El método include? nos permite consultar si una subcadena se encuentra dentro del texto, retornando true (verdadero) o false (falso) en caso afirmativo o negativo.

irb(main):024:0> texto.include? "lugar"                                               
=> false
irb(main):025:0> texto.include? "Mancha"                                              
=> true                                                                

Recordemos que, aunque sea un literal, seguimos tratando un array, y que algunos de los métodos que estamos probando pueden servirnos para otro tipo de arrays. Así, el método include? también puede aplicarse a nuestro array prestamos:

irb(main):026:0> ticket.include? 20                                                   
=> true                                                                 
irb(main):027:0> ticket.include? 80                                                   
=> false

En el caso de los literales, hay métodos específicos, como, por ejemplo, el poder convertir todos los caracteres del array a minúsculas (con el método downcase) o a mayúsculas (con el método upcase):

irb(main):028:0> texto.downcase                                                       
=> "en un sitio de la mancha, de cuyo nombre no quiero acordarme"       
irb(main):029:0> texto.upcase                                                         
=> "EN UN SITIO DE LA MANCHA, DE CUYO NOMBRE NO QUIERO ACORDARME"

Los arrays son un recurso valioso en la programación con Ruby, pero la complejidad de las necesidades reales con los datos nos van a exigir algo más funcional y avanzado para un tratamiento secuencial y lineal de colecciones de datos. Ruby provee un tipo de dato cuya estructura es un diccionario y funciona como una tabla hash. Esto es, se define una clave o valor único, y un valor, lo que facilita las búsquedas. Las siguientes líneas definen y añaden valores a un diccionario, el cual es una colección de libros, los cuales están catalogados por una valoración. En este caso, el título del libro es la clave (valor único), y la catalogación es el valor (que puede repetirse):

irb(main):030:0> libros = {}
=> {}
irb(main):031:0> libros["Don Quijote de la Mancha"] = :esplendido
=> :esplendido
irb(main):032:0> libros["El Alquimista"] = :esplendido
=> :esplendido
irb(main):033:0> libros["Millenium"] = :muy_bueno
=> :muy_bueno
irb(main):034:0> libros["El angel caido"] = :mediocre
=> :mediocre
irb(main):035:0> libros
=> {"Don Quijote de la Mancha"=>:esplendido, "El Alquimista"=>:esplendido, "Millenium"=>:muy_bueno, "El angel caido"=>:mediocre}

A continuación, se consulta el tamaño del diccionario y se consulta la valoración de un determinado libro:

irb(main):036:0> libros.length
=> 4
irb(main):037:0> libros["Millenium"]
=> :muy_bueno

Para consultar las claves del diccionario, se utiliza el método key:

irb(main):037:0> libros.keys
=> ["Don Quijote de la Mancha", "El Alquimista", "Millenium", "El angel caido"]

Para consultar los valores del diccionario se utiliza el método values:

irb(main):038:0> libros.values
=> [:esplendido, :esplendido, :muy_bueno, :mediocre]



Conclusiones
Esta pequeña toma de contacto al lenguaje Ruby nos permite echar un vistazo a los tipos de datos básicos que conforman el lenguaje, así como vislumbrar la potencia que tiene al ser tratado todo como objetos, con sus correspondientes métodos. Para conocer los métodos de cualquier objeto, basta con ejecutar el método methods:

irb(main):038:0> 5.methods                                                            
=> [:to_s, :-@, :+, :-, :*, :/, :div, :%, :modulo, :divmod, :fdiv, :**,:abs, :magnitude, :==, :===, :<=>, :>, :>=, :<, :<=, :~, :&amp;, :|, :^, :[], :<<, :>>, :to_f, :size, :zero?, :odd?, :even?, :succ, :integer?, :upto, :downto, :times, :next, :pred, :chr, :ord, :to_i, :to_int, :floor, :ceil, :truncate, :round, :gcd, :lcm, :gcdlcm, :numerator, :denominator, :to_r, :rationalize, :singleton_method_added, :coerce, :i, :+@, :eql?, :quo, :remainder, :real?, :nonzero?, :step, :to_c, :real, :imaginary, :imag, :abs2, :arg, :angle, :phase, :rectangular, :rect, :polar, :conjugate, :conj, :between?, :nil?, :=~, :!~, :hash, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :inspect, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?, :extend, :display, :method, :public_method, :define_singleton_method, :__id__, :object_id, :to_enum, :enum_for, :require, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__]

irb(main):039:0> "Soy Rafael".methods                                                 
=> [:<=>;, :==, :===, :eql?, :hash, :casecmp, :+, :*, :%, :[], :[]=, :insert, :length, :size, :bytesize, :empty?, :=~, :match, :succ, :succ!, :next, :next!, :upto, :index, :rindex, :replace, :clear, :chr, :getbyte, :setbyte, :to_i, :to_f, :to_s, :to_str, :inspect, :dump, :upcase, :downcase, :capitalize, :swapcase, :upcase!, :downcase!, :capitalize!, :swapcase!, :hex, :oct, :split, :lines, :bytes, :chars, :codepoints, :reverse, :reverse!, :concat, :<<, :crypt, :intern, :to_sym, :ord, :include?, :start_with?, :end_with?, :scan, :ljust, :rjust, :center, :sub, :gsub, :chop,:chomp, :strip, :lstrip, :rstrip, :sub!, :gsub!, :chop!, :chomp!, :strip!, :lstrip!, :rstrip!, :tr, :tr_s, :delete, :squeeze, :count, :tr!, :tr_s!, :delete!, :squeeze!, :each_line, :each_byte, :each_char, :each_codepoint, :sum, :slice, :slice!, :partition, :rpartition, :encoding, :force_encoding, :valid_encoding?, :ascii_only?, :unpack, :encode, :encode!, :to_r, :to_c, :>, :>=, :<, :<=, :between?, :nil?, :!~, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?, :extend, :display, :method, :public_method, :define_singleton_method, :__id__, :object_id, :to_enum, :enum_for, :require, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__]
    


Enlaces
Página oficial de Ruby: http://www.ruby-lang.org
Prueba Ruby desde el navegador: http://tryruby.org


© commandcat
Maira Gall