Posted by superuser
Wed, 02 Mar 2011 08:21:00 GMT
Αν μιλάμε για Ruby on Rails και startups στην Ελλάδα ο συνειρμός είναι αναπόφεκτος, Skroutz. Μετά από επιθυμια του κοινού το αγαπημένο σας startup θα μας παρουσιάση τα μυστικά του σε ένα meetup που δε θα πρέπει να λείψει κανείς.
Ας αρχίσουμε από τα βασικά. Νέος χώρος, Colab Workspace στην Ερμού 44. Φιλόξενος χώρος στον οποίο όχι μόνο θα κάνουμε το event αλλά θα έχουμε και δικαίωμα χρήσης για 10 ώρες εντός ενός μήνα από το event καθώς και άφθονο εξαιρετικό καφέ. Η φιλοξενεία μας στο Colab για αυτόν το μήνα είναι μια χορηγία από το Skroutz και τους ευχαριστούμε διπλά για αυτό.
Σημειώστε την ημερομηνία, Τετάρτη 2 Μαρτίου λοιπόν στις 7:00 το απόγευμα. Και επειδή η Ruby δεν αρμόζει μόνο σε startups η πρώτη ομιλία θα γίνει από το Νίκο Μαρούλη, Senior System Engineer at On Telecoms, θα μας μιλήσει για χρήση της JRuby σε corporate περιβάλλοντα και ειδικά πώς να “ξεπετάξετε” μια Ruby on Rails εφαρμογή με Oracle και Glassfish. Στη συνέχεια τη σκυτάλη παίρνει η ομάδα του Skroutz για μια ενδελεχή ματιά στο stack τους και φυσικά ετοιμαστείτε από τώρα για βομβαρδισμό ερωτήσεων.
Ηδη συζητάμε για το επόμενο meetup στο οποίο θα ασχοληθούμε με Ruby + administration.
Τα λέμε λοιπόν στο Colab, την Τετάρτη 23 Φεβρουαρίου! Δηλώστε συμμετοχή στο Facebook
Rubyst.es
Ruby-Hellug
Posted in News, Ruby | Tags meetup, Ruby, rubystes | no comments
Posted by superuser
Mon, 08 Nov 2010 08:06:00 GMT
Την Πέμπτη 11 Νοεμβρίου στο Microsoft Innovation Center το ελληνικό group χρηστών της Ruby θα μιλήσει για τη νέα έκδοση Ruby on Rails 3. To Ruby on Rails είναι ένα framework που επιτρέπει στους προγραμματιστές να φτιάχνουν διαδικτυακές εφαρμογές γρήγορα και εύκολα υιοθετώντας ένα σύνολο από συμβάσεις που συντελούν σε καλύτερη ποιότητα του τελικού project. Πριν λίγους μήνες το δημοφιλές πλέον Ruby on Rails έφτασε στην έκδοση 3 και οι Rubystes θα σας παρουσιάσουν μερικές από τις σημαντικότερες αλλαγές. Θα καλυφθούν θέματα όπως η νέα εσωτερική δομή, routing, νέο activerecord και λοιπά. Οι ομιλητές είναι προγραμματιστές σε κάποια από τα πιο δυναμικά startups όπως Rento, HealthLeap αλλά και επιτυχημένοι freelancers. Περισσότερες λεπτομέρειες για το τελικό πρόγραμμα θα ακολουθήσουν σύντομα.
Οι ομιλίες θα διαρκέσουν μία ώρα και στη συνέχεια θα εγκαταστήσουμε Rails 3 στα μηχανήματα μας (όσοι δεν το έχουν κάνει ήδη) για να δούμε πρακτικά, μερικές από τις διαφορές αλλά και να δημιουργήσουμε τις βάσεις για εφαρμογές που μπορούμε να συνεχίσουμε στο επερχόμενο Athens Startup Weekend!
Παράλληλα, στο Microsoft Innovation Center, θα διεξαχθεί και το μηνίαιο meetup της κοινότητας Drupal με κεντρικό θέμα το theming.
Διαδικαστικά
Ημέρα: Πέμπτη 11 Νοεμβρίου 2010
Ώρα: 18:30
Toποθεσία: Microsoft Innovation Center, Λεωφ. Βασ. Σοφίας 103 (μετρό: στ. Μέγαρο Μουσικής)
Επειδή ο αριθμός των θέσεων είναι περιορισμένος, για την καλύτερη οργάνωση της εκδήλωσης παρακαλούμε δηλώστε συμμετοχή στο σχετικό Facebook event
Posted in RubyOnRails, Ruby | Tags athens, meetup, Ruby, rubystes | no comments
Posted by superuser
Fri, 26 Mar 2010 10:32:00 GMT
In a previous post i described how to install ruby 1.8 and 1.9 on win32 platforms using the rubyinstaller.
Here i’ll show you how to install one more implementation of ruby on win32 platforms (Windows XP / 7 tested!). I’m talking for jruby.
What is JRuby?
JRuby is a ruby implementation for the java virtual machine. You can execute all your ruby stuff using only the Java Virtual Machine(JVM), in the same way that Groovy, Scala, and Clojure are designed for the JVM.
This is incredibly useful because your unix admin rarely will install a Ruby VM for your needs in a server where there is nothing more than Java. I really love ruby and i have no time to master java, so jruby it’s a GREAT solution.
Jruby – at the moment – is the only solution to deploy a Ruby app on GAE (Google App Engine).
Installation
- Extract in your favorite place (i use C:\jruby-1.4.0)
- Set JRUBY_HOME variable in your jruby home dir (C:\jruby-1.4.0)
C:\>set JRUBY_HOME=C:\jruby-1.4.0
- Add JRUBY_HOME\bin in your environment path
C:\>path=%JRUBY_HOME%\bin;%PATH%
Check that C:\jruby-1.4.0\bin has been added in your path:
C:\>echo %PATH%
C:\jruby-1.4.0\bin;C:\Python25;C:\Ruby\bin;C:\MinGW\bin;c:\ora92\
bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program
Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Support Tools\;C:\j2sdk1.4.2_17\bin\;
That’s all! You’re ready to use your new ruby implementation in JVM.
C:\>jruby -v
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) C
lient VM 1.6.0_16) [x86-java]
Commands in Jruby: All the known commands in ruby are still valid, but you have to preceed them with jruby -S.
Posted in Ruby, Win32 | Tags jruby, Ruby, win32, Windows | no comments
Posted by superuser
Fri, 26 Feb 2010 08:41:00 GMT
Luis Lavena and the rubyinstaller group have made 2 very reliable versions of Ruby programming language for Windows platforms.
Unlike the old ruby installer, the 1.8.7 and 1.9.1 versions have been compiled with the MinGW compiler(v. 3.4.5) toolset. Easy installing for Windows is essential for the future of Ruby in the programming jungle, and RubyInstaller works perfectly good.
This article should be intended as a minimal guide to install both Ruby 1.8.7 and Ruby 1.9.1 on win32 platforms.
- Uninstall any previous installed Ruby version and remove the relative folders (for ex. C:\Ruby and/or C:\Ruby19 )
- Install Ruby 1.8.7-p249
- Accept the license (if you agree, of course)
- Select the destination path of your installation. (i use the default C:\Ruby). Below, in the same window
- Check the box Ruby executables to your PATH (IMPORTANT!) and “Associate .rb and .rbw files with this Ruby installation”
- Finish the installation

