domingo, 12 de agosto de 2012

Notepad + + para programar en RUBY

Uso de Notepad + + para escribir programas de Ruby en Windows

Si usted está escribiendo pequeños programas de Ruby y que no necesita instalaciones, tales como la depuración disponibles en un IDE de pleno derecho, le recomiendo usar el Bloc de notas + + editor. Notepad + + se ha construido en el resaltado de sintaxis para Ruby y es un peso ligero y con todas las funciones de editor de código.
Descargue la última versión de Notepad + + desde aquí . Yo recomiendo descargar la versión de Windows Installer. El tamaño de descarga es de unos 5 MB. Haga doble clic sobre el ejecutable descargado para instalar Notepad + +.
Installing Notepad++ in Windows 7
Seleccione la carpeta donde desea Notepad + + para ser instalado y haga clic en Siguiente.
Notepad++ installation options
Personaliza tu instalación y elegir lo que usted necesita. Recomiendo que permite plugins, temas y actualizador automático. Haga clic en Siguiente.
Notepad++ installation options
Haga clic en "No usar APPDATA%%" opción. Cuando se selecciona esta opción, toda la personalización que hagas en tu Notepad + + instalación se almacenarán en la carpeta de instalación en sí. De esta manera usted puede copiar la carpeta instalada a otra máquina, si usted necesita cambiar su máquina. Haga clic en Instalar para completar la instalación de Notepad + +.
Ejecutar Notepad + + editor, haga clic en el icono del escritorio. Primero vamos a configurar el Bloc de notas + + para los programas de edición de Ruby.
Desde el Bloc de notas + + menú, haga clic en Configuración => Preferencias. Haga clic en idioma del menú / pestaña de configuración. En virtud de los ajustes de la ficha de [Por defecto] modificar el tamaño de la ficha y reemplazar por las opciones de espacio, como se muestra a continuación. Hemos establecido el tamaño de la ficha a 2 y nos pusimos en la opción Cambiar el espacio a utilizar espacios en lugar de carácter de tabulación.
Setting editor properties in Notepad++ for Ruby
Ahora vamos a agregar un menú personalizado en el menú Ejecutar para ejecutar programas Ruby. De esta manera usted puede ejecutar programas Ruby directamente desde el editor Notepad + +. Desde el Bloc de notas + + menú, haga clic en Ejecutar => Ejecutar. Esto abre la siguiente ventana.
Configuring a shortcut for running Ruby programs in Notepad++
En el campo de texto, escriba el siguiente comando. Para que esto funcione, es necesario tener instalado y Rubí 1.9.x la carpeta bin de Ruby debe estar en la variable de entorno PATH. Ver este tutorial paso a paso las instrucciones sobre la instalación de Ruby en Windows .
cmd / K rubí "$ (FULL_CURRENT_PATH)"
Haga clic en Guardar ... botón para guardar esto como un comando personalizado.
Configuring a shortcut for running Ruby programs in Notepad++
Escriba un nombre para el acceso directo (en Ejecutar programa Ruby) y luego seleccione un atajo de teclado para ejecutar el comando (F6). Haga clic en Aceptar.
Ahora, desde el Bloc de notas + + menú, haga clic en Ejecutar. Verá el adicional de "Ejecutar Programa de Rubí" en el menú como se muestra a continuación.
Custom Run Ruby option in Notepad++
A fin de que este acceso directo a trabajar, es necesario asegurarse de que su programa en Ruby se guarda en un archivo. Para probar Notepad + +, escriba el siguiente programa,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">def fact(n) if n==1 1 else n * fact(n-1) end end puts fact(5)</span> def fact (n) si n == 1 1 persona n * fact (n-1) end end pone hecho de (5)</span>   
Guarde el archivo como factorial.rb. A continuación, pulse la tecla F6 o seleccionar la opción "Ejecutar Programa de Ruby" submenú en el menú Ejecutar. Usted debe ver la salida del programa de Ruby en una ventana de comandos, como se muestra a continuación,
Ruby program output from Notepad++

Instalación de Ruby on Windows 7 - Ruby 1.9.x Guía

Ruby Logo Esta es una guía paso a paso sobre la instalación y el uso de lenguaje Ruby en equipos con Windows 7. Una gran cantidad de aplicaciones ya utilizar la rama 1.8.x de Ruby. Sin embargo se ha quedado obsoleto , y si usted está comenzando de programación Ruby, usted debe comenzar con la rama 1.9.x. Este tutorial cubre de Ruby 1.9.3, la última versión de la producción disponible a partir de escribir este post.
Rubí 1.9.x introduce una serie de mejoras de lenguaje clave, más rápido y de ejecución integrada de la biblioteca / de gestión de paquetes con joyas de rubíes. Sin embargo, la migración de las herramientas y paquetes de Ruby 1.9.x está aún en curso y obtener el idioma en marcha con un IDE decente en Windows requiere un cierto esfuerzo. Un gran número de desarrolladores, incluyendo los principales desarrolladores de Ruby usar Linux o Mac para el desarrollo de sistemas de Ruby y por lo tanto, gran parte de la documentación disponible se centra en la instalación de Ruby en estas plataformas.

Instalación de Ruby on Windows 7

