+ All Categories
Home > Technology > Charla ruby nscodermad

Charla ruby nscodermad

Date post: 15-May-2015
Category:
Upload: nscodermad
View: 1,528 times
Download: 0 times
Share this document with a friend
Description:
Ruby en OSX, creada por Roberto Pérez Cubero y presentada el 21 de septiembre de 2011 en el Hub de Madrid
Popular Tags:
24
Ruby en OSX Thursday, September 22, 11
Transcript
Page 1: Charla ruby nscodermad

Ruby en OSX

Thursday, September 22, 11

Page 2: Charla ruby nscodermad

Para que sirve Ruby

• Rails

Thursday, September 22, 11

Page 3: Charla ruby nscodermad

Fin

• Gracias!

• Espero que os haya gustado

Thursday, September 22, 11

Page 4: Charla ruby nscodermad

Ah, pero hay mas?• Rspec / Cucumber

• Sinatra

• Capistrano

• Capybara ( webtesting )

• EventMachine

• FFI

• nokogiri (HTML Parsing)

• mocha (Mocking)

• guard (FileSystem watching DSL)

• .... y muchos mas!!

Thursday, September 22, 11

Page 5: Charla ruby nscodermad

¿Qué es Ruby?

• Lenguaje interpretado

• Creado por Yukihiro Matsumoto - Matz

• Dinamico

• “Reflexivo”

• Orientado a objetos

• Inspirado en Perl con un toque de Smalltalk

Thursday, September 22, 11

Page 6: Charla ruby nscodermad

¿Qué es Ruby?

• El lenguaje no es estandar, se guia por especificaciones y por la implementación “guia”

• MRI

• JRuby

• Rubinius

• IronRuby

• MacRuby

Thursday, September 22, 11

Page 7: Charla ruby nscodermad

¿Qué mola de Ruby?

• Bloques

a = [1,2,3,4,5,6,7,8,9,10]

evens = a.select do |x| x % 2 == 0end [2,4,6,8,10]doubles = a.map { |x| x + x } [2,4,6,8,10,12,14,16,18,20]

Thursday, September 22, 11

Page 8: Charla ruby nscodermad

¿Qué mola de Ruby?

• Todo es un objeto

4.class>> Fixnumnil.class>> NilClassFixnum.class>> Class

Thursday, September 22, 11

Page 9: Charla ruby nscodermad

¿Qué mola de Ruby?

• Reapertura de clases

class Fixnum def is_even? self % 2 == 0 endend

4.is_even?>> true

Thursday, September 22, 11

Page 10: Charla ruby nscodermad

¿Qué mola de Ruby?

• Envio de mensajes, respond_to?4.respond_to? :is_even?>> true

4.send :is_even?>> true

dynamic_method = “is_even?”4.send dynamic_method>> true

Thursday, September 22, 11

Page 11: Charla ruby nscodermad

¿Qué mola de Ruby?

• Method missing

class WeirdString < String def method_missing m, *args, &block self.send m.to_s.reverse endend

t = WeirdString.new “PrUebA”t.esacnwod>> “prueba”

Thursday, September 22, 11

Page 12: Charla ruby nscodermad

¿Qué mola de Ruby?

• procs / lambdas

• eval

• DSL

• mixins

• regexps

Thursday, September 22, 11

Page 13: Charla ruby nscodermad

Ruby en OSX

• Preinstalado desde Leopard

• Version 1.8

• Scripting Bridge

• RubyCocoa => MacRuby

• Lenguaje soportado en applicaciones del MacAppStore

Thursday, September 22, 11

Page 14: Charla ruby nscodermad

Ruby en OSX

• MacRuby es la evolucion de RubyCocoa

• Gracias a RubyCocoa / MacRuby

• TOTAL INTEROPERABILIDAD CON OBJC

• Todo lo de la diapositiva 4, es interoperable con nuestras clases Objective-C

• Sustituto de AppleScript gracias al Scripting Bridge

Thursday, September 22, 11

Page 15: Charla ruby nscodermad

MacRuby vs RubyCocoa

• MacRuby es el futuro pero,

• RubyCocoa viene instalado en OSX por defecto

