OVH Cloud OVH Cloud

vitesse AppleScript vs RubyAppleScript

4 réponses
Avatar
pere.noel
Hier j'ai installé RubyAEOSA une extension Ruby qui permet d'utiliser
les AppleEvent et les composents OSA.

j'ai la très heureuse surprise de constater qu'un script qui interroge
Address Book et nettement plus rapide (de l'ordre de la seconde) en
RubyAEOSA qu'en AppleScript (de l'ordre de la minute).

compte tenu que le script Ruby fait le même tell to Address Book que le
script AS, je m'intéroge sur les vitesses comparées...

qq'un aurait une explication ?
--
une bévue

4 réponses

Avatar
Obono
Le 22/12/2005 09:50, dans 1h7ytpz.ydppll1v7lwmyN%,
« Une bévue » a écrit :

Hier j'ai installé RubyAEOSA une extension Ruby qui permet d'utiliser
les AppleEvent et les composents OSA.


J'ai installé aussi le Ruby, mais mon petit neurone et moi on n'a pas
compris que couic à l'affaire... Et la doc ne nous a pas beaucoup aidés.
Ça marche comment ?
--
Olivier

Avatar
pere.noel
Obono wrote:

J'ai installé aussi le Ruby, mais mon petit neurone et moi on n'a pas
compris que couic à l'affaire... Et la doc ne nous a pas beaucoup aidés.
Ça marche comment ?


ruby est installé d'office sur macos x.

donc pour lancer un script de :

path/to/rubyaeosa-0.2.3/sample/

glisser le dossier sample dans une fenêtre de terminal puis faire :

ruby <le-nom-du-script>

that's all !!!

un conseil lire les scripts en question, ça aide, il doit y en avoir un
qui lance "Internet explorer", changer le nom du nav par son nav
préféré...

mes tous premiers essais de lecture du carnet d'adresse :

<script>
#!/opt/local/bin/ruby
require 'osx/aeosa'
require 'kconv'

def album_list
result = OSX.do_osascript %{
tell application "Address Book"
set a to first name of people
set b to last name of people
set c to company of people
set d to organization of people
set e to email of people
{a,b,c,d,e}
end tell
}
firstName = result[0].map {|i| i.to_rbobj }
lastName = result[1].map {|i| i.to_rbobj }
company = result[2].map {|i| i.to_rbobj }
organization = result[3].map {|i| i.to_rbobj }
email = result[4].map {|i| i.to_rbobj }
return firstName.map {|i| [ i,email.shift ] }
end

album_list.each do |f,l|
puts "#{f.toeuc.ljust(45)} : #{l}"
end
</script>

--
une bévue

Avatar
Jaypee
Obono wrote:
Le 22/12/2005 09:50, dans 1h7ytpz.ydppll1v7lwmyN%,


Hier j'ai installé RubyAEOSA une extension Ruby qui permet d'utiliser
les AppleEvent et les composents OSA.



J'ai installé aussi le Ruby, mais mon petit neurone et moi on n'a pas
compris que couic à l'affaire... Et la doc ne nous a pas beaucoup aidés.
Ça marche comment ?
Ruby est un langage de script comme Perl ou Python vieux de 10 ans

environ et venant du Japon. Son auteur l'a voulu "réjouissant" pour le
programmeur, c'est un langage à objets comme Java ou C++ mais nettement
moins "prise de tête".

On peut facilement étendre les classes du système par exemple :
class Integer
def deuxFois
self * 2
end
end
1.deuxFois
2
On peut aussi utiliser la "console ruby" irb et tout écrire sur une
ligne avec des point-virgules.
irb(main):002:0> class Integer; def deuxFois ; self * 2 ; end ; end
=> nil
irb(main):003:0> 1.deuxFois
=> 2
Si vous voulez calculer factorielle 100000, avec quelques minutes de
patience, vous aurez le résultat, Ruby étend spontanément le format de
ses entiers de manière naturelle sans effort pour le programmeur.

Ruby a aussi un Framework RubyCocoa qui permet de créer des applis Cocoa
avec Interface Builder et tout.

Ruby a aussi des interfaces avec les toolkits comme Tk, Gnome2/Gtk, Fox
(X11 seulement)...

Et ces derniers temps Ruby secoue le landernau du développement web en
concurrençant Java et J2EE avec le framework Ruby On Rails qui permet
de coder très vite une application web reposant sur une base de données.

Pour le reste Google est votre ami ;)
J-P


Avatar
Olivier
Mon Mac est tombé en panne hier dans la nuit.
J'espère reprendre mon apprentissage de Ruby
dans quelques jours, si tout va bien...
Merci à tous pour vos explications.
Olivier