Lenguaje Ruby está disponible como código abierto y lo ideal es que descargar el código fuente y compilarlo en su plataforma de desarrollo para instalar Ruby. Afortunadamente, en Windows, Ruby está disponible como un instalador. Descargue la última versión de Windows Installer para Ruby de esta página . En este tutorial, usar Ruby 1.9.3-p0 y el tamaño de descarga es de alrededor de 15 MB. Haga clic en el archivo descargado para iniciar la instalación de Ruby.
Ruby Installation - License Terms
Acepta el contrato de licencia y haga clic en Siguiente.
Ruby Installation - Options
Activar la casilla "Instalar Tcl / Tk apoyo" si usted está planeando la creación de aplicaciones GUI en Ruby. También seleccione "Agregar archivos ejecutables de Ruby a su camino". Esto le permite invocar el intérprete Ruby o programas de cualquier ventana de comandos. Haga clic en Instalar para completar la instalación de Ruby.

Exploración de la instalación de Windows de Ruby

Ruby - What is installed in Windows Ampliar la de Windows => Inicio => Todos los programas => Ruby 1.9.3-p0 para comprobar si Rubí se ha instalado correctamente. Usted encontrará los siguientes elementos en el menú,
  • Interactive Ruby - Se abrirá una línea de comandos de Ruby sesión de intérprete.
  • Servidor RubyGems Documentación - El inicia un servidor HTTP de forma predeterminada escucha en el puerto 8808. La documentación de todas las gemas instaladas en la instalación de Ruby pueden ser vistos por el acceso a este URL - http://localhost:8808/
  • Inicio símbolo del sistema con Ruby - Esto abre una serie de comandos de Windows con los programas disponibles en la variable de entorno de ruta de Ruby. Escriba el comando ruby-v en la línea de comandos si quieres comprobarlo.
  • Desinstalar de Ruby 1.9.3-p0 - Deshazte de Ruby si están aburridos con ella
  • Documentación - Documentación completa de Ruby incluye la documentación de base y de la biblioteca estándar está disponible como un archivo de ayuda de Windows. También se incluye un libro gratis en PDF titulado "El Libro de Rubí", escrito por Huw Collingbourne.

Selección de un IDE para Ruby Programación en Windows

A continuación se presentan algunos de los entornos de desarrollo de uso común en Windows para la programación Ruby.
Yo prefiero Aptana Studio 3 para escribir programas Ruby en Windows. Tiene todas las características interesantes que requieren al escribir programas Ruby,
  • Es gratis!
  • Soporta resaltado de sintaxis
  • Integrado depurador de Ruby!
  • Asistente de código y terminación automática
  • Esquema de código (clases, módulos y métodos)

Instalar Aptana Studio IDE de Ruby en Windows

Descarga el instalador independiente de Windows para Aptana Studio 3 desde este enlace . Si ya tienes Eclipse 3.5 o superior instalado, usted también puede instalar sólo el plugin de Aptana para habilitar el soporte de Ruby en Eclipse. Sin embargo yo prefiero la versión independiente. La descarga es de unos 140MB.
Haga doble clic sobre el instalador descargado.
Installing Aptana Studio 3
Seleccione una carpeta de destino para Aptana Studio y haga clic en Siguiente. Elija los valores predeterminados para las opciones del menú de inicio en la pantalla siguiente y haga clic en Siguiente. Seleccione las asociaciones de archivos en la pantalla y haga clic en Siguiente y, a continuación, haga clic en Instalar para completar la instalación. La instalación puede tardar un tiempo desde que un gran número de archivos se extraen.
Aptana Studio requiere una versión Git de control de la instalación del sistema en su sistema por sus características de secuencias de comandos. Por suerte, también puede instalar una copia privada de PortableGit para este propósito. Cuando se inicia Aptana por primera vez, se le presentará la siguiente pantalla.
Aptana Studio 3 - PortableGit Installation
Haga clic en "PortableGit uso" botón.
Aptana utiliza el concepto de espacios de trabajo (de Eclipse) que por defecto es el lugar de todos los proyectos que cree. Usted puede crear la ubicación de espacio de trabajo predeterminado en el menú, File => Áreas de trabajo => Otros. Si se selecciona otra área de trabajo, tendrá que configurar PortableGit nuevo. También la carpeta de espacio de trabajo por defecto se hace cargo de 150 MB de espacio en disco duro incluyendo PortableGit!
Para desarrollar un programa de Ruby, Haga clic en Archivo => Nuevo => opción Proyecto Ruby de Aptana Studio. Vamos a crear un simple programa Hello World. Vamos a crear un proyecto y luego añadir el programa a este proyecto.
Creating a new Ruby Project in Aptana Studio 3
Introduzca el nombre del proyecto como "hola" y haga clic en Finalizar. Un proyecto vacío se creará en el espacio de trabajo. Desde el explorador de aplicación o el Explorador de proyectos, haga clic derecho y haga clic en Nuevo => Archivo.
Creating a Ruby program in Aptana Studio 3
Escriba el nombre del archivo como helloworld.rb y haga clic en Finalizar. Ahora usted tiene un programa vacío de Rubí en su proyecto. Helloworld.rb abierta y escriba el siguiente programa,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">puts "hello world!"</span> pone "Hello World!"</span>   
hello world output in Aptana Studio 3 Guardar en el menú helloworld.rb y Aptana, haga clic en Ejecutar helloworld.rb. Verá la salida del programa en la ventana de la consola de Aptana. Sin embargo, si se intenta depurar el programa de Aptana, se le sale el siguiente error,
No se puede encontrar scripts binario 'rdebug-ide'. Tal vez necesite instalar gema ruby-debug-ide ", o que tenga que añadir el directorio ejecutable joya a su PATH (ver localización a través de" medio ambiente gema).
Con el fin de depurar los programas de Ruby Aptana requiere la gema ruby-debug-ide. Idealmente, esto debería ser un paso sencillo, pero a partir de escribir esta entrada del blog, su instalación requiere un poco de esfuerzo.