• MacRuby tiene que ser embebido en la aplicación

• RubyCocoa -> 1.8

• MacRuby -> 1.9

• Mejoras velocidad, Threads, GC

Thursday, September 22, 11

Page 16: Charla ruby nscodermad

MacRuby vs RubyCocoa

• Sintaxis

• Integración de clases en MacRuby

• String, Number,... de Ruby -> NSString, NSNumber, ...

• Elimina la necesidad de proxies

• MacRuby compila contra LLVM -> Posibilidad de generar binarios nativos

objc

[[NSWindow alloc] initWithContentRect:styleMask:backing:defer:]

RubyCocoa

NSWindow.alloc.initWithContentRect_styleMask_backing_defer (...)

MacRuby

NSWindow.alloc.initWithContentRect( ..., styleMask:..., backing:..., defer...

Thursday, September 22, 11

Page 17: Charla ruby nscodermad

MacRubyObjective-C

@interface Book

@property (retain, nonatomic) NSString *title

- (void) addBookToLibrary:(NSString*) theLibrary- (void) insertPage: (Page*) thePage atPosition: (NSUInteger) position

@end

Rubyb = Book.newb.title = “My new book”b.addBookToLibrary “The Great Library”b.insertPage myPage, :atPosition => 4- OR -b.insertPage myPage, atPosition: 4

Thursday, September 22, 11

Page 18: Charla ruby nscodermad

MacRubyframework 'Cocoa'

class AppDelegate def windowWillClose n exit end

def hello sender puts "Hello World!" endend

delegate = AppDelegate.newapp = NSApplication.sharedApplicationapp.delegate = delegate

win = NSWindow. alloc. initWithContentRect [200,300,100,100], :styleMask => NSTitledWindowMask :backing => NSBackingStoreBuffered, :defer => false

win.title = "Hello NSCoder"win.delegate = delegate

button = NSButton.alloc.initWithFrame [10,10,80,50]button.title = "Hello!"button.target = delegatebutton.action = :hello

win.contentView.addSubview button

win.displaywin.orderFrontRegardlessapp.run

Thursday, September 22, 11

Page 19: Charla ruby nscodermad

MacRuby

• XCode (& InterfaceBuilder) compatible

Thursday, September 22, 11

Page 20: Charla ruby nscodermad

MacRuby• Aplicaciones subidas al Mac AppStore

• http://www.thumperapp.com/

• http://luckymac.com/ - Music Streaming

• http://redwoodapp.com/ - Spotlight in the cloud

Thursday, September 22, 11

Page 21: Charla ruby nscodermad

Scripting Bridge

• Interfaz que puede dar un programa para facilitar la comunicación con él

• Basado en Apple Events

• Antes de SB, esos Apple Events se enviaban, o bien con Apple Script o con un código en Objective-C no muy sencillo

• Con SB, los Apple Events se pueden enviar como un mensaje mas de Objective-C (Aparte de seguir usando AppleScript)

• Y por ello, accesible desde Ruby (RubyCocoa) o PyObjC

Thursday, September 22, 11

Page 22: Charla ruby nscodermad

SB y Ruby

• Copiar la ruta del fichero seleccionado en el Finder al clipboard

require 'osx/cocoa'include OSXOSX.require_framework 'ScriptingBridge'

finder = SBApplication.applicationWithBundleIdentifier_ “com.apple.finder”fileURL = NSURL.URLWithString_ finder.selection.get[0].URLsystem "echo #{fileURL.path} | pbcopy”

Thursday, September 22, 11

Page 23: Charla ruby nscodermad

SB y Ruby

• Obtener las canciones de tu iTunes

require 'osx/cocoa'include OSXOSX.require_framework 'ScriptingBridge'

iTunes = SBApplication.applicationWithBundleIdentifier_ "com.apple.iTunes"

iTunes.sources.each do |source| puts source.name source.playlists.each do |playlist| puts "\\-- #{playlist.name}" playlist.tracks.each do |track| puts "\t\\-- #{track.name}" end endend

Thursday, September 22, 11

Page 24: Charla ruby nscodermad

Fin

• Gracias ;)

• Use Ruby

Thursday, September 22, 11


Recommended