Ruby 1.8 is succesfully installed!
Now it’s time to install Ruby 1.9 .
- Install Ruby 1.9.1-p378
- Accept the license
- Select the destination path of your installation. (i use the default C:\Ruby19). Below, in the same window
- DO NOT select anything . Leave both check boxs unchecked.
- Finish the installation

Ruby 1.9 is succesfully installed!
To run Ruby 1.9 binaries you have to use absolute paths. C:\Ruby19\bin\whatever. That’s not so pretty!
To resolve this, i use an easy and smart method found on some discussions at the rubyinstaller google group.
The idea is to put some .bat (windows) scripts in the bin directory of the Ruby 1.8 installation to call internally the Ruby 1.9 binaries. In this way you do not have to add the Ruby 1.9 directory in your PATH env. variable. For my needs this work perfectly good.
In detail:
- Download Ruby-Bat.rar . Unrar it. Move the five included .bat files (gem19.bat, irb19.bat, rake19.bat, ri19.bat, ruby19.bat) in your ruby-1.8 (not 1.9) installation directory (in my case this is C:\Ruby\bin).
That’s all.
Open your command prompt and execute :
C:>irb19
C:>gem19 install rack
C:>ri19 array
C:>rake19 -h
It works!
If you want to know more, open with your favorite editor for example rake19.bat to see what’s inside:
@echo off
setlocal
set PATH=C:\Ruby19\bin;%WINDIR%\system32;%WINDIR%
ruby.exe -S rake %*
endlocal
If you need to make a custom ruby(v-1.9) binary just change the filename, substitute `rake` and save it in your ruby-1.8 (not 1.9) installation directory ( C:\Ruby\bin ). Not a perfect solution, but it just works as it should.
Posted in Ruby, Win32 | Tags install, Ruby, rubyinstaller, Windows | no comments
Posted by superuser
Sat, 05 Dec 2009 17:12:00 GMT
Η ομάδα Rubyst.es με χαρά ανακοινώνει την τρίτη συνάντηση των φίλων της Ruby την Πέμπτη 10 Δεκεμβρίου στις 6 το απόγευμα. Αυτή τη φορά έχουμε την τιμή να φιλοξενούμαστε στο Microsoft Innovation Center σε ένα εξαιρετικό χώρο με πολλή άνετη πρόσβαση για όλους. Θα προσπαθήσουμε να καλύψουμε θέματα για προχωρημένους και αρχάριους ενώ σε αυτή τη συνάντηση θα έχουμε μια ξεχωριστή σύνθεση ομιλητών από βετεράνους της Ruby και του Rails. Αναλυτικά:
Πέρα από τις κυρίως ομιλίες μας θα υπάρχει και μια σειρά μικρών, ολιγόλεπτων παρουσιάσεων και σας προσκαλούμε να παρουσιάσετε και εσείς αν το επιθυμείτε. Η λίστα ως προς το παρόν έχει ως εξής:
Σας περιμένουμε όλους την Πέμπτη 10/12 στις 6 το απόγευμα στο Microsoft Innovation Center (Βασ.Σοφίας 103, στάση Μετρό Μέγαρο Μουσικής)
Περισσότερα Rubyst.es , στην αντίστοιχη mailing list και στο Facebook group