Habilitar la compatibilidad de depuración de Ruby en el Aptana Studio 3

Con el fin de depurar los programas Ruby en Aptana, la gema ruby-debug-ide se requiere. Instalación de la gema es un paso simple. Ejecute el siguiente comando desde la línea de comandos (requiere una conexión activa a Internet),
gem install ruby-debug-ide - = plataforma de rubí
Sin embargo, esto arroja el siguiente error,
C: \ JJC \ tools \ Ruby193> gem install ruby-debug-ide
Recogiendo: ruby-debug-ide-0.4.16.gem (100%)
ERROR: Error al instalar ruby-debug-ide:
La joya natural 'ruby-debug-ide' requiere tener instalado herramientas de construcción.
Por favor, actualice la variable PATH para incluir herramientas de construcción o descargar el DevKit
a partir de los http://rubyinstaller.org/downloads y siga las instrucciones
en 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
Esto significa que tengo que instalar el juego de desarrollo de Ruby. Este kit es necesario si queremos construir RubyGems nativos desde el código fuente.
Descargue el archivo comprimido DevKit de la página de descarga Rubyinstaller . He descargado DevKit-TDM-32-4.5.2-20110712-1620-sfx.exe (20 MB +). Este es un archivo auto 7zip extraer. Ejecute el programa y elegir un directorio donde desea DevKit para ser instalado. Lo guardo como una subcarpeta bajo la carpeta de Ruby.
Abra un símbolo del sistema de Windows y cambie el directorio a la carpeta DevKit. Escriba el siguiente comando para configurar la instalación DevKit.
ruby dk.rb init
Este comando identificar el Ruby instalado por RubyInstaller como se muestra a continuación.
Configuring DevKit for Windows
Ahora ejecuta el siguiente comando para habilitar DevKit para las instalaciones de Ruby en tu máquina.
ruby dk.rb instalación
Para más detalles sobre la instalación DevKit, visite esta página .
Ahora intenta instalar la gema ruby-debug-ide de la línea de comandos. (Nota: este paso se tomó un par de minutos en mi maquina)
gem install ruby-debug-ide - = plataforma de rubí
Lo que tengo es otro conjunto de errores (ver más abajo)! El problema es que la última versión de lanzamiento de ruby-debug-ide (4.16) no se puede construir con Ruby 1.9.x.
CAMINO mejorar temporalmente para incluir DevKit ...
Construyendo extensiones nativas. Esto podría tomar un tiempo ...
ERROR: Error al instalar ruby-debug-ide:
ERROR: No se ha podido crear extensión de piedra natural.
C :/ jjc/tools/Ruby193/bin/ruby.exe mkrf_conf.rb
Construyendo extensiones nativas. Esto podría tomar un tiempo ...
Construyendo extensiones nativas. Esto podría tomar un tiempo ...
Gem archivos seguirá siendo instalado en C :/ jjc/tools/Ruby193/lib/ruby/gems/1.9.1/gems
/ Ruby-debug-ide-0.4.16 para su inspección.
Resultados registrados en C :/ jjc/tools/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0
.4.16/ext/gem_make.out
installing ruby-debug-ide
Este error ya está corregido en el último código fuente de ruby-debug-ide. Sin embargo, todavía no es una versión de lanzamiento. Así que tenemos que decirle a la herramienta GEM para descargar e instalar la última versión preliminar aprobando el pre-interruptor de línea de comandos.
gem install ruby-debug-ide - Plataforma = Ruby - pre
Esto instala última versión preliminar de Ruby-debug-ide (versión 0.4.17.beta8 como de escribir esta entrada del blog).
installing ruby-debug-ide
De este modo, la función de depuración en Aptana Studio. Verifique la función de depuración mediante el establecimiento de un punto de quiebre en su programa y luego hacer clic en el icono de depuración. Ahora que está todo listo para el desarrollo de programas Ruby en Windows!

La distribución de su programa de Ruby como un ejecutable independiente (exe)

Desde Ruby es un lenguaje interpretado, siempre que lo desee para liberar a su programa, tiene que liberar el código fuente. También los usuarios del programa debe instalar la máquina virtual de Ruby antes de que puedan ejecutar el programa. ¿Hay una manera de distribuir el programa rubí como un ejecutable independiente?
Erik Veenstra ha creado una ingeniosa herramienta denominada RubyScript2Exe que puede convertir su programa de rubí a un programa ejecutable. Esto se logra mediante la combinación de rubí código del intérprete y sus archivos de código fuente en un solo archivo EXE.
En primer lugar descargar la herramienta RubyScript2Exe de aquí . Se trata de un programa de rubí (950kb tamaño). Crear un sencillo programa llamado Ruby helloworld.rb y guárdelo en el mismo lugar donde se almacena RubyScript2Exe.rb.

  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">puts "Hello World"</span> puts "Hola Mundo"</span>   
Desde el símbolo del sistema, escriba lo siguiente,
ruby rubyscript2exe helloworld.rb
Verá la siguiente salida en la consola. Ahora usted tiene un programa ejecutable independiente (HelloWorld.exe), que se puede ejecutar en cualquier máquina con Windows! Combinado con Win32API, puede crear interesantes aplicaciones de línea de comandos para Windows.
exe crear ventanas usando Ruby
El único problema con este ejecutable es que contiene toda la máquina virtual de rubí y por lo tanto, es grande (el tamaño es de alrededor de 1,5 MB HelloWorld.exe). También tenga en cuenta que esto no es realmente un compilador de rubí. No convierte el código Ruby a código de máquina. No sólo los paquetes de la máquina virtual de rubíes, junto con su código de color rubí. Por lo tanto el código está siendo interpretado.
RubyScript2Exe También puede crear archivos ejecutables para Linux y Mac OS X (Darwin). RubyScrip2Exe se distribuye bajo licencia GNU GPL.

Acceso a la API de Windows de Ruby - Uso de la biblioteca Win32API

Rubí se utiliza ampliamente en aplicaciones web gracias a Ruby on Rails. Pero también se puede desarrollar aplicaciones Windows utilizando Ruby. Curiosamente, el apoyo a la API de Windows es parte de la instalación estándar (sólo en instalaciones de Microsoft Windows) y es muy fácil de usar!
Para utilizar la API de Windows, es necesario importar "Win32API" biblioteca en sus aplicaciones.
A continuación, puede utilizar la clase Win32API para crear una referencia a un método de la API y se puede llamar. El programa de ejemplo siguiente muestra cómo se puede hacer esto. Esta aplicación mostrará un cuadro de mensaje de Windows nativo,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">require "Win32API" message = "This is a sample Windows message box generated using Win32API" title = "Win32API from Ruby" api = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I') api.call(0,message,title,0)</span> requieren "Win32API" mensaje = "Esto es una caja de muestra de mensajes de Windows genera utilizando Win32API" title = "Win32API de Ruby" api = Win32API.new ('user32', 'mensajes', ['L', 'P', 'P ',' L '],' I ') api.call (0, el mensaje, el título, 0)</span>   
Cuando se ejecuta el programa anterior, obtendrá un cuadro de mensaje similar al siguiente,

Ahora vamos a analizar nuestro programa de ejemplo en la profundidad. La primera línea importa la biblioteca estándar de Win32API. Luego creamos dos variables (el mensaje y el título), que mantendrán el mensaje que se mostrará y el título del cuadro de mensaje.
Ahora, utilizando Win32API.new, estamos creando una nueva instancia de un método de la API de Windows. El primer parámetro (user32) indica que el archivo DLL que contiene el método de la API. En este caso, el archivo DLL es user32.dll. El segundo parámetro es el nombre del método de la API (mensajes). El tercer parámetro es una matriz que indica el tipo de todos los parámetros pasados ​​al método de la API (mensajes). En la matriz, L representa el número largo y P significa puntero a cadena (variable de cadena). El último parámetro indica el tipo de retorno. En este caso es sinónimo de Integer.
Ahora, utilizando el método de llamada en la referencia de la API se invoca el método MessageBox. Tenga en cuenta que el tipo de parámetros coincide con el parámetro de la matriz tercero en el constructor. El primer parámetro es el identificador de las ventanas de los padres (en este caso no es ninguno de los padres y por lo tanto 0) y el último parámetro indica el tipo de cuadro de mensaje (0 indica el cuadro de mensaje predeterminada).
Lo que sigue es otro programa que utiliza muestra de rubí, la API de Windows para imprimir el nombre de usuario registrado y también el nombre del equipo,

  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">require "Win32API" # Returns the computer name def getComputerName name = " " * 128 size = "128" Win32API.new('kernel32','GetComputerName',['P','P'],'I').call(name,size) return name.unpack("A*") end # Returns current logged in Windows user name def getUserName name = " " * 128 size = "128" Win32API.new('advapi32','GetUserName',['P','P'],'I').call(name,size) return name.unpack("A*") end puts "Computer Name: #{getComputerName}" puts "User Name: #{getUserName}"</span> requieren "Win32API" # Devuelve el nombre del equipo def GetComputerName name = "" * 128 size = "128" Win32API.new ('kernel32', 'GetComputerName', ['P', 'P'], 'I'). llamada (nombre, tamaño) name.unpack retorno ("A *") end # Devuelve sesión actual en el nombre de usuario de Windows getUserName def nombre = "" * 128 size = "128" Win32API.new ('ADVAPI32', 'GetUserName', [ . 'P', 'P'], 'I') llamada (nombre, tamaño) name.unpack retorno ("A *") pone fin "Nombre del equipo: # {} GetComputerName" pone "Nombre de Usuario: # {} getUserName "</span>   