Posted in News, Ruby | Tags Παρουσίαση, microsoft_innovation_center, Ruby, rubystes | no comments
Posted by superuser
Thu, 15 Oct 2009 04:22:00 GMT
Την Πέμπτη 15 Οκτωβρίου 2009, και ώρα 16:00 – 18:00, στη Τεχνόπολη, Γκάζι στα πλαίσια των εκδηλώσεων του Athens Digital Week θα γίνουν οι ακόλουθες παρουσιάσεις από τα μέλη της ομάδας μας:
- A blink into the Rails magic [Nick]
- Ruby on Rails and Web on Python [john]
- Creating administrator pages in a breeze [Panos]
- From PHP to Ruby On Rails [jim]
Περισσότερες λεπτομέρειες στη λίστα ηλεκτρονικού ταχυδρομείου
Φυσικά μην ξεχάσετε τη δεύτερη εκδήλωση αύριο 16/10 στο ΤΕΙ ΠΕΙΡΑΙΑ
-
Posted in RubyOnRails, News, Ruby | Tags Παρουσίαση, ΤΕΙ_Πειραιά, Rails, Ruby, RubyOnRails | no comments
Posted by superuser
Wed, 07 Oct 2009 18:32:00 GMT
Η ελληνική κοινότητα της Ruby (http://rubyst.es) διοργανώνει το
δεύτερο Athens Ruby Meetup στο ΤΕΙ Πειραιά την Παρασκευή 16 Οκτώβρη 19:30 στην Αίθουσα
λειτουργικών συστημάτων. Αν και η κοινότητα είναι σχετικά νεαρή και
ακόμα μικρή θα παρουσιασθούν θέματα που αφορούν αρχάριους και
προχωρημένους χρήστες της Ruby. Αναλυτικότερα θα γίνουν οι εξής
παρουσιάσεις:
- Deploying Rails applications στο appengine με JRuby [ PanosJee) ]
- Εναλλακτικά ruby web frameworks (Ramaze/Sinatra/…) [ vtypal ]
- Μetaprogramming σε Ruby [Jon Romero ]
- How-to make a Rails plugin [ Jim Myhreberg ]
- Open Discussion & QA
Στα πλαίσια της ανοιχτής συζήτησης τα μέλη θα συζητήσουν για θέματα
γύρω από τη Ruby αλλά και θα απαντήσουν σε απορίες κάθε ενδιαφερόμενου
είτε αρχάριου είτε προχωρημένου. Αν γράφετε ήδη σε Ruby ελάτε να
γνωριστούμε, αν όχι, ελάτε και θα μαγευτείτε από την καταπληκτική αυτή
γλώσσα, το οικοσύστημα της αλλά και την κοινότητα της!
2o Athens Ruby Meetup
Χάρτες του ΤΕΙ Πειραιά : map1 – map2 – map3
Google Maps και οδηγίες λεωφορείων
Διεύθυνση :
Δήμος Αιγάλεω, επί των οδών Π. Ράλλη & Θηβών 250.
Κτίριο Ε – Αίθουσα Ε02
Κτίριο Α – Αίθουσα Α116
Σχετικά με τη Ruby
Η Ruby είναι μια δυναμική γλώσσα προγραμματισμού που επιτρέπει στον
προγραμματιστή να γράφει ευκολοανάγνωστο κώδικα σε λίγες γραμμές. Τα
τελευταία χρόνια έχει μια ιδιαίτερη δυναμική χάρη στο web framework,
Ruby on Rails
Σχετικά με την ελληνική κοινότητα Ruby
Είμαστε μια νεοσύστατη κοινότητα προγραμματιστών που αγαπάμε να
γράφουμε προγραμμάτα σε Ruby. Θα μας βρείτε στο http://rubyst.es αλλά
και στη λίστα ηλεκτρονικού ταχυδρομείου http://groups.google.com/group/ruby-hellug
. Εχουμε κάνει μια συνάντηση εως τώρα αλλά έχουμε πολλές ιδέες για το
μέλλον και αναμένουμε και τη δική σου συμμετοχή για μια ενεργή
ελληνική κοινότητα γύρω από την αγαπημένη μας γλώσσα
Posted in News, Ruby | Tags Παρουσίαση, ΤΕΙ_Πειραιά, Ruby | no comments
Posted by superuser
Sat, 31 Jan 2009 07:38:00 GMT
Η πολυαναμενόμενη stable έκδοση 1.9 της Ruby είναι γεγονός. Μετά από εργασίες development πολλών χρόνων, μόλις χθές έγινε η ανακοίνωση έκδοσης της πρώτης σταθερής Ruby 1.9 δια στόματος του Yuki Sonoda.
Η έκδοση 1.9 είναι μια καταλυτική προσπάθεια της κοινότητας Ruby να εδραιώσει τη γλώσσα στην ελίτ του Object Oriented κόσμου. Ήδη η ruby μπορεί να τρέξει σε Java Virtual Machine (JVM) με τις ευλογίες της Sun, σε Windows χάρις στην ανάπυξη του IronRuby (συνεργάζεται άψογα με .NET) με την υποστήριξη της Microsoft, ενώ πλέον τρέχει και σε "έξυπνα" κινητά τηλέφωνα ((Ruby 1.9) Symbian, iPhone, Windows Mobile και RIM BlackBerry χάρις στο Rhomobile).
Οι κύριες αλλαγές στο 1.9 είναι η αλλαγή του αργού interpreter MRI με τον εξαιρετικά γρήγορο YARV (κατά μέσο όρο είναι 70% γρηγορότερος από τον 1.8.5 MRI!), και πλέον ο YARV υποστηρίζει πλήρως κωδικοποίηαη χαρακτήρων UTF-8, κάτι που λύνει τα προβλήματα που είχαμε με την επεξεργασία ελληνικών χαρακτήρων. Ελπίζω η νέα έκδοση της ruby να ωθήσει νέους και παλαιότερους έλληνες προγραμματιστές να ασχοληθούν με αυτή γιατί πραγματικά νομίζω το αξίζει.
-----
Κατεβάστε την νέα έκδοση μέσω ftp:
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip
Posted in Ruby | Tags Ruby, Stable, YARV | no comments
Posted by superuser
Mon, 29 Dec 2008 10:22:00 GMT
Χρόνια Πολλά και Ευτυχισμένο το 2009
Το κάτωθι χριστουγεννιάτικο δέντρο κατασκευάστηκε ορίζοντας την συνάρτηση παραγοντικού, υπολογίζοντας τις πρώτες 32 τιμές του και τυπώνοντας στο κέντρο. Ο κώδικας Ruby:
def factorial(n)
if n <1
raise "The argument must be > 0"
elsif n ==1
return 1
else
return n * factorial(n-1)
end
end
print "\n"
print "ΧΡΟΝΙΑ ΠΟΛΛΑ\n".center(72)
1.upto(32) do |m|
print "#{factorial(m)}\n".center(42)
end
ΧΡΟΝΙΑ ΠΟΛΛΑ
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
6227020800
87178291200
1307674368000
20922789888000
355687428096000
6402373705728000
121645100408832000
2432902008176640000
51090942171709440000
1124000727777607680000
25852016738884976640000
620448401733239439360000
15511210043330985984000000
403291461126605635584000000
10888869450418352160768000000
304888344611713860501504000000
8841761993739701954543616000000
265252859812191058636308480000000
8222838654177922817725562880000000
263130836933693530167218012160000000
Posted in Ruby | Tags Χριστουγενιάτικο_δέντρο, παραγοντική_συνάρτηση, Ruby | no comments
Posted by superuser
Tue, 18 Nov 2008 19:41:00 GMT
Μετά από την παρουσίαση του hpricot και τους τρόπους
ξεψαχνίσματος των σελίδων (x)html θα περάσουμε στο επόμενο στάδιο,
δλδ θα αρχίσουμε να ελέγχουμε και να μηχανοποιούμε τις εργασίες
πλοήγησης χρησιμοποιώντας το Mechanize (έχει καταγωγή από Python)
και εκεί θα δούμε πολύ ενδιαφέροντα πράγματα.
Αν πρέπει να ορίσω το Mechanize θα έλεγα πως είναι ένας αυτόματος υπολογιστικός
πλοηγητής κειμένου για τη γλώσσα προγραμματισμού ruby. Με το mechanize θα καταφέρουμε
να αυτοματοποιήσουμε τις εργασίες πλοήγησης, αφού θα μπορούμε να καλούμε ιστοσελίδες, να βρίσκουμε
και να επιλέγουμε συνδέσμους, να εισάγουμε στοιχεία σε φόρμες και να τις αποστέλλουμε. Αν
και το mechanize προβάλλει μόνο τα δυναμικά στοιχεία της σελίδας (links,
forms, buttons, ...) τα καλά νέα είναι πως συνεργάζεται - για την ακρίβεια
εξαρτάται από το hpricot, οπότε για τις στατικές πληροφορίες (κείμενο,
εικόνες, ...) θα καλούμε το hpricot. Πολλά έγραψα ας περάσω στα πειράματα
μου:
Εγκατάσταση
Ως συνήθως μέσω gems:
$ gem install mechanize --include-dependencies
Εξαρτήσεις και μέσο
Για κάθε παράδειγμα που ακολουθεί θα πρέπει να δηλώνονται:
require 'rubugems' # πιθανώς για windows Λ.Σ. να μην χρειάζεται
require 'mechanize'
agent = WWW::Mechanize.new
# agent.set_proxy("proxy.server.my", "8080") # MONON αν τρέχετε πίσω από proxy
Ο agent είναι στην ουσία το μέσο πλοήγησης. Αν πρέπει να κλικάρω σε ένα σύνδεσμο
ή να πατήσω ένα κουμπί θα καλέσω τον agent. Είναι αντικείμενο κλάσης WWW::Mechanize.
Πρώτο Τεστ
page = agent.get("http://www.google.gr/")
Η page (WWW::Mechanize::Page) αποτελείται από μια σειρά συστατικών που πιθανώς
να θέλουμε να εξετάσουμε {url}{meta}{title}{iframes}{frames}{links}{forms}.
Από αυτά τα πιο σημαντικά είναι οι σύνδεσμοι (links) που μας επιτρέπουν την πλοήγηση
και οι φόρμες που μας επιτρέπουν να εισάγουμε στοιχεία.
Για να έχετε μια γενική εικόνα μελετήστε τα περιεχόμενα της σελίδας με
pp page
ΣΥΝΔΕΣΜΟΙ (LINKS)
Το σύνολο των links που περιέχονται στη σελίδα είναι κλάσης WWW::Mechanize::List,
ενώ κάθε σύνδεσμος είναι τύπου WWW::Mechanize::Page::Link.
Εύρεση Όλων των Συνδέσμων
puts page.links # WWW::Mechanize::Page::List
Δεν είναι πολύ χρήσιμη αυτή η μορφή.
Αν θέλουμε όλο το κείμενο των links ή όλες τις διευθ.url των links, πολύ απλά θα
θα πρέπει να εφαρμόσουμε τη μέθοδο each στη λίστα.
# ___'Ολα τα ονόματα συνδέσμων__
page.links.each { |link|
puts link.text
}
# _____Όλες οι διευθύνσεις _________
page.links.each { |link|
puts link.href
}
Συνδυάζοντας τις δύο παραπάνω μπορούμε να αναπαράγουμε τα links σε κώδικα html
Για την ορθότητα του αποτελέσματος θα υποθέσουμε πως όλοι οι σύνδεσμοι είναι σε
απόλυτη διαδρομή δλδ ξεκινούν με http://www.google.gr/
page.links.each do |link|
puts "<a href=\"" + link.href + "\">" + link.text + "</a>"
end
Αν υπάρχει συνδυασμός σχετικών και απόλυτων διαδρομών συνδέσμων - όπως στην
περίπτωση της σελίδας google.gr, μπορείτε να λύσετε εύκολα το πρόβλημα.
Για παράδειγμα, στη συνέχεια κάνω ένα έλεγχο αν το link ξεκινάει από http (οπότε είναι
απόλυτη η διαδρομή), αν όχι προσθέτω το υπολλειπόμενο συστατικό δλδ το http://www.google.gr.
BASE = "http://www.google.gr"
page.links.each do |link|
if link.href =~ /^http/ then
puts "<a href=\"" + link.href + "\">" + link.text + "</a>"
else
puts "<a href=\"" + BASH + link.href + "\">" + link.text + "</a>"
end
end
Καθόλου άσχημα! Κατάφερα να συμμαζέψω όλα τα links και τα έχω έτοιμα προς χρήση.
Τι γίνεται αν θέλω κάποιο συγκεκριμένο link;
Εύρεση Συνδέσμων
Βρείτε κάποιο σύνδεσμο δίνοντας pp page.links. Για παράδειγμα:
#<WWW::Mechanize::Page::Link
#"Gmail"
#"http://mail.google.com/mail/?hl=el&tab=wm">
Παρατηρήστε πως μπορώ να διακρίνω ένα σύνδεσμο από το κείμενο του ("Gmail")
ή από το url του ("http://mail.google.com/mail/?hl=el&tab=wm").
Αν αναζητώ ένα link γνωρίζοντας ακριβώς το κείμενο του συνδέσμου ή το url
page.links.text('Gmail')
page.links.href('http://mail.google.com/mail/?hl=el&tab=wm')
Φυσικά τις περισσότερες φορές θα χρησιμοποιήσουμε μόνο κάποιο συστατικό του κειμένου
ή του url για να βρούμε το σύνδεσμο που ψάχνουμε. Σε αυτή την περίπτωση
χρησιμοποιούμε RegExp = regular expressions. Η ιδέα δεν αλλάζει, αλλά μπορεί να έχω
παραπάνω από ένα σύνδεσμο ως αποτέλεσμα αναζήτησης.
page.links.text(/mail/) # βρίσκει τα links που περιέχουν τη λέξη mail
page.links.href(/mail/) # βρίσκει links με url που περιέχει mail
Και τώρα ήρθε η ώρα να κλικάρουμε ένα link. Θυμάστε τον agent;
Λοιπόν η μορφή είναι agent.click [link] όπου [link] χρησιμοποιήστε τους άνωθεν τρόπους αναζήτησης
page_gmail = agent.click page.links.text("Gmail")
Διαπιστώστε πως μεταφερθήκατε στη σελίδα του Gmail με
pp page_gmail
Από κει και πέρα μπορείτε να πλοηγηθείτε ατελείωτα και να αυτοματοποιήσετε τις
αναζητήσεις σας. Να ψάξετε για νέα links και να συμπληρώσετε φόρμες. Αυτό θα παρουσιάσω στο δεύτερο μέρος του Mechanize.
Εύρεση, Συμπλήρωση και Αποστολή Μιας Φόρμας
Ας υποθέσουμε πως θέλουμε να βρούμε από το youtube.com βίντεο με θέμα "athens olympic games". Η κοινή πρακτική είναι να πάμε με τον browser στο youtube.com και στην πρώτη φόρμα που θα βρούμε να δηλώσουμε στο πεδίο αναζήτησης "athens olympic games". Ακριβώς την ίδια διαδικασία θα ακολουθήσω και με το mechanize.
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get("http://www.youtube.com/")
Μέχρι εδώ όλα μας είναι γνωστά από την προηγούμενη παρουσίαση. Δώστε pp page και εστιάστε στη φόρμα:
#<WWW::Mechanize::Form
{name "searchForm"}
{method "GET"}
{action "/results"}
{fields
#<WWW::Mechanize::Form::Field:0x348ea88 @name="search_query", @value="">
#<WWW::Mechanize::Form::Field:0x348de58 @name="search_type", @value="">}
{radiobuttons}
{checkboxes}
{file_uploads}
{buttons}>
Αυτή είναι η πρώτη φόρμα αναζήτησης στην αρχική σελίδα του youtube.com . Για να την επιλέξω (παρατηρήστε πως υπάρχουν και άλλες) θα πρέπει να δηλώσω ή το όνομα της - δλδ. searchForm - ή τον controller(action) που θα επεξεργαστεί τη φόρμα μετά την αποστολή - δλδ /results. Πολλές φορές θα βρείτε φόρμες όπου δεν εμφανίζεται το όνομα τους, οπότε και θα πρέπει να δηλώνετε αναγκαστικά τον controller.
vres_form = page.form_with( :action => '/results' )
Στη φόρμα υπάρχουν δύο πεδία, to ένα με όνομα/@name "search query" και το άλλο με "search_type". Και τα δύο πεδία είναι κενά (@value = ""). Ας θέσουμε λοιπόν στο πεδίο search_query την τιμή "athens olympic games"
vres_form.search_query = "athens olympic games"
Δείτε πως ανανεώθηκε η τιμή της μεταβλητής @value του πεδίου search_query:
pp vres_form
#<WWW::Mechanize::Form
{name "searchForm"}
{method "GET"}
{action "/results"}
{fields
#<WWW::Mechanize::Form::Field:0x343e498
@name="search_query",
@value="athens olympic games">
#<WWW::Mechanize::Form::Field:0x343dca0 @name="search_type", @value="">}
{radiobuttons}
{checkboxes}
{file_uploads}
{buttons}>
Το μόνο που μας απομένει είναι να "πατήσουμε" το κουμπί αποστολής/submit. Πολύ απλά
myvideo_links = vres_form.click_button
Η νέα σελίδα (myvideo_links) περιέχει τα links των βίντεο σχετικά με τους ολυμπιακούς αγώνες της Αθήνας. Όπως και στο πρώτο μέρος μπορούμε να αποσπάσουμε τις ονομασίες των links και των url διευθύνσεων ή ότι άλλο επιθυμείτε να βρείτε. Για παράδειγμα :
myvideo_links.links.href(/watch\?v=/).each do |lnk|
puts lnk.text
end
Opening Ceremony Olympic Games 2004 Athens
2004 Olympic 800m Final
Fani Halkia wins 400mH in Athens Olympic Games 2004
Taekwondo Athens Olympic games 2004 -58 Men Chinese Tiapei vs Mexico Round 1
The Emblem of the 2004 Athens Olympic Games
2004 Olympic Judo Highlights 1/2
Olympic games in Athens - Syrtaki dancing - Lifetime moment
........
Posted in Ruby | Tags πλοήγηση, σύνδεσμοι, φόρμες, href, Mechanize, Ruby | no comments