En el ejemplo anterior, en cuenta que el segundo parámetro es un puntero para el tamaño del primer parámetro. En Ruby no hay punteros y por lo tanto el tamaño tiene que ser pasado como un valor de cadena. También tenemos que usar el método de descomprimir para eliminar el carácter nulo final devuelto por llamada a la API.
Echa un vistazo a la siguiente definición de API para GetUserName (de MSDN) ,

lpBuffer
Un puntero al buffer que recibirá el nombre del usuario de inicio de sesión. Si el buffer no es lo suficientemente grande como para contener el nombre de usuario completo, la función falla. Un tamaño de búfer de UNLEN (+ 1) personajes tendrá el nombre de usuario de longitud máxima, incluido el carácter nulo de terminación. UNLEN se define en LMCONS.H.
lpnSize
En la entrada, esta variable especifica el tamaño del búfer lpBuffer, en TCHARs. En la salida, la variable recibe el número de TCHARs copiados en el búfer, incluyendo el carácter nulo de terminación.
Como se puede adivinar, el paso de parámetros y analizar los valores devueltos por la API rápidamente se convierte en tedioso. Así que desde un ángulo de la productividad utilizando la API de Windows para crear aplicaciones de Windows de pleno derecho, no se recomienda.

Ruby-Talk - rb_str_new2 limpieza, bibliotecas Ruby y Ruby GUI vs Python

Nota: Esta es una ronda semanal de cosas interesantes se encuentran en lista de correo Ruby-Talk. Usted puede suscribirse a esta lista aquí .
1. Steven se preguntó si es necesario para limpiar la cadena creada a partir de código nativo de C (rb_str_new2) y se pasa a rb_funcall. Matz dijo:
Usted no tiene que (y no debería) los objetos libres de cadenas.
2. Mohsin preguntó cuál es la mejor interfaz gráfica de usuario de Ruby Biblioteca , Ruby GTK o FXRuby?. Ambos parecían buenos candidatos y hubo algunas recomendaciones adicionales, tales como JRuby + + Swing Monkeybars (Santiago). Daniel recomendado WxRuby ,
He tenido muy buenos resultados con WxRuby http://wxruby.rubyforge.org/~~V; No pasó mucho tiempo para aprender, no es muy rubyish (básicamente, el C + + API se reimplementada en Ruby), pero fue muy útil para la cruz -plataforma de desarrollo. Así que puede que desee considerar la posibilidad de que, como tercera opción.
3. Hubo una gran discusión (iniciado por Marc) sobre las diferencias entre Python y Ruby. Michael ha tenido algunos buenos puntos sobre el Ruby,
una. La sintaxis flexible de Ruby
b. El apoyo suficiente para la programación funcional sin tener que luchar con el lenguaje
c. Una comunidad amigable - se lamenta de que esto es en el descenso!
d. No sintáctica espacios en blanco como en Python
Como Ruby y Rails se está convirtiendo en un idioma mayoritario / marco, es natural que se obtiene más del tipo RTFM de preguntas en los grupos de correo. En mi opinión, no hay ningún punto en quejandonos de él, sino con educación que apunte a la documentación pertinente.
En cuanto a los carriles se trata, es un gran lío. El Rails 2, está fuera, pero no hay documentación para un principiante en Rails 2. Todos los libros todavía están atascados en las versiones anteriores y por cualquier documentación disponible en línea usted tiene que pagar! El libro sólo está disponible (3 ª edición de Agile Web Development with Rails) aún está en beta y requiere una gran cantidad de reescritura antes de que pueda ser útil. Por lo tanto, es natural que te preguntas carriles básicos, incluso en las listas de correo y foros de Ruby!
En otro hilo Mohit da esta explicación ,
Veo esto como una señal de que Ruby se está acelerando y ganando terreno en otros lugares. Hubo un tiempo en que había una gran cantidad de personas que estaban descubriendo Ruby on su propia voluntad y estaban buscando a los documentos (en línea o sin conexión) y probar cosas diferentes. Como se gana la tracción, que se acerca al punto en el que la gente está teniendo el empuje de Ruby en ellos (barandillas, posiblemente, más que Ruby), ya sea debido a la preferencia de las personas más arriba en la cadena alimentaria o por los clientes (especialmente en el caso de los proyectos de outsourcing). En estos casos, lo más probable es que el ingeniero es sólo la frustración de ventilación sobre la lengua en un foro de lechuga romana es algo que werem't nacido, o consigue - se metió en ellos.
4. Tim quería saber la mejor manera de eliminar cualquier otro valor en una matriz de rubí. Por ejemplo, [abcdefghijk] se convierte en [acegik]. Hubo una serie de soluciones propuestas,
Harry,

  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">arr = %w[abcdefghijk] p arr.select{|x| arr.index(x) % 2 == 0}</span> arr =% w [abcdefghijk] p arr.select {| x | arr.index (x)% 2 == 0}</span>   
Yermej,

  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">a = %w(abcdefghijk) 1.upto(a.size/2) {|i| a.delete_at i}</span> a =% w (abcdefghijk) 1.upto (a.size / 2) {| i | a.delete_at i}</span>   
Joel,

  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">a = %w(abcdefghijk) n = (a.size/2.0).ceil n.times do |i| a[i] = a[2*i] end a.slice!(n..-1)</span> . un% = w (abcdefghijk) n = (a.size/2.0) n.times límites máximos do | i |! a [i] = a [2 * i] end a.slice (n. 1.)</span>   

10 únicas características del lenguaje de rubí

El aprendizaje de Ruby es fácil si usted sabe ya un lenguaje de programación. Pero hay algunas características del lenguaje Ruby que pueden causar dolor de cabeza para un programador de la migración de C + + o Java. En este post, voy a buscar a los 10 características del lenguaje interesantes que son exclusivos de Ruby.
1. Objetos de todo el mundo - En todo lo que Ruby es un objeto como simples valores numéricos. He aquí un ejemplo,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">5.times { print "Hello World" }</span> 5.times {print "Hola Mundo"}</span>   
2. Bloques: Bloques es una característica de gran alcance en Ruby, que simplifica la programación. Los bloques son bloques de código que pueden ser pasados ​​como parámetro a un método. Con esta función es fácil de construir bibliotecas de código que puede delegar diversas funciones de los bloques de código que se construirán más adelante. Aquí hay un ejemplo que imprime todos los elementos de una matriz,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">sample_array.each { |element| print element }</span> sample_array.each {| elemento | elementos de impresión}</span>   
3. Valor de retorno implícita en los métodos - Valor de la última expresión de un método se convierte en el valor de retorno del método. En Ruby palabra clave return es opcional. En el siguiente ejemplo, 8 es el valor de retorno,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">def testMethod    x = 4+4  end</span> def testMethod x = 4 4 finales</span>   
4. En Ruby todo está abierto - En Ruby se puede ampliar fácilmente las clases y módulos. Esto significa que no hay nada en Ruby (incluyendo construida en clases y módulos) están cerradas!. Curiosamente métodos adicionales se pueden añadir a una clase incluso durante la ejecución. Aquí hay un ejemplo en el que se añade un método anterior a la clase fixnum (que es el tipo de datos para todos los enteros),
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">class Fixnum    def previous      return self-1    end  end  6.previous # prints 5</span> clase Fixnum definición anterior retorno auto-1 final 6.previous end # imprime 5</span>   
5. Falta operadores unarios en Ruby - Los operadores unarios + + y - no se admiten en Ruby. En su lugar puede usar el operador + =.
6. Ruby soporta asignación paralela - Es posible cambiar las variables múltiples en una sola asignación. El mejor ejemplo es el intercambio de dos variables como se indica a continuación,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">a , b = b, a</span> a, b = b, a</span>   
7. En Ruby las cadenas son mutables - En Ruby es posible cambiar una variable de cadena en su lugar. Por lo tanto a diferencia de Java, la misma cadena literal, cuando se utiliza varias veces apuntará a instancias de objetos diferentes.
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">print "hello".object_id  print "hello".object_id  # prints a different value</span> print "hola". impresión object_id "hola". object_id # imprime un valor diferente</span>   
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">a = "hello"  a[1] = "a"  print a # prints hallo</span> a = "hola" a [1] = "uno" de impresión a # imprime hola</span>   
8. Verdadero y falso en Ruby - En Ruby sólo cero y falsa como resultado false. Esto significa que todo lo demás se evalúa como true! Por lo tanto, incluso el valor 0 como resultado true en Ruby. Siguiente fragmento de código es la salida "Hello World" en la consola,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if (0) then  print "Hello World" end</span> if (0) a continuación, imprimir "Hello World" fin</span>   
9. El soporte nativo para los rangos y expresiones regulares - lenguaje Ruby tiene soporte nativo para expresiones regulares y rangos. Esto está respaldado por un amplio conjunto de métodos de la API. Las estructuras de control, tales como una sentencia case soporta de forma nativa para la comparación los rangos de valor.
10. Método de indicadores - En Ruby, el último carácter de un nombre de método puede indicar su comportamiento. Si el método termina con un signo de interrogación indica que el valor de retorno es boolean. Si el método termina con una exclamación, indica que el método puede cambiar el estado del objeto. En muchos casos una versión no exclamación del método está previsto que se modifica una copia del objeto.

¿Qué es un símbolo de rubí? - Los símbolos se explica

Muchos programadores que son nuevos en Rubí se confunden cuando ven símbolos de Ruby. A muchos nos vino a conocer a través de lenguaje Ruby Ruby on Rails proyectos. En Ruby on Rails, los símbolos están en todas partes! Por lo tanto, es esencial para entender el concepto de los símbolos en Ruby.
Un símbolo en Ruby es una instancia del símbolo de la clase. Un símbolo se define mediante un prefijo de dos puntos con un identificador. Nombre,: id,: usuario, etc son ejemplos de símbolos.
Veamos lo que hay en el símbolo de la clase.
Símbolo de la clase en Ruby contiene uno all_symbols método de la clase y los métodos de id2name ejemplo, inspeccionar, y to_i to_int, to_s y to_sym.
  • all_symbols - Devuelve una matriz de todos los símbolos en la tabla de símbolos de Ruby.
  • id2name - Devuelve la representación de cadena del símbolo -: name.id2name devuelve "nombre".
  • inspeccione - Devuelve el símbolo literal
  • to_i - Devuelve un entero único para cada símbolo
  • to_int - Igual que el to_i
  • to_s - Igual que el id2name
  • to_sym - Convertir el símbolo de un símbolo!
Los símbolos son los más utilizados en la creación de hashes. Por ejemplo, considere el hash siguiente,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">h = {:name => "Jayson", :email => "admin2@rubytips.org"}</span> h = {: name => "Jayson",: email => "admin2@rubytips.org"}</span>   
Se podría haber utilizado cadenas en lugar de símbolos en este caso,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">h = {"name" => "Jayson", "email" => "admin2@rubytips.org"}</span> h = {"nombre" => "Jayson", "email" => "admin2@rubytips.org"}</span>   
Pero la ventaja en el uso de símbolos es el uso eficiente de la memoria. Máximo espacio tomado por un símbolo no es más que el espacio ocupado por un número entero. Esto es porque internamente el símbolo se almacena como un entero. En caso de las cadenas del espacio de memoria depende del tamaño de la cadena.
También cuando una cadena se utiliza en el programa, un ejemplo se crea una nueva. Sin embargo, los símbolos, los mismos puntos de identificación a la misma posición de memoria! Esto se puede comprobar fácilmente mediante la ejecución de los siguientes,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">puts "name".object_id # prints -605705088 puts "name".object_id # prints -605705108 puts :name.object_id # prints 34258 puts :name.object_id # prints 34258</span> . pone "nombre" object_id # imprime -605705088 pone "nombre" object_id # imprime -605705108 pone:. name.object_id # imprime 34258 expresa: name.object_id # imprime 34258</span>   
La memoria guarda puede parecer trivial, en este caso. Pero cuando una estructura predefinida clave hash se utiliza como parámetro a un método y si el método se utiliza muchas veces en el programa, el ahorro puede ser sustancial! Por ejemplo, en RoR un enlace de la muestra se define como,
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><%= link_to("Edit", :controller => "editcontroller", :action => "edit") %></span> <% = Link_to ("Editar",: controller => "editcontroller",: action => "editar")%></span>   
El primer parámetro es la etiqueta utilizada en el enlace y el segundo parámetro es un hash. El segundo parámetro se define como una almohadilla para permitir parámetros dinámicos.
Ahora bien, en la aplicación del método link_to, una comprobación se realiza para ver si: tecla de acción que existe en el hash y el valor correspondiente que se usa. Del mismo modo: el controlador se controla y si se encuentra que se usa. Por tanto, poner hash es una buena manera de poner en práctica los parámetros opcionales.
En este ejemplo, podríamos haber utilizado "controlador" y las cadenas de "acción" en lugar de símbolos: el controlador y: la acción. Pero no podrá contar con dos ventajas importantes: uso eficiente de la memoria y la velocidad de procesamiento.
En una aplicación de carriles, que podría estar utilizando cientos de veces link_to. Supongamos que lo han utilizado 10.000 veces en una aplicación grande. If we assume every call contained :controller and :action symbols, total memory required by the symbols = 2 * size of an integer. Whether we call link_to once or millions of times the memory taken remains same. But things would be different in case of strings as keys. Whenever a link_to is called 2 new strings “controller” and “action” will be created. Hence a total memory allocation of 10000*16 bytes would have done by Ruby interpreter (of course garbage collector will ensure memory usage at any point to be much less than this).
Second is the question of speed. We know that link_to internally compares hash key to :controller and :action. This is extremely fast since it is equivalent to comparing integers. But if we had used strings, comparison such as “controller”==”controller” is inefficient since it involves comparison of all the characters in it.
Strings are scoped and they get destroyed/garbage collected when the execution goes out of scope. But in case of symbols, they remain defined as long as the program is running. So if you have a very large number of symbols there could be a lot of unusable memory.
It is possible convert a string to symbol using the to_sym method. Hence “controller”.to_sym returns :controller. Symbol identifiers can be quoted and they can also contain special characters. Hence :”wow, this is a symbol!” is a valid symbol.
In short, symbols are used instead of strings wherever we care only about the identity and not the content. Why we use them? Because they are memory efficient and comparison operation on them are really fast.
Now if you are still confused about symbols, just forget about them. In time you will realize what they are! :-)

Using temporary files in Ruby – Tempfile.new

For certain programming solutions, you might need a temporary file. Different operating systems store temporary files in different locations. Also you don't want to explicitly name the file since that is irrelevant in the program. How do you ensure that there are no filename conflicts? The solution for all these is to use library for temp file processing.
Ruby comes a with a default library 'tempfile' for handling temporary file creation. Given a filename prefix, it creates a temporary file in the following format.
[prefix]-[process].[unique_number]
This ensures that there is no conflict in creating multiple temporary files in the same directory. Once your program terminates the temporary file is automatically deleted. Also by default, the temporary file is created in the operating system's temporary folder (In my ubuntu system it is /tmp).
In the following program, a temporary file with prefix 'random' to store 50 random numbers is created. When the program terminates you cannot see the temp file. Hence I have added a 'gets' which stops for user input. In my case I could see a temporary file named 'random.5789.0′ under \tmp dir.
  1. require 'tempfile' class TempSample temp_file = Tempfile.new('random') 1.upto(50) do num = rand(50) # random number generation in ruby temp_file.print(num,"\n") # print number and newline to the file end temp_file.flush # flush it so that you can see it using cat gets # wait for user input. At this point you can see a temp file /tmp # The filename in my case was random.5789.0 end   
If you want to the temp file in a specific directory, you can pass the directory name as the second parameter to new. For example – Tempfile.new('new1′,'/usr/home/jay')

A Quick Dose of Ruby History

When you are learning something new, the first thing you should check out is its history. When you go through the history, you get a better perspective. It is the same with Ruby language and hence let us get a quick dose of Ruby history.
Ruby programming language is created by a Japanese programmer, Yukihiro Matsumoto. He is popularly known as “Matz” in the Ruby community. Matz started work on the language sometime in February 1993. The first alpha version was released in December 1994. Since then there has been numberous releases and the current production release 1.8.6 was done on March 2007. On 25th December 2007 there was a development release of Ruby 1.9 (this is not intended for production systems).
Ruby 2.0 will be the next major release and it is intended to expand Ruby lanugage and to improve the interpreter performance.
Matz main goal in developing Ruby was to create a scripting language that was more powerful than perl, and more object oriented than Python. Matz named the language after the “Ruby” gemstone and is inspired by “Perl”. Major guiding philosophy for the language has been “the principle of least surprise”. The first thing many new programmers note in Ruby is its elegance.
Following are the key turning points in Ruby history,
  • 1993, Feb 24 – Matz starts work on Ruby
  • 1993, April – First “hello world” works in Ruby
  • 1995, December 21 – Ruby 0.95 was released to the public
  • 1996, December 25 – Ruby 1.0 was released
  • 1998, December – ruby-talk mailing list was started
  • 2000 – Official Ruby newsgroup started
  • 2001 – RubyConf started
  • 2001, December 15 – Pickaxe book on Ruby was released
  • 2003, August – Ruby 1.8.0 was released
  • 2004, July – Web application framework Ruby on Rails released
  • 2007, March – Ruby 1.8.6 was released
  • 2007, December 25 – Ruby 1.9 (experimental version) was released
  • ??? – Ruby 2.0 release in future

Using Ruby's http library – download and process web pages – I

Ruby tiene una excelente compatibilidad de red. Ruby tiene características de red de bajo nivel como los sockets y protocolos TCP / IP. También cuenta con una API de alto nivel para el manejo de protocolos como HTTP y FTP. En este post vamos a ver la biblioteca de Rubí http. También tenemos en cuenta cómo esta biblioteca se puede utilizar para descargar y procesar las páginas web.
1. Cómo descargar una página Web con Ruby
Después de código ilustra el uso de la biblioteca net / http para la descarga de la página principal de Google. Usted debe ver el código HTML página principal de Google en la consola!
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">require 'net/http' class HttpSample def downloadGoogleHome http_response = Net::HTTP.get_response(URI.parse('http://www.google.com/')) puts http_response.body end s = HttpSample.new s.downloadGoogleHome end</span> require 'net / http' clase HttpSample definición downloadGoogleHome http_response = Net :: HTTP.get_response (URI.parse ('http://www.google.com/')) pone http_response.body final s = HttpSample.new s.downloadGoogleHome final</span>   
Ahora bien, en mi máquina, este texto vuelve, que dice "el documento se ha movido". Esto es así porque Google es enviar una redirección a www.google.co.in. Después de código se muestra cómo podemos manejar redirección HTTP.
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">require 'net/http' class HttpSample def downloadGoogleHome http_response = Net::HTTP.get_response(URI.parse('http://www.google.com/')) if(http_response.kind_of?(Net::HTTPRedirection)) new_url = http_response['Location'] http_response = Net::HTTP.get_response(URI.parse(new_url)) end puts http_response.body end s = HttpSample.new s.downloadGoogleHome end</span> require 'net / http' clase HttpSample definición downloadGoogleHome http_response = Net :: HTTP.get_response (URI.parse ('http://www.google.com/')) if (http_response.kind_of? (Net :: HTTPRedirection)) new_url http_response = ['Ubicación'] = Net :: http_response HTTP.get_response (URI.parse (new_url)) pone fin http_response.body final s = HttpSample.new s.downloadGoogleHome final</span>   
Ahora, ¿cómo escribir esto si tenemos que utilizar un servidor proxy para conectarse a Internet? En Ruby es bastante simple. Echa un vistazo a la nueva versión a continuación.
  1. <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">require 'net/http' class HttpSample def downloadGoogleHome proxy = Net::HTTP::Proxy('ipaddress', portnumber) # use actual ip and port url = URI.parse('http://www.google.com') http_response = proxy.get_response(url) puts http_response.body end s = HttpSample.new s.downloadGoogleHome end</span> require 'net / http' clase HttpSample definición downloadGoogleHome proxy = Net :: HTTP :: Proxy ("IP address", número de puerto) # use ip real y la url port = URI.parse ('http://www.google.com') http_response proxy.get_response = (URL) pone http_response.body final s = Ht

1 comentario:

  1. Blogotech: Notepad + + Para Programar En Ruby >>>>> Download Now

    >>>>> Download Full

    Blogotech: Notepad + + Para Programar En Ruby >>>>> Download LINK

    >>>>> Download Now

    Blogotech: Notepad + + Para Programar En Ruby >>>>> Download Full

    >>>>> Download LINK tv

    ResponderEliminar