Ubuntistas vol.6

39

description

The magazine of the greek ubuntu community

Transcript of Ubuntistas vol.6

Page 1: Ubuntistas vol.6
Page 2: Ubuntistas vol.6

Να μαστε πάλι. Αργοπορημένοι λιγάκι ...

τόσο ώστε να μπορούμε να μπορούμε να

αριθμίσουμε το τεύχος ως 6 + ½ , XD.

Η αλήθεια είναι ότι μαζευτήκαμε πολλοί,

και πολλά μεγάλα ονόματα της Ελληνικής

δημοσιογραφίας, και του χώρου του ΕΛΛΑΚ.

Ήταν μεγάλη η προσφορά ποιοτικών

άρθρων, και δυσκολευτήκαμε να κόψουμε

όποια από τα άρθρα ... δεν συμφωνούσαν

με τις γραμμές τις συντακτικής επιτροπής

με την πρόφαση ότι δυστυχώς ο χώρος μας

ήταν περιορισμένος...

Εντάξει, ήπιαμε και λίγο παραπάνω στα

επιτυχημένα release parties σε όλη την

επικράτεια και αργήσαμε να ξυπνήσουμε

λιγάκι, τον επόμενο μήνα το πρωί ... Έτσι

πήγε μεσημέρι Δεκέμβρη και μετά από 1-2

φραπέδες ... να' μαστε.

Την ίδια χρονική περίοδο είχαμε και την

παρουσία της κοινότητας στο Athens Digital

WeekΜια εβδομάδα ενημέρωσης του κοινού

στις νέες τεχνολογίες, μέσα στις οποίες είναι

και τα Linux.

Η πικρή, όμως, αλήθεια όμως είναι

ότι από τους σημαντικότερους λόγους της

καθυστέρησης ήταν στον ανασχηματισμό

(πραγματικό όχι όπως αλλού...) της ομάδας

συντονιστών-διαχειριστών του φόρουμ η

οποία παρά το καλό και θετικό κλίμα

χρειάστηκε αρκετές εβδομάδες για να βρει

που πάει...

Η κυκλοφορία του Ubuntu - 9.10

Karmic Koala έφερε στην κοινότητα μας

ένα πολύ μεγάλο αριθμό νέων χρηστών

που αύξησαν κατακόρυφα την ανάγκη για

τεχνική υποστήριξη. Αισίως πλέον το fo-

rum αριθμεί πάνω από 4000 μέλη συνολικά!

Και μπορούμε γενναία και με στόμφο να

πούμε ότι είμαστε από τις δημοφιλέστερες

κοινότητες Linux – ΕΛ/ΛΑΚ στην Ελλάδα.

Στο τεύχος που κατεβάσατε στους

υπολογιστές σας θα βρείτε πολλά και

ενδιαφέροντα άρθρα που όμως τα

περισσότερα είχαν γραφτεί μέχρι και τον

περασμένο Οκτώβριο (γκχχχ ... γκχχχ...).

Ότι αφορά το Athens Digital Week και τα re-

lease parties θα τα βρείτε στο τεύχος 7.

Καλή ανάγνωση!

Σημείωμα από τη σύνταξη...

Ομάδα Περιοδικού:• Αλμπανόπουλος Νίκος (nikosal):Επιμελητής Κειμένων - [email protected]

• Βαρσάμης Ιωάννης (mrjack):Συντάκτης - [email protected]

• Διαμαντής Δημήτρης (ftso):Συντάκτης - [email protected]

• Ευθυμίου Νίκος (nisok):Συντάκτης - - [email protected]

• Ζηντίλης Μάριος:Επιμελητής Κειμένων - [email protected]

• Κουράτορας Κωνσταντίνος:Σελιδοποίηση - [email protected]

• Κωστάρας Γιάννης (hawk):Συντάκτης - [email protected]

• Παπαδόπουλος ∆ημήτρης (Dimitris):Συντάκτης - [email protected]

• Παραπονιάρης Ηλίας (ilpara):Συντονισμός, ∆ημόσιες Σχέσεις - [email protected]

• Πούλιος Κωνσταντίνος (logari81):Συντάκτης - [email protected]

• Σαββίδης Σόλων (g00fy):Συντάκτης, ∆ημόσιες Σχέσεις - [email protected]

• Στεφανίδης Φώτης (atermon):Συντάκτης - [email protected]

• Τσιαουσίδης ∆ημήτρης (griper):Συντάκτης - [email protected]

• Φωτιάδης Φίλιππος (filippos.xf):Συντάκτης - [email protected]

• ΧατζηπαντελήςΠαντελής (kalakouentin):Συντάκτης - [email protected]

Τεύχος 6Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος 2009

Page 3: Ubuntistas vol.6

15 Ελευθέριος Κοσμάς

ΣΥΝΕΝΤΕΥΞΗ

13 KUBUNTU 9.10 Karmic Koala

DISTRO

11 Η σύντομη ιστορία του Openshot

06 Γραφικά περιβάλλοντα εργασίας

ΑΠΟΨΕΙΣ

04 Νέα & ειδήσεις από το χώρο του linux

NEA-ΕΙΔΗΣΕΙΣ

31 Νέα & ανακοινώσεις της κοινότηταςubuntu-gr

UBUNTU-GR

29 Torcs

ΠΑΙΧΝΙΔΙΑ

27 Video editors

26 Xaos

REVIEWS

20 R

26 Η γλώσσα προγραμματισμού Ruby

18 Εισαγωγή στην QT (Μέρος Β')

HOW-TO

Περιεχόμενα

Η άδεια διάθεσης του περιεχομένου του ubuntistasΤα άρθρα που περιλαμβάνονται στο περιοδικό διατίθενται υπό τη άδεια της Creative Commons Attribution-By-Share Alike 3.0 Unported license. Αυτό σημαίνει ότι μπορείτε να προ- σαρμόσετε, να αντιγράψετε, να διανείμετεκαι να διαβιβάσετε τα άρθρα αλλά μόνο υπό τους ακόλουθους όρους: πρέπει να αποδώσετε την εργασία στον αρχικόσυντάκτη με κάποιο τρόπο (αναφορά ονόματος, email, url) και στο περιοδικό αποδίδοντας τη ονομασία του (Ubuntistas).Δεν επιτρέπεται να αποδίδετε το άρθρο/α με τρόπο που να το/α επικυρώνετε ως δική σας εργασία. Και εάν κάνετεαλλαγές, μεταβολές, ή δημιουργίες πάνω σε αυτήν την εργασία, πρέπει να διανείμετε την προκύπτουσα εργασία μετην ίδια άδεια, παρόμοια ή συμβατή.Περίληψη άδειας: http://tinyurl.com/5nv7kn - Πλήρης άδεια: http://tinyurl.com/yqontc

To ubuntu

Το ubuntu linux είναι ένα λειτουργικό σύστημα. Με περιβάλ-λον εργασίας gnome το φωνάζουμε ubuntu, με kde το φωνά-ζουμε kubuntu. Είναι πλήρες(!), τεχνολογικά προηγμένο(!),και εύκολο στην χρήση από οποιονδήποτε(!). Στα αποθετή-ρια του ubuntu υπάρχουν διαθέσιμες κυριολεκτικά χιλιάδεςεφαρμογές σχεδόν για οτιδήποτε(!) … για επαγγελματική,επιστημονική, εκπαιδευτική, και οικιακή χρήση. Τόσο τοubuntu όσο και οι εφαρμογές του είναι Ελεύθερο Λογισμικό/ Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ), δηλαδή διατίθενταιελεύθερα και στην Ελλάδα υποστηρίζονται από την άτυπηαλλά πολύ δραστήρια κοινότητα ubuntu-gr. Περισσότεραστο http://www.ubuntu-gr.org.

Η κοινότητα ubuntu-gr

Η κοινότητα ubuntu-gr ανήκει στα μέλη της και είναι ανοιχτήσε όλους!Eίναι το μέρος όπου έμπειροι και άπειροι(!) χρή-στες συζητάνε ότι τους απασχολεί, ιδέες, ερωτήματα, πρακτι-κά ζητήματα, οργανωτικά θέματα, και κυρίως τεχνικά προβλή-ματα. Αποτελείται από ανθρώπους με εμπειρία στην πληρο-φορική αλλά κυρίως από απλούς χρήστες, οι οποίοι εθελο-ντικά συμμετέχουν i) στην δημιουργία-ανάπτυξη του λογισμι-κού, ii) στην μετάφρασή του στην ελληνική γλώσσα, iii) στηνπροώθηση-διάδοση του στην Ελλάδα, και κυρίως iv) στηνπαροχή αμεσότατης(!) και υψηλής ποιότητας(!) τεχνικήςυποστήριξης σε άλλους ελληνόφωνους χρήστες. Λειτουργείμε αυτό-οργάνωση και προσπαθούμε οι αποφάσεις να λαμ-βάνονται όσο το δυνατόν πιο δημοκρατικά από εκείνουςπου προσφέρουν-δραστηριοποιούνται συστηματικά. Η ελ-ληνική κοινότητα τουUbuntu διαθέτει μέχρι στιγμής φόρουμ,λίστα ηλ. ταχυδρομείου, κανάλι συζητήσεων τύπου IRC,καθώς και το περιοδικό Ubuntistas. Για όλα αυτά υπάρχουνοδηγίες και links στο http://www.ubuntu-gr.org.

Το περιοδικό ubuntistas

ΤοUbuntistas, το ηλεκτρονικό περιοδικό της ελληνικής κοινό-τητας του ubuntu (ubuntu-gr), κυκλοφορεί ελεύθερα κάθεδίμηνο, με πρώτο τεύχος το Νοέμβριο - Δεκέμβριο 2008.Περιέχει νέα, πληροφορίες, συνεντεύξεις, παρουσιάσεις, ο-δηγούς, και άρθρα σχετικά με το ubuntu. Το περιοδικό είναιανοιχτό προς όλους όπως και το GNU/Linux! Ο καθέναςμπορεί να συμμετέχει ενεργά στην δημιουργία του, να αρθρο-γραφήσει, να προτείνει ιδέες και να κάνει τις επισημάνσεις/ παρατηρήσεις του.

Page 4: Ubuntistas vol.6

των Ευθυμίου Νίκου, Πούλιου Κωνσταντίνου, Τσιαουσίδη ∆ημήτρη, Χατζηπαντελή Παντελή

ΝΕΑ & ΕΙΔΗΣΕΙΣ

Νέα & Ειδήσεις...από τον κόσμο του linux και όχι μόνο!

Ubuntu Developer Week

Το δεύτερο Ubuntu Developer Week (UDW) γιατο 2009 έλαβε χώρα από τις 31 Αυγούστου μέχριτις 4 Σεπτεμβρίου. Πρόκειται για μια διαδικτυακήσυνάντηση στο κανάλι #ubuntuclassroom στοirc.freenode.net που διαρκεί πέντε ημέρες και στηνΕλλάδα αντιστοιχεί σε απογευματινές-βραδινέςώρες.

Κάθε ώρα παρουσιάζεται από κάποιοσυντελεστή του Ubuntu ένα διαφορετικό θέμαπρος βοήθεια κι επιμόρφωση κυρίως όσωνενδιαφέρονται να συνδράμουν οι ίδιοι στηνανάπτυξη της διανομής. Αυτή τη φορά υπήρχαν

τα κλασσικά θέματα, όπως μία γενική εισαγωγήστην ανάπτυξη του Ubuntu, η διαδικασίαδημιουργίας πακέτων και η επίλυση σφαλμάτων,αλλά επίσης και αρκετά πιο εξειδικευμέναθέματα. Ορισμένα από αυτά ήταν η διαδικασίααξιολόγησης κι εντοπισμού σφαλμάτων τουπυρήνα, η δημιουργία ασφαλών προγραμμάτων,η δημιουργία ιστοσελίδων με το Django καιτο θέμα των μεταφράσεων από την σκοπιάτου προγραμματιστή. Ενδιαφέρουσα ήτανεπίσης η παρουσίαση του έργου “hundredpaper cuts” το οποίο έχει ως στόχο τηνεξάλειψη 100 απλών σφαλμάτων ευχρηστίαςπου θα απασχολήσουν τον μέσο χρήστη τουUbuntu την πρώτη μέρα μετά την εγκατάσταση.Τέλος, με την ευκαιρία του ανοίγματος τουκώδικα του Launchpad, φιλοξενήθηκαν πολλέςπαρουσιάσεις που αφορούσαν τόσο τηνπεραιτέρω ανάπτυξή του όσο και τη χρήση τωνεργαλείων του. Για παράδειγμα η χρήση τουσυστήματος χτισίματος πακέτων Soyuz είναι μίαπαρουσίαση που θα φανεί χρήσιμη σε όσουςδημιουργούν κι ανεβάζουν πακέτα σε προσωπικάτους αποθετήρια στο Launchpad. Όλες οιπαρουσιάσεις του UDW είναι διαθέσιμες στηνσελίδα http://tinyurl.com/2wsmu9.

Emesene 1.5 με Webcam γίνεται; Γίνεται!

Το Emesene είναι ένας δημοφιλής WindowsMessenger Client με πολλούς υποστηρικτέςπαγκοσμίως. Όλοι ξέρουμε το αγαπημένο μαςEmesene, αλλά ίσως να μη γνωρίζουν όλοι ότιη καινούργια έκδοση υποστηρίζει και δικτυακήκάμερα!

Φαίνεται ότι είναι πολύ βελτιωμένο διότι, εκτός

4

Page 5: Ubuntistas vol.6

ΝΕΑ & ΕΙΔΗΣΕΙΣ

από την υποστήριξη δικτυακής κάμερας, η νέαέκδοση με την κωδική ονομασία “Awesome” είναισυμβατή με το πιο πρόσφατο Windows LiveMessenger, το οποίο σημαίνει ότι δέχεται χωρίςκανένα πρόβλημα λογαριασμούς τύπου @msn.Οι προγραμματιστές του όμως δε σταμάτησανεδώ, προσφέροντας νέες πρόσθετες λειτουργίες,υποστήριξη για συνδέσεις HTTP (μέσω proxy),πλήθος μεταφράσεων και ορισμένες βελτιώσειςστο γραφικό περιβάλλον της εφαρμογής. Έγινανουσιαστικές αλλαγές με τους developers ναεστιάζουν περισσότερο στη λειτουργία και όχι τόσοστο «φαίνεσθαι». Οι... ανυπόμονοι μπορούν νακατεβάσουν το Emesene 1.5 από την επίσημηιστοσελίδα του έργου www.emesene.org.

«Απελευθέρωση» του Launchpad

To Launchpad είναι το βασικό εργαλείο ανάπτυξηςτου Ubuntu αλλά και πολλών άλλων έργωνανοιχτού κώδικα.

Ενσωματώνει μεταξύ άλλων μια βάσηδεδομένων σφαλμάτων, ένα σύστημαμεταφράσεων, ένα σύστημα χτισίματος πακέτωνκαι φιλοξενίας τους σε προσωπικά αποθετήρια

κι ένα σύστημα φιλοξενίας και διαχείρισηςκώδικα. Πριν από έξι μήνες σας μεταφέραμετο χρονοδιάγραμμα ανοίγματος του κώδικα τουLaunchpad, και σήμερα αυτή η υπόσχεση έχειγίνει πραγματικότητα και με το παραπάνω. Τοαρχικό χρονοδιάγραμμα που ανακοινώθηκε απότην Canonical στις αρχές του χρόνου προέβλεπετη διάθεση μέρους του κώδικα του Launchpadυπό κάποια άδεια ανοιχτού λογισμικού. Τελικά,πιστοί στο ραντεβού τους οι προγραμματιστέςτου Launchpad ανακοίνωσαν την διάθεση τουκώδικά τους στις 21 Ιουλίου επιφυλάσσοντας μίαέκπληξη: διέθεσαν ολόκληρο τον κώδικα κι όχιμόνο τα τμήματα που είχαν υποσχεθεί. Η άδειαπου επιλέχθηκε είναι η “GNU Affero General Pub-lic license, version 3”. Αυτή η εξέλιξη πρόκειται νααπαλλάξει την Canonical από πλήθος επικριτώνπου την κατηγορούσαν για τη μέχρι τώρα στάσητης. Επίσης αναμένεται να χαρίσει στο Launchpadνέους χρήστες και υποστηρικτές.

Πηγη: http://tinyurl.com/m8vda5

Μάχη με το DMCA

Μέσα στο Φθινόπωρο, σε ομοσπονδιακόδικαστήριο στο Λος Άντζελες κρίθηκε ότι η Veoh,μία online video hosting υπηρεσία παρόμοια μετο YouTube, πληροί τις προϋποθέσεις για ναχαρακτηριστεί ως "ασφαλής λιμένας" όσον αφοράπαραβιάσεις του νόμου περί DMCA (Digital Mil-lennium Copyright Act). Ως άμεση συνέπεια, ηυπηρεσία προστατεύεται από τυχών αγωγές γιακαταβολή χρηματικών αποζημιώσεων, οι οποίεςαφορούν παράβαση πνευματικών δικαιωμάτωνκαι έχουν διαπραχθεί από τους χρήστες της.

Ο ενάγων, Universal Music Group (UMG),

ισχυρίστηκε ότι σε πολλά video που έχουνανεβεί στην τοποθεσία της Veoh περιλαμβάνονταιηχογραφήσεις των οποίων τα πνευματικάδικαιώματα ανήκουν στο UMG.

Η απόφαση αποτελεί μια μεγάλη νίκηγια όλες τις ηλεκτρονικές υπηρεσίες πουφιλοξενούν "user-generated περιεχόμενο",συμπεριλαμβανομένων και άλλων υπηρεσιώνφιλοξενίας αρχείων video (όπως το YouTube),χώρων αποθήκευσης μουσικής (music lockering)(όπως MP3tunes.com), ανάρτησης φωτογραφιών(όπως το Flickr), αλλά και εγγράφων (όπωςScribd). Το δικαστήριο απέρριψε διάφορεςθεωρίες που παρουσιάστηκαν από το UMG καιπρέσβευαν ότι το ίδιο, ως ιδιοκτήτης πνευματικήςιδιοκτησίας, είχε "κλαπεί" των δικαιωμάτων του σεαρκετές περιπτώσεις.

Ο Καθηγητής Eric Goldman από τη ΝομικήΣχολή στo Πανεπιστήμιο της Santa Clara εξέδωσεμια πλήρη ανάλυση, αλλά κάποια αξιοσημείωτα

5

Page 6: Ubuntistas vol.6

ΝΕΑ & ΕΙΔΗΣΕΙΣ

σχόλια είναι ότι:"Οι διαδικασίες επιβολής του νομοσχεδίου

DMCA για την αστυνόμευση κατά των πιθανώνπαραβιάσεων πνευματικών δικαιωμάτων, δηλαδήτον εντοπισμό των εν δυνάμει παραβιάσεωντων σχετικών νόμων, βαρύνουν απευθείαςτους κατόχους των πνευματικών δικαιωμάτων".Επίσης "η αποστολή ενός καταλόγου καλλιτεχνώναπό πλευράς της εταιρίας σε έναν πάροχουπηρεσιών, δε δημιουργεί την υποχρέωση εκμέρους του παρόχου υπηρεσιών να αστυνομεύειτην υπηρεσία του για υλικό που σχετίζεται με τουςαναφερόμενους καλλιτέχνες". Ακόμα το "UMGδεν απέδειξε ότι το νομοσχέδιο DMCA επιβάλλεισε ένα φορέα παροχής υπηρεσιών την εφαρμογήτεχνολογίων φιλτραρίσματος στο περιεχόμενοτου. Πέραν τούτου, δεν απέδειξε ότι το ίδιο,ως κάτοχος των πνευματικών δικαιωμάτων,επιβάλλεται να εφαρμόζει τέτοιες τεχνολογίες(φιλτραρίσματος) κατόπιν συμφωνίας με τρίτους(!) ή για κάποιο επιθυμητό χρονοδιάγραμμα(!!)της επιλογής του." Επιπρόσθετα "αν και τοUMG υποστηρίζει ότι η Veoh θα μπορούσε ναανιχνεύσει η ίδια, τα ονόματα καλλιτεχνών σεvideo των οποίων εντοπίστηκαν να παραβιάζουντα πνευματικά δικαίωματα του UMG, [...] τοDMCA δεν επιβάλλει ότι η επιβάρυνση γιατην εξακρίβωση τέτοιων παραβιάσεων πέφτειστον φορέα παροχής υπηρεσιών". Τέλος,σημαντικό είναι ότι πιστοποιείται, ότι "τέτοιουείδους φορείς παροχής υπηρεσιών μπορούν νααποκλειστούν από τον χαρακτηρισμό τους ως"ασφαλή λιμένα", μονάχα εφόσον έχουν τόσο τοδικαίωμα και την ικανότητα να ελέγξουν τέτοιες τιςπαράνομες δραστηριότητες, αλλά και παράλληλααντλούν άμεσο οικονομικό όφελος από αυτές τις

παραβιάσεις".Κατά τη λήψη αυτών των αποφάσεων, το

δικαστήριο απλώς εφαρμόζει το υφιστάμενονομοσχέδιο DMCA. Κανένα νέο νόμο. Αλλά τοβασικό είναι ότι με την εφαρμογή του νομοσχεδίουDMCA σε μία online video hosting υπηρεσία γιαπρώτη φορά, η απόφαση προχωρεί σε μεγάλοβαθμό προς την αποσαφήνιση των κανόνων πουισχύουν σε αυτές τις υπηρεσίες. Αν και αυτόπρόκειται για μία απόφαση από ένα περιφερειακόδικαστήριο, και η UMG και είναι σχεδόν σίγουραότι θα την εφεσιβάλλει, η απόφαση είναι πολύκαλά νέα για τους πολλές "Web 2.0" εταιρείες πουαντιμετωπίζουν μηνύσεις ή απειλές για αγωγέςεναντίων τους από τους ιδιοκτήτες πνευματικώνδικαιωμάτων. Η νομική μάχη για τα πνευματικάδικαιώματα στο Διαδίκτυο τώρα αρχίζει. Τώρα τοπεδίο αντιπαράθεσης είναι η Μουσική, ο Κώδικαςείναι (ήδη) το επόμενο.

Αλλαγή δεδομένων για την εκκίνηση τωνLinux

Μία απο τις συνήθεις κατηγορίες πρός τα Linuxήταν το αργό boot. Βέβαια η απάντηση πουέβγαινε από τα στόματα όλων των linuxαδων ήτανότι δεν χρειαζόμαστε να κλείνουμε το PC μας,σχεδόν ποτέ. Αλλά στους κατόχους laptop το bootείναι κάτι που δημιουργούσε μια δυσανασχέτηση.

Κάτι όμως άλλαξε από τον χειμώνα του 2009,ήρθε ο πυρήνας 2.6.28 και το ext4. Στην αρχήείχαν κυκλοφορήσει αρκετές φήμες για χαμέναδεδομένα, όμως έσβησαν γρήγορα με την πάροδολίγων μηνών. Αν και στο Athens Digital Week είδαπολλούς χρήστες που ακόμα δεν είχαν κάνει τηνμετάβαση φοβούμενοι προβλήματα αστάθειας.Κάτι που δεν ισχύει.

Για να αλλάξετε υπάρχον partition ο καλύτεροςτρόπος είναι να το κάνετε back up και να τοφορμαρετε.αλλιώς μπορείτε να χρησιμοποιήσετετις εντολές:

main.cpp

tune2fs -O extents,uninit_bg,dir_index/dev/yourfilesystem

και

fsck -pDf /dev/yourfilesystem

Τα αποτελέσματα όλων των benchmarksήταν εντυπωσιακά. Μερικά μπορείτε να βρείτεστην ιστοσελίδα http://tinyurl.com/37pxhu.Μια αναλυτική λίστα με τις καινοτομίες και ταχαρακτηριστικά του ext4 μπορείτε να βρείτε στηνσελίδα (http://kernelnewbies.org/Ext4).

6

Page 7: Ubuntistas vol.6

του Κωστάρα Γιάννη

ΑΠΟΨΕΙΣ

Γραφικά περιβάλλοντα εργασίαςΜια ιστορική αναδρομή στα γραφικά περιβάλλοντα στο πέρασμα του χρόνου!

Γραφικά Περιβάλλοντα Εργασίας

Τα γραφικά περιβάλλοντα εργασίας (GUI – Graph-ical User Interface) συνέβαλαν σε πολύ σημαντικόβαθμό στη διάδοση των Η/Υ ακόμα και στουςμη ειδήμονες. Η εγκυκλοπαίδεια Britannica[3] ορίζει το γραφικό περιβάλλον εργασίας ωςένα πρόγραμμα που δίνει τη δυνατότητα στοχρήστη να επικοινωνεί με τον Η/Υ με τη βοήθειασυμβόλων, εικονιδίων και δεικτικών συσκευών(pointing devices). Πολλά όμως από τα πράγματαπου σήμερα θεωρούμε ως δεδομένα προέρχονταιαπό ιδέες κάποιων ανθρώπων που δε βρήκανάμεση ανταπόκριση. Στη συνέχεια θα μιλήσουμεγια την ιστορία των γραφικών περιβαλλόντωνεργασίας, το παρόν και το μέλλον.

Ιστορικό

Η πρώτη αναφορά για γραφικά περιβάλλονταεργασίας υπάρχει πίσω στο 1945 από τον Van-naver Bush [1, 3, 8] ο οποίος οραματίζεταιτην εποχή που οι άνθρωποι θα επικοινωνούνμε τις μηχανές χρησιμοποιώντας ένα γραφικόπεριβάλλον και ονομάζει τον φανταστικόυπολογιστή του MEMEX.

O Douglas C. Engelbart, ο οποίος εργαζότανμε την ομάδα του στο ARPA (Advanced Re-search Project Agency) του υπουργείου Άμυνας

των Η.Π.Α., από το οποίο ξεκίνησε και το Internet,ανέλαβε να υλοποιήσει αυτήν την ιδέα. Το 1963,κατασκεύασε το πρώτο ποντίκι.

Λίγο αργότερα, όταν ο Engelbart δενκαταφέρνει να συνεχίσει τη χρηματοδότησή τουαπό το υπουργείο Άμυνας, καταφεύγει με τουςσυνεργάτες του σε ένα ερευνητικό εργαστήριοστο Palo Alto της Καλιφόρνιας, το Palo Alto Re-search Center (PARC), που ανήκει στη Xerox.Ένα από τα μεγαλύτερα επιτεύγματα του PARCυπήρξε ο Xerox/Alto, ο πρώτος προσωπικός Η/Υπου παρουσιάστηκε το 1973. Οι προδιαγραφέςτου εντυπωσιακές για την εποχή εκείνη. Είχε

το πρώτο γραφικό περιβάλλον εργασίας, τοSTAR, το οποίο περιείχε όλα εκείνα τα στοιχείαμε τα οποία είμαστε σήμερα συνηθισμένοι:παράθυρα, εικονίδια, μενού κλπ. [3, 4]. Τοπεριβάλλον αυτό εξομοίωνε την απλότητα τουγραφείου ενός απλού εργαζόμενου, όπου χαρτιάεπικαλύπτονται και μεταφέρονται κατά βούλησηενώ διάφορες λειτουργίες εκτελούνται χωρίς τηνανάγκη πληκτρολόγησης πολύπλοκων εντολών.[8]. Ήταν εφοδιασμένος με ποντίκι και οχρήστης μπορούσε να εκτυπώσει ό,τι έβλεπεστην ασπρόμαυρη οθόνη του σ’ έναν εκτυπωτήlaser. Δυστυχώς, οι τεχνικοί δεν κατάφεραν ναπείσουν τη Xerox να βγάλει στην αγορά ένατέτοιο μηχάνημα, αφού το κόστος του έφτανετα 40000 δολάρια! Στις αρχές της δεκαετίαςτου 1980 η Xerox εγκατέλειψε την αγορά τωνΗ/Υ και επικεντρώθηκε στα φωτοαντιγραφικάμηχανήματα.

Το 1979, ο Steve Jobs, ιδρυτής της Apple,δέχτηκε μια πρόσκληση να επισκεφθεί το PARC.Όπως ομολόγησε και ο ίδιος, τα επιτεύγματα πουείδε εκεί τον άφησαν άφωνο. O Jobs, έπεισε τοδιοικητικό συμβούλιο της Apple να επενδύσει στηνέα τεχνολογία. Το 1983, η Apple παρουσιάζει τοLisa Office System, το οποίο εισήγαγε καινοτομίεςόπως διπλό κλικ εικονιδίων, μενού, μπάρα μενού,και το γνωστό κάλαθο αχρήστων. Το Lisa OS

7

Page 8: Ubuntistas vol.6

ΑΠΟΨΕΙΣ

υποστήριζε ακόμα preemptive πολυεπεξεργασία.

Η τιμή του συστήματος (10000 δολάρια) τοκαταδίκασε όμως σε εμπορική αποτυχία. Στομεταξύ, τα PC (που πρωτοπαρουσίασε η IBM το1981) έδειχναν να κυριαρχούν στην αγορά ειςβάρος των Apple II. Το 1984, ο Jobs παρουσιάζειτο δεύτερο project του, τον Macintosh.

Παρά του ότι είναι πολύ πιο εύχρηστος απότον IBM PC, κοστίζει 1000 δολάρια παραπάνωκαι έχει πολύ λιγότερες εφαρμογές. Ο Jobs όμως

επιμένει, υιοθετώντας την τεχνολογία WYSIWYG(What You See Is What You Get) η οποία σουδίνει τη δυνατότητα να εκτυπώνεις ότι βλέπειςστην οθόνη σου σε έναν εκτυπωτή laser, και τοDesktop Publishing από την Adobe. Η δικαίωσηάργησε αλλά ήρθε το 1987 όταν ο Mac πουλούσεμε τρομερό ρυθμό.

Στο μεταξύ κι άλλοι κατασκευαστέςπροσπαθούν να δημιουργήσουν γραφικάπεριβάλλοντα για τα συστήματά τους. Το 1984,το ΜΙΤ είχε ξεκινήσει το project Athena με σκοπότη δημιουργία μιας πλατφόρμας που θα επέτρεπετην αποστολή γραφικών μέσα από το δίκτυο γιασυστήματα UNIX. Το αποτέλεσμα ήταν το σύστημαX-Windows.

Το X.Desktop της αγγλικής ΙΧΙ Ltd κατάφερνενα κρύψει σε σημαντικό βαθμό το «δύστροπο»λειτουργικό σύστημα UNIX που υπήρχε από κάτωτου, με αρκετές καινοτομίες όπως αυτή του «σύρε-και-ρίξε» (drag ‘n drop) ή τη δυνατότητα ρύθμισηςκαι τροποποίησης της συμπεριφοράς του.

Το 1982, ο Jay Miner, ένας μηχανικός τηςεταιρίας παιχνιδιών Atari, ιδρύει με έναν παλιότου συνάδελφο την Hi-Toro για να υλοποιήσει τηνιδέα του για μια 16-μπιτη «υπερ-παιχνιδομηχανή».Το αποτέλεσμα είναι η Amiga. Τα πράγματαόμως από οικονομική άποψη δεν πάνε καθόλουκαλά, και τον επόμενο χρόνο η Amiga Inc.αγοράζεται από την Commodore, η οποία το1985 παρουσιάζει έναν επαναστατικό προσωπικόυπολογιστή, την Amiga 1000. Το λειτουργικότης σύστημα, το Workbench, υποστήριζε κι αυτόpreemptive σύστημα πολυεπεξεργασίας [9, 12](preemptive multitasking), κάτι που μόνο πιοσύγχρονες εκδόσεις των Windows, 98 και ΝΤ,υποστηρίζουν.

Η Atari με τη σειρά της παρουσιάζει το ίδιο έτοςτο Atari ST 520 με στόχο να χτυπήσει την αγοράτου Mac.

8

Page 9: Ubuntistas vol.6

ΑΠΟΨΕΙΣ

Στο μεταξύ, ο Jobs, φεύγει από την Ap-ple, και το 1988 ιδρύει την NeXT η οποίαπαρουσιάζει το NeXT Computer, το μηχάνηματης επόμενης δεκαετίας, ένα πρωτοποριακόμηχάνημα με εντυπωσιακή εμφάνιση, πολλέςδυνατότητες επεξεργασίας πολυμέσων και έναπολύ καλό GUI. Για άλλη μια φορά το προϊόν είναιπολύ ακριβό για να επιτύχει στην αγορά.

Η γνωστή μας Microsoft μπαίνει στο παιχνίδιτο 1982 όταν συνεργάζεται με την Apple γιατη δημιουργία εφαρμογών για τον Mac. Ηκυριαρχία της πλατφόρμας IBM-PC μαζί με το

λειτουργικό της, το MS-DOS, οδηγεί τη Microsoftστην παρουσίαση, το 1985, των Microsoft Win-dows 1.0, το οποίο βασίζεται στο DOS [9]. ΤαWin-dows είναι δύσχρηστα με όχι ελκυστική εμφάνιση.Δυο χρόνια αργότερα εμφανίζεται η έκδοση 2.0η οποία υποστήριζε επικαλυπτόμενα παράθυρα.Στο μεταξύ, η Microsoft συνεργάζεται με την IBMγια τη δημιουργία τουOS/2, του πρώτου 32-μπιτουλειτουργικού συστήματος, το οποίο εμφανίζεταιτο 1988. Η κυριαρχία της πλατφόρμας IBM-PC και DOS (κυρίως λόγω χαμηλού κόστους καιπληθώρας εφαρμογών) είναι φανερή.

Το 1990, η Microsoft παρουσιάζει την έκδοση3.0 των Windows. Επιτέλους, οι χρήστες τωνσυμβατών IBM μπορούν να δουλεύουν σ’ έναπεριβάλλον που μοιάζει με Mac αν και τα Win-dows υστερούν σε λειτουργικότητα και ευκολίααπό το Macintosh. Μέσα σ’ ένα χρόνο η Microsoftέχει πουλήσει 30 εκατομμύρια αντίτυπα των Win-dows. Ακολουθεί η έκδοση 3.1 (με διορθωμένακάποια λάθη της προηγούμενης έκδοσης) και στη

συνέχεια η έκδοση 3.11 που επιτρέπει τη σύνδεσητου υπολογιστή με δίκτυο.

Η χαριστική βολή σε κάθε αντίπαλο της Mi-crosoft δίνεται τον Αύγουστο του 1995, ότανκυκλοφορούν τα Windows 95. Το νέο λειτουργικόσύστημα μπορεί πλέον να κοιτά στα μάτια τονανταγωνισμό. Πέραν των άλλων υποστηρίζουντην τεχνολογία «Plug ‘n Play» που επιτρέπει στουςχρήστες να προσθαφαιρούν εύκολα εξωτερικέςσυσκευές στον υπολογιστή τους.

Παράλληλα, έχουν παρουσιαστεί τα WindowsNT τα οποία κερδίζουν μερίδιο στους σταθμούςεργασίας (workstations) από το UNIX. Με τηνέκδοση 98, η Microsoft διορθώνει πολλά απότα λάθη της προηγούμενης έκδοσης κάνοντας τολειτουργικό της ακόμα πιο εύχρηστο. Στα τέλητης δεκαετίας, η Microsoft κατέχει το 95% τηςαγοράς των λειτουργικών συστημάτων για τουςπροσωπικούς υπολογιστές. Όντας ο κυρίαρχοςτης αγοράς, η Microsoft παρουσιάζει τα πολύεπιτυχημένα XP, ενώ η επόμενη έκδοση, τα Vistaδεν είχαν την επιτυχία που ανέμενε η Microsoft, με

9

Page 10: Ubuntistas vol.6

ΑΠΟΨΕΙΣ

συνέπεια να αντικατασταθούν με την αναμενόμενηέκδοση, με τα Windows 7.

Στους σταθμούς εργασίας, η Microsoft κάνειμεγάλα βήματα προόδου. Τα ΝΤ αντικαθίστανταιαπό τα 2000 όπου εισάγεται το Active Direc-tory, μια υλοποίηση του LDAP αλλά με πολλάπαραπάνω καλούδια, στη συνέχεια από τα 2003και τέλος από τα 2008 τα οποία διαθέτουν έναπλούσιο ρεπερτόριο εντολών, τα power tools, πουεπιτρέπουν τη διαχείρισή τους από τη γραμμήεντολών όπως το Unix.

Στο μεταξύ, το 1991, ένα νέο λειτουργικόκάνει την εμφάνισή του στους προσωπικούςυπολογιστές, το Linux. Βασισμένο στο Unix, τοLinux ήταν η ιδέα ενός Φινλανδού φοιτητή, τουLinus Torvalds [10]. Η πορεία του Linux κι αυτήεντυπωσιακή. Είναι το μόνο λειτουργικό σύστημαπου διατίθεται δωρεάν και μέσα σε λιγότερο απόμια δεκαετία είναι το μόνο λειτουργικό που μπορείνα απειλήσει την πρωτοκαθεδρία των Windowsστους προσωπικούς υπολογιστές. Το Linuxδιαθέτει ανοιχτή αρχιτεκτονική (προερχόμενη

από το X-Windows του Unix) πράγμα που τουεπιτρέπει να δεχθεί πολλά διαφορετικά GUI.Τα γραφικά αυτά περιβάλλοντα ονομάζονταιδιαχειριστές παραθύρων (window managers) καιμερικά από τα πιο διαδεδομένα είναι τα KDE,GNOME, AfterStep και WindowMaker.

Καθότι δωρεάν, υπάρχουν σήμερα δεκάδεςδιανομές, οι οποίες εξυπηρετούν πολλούς

διαφορετικούς σκοπούς, από εκπαίδευση, μέχριασφάλεια. Μερικές από τις πιο γνωστές διανομέςείναι: Ubuntu, Fedora/Redhat, Suse, Mandriva,Knoppix/Knoppel, Gentoo, Debian, FreeBSD,Slackware, OpenSolaris κ.ά. Το Linux διαθέτειπλέον μια πληθώρα εφαρμογών, ανάλογες αυτώντων Windows, ενώ υπάρχει μια πολύ μεγάληκοινότητα που το υποστηρίζει.

Το μέλλον

Τα γραφικά περιβάλλοντα έκαναν τηνχρήση των Η/Υ ευκολότερη στην εκμάθηση καιπιο ευχάριστη. Τα διάφορα συστατικά τους(εικονίδια, μενού κ.λπ.) είναι πλέον μέρος τηςκουλτούρας μας. Και η εξέλιξη αυτή συνεχίζεταιπροδιαγράφοντας ένα μέλλον γραφικό.

Από πλευράς Microsoft, ήδη έχουνκυκλοφορήσει τα Windows 2008 (η εξέλιξη τωνNT) και μόλις πρόσφατα τα 7 (η εξέλιξη τωνXP/Vista) με το γραφικό περιβάλλον Aero πουέκανε την εμφάνισή του στα Vista και το οποίουπόσχεται ένα πιο αποτελεσματικό περιβάλλονεργασίας.

Ο Jobs επέστρεψε στην Apple και εξέλιξε τοMac OS X το οποίο βασίζεται στο NeXT Stepκαι βρίσκεται πλέον στην έκδοση Leopard. Ηκίνηση αυτή έδωσε νέα πνοή στην Apple τηςοποίας τα οικονομικά πήγαιναν από το κακό στοχειρότερο. Η επιστροφή του Jobs συνοδεύτηκεαπό την εμφάνιση του iMac, ενός υπολογιστή μεεντυπωσιακή εμφάνιση προσανατολισμένου στοInternet. Για το Linux, η εμφάνιση του KDE4, του πιο δημοφιλούς ίσως window manager,δίνει περισσότερες δυνατότητες στο χρήστη πουπλέον δεν έχει να ζηλέψει τίποτα από τις ευκολίες

10

Page 11: Ubuntistas vol.6

ΑΠΟΨΕΙΣ

των Windows. Ενώ, το επίσης γνωστό GNOME,βρίσκεται ήδη στην έκδοση 2.

Ας μην ξεχνάμε και τη μεγάλη διάδοση τωνυπολογιστών χειρός που φέρουν διαφορετικέςαπαιτήσεις απ’ αυτές των προσωπικώνυπολογιστών και θα παρουσιάσουν νέεςκαινοτομίες στον τρόπο που χειριζόμαστετους υπολογιστές. Ήδη, υπάρχουν γραφικάλειτουργικά συστήματα και γι’ αυτές τις συσκευές,όπως το Microsoft Windows CE, το Palm OS κ.ά.

Αλλά αυτά είναι μόνο η αρχή. Η ισχύς τωνηλεκτρονικών υπολογιστών έχει επιτρέψει τηχρήση τρισδιάστατων γραφικών και συσκευώνεικονικής πραγματικότητας που γρήγορα θαβρουν χρήση και στα γραφικά περιβάλλοντατων λειτουργικών συστημάτων. Τα τρισδιάσταταπεριβάλλοντα εργασίας (3D desktop) έχουν ήδηκάνει την εμφάνισή τους και θα αποτελέσουντη νέα επανάσταση με τον τρόπο πουαλληλεπιδρούμε με τους Η/Υ. Παραδείγματααποτελούν τα TaskGallery, Surface ή iTable της

Microsoft ή το Project Looking Glass της SUNMicrosystems. Πολλές από αυτές τις ιδέες τωνκέντρων έρευνας και ανάπτυξης των διαφόρωνεργαστηρίων υπολογιστών θα βρουν το δρόμοτους στην καθημερινή ζωή με στόχο να κάνουντην αλληλεπίδρασή μας με τους υπολογιστές πιοεύχρηστη και πιο παραγωγική.

Αναφορές

1. Βρυώνης Π. (1999),«Γραφικό περιβάλλον εργασίας»,ΒήμαRAM, 24 Νοεμβρίου 1999.

2. Apple History,http://tinyurl.com/ylfmhnp.

3. Britannica Encyclopedia (2000),http://tinyurl.com/ykzkfqo.

4. Edwards Alistair D.N.,“The Rise of the Graphical User Interface”,Dep. of Computer Science,

University of York, UK,http://tinyurl.com/yfpq5pr.

5. GNOME,http://www.gnome.org.

6. ‘Graphical User Interfaces’,http://tinyurl.com/ygxopn3.

7. KDE,http://www.kde.org.

8. Mesa Andy F. (1999),A history of a user interface,http://tinyurl.com/yj6omlv.

9. Petzold Charles (1998),Programming Windows,Microsoft Press.

10. RAM (1999),«Linux, ο σφετεριστής»,τεύχος 124, Απρίλιος 1999.

11. Sinha Anoop,“User Interfaces: Survey Information andThoughts”,http://tinyurl.com/ykh2dpe.

12. Tanenbaum A.S. (1993),Σύγχρονα Λειτουργικά Συστήματα, Τόμος Α’,Παπασωτηρίου, μετ. Π. Γεωργιάδης.

13. ‘The first computer mouse’,http://tinyurl.com/4pmz.

11

Page 12: Ubuntistas vol.6

του Πούλιου Κωνσταντίνου

ΑΠΟΨΕΙΣ

Η σύντομη ιστορία του OpenShotΈνας μη-γραμμικός επεξεργαστή βίντεο ανοιχτού κώδικα για το linux, χτισμένο με Python, GTK, και MLT Framework.

«Έχω μία απλή αποστολή: Τηδημιουργία ενός μη γραμμικούεπεξεργαστή βίντεο ανοιχτούκώδικα για Linux. Πριν απόεμένα, πολλοί το προσπάθησαν

χωρίς επιτυχία αλλά για κάποιο λόγο νιώθωυποχρεωμένος να το δοκιμάσω κι εγώ.Καταγράφω το ταξίδι μου σε ένα ιστολόγιο γιανα μπορούν όλοι να το διαβάσουν. Θα είναι έναδύσκολο ταξίδι και μπορεί να μην τα καταφέρωνα γυρίσω ζωντανός. Κρατηθείτε κι απολαύστετην διαδρομή! Παρεμπιπτόντως ... το έργο τοονομάζω Επεξεργαστής Βίντεο Openshot».

Με αυτά τα λόγια προλογίζει ο δημιουργόςτου Openshot, Jonathan Thomas, το έργο πουεπίσημα ξεκίνησε τον Αύγουστο του 2008. Επειδήπιστεύω ότι το Ελεύθερο Λογισμικό / ΛογισμικόΑνοιχτού Κώδικα (ΕΛΛΑΚ) δεν είναι κυρίωςκώδικας αλλά κυρίως άνθρωποι, θα ήθελα να σαςμεταφέρω τη σύντομη αλλά πολύ ενδιαφέρουσαιστορία αυτού του έργου από την ανθρώπινησκοπιά της.

Η ιστορία ξεκίνησε ουσιαστικά στις αρχές του2008 όταν ο Jonathan Thomas δοκίμασε στον

υπολογιστή του μία έκδοση Ubuntu και μέσωαυτού μπήκε στον κόσμο του Linux. Μετάαπό τον αρχικό ενθουσιασμό του σκόνταψε όμωςστο πρόβλημα ενός επεξεργαστή βίντεο πουθα ικανοποιούσε τις απαιτήσεις του. Όπωςδηλώνει ο ίδιος δοκίμασε όσους επεξεργαστέςβίντεο μπόρεσε να βρει αλλά κανένας τους δενικανοποίησε τα τρία απλά κριτήρια που είχε θέσει:απλότητα, δυνατότητες και σταθερότητα. Έτσιμετά από μερικούς πειραματισμούς αποφάσισετελικά να ξεκινήσει την δημιουργία ενός νέουεπεξεργαστή βίντεο.

«Έχω μία απλή αποστολή: Τη δημιουργίαενός μη γραμμικού επεξεργαστή βίντεο

ανοιχτού κώδικα για Linux. Πριν από εμένα,πολλοί το προσπάθησαν χωρίς επιτυχία αλλάγια κάποιο λόγο νιώθω υποχρεωμένος να τοδοκιμάσω κι εγώ. Παρεμπιπτόντως ... το έργοτο ονομάζω Επεξεργαστής Βίντεο Openshot»

Το πλέον αξιοσημείωτο της όλης ιστορίαςείναι ότι ο Jonathan Thomas αν κι εργαζότανεπαγγελματικά ως προγραμματιστής δεν είχεκαμία εμπειρία ούτε στον χώρο του Linux, ούτεστον χώρο του προγραμματισμού επεξεργασίαςβίντεο. Επιπλέον οι γλώσσες προγραμματισμούπου γνώριζε και χρησιμοποιούσε (C#, .NET

Framework) δεν ενδεικνύονταν για χρήση σεLinux. Και σαν να μην έφταναν όλα αυτάαποφάσισε να ακολουθήσει την συμβουλή ενόςφίλου του και να καταγράψει την όλη προσπάθειασε ένα ιστολόγιο μη έχοντας ασχοληθεί μειστολόγια στο παρελθόν. Υπό αυτές τις συνθήκεςκάποιος θα βιαζόταν να προβλέψει ότι τοεγχείρημα αυτό θα έληγε σύντομα άδοξα. Ηπραγματικότητα όμως δε θα αργούσε να τονδιαψεύσει.

Τα πρώτα βήματα πριν από την έναρξητου έργου ήταν η επιλογή της Python ωςγλώσσας προγραμματισμού, της βιβλιοθήκηςGTK+ για το γραφικό περιβάλλον, τουολοκληρωμένου περιβάλλοντος ανάπτυξηςEclipse για την συγγραφή του κώδικα και τηςάδειας GPL-3 για τη διάθεση του κώδικα. ΟJonathan Thomas περιγράφει στο ιστολόγιο τουwww.openshotvideo.com πώς κατέληξε σε αυτέςτις επιλογές και πώς έμαθε να χειρίζεται γλώσσεςπρογραμματισμού και βιβλιοθήκες μέχρι πρότινοςάγνωστες σε αυτόν.

Από την επιλογή του ονόματος Open-Shot και την επίσημη έναρξη του έργου κιέπειτα συνεχίζεται στο παραπάνω ιστολόγιο ηπεριγραφή, των όποιων πειραματισμών καθώςκαι των προβλημάτων που προέκυπταν αλλάκαι των ενδεχόμενων λύσεων. Από σχετικά

12

Page 13: Ubuntistas vol.6

ΑΠΟΨΕΙΣ

απλά προβλήματα όπως η χρήση στοιχείων τηςGTK+ για τη σχεδίαση του χρονοδιαγράμματοςή το σύρσιμο και την εναπόθεση αντικειμένων,μέχρι πολυπλοκότερα ζητήματα όπως η επιλογήτης κατάλληλης βιβλιοθήκης μίξης βίντεο/ήχου.Ιδιαίτερα σε ότι αφορά το τελευταίο ζήτημα ενώαρχικά είχε επιλεγεί η βιβλιοθήκη Gnolin και σεαυτην βασίστηκε η πρώτη έκδοση του Open-Shot τον Δεκεμβρίο του 2008, στην συνέχειααντικαταστάθηκε από την βιβλιοθήκη MLT.

Ο Jonathan Thomas περιγράφει τις επαφέςπου είχε με τους ανθρώπους πίσω από την εξέλιξητων δύο αυτών βιβλιοθηκών και παρουσιάζει τηνβοήθεια που έλαβε, δείχνοντας ότι πίσω από ταέργα ΕΛΛΑΚ βρίσκονται πάντα άνθρωποι πουέχουν όνομα κι επώνυμο ή έστω ψευδώνυμο,άνθρωποι προσιτοί μέσω λιστών mail ήκαναλιών IRC. Τελικά η καλύτερη υποστήριξηκαι τεκμηρίωση οδήγησε στην επικράτηση τηςβιβλιοθήκης MLT.

Μετά την πρώτη πρακτικά λειτουργική έκδοσητου OpenShot τον Απρίλιο του 2009, προστέθηκε

μέσα στο μήνα Μάιο μια μεγάλη πληθώραχαρακτηριστικών που άρχισαν να προσελκύουνχρήστες οι οποίοι δοκίμασαν το OpenShot,εντόπισαν σφάλματα, πρότειναν βελτιώσεις και,γιατί όχι, συμμετείχαν στην περαιτέρω ανάπτυξητης εφαρμογής.

Υπό αυτές τις συνθήκες προστέθηκαν τουςμήνες Ιούνιο και Ιούλιο πολλά νέα χαρακτηριστικάφέρνοντας το OpenShot στο επίπεδο ενόςπλήρως λειτουργικού μη γραμμικού επεξεργαστήβίντεο. Στην ήδη μεγάλη λίστα με τις δυνατότητέςτου συμπεριλαμβάνονται μεταξύ άλλων:

• Υποστήριξη πληθώρας φορμάτ βίντεο καιήχου (FFmpeg).

• Αλλαγή μεγέθους, διαίρεση, αποκοπή κιαρπαγή κλιπ.

• Μεταβάσεις βίντεο με προεπισκόπηση.

• Σύνθεση, υπέρθεση εικόνων, υδατογραφίες.

• Δημιουργία τίτλων και κυλιόμενων τίτλωναρχής/τέλους.

• Υποστήριξη SVG.

• Επεξεργασία/Δημιουργία κλιπ καρέ-καρέ.

• Χρονοδιάγραμμα με υποστήριξησυρσίματος/εναπόθεσης.

• Υποστήριξη Key Frame.

• Πρότυπα μεταβάσεων και μασκών.

• Εφέ αργής/γρήγορης κίνησης.

• Μίξη και επεξεργασία ήχου.

• Πρότυπα για εφέ κίνησης με Key Frame.

• Εφέ μετακίνησης/εστίασης σε εικόνες.

Στους μήνες Αύγουστο και Σεπτέμβριοπροστέθηκαν μεταφράσεις του OpenShot σετουλάχιστον 29 γλώσσες και η δυνατότηταεγκατάστασης του μέσω πακέτων .deb ή μέσωενός αποθετηρίου PPA. Αν είσαστε περίεργοινα δοκιμάσετε αυτήν την αξιόλογη εφαρμογή σεUbuntu 9.10, προσθέστε στις πηγές λογισμικούσας το παρακάτω αποθετήρι:

deb http://ppa.launchpad.net/jonoomph/openshot-edge/ubuntukarmic main

Κι εγκαταστήσετε το OpenShot από τοναγαπημένο σας διαχειριστή πακέτων (π.χ. Synap-tic Package Manager).

13

Page 14: Ubuntistas vol.6

του Στεφανίδη Φώτη

DISTRO

KUBUNTU 9.10 Karmic KoalaΓια μια επιφάνεια εργασίας στην εποχή της κοινωνικής δικτύωσης.

Η ανάπτυξη της διανομής Ubuntu με γραφικόπεριβάλλον KDE (K Desktop Environment)κρίθηκε ως επιλογή χαμηλής προτεραιότητας γιατην Canonical, παρόλα αυτά όμως η εταιρείατη χαρακτηρίζει ως επίσημα υποστηριζόμενηδιανομή. Θα πω ότι η πρώτη μου επαφή μεLinux, μια δεκαετία πριν, με χειραγώγησε στοΚ-DE (προφέρεται κα-ντε-ε, λόγω γερμανικήςκαταγωγής). Φανατικός τότε του ευέλικτου Kon-queror, ως File Manager, ως FTP Client, ως WebBrowser, δε μπορούσα να φανταστώ ότι θα τοναποχωριστώ εύκολα.

Τα τελευταία χρόνια, η μετάβαση απότην έκδοση 3 στην 4, με τον πηγαίο κώδικανα γράφεται εκ νέου, αποδείχθηκε οδυνηρήγια πολλούς. Πλέον αναζητώ πρωτίστωςσταθερότητα, και τα τελευταία δύο χρόνιαχρησιμοποιώ GNOME. Όμως ενδόμυχα καρτερώτη στιγμή που θα ολοκληρωθεί η «κυοφορία» αυτήκαι σας διαβεβαιώ ότι πλησιάζει γοργά. Με τηνανακοίνωση της νέας και τελευταίας έκδοσης 9.10

ένα εξάμηνο πριν την κυκλοφορία της 10.04 LTS,το KDE αρχίζει και δείχνει τα δόντια του σε θέματασταθερότητας και αισθητικής.

Υπάρχει μάλιστα και έκδοση για υποφορητούςμε την ενσωμάτωση της πρώιμης τεχνολογίαςPlasma Netbook. Απώτερος στόχος είναι ηολοκλήρωση της υλοποίησης Plasma στηνεπόμενη LTS (Lucid Lynx).

Με την ανακοίνωση της νέας έκδοσης 9.10ένα εξάμηνο πριν την κυκλοφορία της 10.04LTS, το KDE αρχίζει και δείχνει τα δόντια τουσε θέματα σταθερότητας και αισθητικής.

Υποψιάζομαι ότι ήδη ο «ανταγωνιστής»GNOME δείχνει λιγάκι γερασμένος μπροστά στηνεξέλιξη του KDE! Η προβληματική της εξέλιξηςτου KUBUNTU εντοπίζεται, κατά τα λεγόμενατου Jonathan Riddell, κυρίως στη βελτίωση τουkbluetooth, στη στασιμότητα της εφαρμογήςδιαμοιρασμού αρχείων και στην επιλογή τουνέου πλοηγητή διαδικτύου. Λέγεται ότι σύντομαθα αντικατασταθεί ο Konqueror με τον Arora,πλοηγητή βασισμένο στη μηχανή HTML webkit.

Τα κύρια γνωρίσματα του KDE 4.3.2στηρίζονται στο διαχειριστή παραθύρων KWinγια τρισδιάστατα γραφικά εφέ, στο κέλυφος

επιφάνειας εργασίας Plasma με πολλές και νέεςδυνατότητες παραμετροποίησης, στο διαχειριστήαρχείων Dolphin με προεπισκοπήσεις τωνμεμονωμένων τύπων αρχείων, στον KRun-ner για τη γρήγορη εύρεση πληροφοριών καιεκτέλεση προγραμμάτων και τέλος στην εφαρμογήSystem Settings για την καθολική ρύθμισητου συστήματος, των περιφερειακών και τηςεπιφάνειας εργασίας. Ας δούμε παρακάτω τι νέοθα συναντήσουμε.

Η παρούσα έκδοση εστιάζει επίσης σε λύσειςSocial Media. Ειδικότερα, θα βρείτε τις εξήςεφαρμογές:

14

Page 15: Ubuntistas vol.6

DISTRO

• KDE Microblogging Plasma widget.Συνδεθείτε από την επιφάνεια εργασίας σαςστις σελίδες twitter.com και identi.ca

• Google Calendar Plasma widget.Παρακολουθήστε το ημερολόγιό σας.

• Facebook Plasma widget. Συνδεθείτε μετους φίλους σας και κεράστε τους καφέ.

• KDE Image plugins. Flickr μέσω Digikam.

• Choqok. Διαθέσιμο προς εγκατάσταση γιαμια πληρέστατη εφαρμογή microblogging.

• OpenDesktop Social Plasma widget.Συνδεθείτε με ομοϊδεάτες γείτονες.

Από αυτές τις νέες δυνατότητες εξαιρώ μερικάγερασμένα και κουρασμένα άλογα σαν κι εμέναπου αδυνατούν να αντιληφθούν τις ανάγκες τηςνέας γενιάς για κοινωνική δικτύωση!

• Μεγάλη προσπάθεια έγινε για τηνενσωμάτωση στην εμφάνιση του OpenOffice

του προεπιλεγμένου θέματος συστήματοςOxygen. Το παράθυρο διαλόγου για τοάνοιγμα αρχείων είναι πλέον του KDE.

• Η πρωτοβουλία Ayatana έχει ενοποιήσει τοσύστημα ειδοποιήσεων για τα δύο δημοφιλήγραφικά περιβάλλοντα, KDE και GNOME.Για τις εφαρμογές ηλ. αλληλογραφίας καιάμεσων μηνυμάτων η ειδοποίηση δε θασας ζαλίζει πλέον, στην κρίση σας πότε θαενημερωθείτε για νεότερα.

• Ο εγκαταστάτης Bling απέκτησε νέαεμφάνιση.

• Το πρόγραμμα αναπαραγωγής Amarokδέχτηκε αρκετές αισθητικές βελτιώσεις καιέχει επιτέλους τις δυνατότητες του προγόνουτου.

• Το πρόγραμμα αντιγραφής δίσκων (και όχιμόνο) K3b είναι τώρα συμβατό με KDE 4.

• KPackageKit. Σημαντικές βελτιώσεις έχειυποστεί η εφαρμογή ενημερώσεων καιπροσθαφαίρεσης λογισμικού.

• Το πρόγραμμα διαχείρισης χρηστών καιομάδων διακρίνεται γαι την απλότητα του.Θα το βρείτε στις ρυθμίσεις συστήματος.

• KNetworkManager. Διαχειριστείτε τιςενσύρματες και ασύρματες συνδέσεις σαςμε ευκολία. Ίσως αντιμετωπίσετε πρόβλημαμε κρυμμένα (hidden) SSID ασύρματωνδικτύων.

• Ενσωμάτωση GTK+. Οι native εφαρμογέςGTK+ μπορούν να προσομοιάσουν το θέμαOxygen του KDE.

• Εγκαταστάτης Firefox, για τους απανταχούλάτρεις του.

Το Kubuntu έχει φανατικούς φίλους και θέλει«πείραγμα» για να το φέρεις στα μέτρα σου.Θυμίζει λίγο ιδιότροπη και μυστικοπαθή γυναίκαπου θέλει κόπο και μόχθο για να την κερδίσειςκαι να σου κάτσει, αλλά μετά σε ανταμείβει οαισθησιασμός της και δεν αντέχεις χωρίς αυτή. ΤoKDE είναι πάντως ένα από τα μεγαλύτερα projectτου ΕΛ/ΛΑΚ και το μέλλον του σίγουρα πολλάυποσχόμενο.

Τέλος, ένα μεγάλο μπράβο αξίζει στουςτρεις μεταφραστές της έκδοσης 4.3 του KDE- στον Μανώλη Τούση, τον Πέτρο Βιδάληκαι τον Νίκο Αγιαννιώτη, χωρίς να εξαιρώκαι τους προγενέστερους. Ελπίζω σύντομανα προστεθούν νέα μέλη στην ομάδα και νασυνεισφέρουν στο δύσκολο έργο της.

15

Page 16: Ubuntistas vol.6

των Βαρσάμη Ιωάννη, Φωτιάδη Φίλιππου

ΣΥΝΕΝΤΕΥΞΗ

Ελευθέριος ΚοσμάςΈνας τεχνολόγος πολυϋπνογραφίας στον κόσμο του ελεύθερου λογισμικού!

ΟΕλευθέριος ασχολείταιεπαγγελματικά μετον τομέα της υγείαςως τεχνολόγοςπολυυπνογραφίας.Είναι υποστηρικτής τουελεύθερου λογισμικούκαι χρήστης του Ubuntu.Αρθρογραφεί στο

ελληνικό LinuxFormat και στο προσωπικό τουιστολόγιο elkosmas.gr.

- Γεια σου Ελευθέριε, χαιρόμαστε που σεέχουμε εδώ. Ξεκινώντας, ΕΛ/ΛΑΚ, τι σημαίνειγια εσένα;

- Χαιρετώ και εσάς και τους αναγνώστεςσας, η χαρά είναι δική μου. Το Ελεύθεροκαι Ανοιχτού Κώδικα λογισμικό είναι πολύπερισσότερα πράγματα από μερικά πολύ καλάδωρεάν προγράμματα. Με τη ραγδαία αύξησητης περιπλοκότητας του κώδικα είμαι της άποψηςότι το ΕΛ/ΛΑΚ αποτελεί μια βιώσιμη λύση όχι μόνογια τους χρήστες αλλά και για όσους αναπτύσσουνλογισμικό. Από την άλλη δε μπορούμε να μιλάμεγια Ελεύθερο Λογισμικό χωρίς να αναφερθούμεστις κοινότητες που αναπτύσσονται γύρω απόαυτό.

- Γνωρίζουμε ότι διατηρείς ένα blog

με μεγάλη επισκεψιμότητα. Μίλησέ μαςγια τη σχέση σου με το blogging και τιςδραστηριότητές σου γύρω από αυτό.

- Όταν πρωτοάρχισα να ασχολούμαι με τοblogging δεν περίμενα να γίνει το elkosmas.grτόσο δημοφιλές όσο είναι σήμερα. Για τησυγγραφή των άρθρων μπορεί να είναι μια ηδύο αράδες και να χρειαστώ το πολύ 10 λεπτά ήμπορεί να φτάσω να γράφω για 1-2 ώρες. Αυτόπου χρειάζεται αρκετό χρόνο ορισμένες φορέςείναι η ανάγνωση ειδικών πηγών για το ελεύθερολογισμικό. Μερικές από τις πλέον αγαπημένεςμου πηγές ενημέρωσης είναι το Slashdot, οιπλανήτες του Debian, Ubuntu, Gnome και KDE,καθώς και site όπως το Linux Foundation καιτα εταιρικά site εταιριών που ασχολούνται με τοLinux, το FOSSwire και το Free Sortware Mag-azine. Εκτός αυτών διαβάζω έντυπα όπως τοελληνικό Linux Format και το Linux Journal καθώςκαι ό,τι άλλο ενδιαφέρον πέσει στα χέρια μου.

Όταν βρίσκω ενδιαφέροντα πράγματα πουπιστεύω ότι μπορεί να ενδιαφέρουν κάποιον πουασχολείται με το ΕΛ/ΛΑΚ και όχι μόνο συνήθωςκάνω μια αναφορά ή μια ανάλυση στο blog άλλεςφορές απλά γράφω ό,τι περνάει εκείνη την ώρααπό το μυαλό μου. Δε ξέρω αν είναι πολλοί ή όχι,αλλά το blog επισκέπτονται περίπου 500 άτοματην ημέρα. Θα εκμεταλλευτώ τη φιλοξενία σας για

να ευχαριστήσω τους αναγνώστες αλλά και τουςσχολιαστές του blog μου, καθώς και τα άτομα πουέχουν άμεσα επικοινωνήσει μαζί μου με άρθρα,επιστολές, και προτάσεις για συνεργασία.

- Φιλοξενείς και μεταφράζεις μιαγελοιογραφία στο blog σου, τον ΠαράξενοΚαθεδρικό. Πώς προέκυψε;

- Μια μέρα καθώς διάβαζα στο Free Soft-ware Magazine το The Bizarre Cathedral, είδαότι η άδειά του ήταν η Creative Commons.Αφού άνοιξα το GIMP και έφτιαξα την πρώτημετάφραση, την έστειλα στο δημιουργό του The

16

Page 17: Ubuntistas vol.6

ΣΥΝΕΝΤΕΥΞΗ

Bizarre Cathedral, τον Ryan Cartwick, και μετάαπό δικές του διορθώσεις και επεμβάσεις οΠαράξενος Καθεδρικός πήρε τη μορφή πουγνωρίζετε σήμερα.

- Ποια είναι η άποψή σου για τα πνευματικάδικαιώματα στο χώρο του ΕΛ/ΛΑΚ;

- Η ιδέα των πνευματικών δικαιωμάτωνείναι κάπως συγκεχυμένη για τη συντριπτικήπλειοψηφία του κόσμου. Πρέπει να διαχωρίσουμετο copyright από άλλες έννοιες που συχνάσυγχέουμε, όπως οι πατέντες. Το ΕΛ/ΛΑΚ δενέρχεται να καταργήσει το copyright κανενός,όμως δίνει την ελευθερία στο χρήστη να κάνειαλλαγές και τροποποιήσεις. Όπως είχαμε δειπαλαιότερα, άδειες λογισμικού όπως η GNU/GPLέχουν δοκιμαστεί στα Ευρωπαικά δικαστήριακαι αναγνωρίζονται ως μέσο προστασίας τωνδικαιωμάτων των δημιουργών και των χρηστών.

Το θέμα των πατεντών από την άλλη είναι πολύπιο λεπτό. Αν και στην ΕΕ οι πατέντες λογισμικούδεν αναγνωρίζονται σε πανευρωπαϊκό επίπεδο,στις ΗΠΑ τα πράγματα δεν είναι έτσι. Εκεί,οι πατέντες λογισμικού είναι κάτι συνηθισμένοκαι συχνά αποτελούν βέλη στην νομική φαρέτραμεγάλων, μικρών ή ακόμη και εταιριών πουασχολούνται μόνο με την εμπορία πατεντών.

- Δραστηριοποιούμενοι στο Linuxδιαπιστώνουμε ότι υπάρχουν πακέτα καιεφαρμογές στο σύστημά μας, που δεσυνάδουν με τη λογική του ΕΛ/ΛΑΚ, πρόκειταιγια κλειστό λογισμικό. Πιστεύεις ότι πρέπεινα ακολουθείται αυτή η μικτή υποστήριξη ή ότιπρέπει να προτιμάται καθαρά ΕΛ/ΛΑΚ;

- Είμαι της άποψης ότι στην παρούσα φάσηη χρήση λογισμικού κλειστού κώδικα, όπως του

οδηγού της nVidia ή του πρόσθετου του Flash,είναι απαραίτητη για πολλούς χρήστες. Εξαρτάταιόμως από τις ανάγκες του χρήστη και πώςο ίδιος τις καθορίζει. Ίσως στο μέλλον θαδουλεύουμε με πλήρως ελεύθερα συστήματα,ανοιχτού κώδικα και χωρίς προβλήματα, που θακαλύπτουν τις ανάγκες του μέσου χρήστη. Καθώςτο Linux γίνεται όλο και περισσότερο δημοφιλέςείναι φυσικό να βλέπουμε όλο και περισσότερεςεφαρμογές κλειστού κώδικα να είναι διαθέσιμες γιατο ανοιχτού κώδικα λειτουργικό μας. Προσωπικάκαι εγώ χρησιμοποιώ κλειστού κώδικα εφαρμογέςγια να επιτελέσω κάποια πράγματα όταν δενυπάρχει ανοιχτού κώδικα αντίστοιχο.

- Ασχολείσαι και συνεισφέρεις αρκετά στονκόσμο του ΕΛ/ΛΑΚ. Ανέφερέ μας κάποιαπιθανά κίνητρα που πιστεύεις ότι μπορούννα δώσουν ώθηση στους χρήστες σε αυτήντην ανιδιοτελή ενασχόληση. Πώς μπορούννα αναπτυχθούν αυτά στα νέα μέλη τηςκοινότητας;

- Νομίζω ότι ένας άνθρωπος που του αρέσειη τεχνολογία εύκολα έρχεται σε επαφή με τοελεύθερο λογισμικό, το οποίο δίνει τη δυνατότηταστους χρήστες να συμμετέχουν στην εξέλιξηλογισμικού που ενσωματώνει πολλές τεχνολογίεςαιχμής. Αυτή η αίσθηση συμμετοχής στηντεχνολογική εξέλιξη είναι κάτι που κάνει πολύκόσμο να συνεισφέρει. Επίσης οι κοινότητεςσιγά-σιγά προσπαθούν να κάνουν αυτήν τηνενασχόληση όσο πιο άνετη γίνεται και πλέονπροσφέρουν εργαλεία που την κάνουν ευχάριστησαν παιχνίδι - αγαπημένο παράδειγμα οιμεταφράσεις στο Launchpad.

- Το ελεύθερο λογισμικό στηρίζεται

δραστικά από εταιρίες όπωςηGoogle, η IBM, ηSUN, κ.λπ. Μίλησέ μας σχετικά με αυτό. Πόσοεξαρτάται το ΕΛ/ΛΑΚ από αυτές τις εταιρίες καιποιο το αύριο;

- Οι εταιρίες που αναπτύσσουν ελεύθερολογισμικό πολύ συχνά προσλαμβάνουνπρογραμματιστές για να αναπτύσσουν opensource πακέτα, πολλές φορές αυτό γίνεταιμε μόνιμους υπάλληλους της εταιρίας πουασχολούνται προς αυτή την κατεύθυνση,άλλες φορές -και αυτή είναι η περισσότεροσυχνή περίσταση- οι εταιρείες προσεγγίζουν«σύμβουλους προγραμματισμού» που στην ουσίαείναι ομάδες προγραμματιστών που μπορούν ναπροσθέσουν ένα ιδιαίτερο χαρακτηριστικό σε μιαανοιχτού κώδικα εφαρμογή. Τα κριτήρια μιαςεταιρίας προκειμένου να συμβάλει στην ανάπτυξηελεύθερου λογισμικού είναι καθαρά εμπορικά,στόχος είναι η καλύτερη υποστήριξη τωνπροϊόντων της εταιρίας. Όσο αυτό γίνεται βάσειτων κανόνων ανάπτυξης κώδικα και διατίθεταιη απαραίτητη τεκμηρίωση στον κώδικα, πρέπεινα θεωρείται ιδιαίτερα θετική ως συμβολή. Σεβάθος χρόνου πιστεύω ότι όλο και περισσότερεςεταιρείες θα ασχολούνται ενεργά με την ανάπτυξηανοιχτού λογισμικού, όμως ακριβώς λόγω τουελεύθερου χαρακτήρα του δεν πρόκειται να δούμεποτέ μια εταιρεία να μονοπωλεί την ανάπτυξη τουκώδικα του Linux.

- Ο κόσμος του Linux μπορεί ναυπερηφανεύεται ότι παρέχει ξεκάθαρα τηναπόλυτη ελευθερία επιλογής. Πώς σχολιάζειςτο γεγονός ότι ένα τόσο ουσιώδες δικαίωμαόλων των χρηστών δε γίνεται καν γνωστό στημεγαλύτερη μερίδα αυτών;

17

Page 18: Ubuntistas vol.6

ΣΥΝΕΝΤΕΥΞΗ

- Εν πρώτοις πρέπει να λάβουμε υπ' όψινότι ο χρήστης των Windows προέρχεται απόμια μονοκουλτούρα που περιορίζεται στο δίλημμαXP ή Vista. Είναι λίγο δύσκολο για ένανάνθρωπο που δουλεύει με το ίδιο λειτουργικό τατελευταία 6-7 χρόνια να κατανοήσει π.χ. ότι τοUbuntu βγαίνει κάθε έξι μήνες και ότι έχουμε 5-6διαφορετικούς window manager ή 7-8 browsers.Σε βαθός χρόνου όμως όσο ο χρήστης εξερευνάτις δυνατότητες που του παρέχονται με το ΕΛ/ΛΑΚνομίζω ότι αρχίζει και συνειδητοποιεί τις ελευθερίεςπου του παρέχονται και σιγά-σιγά μπαίνει στοπειρασμό να πειραματιστεί με νέα πράγματα.

Όσο αφορά στους απλούς χρήστεςυπολογιστών, η ενημέρωσή τους σχετικά μετις δυνατότητες του υπολογιστή τους και τουλογισμικού που διαθέτει, ή που θα μπορούσε ναδιαθέτει, είναι πολύ συχνά αποσπασματικές. Αλλάνομίζω ότι μέρα με την ημέρα ακόμη και σε αυτό τομέτωπο κάνουμε προόδους, και ίσως στο μέλλοντα πράγματα να είναι διαφορετικά.

- Αναφέρουμε στη συνέντευξη «ελευθερίαστην επιλογή», στον κόσμο του ΕΛ/ΛΑΚυπάρχει πράγματι ελευθερία από την αρχή τηςενασχόλησης κάθε μέλους με ένα πολύ μεγάλοφάσμα επιλογής διανομών. Πιστεύεις ότι ομεγάλος αριθμός των διανομών εμποδίζει τηνανάπτυξη του Linux λόγω διασκορπισμού τωνμελών;

- Νομίζω ότι στο ελεύθερο λογισμικό υπάρχουνενιαία συστήματα πάντα. Οι διαφορετικέςπροσεγγίσεις δίνουν νέες δυνατότητες, αλλά εντέλει όλα καταλήγουν σε κοινούς παρονομαστές.Μια βελτίωση στο X.Org αργά ή γρήγορα θαπεράσει και στους χρήστες του Arch και τουDebian Sid και της Fedora. Οι διαφορετικές

προσεγγίσεις καλύπτουν διαφορετικές ανάγκες καιέτσι μια ευρύτερη γκάμα χρηστών. Εν τέλει νομίζωότι δεν πρόκειται για εμπόδιο στην ανάπτυξη τουLinux αλλά για ένα συγκριτικό του πλεονέκτημα.

- Πιστεύεις ότι υπάρχουν σημεία στα οποίαη κοινότητα γύρω από το ΕΛ/ΛΑΚ στη χώραμας υστερεί και θα έπρεπε να δώσει προσοχή;

- Νομίζω ότι οι κοινότητες στην χώρα μαςαντιμετωπίζουν ένα μη-γόνιμο περιβάλλον, καιθα γίνω περισσότερο σαφής όσον αφορά αυτήντην πρόταση. Στην Ελλάδα, η ευρυζωνικότητα,οι ψηφιακές υποδομές και ο αριθμός ατόμωνπου ασχολούνται με την πληροφορική σεεπαγγελματικό και ακαδημαΐκο επίπεδο, καθώςκαι ο αριθμός και ο τζίρος των εταιριών υψηλήςτεχνολογίας είναι πολύ μικρότερα νούμερα σεσύγκριση με τον Ευρωπαΐκό μέσο όρο, και αυτόέχει σαν αποτέλεσμα να συναντούν σοβαρέςδυσκολίες όσον αφορά το έργο τους. Νομίζωότι στις περισσότερες κοινότητες υπάρχουν οικατάλληλοι άνθρωποι και νομίζω ότι χρειάζονταιενθάρυνση για να προχωρήσουν τις ιδέες τους.

- Τι πιστεύεις όμως για τις κοινότητες καιτους κατά τόπους συλλόγους; Ποια η θέση σουγια τις αντιπαλότητες που υπάρχουν ανάμεσασε μέλη κοινοτήτων;

- Νομίζω ότι οι κοινότητες και οι κατάτόπους σύλλογοι είναι βασικό κομμάτι αυτούπου ονομάζουμε ΕΛ/ΛΑΚ στην Ελλάδα. Οιαντιπαλότητες όπως είπατε και έσεις εάνυπάρχουν είναι μεταξύ μεμονωμένων μελών.Είμαι της άποψης ότι κανείς δεν έχει τίποτα ναχωρίσει και μπορούμε να τα βρούμε μια χαράμεταξύ μας. Κρίνοντας από τους ανθρώπους πουέχω γνωρίσει από κοντά πιστεύω ότι είναι αρκετάώριμα και ολοκληρωμένα άτομα.

- Αν θα έπρεπε να γίνει κάπου μια αλλαγήστις σημερινές διανομές, ποια πιστεύειςότι θα ήταν αυτή ώστε να παρακινήσειπερισσότερους χρήστες στο Linux;

- Δε μπορώ να επισημάνω ένα killer fea-ture μόνο! Νομίζω όμως ότι έχουν αρχίσει ναεμφανίζονται πολύ ενδιαφέρουσες ιδέες όπως τοproject Moblin της Intel που θα αρχίσουμε να τοβλέπουμε σιγά σιγά όλο και περισσότερο.

- GNOME ή KDE ;- KDE, αν και επιφυλάσσομαι για το GNOME

3!

- Τι γνώμη έχεις για τη διανομή Ubuntu;- Νομίζω ότι το Ubuntu αποτέλει μια από τις

πλέον σύγχρονες διανομές λόγω της πολύ καλήςχρηστικότητάς του σε συνδυασμό με νέα πακέταπου κάνει διαθέσιμα στο χρήστη.

- Κάποιο τελευταίο σου μήνυμα προς τουςαναγνώστες μας Ελευθέριε; Νιώσε ελεύθερανα θέσεις όποια θέματα σε απασχολούν και θαήθελες να συζητήσουμε για να τα διαβάσουν οιαναγνώστες μας.

- Το ελεύθερο λογισμικό είναι ένα εκπληκτικόμοντέλο ανάπτυξης προηγμένου λογισμικού.Νομίζω ότι πέρα από τη μια ή την άλλη διανομή οιχρήστες ελεύθερου λογισμικού οφείλουν να είναιανοιχτοί στις εξελίξεις του και όσο περνά απότο χέρι του καθενός να συμμετέχουν σε αυτές.Υπάρχουν πάρα πολλοί τρόποι ακόμη και για τομέσο χρήστη για να συμμετάσχει στην ανάπτυξητου ελεύθερου λογισμικού και πιστεύω ότι αξίζειτον κόπο να επενδύσετε λίγο από το χρόνο σαςσε αυτό.

18

Page 19: Ubuntistas vol.6

του Ευθυμίου Νίκου

HOW-TO

Εισαγωγή στην QT (Μέρος Β')Δημιουργήστε εύκολα ένα πρόγραμμα προβολής εικόνων!

Στο δεύτερο αυτό μέρος θα μελετήσουμελίγο την εφαρμογή Qt Design, με την οποίαμπορούμε, με γρήγορα drug and drop βήματα, ναοργανώσουμε το παράθυρο της εφαρμογής μας.Αν χρησιμοποιήούμε το sdk της NOKIA τότε το QtDesigner βρίσκεται μέσα στην εφαρμογή Qt Cre-ator. Στην περίπτωση του Qt Developer πρέπεινα την εγκατάστησουμε από τα αποθετήρια τουUbuntu.

Στο συγκεκριμένο οδηγό θα χρησιμοποιήσουμετο Qt Creator για λόγους απλότητας. Αρχικάεπιλέγουμε File > New > Qt Gui Application> Όνομα : foo > Base Class : Dialog. Μετάαπό αυτές τις κινήσεις έχουν δημιουργηθεί ταπαρακάτω νέα αρχεία: main.cpp, dialog.h, dia-log.cpp, dialog.ui, foo.pro.

Καλό θα ήταν να μην αλλάξετε τα ονόματατων αρχείων γιατί θα πρέπει να αλλάξετε και

τα ονομάτα στον κώδικα. Στο παράθυρο θακάνουμε Drag 'n Drop ένα Vertical Layout, τοεπεκτείνουμε ώστε να καλύπτει σχεδόν όλο τοεύρος του παραθύρου, εκτός από μια λεπτήοριζόντια λωρίδα στο κάτω μέρος του παραθύρουκαι από το Property Tab το μετονομάζουμε σεmainLayout.

Τα Layouts είναι αντικείμενα τα οποία ειναιυπεύθυνα να αλλάξουν τη θέση των αντικειμένωνπου περιέχουν ανάλογα με το μέγεθος τουπαραθύρου. Μπορείτε να φτιάξετε δύο εκδόσειςαυτής της εφαρμογής. Μία με layouts και μιαχωρίς. Έτσι θα παρατηρήσετε στην έκδοση χωρίςlayouts όταν αλλάζετε το μέγεθος του παράθυρουαπλά αυξάνετε τον κενό χώρο.

Μέσα σε αυτό το κενό «ρίχνουμε» ένα Horizon-tal Layout που το ονομάζουμε controlLayout.

Στο mailLayout προσθέτουμε ένα Label και στοκάτω μέρος 2 Push buttons που τα ονομάζουμε&Open και &Exit. Στο «Properties Tab» > textπροσθέτουμε το κείμενο Place for the Image.

Συνοψίζοντας μέσα στο dialog.ui πρέπει ναπεριέχονται τα παρακάτω αντικείμενα με τηνακριβή ονομασία τους:

1. Verical Layout : verticalLayout

19

Page 20: Ubuntistas vol.6

HOW-TO

(a) Label : label

2. Horizontal Layout : horizontalLayout

(a) Push Button : okButton(b) Push Button : exitButton

Να θυμάστε ότι η ονομασία του αντικειμένουγίνεται μόνο απο Property Panel > Object Name!Στη συνέχεια πηγαίνουμε σε ένα ένα τα αρχεία τουproject και κάνουμε copy – paste.

main.cpp

#include <QtGui/QApplication>#include "dialog.h"int main(int argc, char *argv[]){

QApplication a(argc, argv);Dialog w;w.show();return a.exec();

}

Στο αρχείο main γίνεται η δημιουργία ενόςστιγμιοτύπου της εφαρμογής μας.

dialog.h

#ifndef DIALOG_H#define DIALOG_H#include <QtGui/QDialog>namespace Ui{

class Dialog;}class Dialog : public QDialog{

Q_OBJECTpublic:

Dialog(QWidget *parent = 0);~Dialog();

QImage *mainImage;

private:Ui::Dialog *ui;private slots:void openImage();

};#endif // DIALOG_H

Το αρχείο dialog.h είναι ένα αρχείο header.Αυτό σημαίνει ότι εδώ δηλώνουμε τις μεταβλητέςπου θέλουμε να είναι κοινές σε όλες τιςσυναρτήσεις της κλάσης μας. Όπως γίνεταιεύκολα αντιληπτό μπορούν να χωριστούν σε δύοκατηγορίες: public και private. H διαφοροποίησηέγκειται στο αν οι άλλες κλάσεις θα έχουν δικαίωμανα δούν και επεξεργαστούν αυτές τις μεταβλητές.

dialog.cpp#include "dialog.h"#include "ui_dialog.h"#include <QtGui>Dialog::Dialog(QWidget *parent)

: QDialog(parent), ui(new Ui::Dialog){ui->setupUi(this);connect(ui->exitBut,SIGNAL(clicked()),qApp,SLOT(quit()));

connect(ui->openBut,SIGNAL(clicked()),this,SLOT(openImage()));

}Dialog::~Dialog(){

delete ui;}void Dialog::openImage(){

QString fileName =QFileDialog::getOpenFileName(this,"Selectfile to open:", ".","PNG file (*.png)");

if (!fileName.isEmpty()){mainImage = new QImage (fileName);

ui->label->setPixmap(QPixmap::fromImage(*mainImage));

}}Εδώ βρίσκεται ο κυρίως κώδικας της κλάσης

μας. Αρχικά βλέπουμε τον κατασκευαστή(constructor) ο οποίος είναι υπεύθυνος νααρχικοποιήσει τις μεταβλητές μας. Στα ονόματατων push buttons έχουμε προσθέσει το ui->υποδηλώνοντας ότι δεν πρόκειται για μεταβλητέςπου προέρχονται από μια άλλη κλάση, την ui, πουείναι τύπου Ui::Dialog, όπως βλέπουμε και απότο header. Στη συνέχεια βρίσκεται η συνάρτησηκαταστροφέας που καλείται όταν διαγράφουμεκάποιο αντικείμενο. Και τέλος η συνάρτηση πουουσιαστικά περιέχει την εφαρμογή μας η openIm-age().

Στην πρώτη γραμμή καλούμε την getOpen-FileName που είναι μια συνάρτηση της QT ηοποία καλεί ένα παράθυρο τύπου Open File.Η OpenFileName επιστρέφει μια λέξη, με τοόνομα και το path της εικόνας που επιλέξαμε.Αν το όνομα αυτό υπάρχει και είναι ορθό τοχρησιμοποιούμε ως είσοδο στη δημιουργία ενόςνέου αντικειμένου εικόνας, το οποίο προβάλλουμεστην ετικέτα. Η μετατροπή που κάνουμε από QIm-age σε QPixmap μπορεί να χαρακτηριστεί αυτή τηστιγμή ως γραφειοκρατική αναγκαιότητα...

Εντάξει, μπορεί να μην έχει τις δυνατότητες τουAdobe Photoshop, αλλά είναι ο δικός μας viewer!Για το οποίο αφιερώσαμε 60min maximum. Είναιαπλός αλλά και εξαιρετικά γρήγορος!

Ελπίζω αυτή η πρώτη σας QT εφαρμογή νασας κέντρισε το ενδιαφέρον για περαιτέρω μελέτηαλλά και ψάξιμο. Τα λέμε την επόμενη φορά!

20

Page 21: Ubuntistas vol.6

του Κωστάρα Γιάννη

HOW-TO

Η γλώσσα προγραμματισμού RubyΗ Ruby είναι μια ακόμα δημοφιλής γλώσσα προγραμματισμού, που έρχεται μαζί με τη διανομή Ubuntu. Πρόκειται για μια διερμηνευόμενη (inter-preted) γλώσσα προγραμματισμού ανοικτού κώδικα, η οποία μπορεί να χρησιμοποιηθεί για πολλές κατηγορίες προγραμματισμού.

Δημιουργήθηκε από τον Yukihiro "Matz" Mat-sumoto το 1993. Η 1η έκδοση βγήκε το 1995, έχειδηλ. ηλικία όσο και η Java. Ο συγγραφέας τηςπροσπάθησε να πάρει τα καλύτερα στοιχεία απότις πιο διαδεδομένες γλώσσες προγραμματισμού,όπως οι Perl, Python, Smalltalk, Java, C,C++ κ.ά. Είναι, όπως θα δούμε, μια απ’τις πιο εκφραστικές και συνοπτικές γλώσσεςπρογραμματισμού. Συνοπτικά η Ruby είναι:

• Ανοικτού κώδικα (Open Source)

• Multi-paradigm, δηλ. μπορεί ναχρησιμοποιηθεί με πολλά μοντέλαπρογραμματισμού, όπως συναρτησιακά(functional/procedural) - βλέπε C, Pascal,Fortran - αντικειμενοστρεφή (object ori-ented) - βλέπε Java, C++, C#, Smalltalkκ.ά.

• Interpreted, ή διερμηνευόμενη, δηλ. τοπηγαίο πρόγραμμα εκτελείται ως έχει (όπως

π.χ. στην Python ή στην Perl), σε αντίθεσημε τις compiled ή μεταγλωτιζόμενες γλώσσεςόπου το πηγαίο πρόγραμμα μεταγλωτίζεταιπρώτα και παράγεται το αρχείο προςεκτέλεση (π.χ. Fortran, C/C++/C#, Pascal,Java).

Πολύ διαδεδομένη είναιεπίσης και η γλώσσαπρογραμματισμού Ruby on Rails(http://rubyonrails.org)για ανάπτυξη διαδικτυακώνεφαρμογών. Αν και ωςδιερμηνευόμενη γλώσσα, είναιπάντα πιο αργή κατά την

εκτέλεσή της από τις μεταγλωττιζόμενες γλώσσεςπρογραμματισμού, όπως η Java και η C, οχρόνος δημιουργίας και εκτέλεσης προγραμμάτωνείναι πολύ πιο άμεσος και γρήγορος, καθώςδεν υπάρχει το ενδιάμεσο βήμα παραγωγής τουεκτελέσιμου αρχείου.

Εγκατάσταση της Ruby

Εκδόσεις της Ruby διατίθενται γιαόλες τις πλατφόρμες των Windows, Unix,Linux και MacOS. Μπορείτε να κατεβάσετετο κατάλληλο περιβάλλον ανάπτυξης για

το λειτουργικό σας σύστημα από τοhttp://www.ruby-lang.org/en/downloads/.Πλέον η Ruby έρχεται προεγκατεστημένη σεπολλά Unix-οειδή περιβάλλοντα. Για να τηνεγκαταστήσετε στο Ubuntu δώστε την εντολή:

sudo apt-get install ruby irb rdoc fxri

Μετά, για να διαπιστώσετε τη σωστή εγκατάστασημπορείτε να δώσετε:

ruby -v

Θα πρέπει να δείτε κάτι σαν το παρακάτω:

ruby 1.8.7 (2008-08-11 patchlevel 72)[i486-linux]

Περιβάλλοντα ανάπτυξης

Υπάρχουν πολλά περιβάλλοντα ανάπτυξηςεφαρμογών Ruby, όπως:

• Aptana(http://www.aptana.com)

• Jetbrains RubyMine(http://www.jetbrains.com/ruby/download/)

• Netbeans(http://www.netbeans.org)

21

Page 22: Ubuntistas vol.6

HOW-TO

• FreeRide(http://rubyforge.org/projects/freeride)

• TextMate για MacOS(http://macromates.com/).

• http://tryruby.hobix.com όπου μπορείτενα δοκιμάσετε τη γλώσσα χωρίς να χρειαστείνα την εγκαταστήσετε τοπικά στον Η/Υ σας.

Το πρώτο σας πρόγραμμα

Αν εγκαταστήσατε τη Ruby, τότε ανοίξτε έναπαράθυρο κελύφους (shell) και πληκτρολογείστε:

irb

που σημαίνει «interactive ruby shell».Πληκτρολογήστε την παρακάτω εντολή:

irb(main):001:0> puts "Hello world!"

και πατήστε Enter.

Hello world!=> nil

Παρατηρήστε πόσο άμεσο ήταν το αποτέλεσμαχωρίς να περιμένουμε να μεταγλωτιστεί τοπρόγραμμα. Η εντολή puts εκτυπώνει στη μονάδαεξόδου, δηλ. την οθόνη. Αντίστοιχα, υπάρχει καιη εντολή gets η οποία διαβάζει από τη μονάδαεισόδου, δηλ. το πληκτρολόγιο. Πληκτρολογήστεexit για να βγείτε από το περιβάλλον εργασίας τηςRuby. Ανοίξτε τον αγαπημένο σας επεξεργαστήκειμένου και πληκτρολογήστε το ακόλουθοπρόγραμμα:

puts "Hello. What is your name?"myname = gets()puts "Well, hello there #{myname}"

Αποθηκεύστε το αρχείο με όνομα Hello.rb. Στηγραμμή εντολών, μεταφερθείτε στον κατάλογοπου αποθηκεύσατε το παραπάνω αρχείο καιπληκτρολογήστε:

ruby Hello.rbHello. What is your name?JohnWell, hello there John

Μπορείτε επίσης να εκτελέσετε το αρχείο δίνονταςαπλά την εντολή

./Hello.rb

αν προσθέσετε την ακόλουθη γραμμή στην αρχήτου προγράμματός σας, δηλ.:

#!/usr/bin/rubyputs "Hello. What is your name?"myname = gets()puts "Well, hello there #{myname}"

Σύγκριση με άλλες γλώσσεςπρογραμματισμού

Οι αρετές της Ruby έρχονται στην επιφάνειαόταν πρόκειται να τη συγκρίνετε με άλλες γλώσσεςπρογραμματισμού. Π.χ. ένα πρόγραμμα Rubyπου δεν κάνει τίποτα, είναι απλά... ένα κενό αρχείοή ένα πρόγραμμα χωρίς καμία εντολή! Αντίθετα,π.χ. στη Java, ένα πρόγραμμα που δεν κάνειτίποτα πρέπει να ‘χει τις ακόλουθες εντολές:

class Empty {public static void main (String args[]) { }

}

Τύποι και δομές δεδομένων

Η Ruby διαθέτει ένα πλούσιο ρεπερτόριοτύπων και δομών δεδομένων. Διαθέτει τουςαπλούς τύπους δεδομένων String και Number(FixNum, BigNum, Float) καθώς και συλλογέςόπως Range, Array και Hash. Στη Ruby τα πάνταείναι αντικείμενα, ακόμα και οι αριθμοί. Όλακληρονομούν από την κλάση Object.

1.class → FixNum0.5.class → Float

Στη Ruby δε δηλώνουμε τον τύπο δεδομένωνμιας μεταβλητής, όπως π.χ. στη C. Οι τύποιδεδομένων στη Ruby είναι δυναμικοί, αντίθεταμε τους στατικούς τύπους δεδομένων γλωσσώνόπως οι C, Pascal, Java κλπ. Έτσι, π.χ. έναςακέραιος στη Ruby ορίζεται π.χ. ως:

myInteger = 0

κι ένα αλφαριθμητικό ως:

s = 'This is a String'

22

Page 23: Ubuntistas vol.6

HOW-TO

Υπάρχουν δυο τύποι δεδομένων για τηναναπαράσταση αριθμών στη Ruby: Fixnum (-2-30 – 230-1) και BigNum (εκτός των παραπάνωορίων). Η μετατροπή γίνεται αυτόματα. Ο τύποςδεδομένων Σειρά ή Διάστημα (Range) αποθηκεύειμια σειριακή ακολουθία τιμών, όπως π.χ. 1 ως 9ή Α ως Ω. Μια σειρά ορίζεται από την τιμή αρχής,τα .. ή … και την τιμή τέλους. Π.χ.

capital_letters ='A'..'D' → ["A","B","C","D"]

numbers =0..9 → [0,1,2,3,4,5,6,7,8,9]

years_of_birth =1970...1973 → [1970,1971,1972]

Παρατηρήστε ότι στο τελευταίο παράδειγμα (…),το διάστημα είναι ανοικτό, δηλ. δεν περιλαμβάνειτην τιμή τέλους. Παραδείγματα πινάκωνκαι κατακερματισμένων πινάκων (hashtables)φαίνονται παρακάτω:

empty_array = []empty_array = Array.newint_array = [1,2,3,4,5,6]random_array = [1, 'Hi', 3.14]two_dimensional_array = [[1,2],[2,1]]myarray = (1..9).to_a # transform to arraymy_hash = { 'one' => 1, 'two' => 2 }my_hash['three'] = 3

Διαδικαστικός/Συναρτησιακόςπρογραμματισμός

Όπως είπαμε, η Ruby μπορεί ναχρησιμοποιηθεί με πολλά προγραμματιστικά

στυλ, όπως ο διαδικαστικός (procedural) /συναρτησιακός (functional). Μ’ αυτόν τον τρόπο,μπορεί κάλλιστα ν’ αντικαταστήσει παραδοσιακέςδιαδικαστικές γλώσσες όπως οι: Pascal, C, For-tran, Basic.

Ένα μπλοκ εντολών στη Ruby δηλώνεται με τιςεντολές begin ... end.

Υπάρχει εντολή if ... elsif ... end, ενώ η εντολήcase συντάσσεται ως εξής (Σημ: Το ARGV είναιένα array με τα ορίσματα γραμμής εντολής):

case ARGV.lengthwhen 0puts "usage #{$0} arg1 arg2"when 1

puts "Hello #{ARGV[0]}"when 2

puts "Hello #{ARGV[0]} #{ARGV[1]}"else

puts "T�o many arguments"end

Παρατηρήστε ότι δεν απαιτείται η χρήση εντολήςbreak στο τέλος κάθε when. Η case στη Ruby είναιαρκετά ευέλικτη σε σχέση με τις Java, C, C++, C#.Κοιτάξτε κι αυτό:

case awhen Integer

puts "Type: Integer "when String

puts "Type: String"else

puts "Type: #{a.class.to_s}"end

Υπάρχει κι εδώ ο τριαδικός τελεστής ?

(ARGV.length>0) ? puts "Hello " + ARGV[0]: puts "Usage #{$0} name"

ενώ η εντολή if μπορεί να μπει και στο τέλος τηςπρότασης

puts "Hello " + ARGV[0] if (ARGV.length>0)

Η Ruby διαφέρει όμως αρκετά όσον αφορά τουςβρόγχους, από τις γλώσσες C, C++, C#, Java.Ακολουθεί τη σύνταξη της Smalltak κι αυτό ίσωςξενίσει μερικούς. Όπως θα δούμε όμως, έχειτο πλεονέκτημα ότι δεν χρειάζεται να δηλώσετεμετρητή. Ας ξεκινήσουμε με το βρόγχο for:

for arg in ARGVprint " #{arg}"

end

το οποίο μπορεί να γραφεί κι ως:

print "Hello"ARGV.each {

|arg| print "#{arg}"}

Ο πιο πάνω κώδικας χρησιμοποιεί closures, δηλ.μπορείτε να περάσετε ένα μπλοκ κώδικα ωςόρισμα σε μια μέθοδο! Ο βρόγχος for μπορεί ναγραφτεί και με τους παρακάτω τρόπους:

# CountToTen.rb -- Count to ten(1..10).each do|i| print " #{i}"

endputs 'All done!'

το οποίο μπορεί να γραφτεί και διαφορετικά ως:

23

Page 24: Ubuntistas vol.6

HOW-TO

# CountToTen.rb -- Count to tenfor i in (1..10)print " #{i}"

endputs 'All done!'

ή ακόμα και ως:

1.upto(10) {|i| print " #{i}"

}puts 'All done!'

Φυσικά υπάρχουν και οι βρόγχοι while και until:

x = 0while (x < 10)print x.to_sx += 1

end

Το αποτέλεσμα είναι: 0123456789. Ο παραπάνωβρόγχος μπορεί να γραφτεί κι ως:

x = 0until (x >= 10)print x.to_sx += 1

end

ή και ως

x = 0beginprint x.to_sx += 1

end until (x >= 10)

Παρατηρήστε ότι δεν υπάρχουν οι τελεστές ++ και--. Αντί αυτών χρησιμοποιήστε τους +=1 και -=1.H Ruby διαθέτει επίσης και τις εντολές break καιnext, που είναι αντίστοιχες με τις break και con-tinue στις Java/C. Η πρώτη σταματάει το βρόγχοκαι συνεχίζει με την επόμενη εντολή που ακολουθείτο βρόγχο, ενώ η δεύτερη αγνοεί τον κώδικα πουακολουθεί μέχρι το τέλος του βρόγχου και συνεχίζειστην επόμενη επανάληψη.

Αντικειμενοστρεφής προγραμματισμός

Όπως είπαμε, τα πάντα στη Ruby είναικλάσεις. Όπως και σ’ άλλες αντικειμενοστρεφήςγλώσσες προγραμματισμού (όπως C++, C#,Java, Python), έτσι κι η Ruby σας επιτρέπει ναδημιουργήσετε αντικείμενα από κλάσεις που εσείςορίζετε. Αντίθετα όμως με strong ή static typedγλώσσες όπως οι C#, C++ και Java, η Ruby, ωςdynamic typed δεν απαιτεί να δηλώνεται ο τύποςκάθε αντικειμένου. Όπως και στη Java και τη C#,έτσι και στη Ruby, όλες οι κλάσεις κληρονομούναπ’ την κλάση Object. Τέλος, όπως και η Javaκαι η C#, η Ruby δεν υποστηρίζει πολλαπλήκληρονομικότητα. Ορίζουμε μια κλάση στη Rubyόπως φαίνεται παρακάτω:

# car.rb – class definitionclass Car# constructordef initialize(color, speed)

@color = color # attribute@speed = speedself.info

end# method

def accelerate(speed)@speed += speedself.info

end# another methoddef info()puts "Car info (color: #{@color},

speed: #{@speed.to_s})"end

end

Οι ιδιότητες (attributes) δηλώνονται με το @ και οιμέθοδοι με τη δεσμευμένη λέξη def. Η μέθοδοςκατασκευής (constructor) ονομάζεται initialize.

>> car = Car.new('black', 0)Car info (color: black, speed: 0)>> car.accelerate(10)Car info (color: black, speed: 10)

Ένα χαρακτηριστικό της Ruby, που μερικές φορέςμπορεί να αποβεί κι άκρως επικίνδυνο, είναι ότιμπορούμε να επεκτείνουμε μια υπάρχουσα κλάση,χωρίς να χρειάζεται να παραθέσουμε ολόκληροτον κώδικά της, π.χ.

class Stringdef writesizeputs self.size

endend>> size_writer = "Tell me my size!">> size_writer.writesize → 16

Στο πιο πάνω παράδειγμα είδαμε ότι επεκτείναμετην κλάση String της Ruby προσθέτοντας μια νέαμέθοδο writesize.

24

Page 25: Ubuntistas vol.6

HOW-TO

Οι ιδιότητες της κλάσης Car, που ορίσαμεπαραπάνω, δεν είναι προσπελάσιμες εκτός τηςκλάσης. Ο παρακάτω κώδικας δημιουργείμεθόδους get και set για τις ιδιότητες της κλάσηςCar:

# car.rb – class definitionclass Car#getColourdef colour@colour

end#setColourdef colour=(colour)@colour=colour

end>> car.colour='white'>> puts car.colourwhite

Για να διαβάσουμε μια ιδιότητα, αρκεί να ορίσουμεμια μέθοδο με τ’ όνομά της που να περιέχειτην ιδιότητα (η τιμή της τελευταίας εντολής μιαςμεθόδου είναι αυτή που η μέθοδος επιστρέφει).Για να θέσετε/αλλάξετε την τιμή μιας ιδιότητας,δηλώνετε μια μέθοδο με τ’ όνομά της που ν’ακολουθείται από το = και το όνομα ενός ήπερισσοτέρων ορισμάτων. Η Ruby διαθέτεικι έναν πιο εύκολο τρόπο να ορίσουμε αυτέςτις μεθόδους, όπως φαίνεται στα παρακάτωπαραδείγματα:

# car.rb – class definitionclass Carattr_reader :color, :speedattr_writer :color, :speed

end

ή

class Carattr_accessor :color, :speed

end

Η παραπάνω δήλωση, ορίζει μεθόδους get/setή αλλιώς read/write για τις ιδιότητες τηςκλάσης. Βέβαια, έτσι χάνουμε την ευελιξία ναπροσαρμόσουμε τις μεθόδους αυτές αν χρειάζεταιπ.χ. να ελέγξουμε αν οι τιμές των ορισμάτων είναιέγκυρες. Όλες οι μέθοδοι που ορίσαμε πιο πάνωείναι public, δηλ. προσβάσιμες από οποιαδήποτεάλλη κλάση ή μπλοκ κώδικα. Αν θέλουμε ναπεριορίσουμε ποιος μπορεί να προσπελάσει τιςμεθόδους της κλάσης μας, χρησιμοποιούμε τιςδεσμευμένες λέξεις private και protected:

# car.rb – class definitionclass Carprivate

def testDriveend

protectedattr_accessor :category

publicattr_accessor :color, :speed

end

Οι ιδιότητες και οι μέθοδοι που δηλώνονται pri-vate είναι προσβάσιμες μόνο από το μπλοκ τηςκλάσης, ενώ αυτές που δηλώνονται protected είναιπροσβάσιμες και από τις κλάσεις παιδιά δηλ. πουκληρονομούν απ’ αυτήν την κλάση, όπως π.χ. τηνακόλουθη:

# SportCar.rb – class definitionclass SportCar < Car

def initialize(seats)@seats = seats

endend

Η κληρονομικότητα δηλώνεται με το < και τηνπατρική κλάση. Προσέξτε ότι οι λέξεις pri-vate και protected δηλώνουν με την ιδιότητάτους τις γραμμές κώδικα που ακολουθούν,μέχρι ν’ συναντήσουν κάποια άλλη δεσμευμένηλέξη, όπως π.χ. public. Οι στατικές ιδιότητεςδηλώνονται με το @@ ενώ οι στατικές μέθοδοιέχουν ως πρόθεμα το όνομα της κλάσηςχωρισμένο με την τελεία (.):

class CarNUM_OF_WHEELS = 4 # constant@@wheels = NUM_OF_WHEELSdef Car.static_method()end

end

Δομές και Ενότητες

Η Ruby υποστηρίζει δομές όπως οι C, C++.Μια δομή (structure) είναι ένας απλός τρόποςνα ομαδοποιήσετε μεταξύ τους δεδομένα (ήιδιότητες – attributes). Η διαφορά της από ένανπίνακα κατακερματισμού είναι ότι δεν μπορούμενα χρησιμοποιήσουμε μεταβλητές του ίδιου τύπου:κάθε φορά πρέπει να δημιουργούμε ένα νέοπίνακα κατακερματισμού. Ορίζουμε μια δομή μετη δεσμευμένη λέξη Struct. Η δομή είναι κι αυτήμια κλάση με τη διαφορά ότι δε διαθέτει μεθόδους.

25

Page 26: Ubuntistas vol.6

HOW-TO

>> Complex = Struct::new( :x, :y)>> z = Complex.new(3,2)>> p "#{z.x}+i#{z.y}"#Αργά ή γρήγορα θα αναγκαστείτε να σπάσετετον κώδικά σας, είτε αυτός είναι σε μορφήμεθόδων είτε σε μορφή κλάσεων, σε αυτόνοματμήματα ώστε να είναι ευκολότερα διαχειρίσιμος.Η Ruby διαθέτει για το σκοπό αυτό τα mod-ules (ενότητες) που είναι αντίστοιχα με τα pack-ages στη Java και τα namespaces στη C#. Μιαενότητα στη Ruby ορίζεται παρόμοια όπως καιμια κλάση με τη διαφορά ότι δεν μπορείτε ναορίσετε ιδιότητες (attributes) καθώς δε μπορείτεούτε να κληρονομήσετε απ’ αυτή ούτε να τηναρχικοποιήσετε (δηλ. να παράγετε αντικείμενατης ενότητας). Παρατηρήστε ότι μια δομή (struct)διαθέτει μόνο ιδιότητες (attributes) ενώ μια ενότητα(module) διαθέτει μόνο μεθόδους και σταθερές.

module CarUtilsNUM_OF_DOORS = 4def paint(car, color)...enddef repair(car)...endclass Wheel...end

end>> puts Car::NUM_OF_DOORS # result: 4Η Ruby παρέχει έναν τρόπο να ενσωματώνειμεθόδους μιας ενότητας σε μια κλάση. Επιτρέπειμε άλλα λόγια πολλαπλή κληρονομικότητα (mul-tiple inheritance), η οποία δεν υποστηρίζεται απ’τη Ruby. Έτσι, μπορείτε να δημιουργήσετε μια

κλάση, να κληρονομήσετε από μια άλλη κλάση καινα ενσωματώσετε όσες ενότητες χρειάζεστε. Π.χ:

class Carinclude CarUtils...

end>> puts Car::NUM_OF_DOORS # result: 4

Συμπερασματικά

Μετά από αυτή τη σύντομη περιγραφή τηςγλώσσας, είδατε τα πλεονεκτήματά της. Ηγλώσσα υποστηρίζει ακόμα εξαιρέσεις (ex-ceptions), νήματα (threads) και διεργασίες(processes), διαχείριση αρχείων και όλαόσα χρειάζεστε από μια σύγχρονη γλώσσαπρογραμματισμού. Αν ακόμα δεν έχετε πειστεί γιατις δυνατότητες της γλώσσας, δείτε το παρακάτωπρόγραμμα το οποίο εξομοιώνει την εντολή catτου Unix:

# Imitate the Unix cat utility# ============================# Loop across the argumentsARGV.each { |arg|# Open the file for# reading and write# its contents to screenIO.foreach(arg) {|line| puts line}

}

Συγκρίνετέ το με το πόσες γραμμές κώδικαχρειάζονται για να γραφεί σε Java ή C!Συμπερασματικά, η Ruby συλλέγει τα καλύτεραστοιχεία από πολλές διαδεδομένες γλώσσεςπρογραμματισμού, προσφέροντας ένα δυναμικό

συντακτικό, που σας επιτρέπει να μάθετε γρήγοραπρογραμματισμό χωρίς τις παραξενιές άλλωνγλωσσών προγραμματισμού.

Αναφορές

1. Carlson L., Richardson L., (2006), RubyCookbook, O’ Reilly.

2. CollingBourne B., (2008), The Lit-tle Book of Ruby, 2nd Edition,http://www.sapphiresteel.com.

3. Flanagan D., Matsumoto Y. (2008), TheRuby Programming Language, O’ Reilly.

4. Fitzgerald M. (2007), Learning Ruby, O’Reilly.

5. Fitzgerald M. (2007), Ruby Pocket Refer-ence, O’ Reilly.

6. Fulton H., (2006), The Ruby Way, AddisonWesley.

7. Griffiths D. (2009), Head First Rails, O’Reilly.

8. Jaconobi, E. (2006), “Dévelopment Ruby:Programmation système sous Unix: prélimi-naires”, GNU Linux Magazine, No 85, Juillet-Août, pp. 58-74.

9. McAnally J. (2006), Humble Little RubyBook,http://www.humblelittlerubybook.com.

10. Ruby & Ruby on Rails, Linux Magazine /France, No 33, Novembre / Decembre 2007.

26

Page 27: Ubuntistas vol.6

του Χατζηπαντελή Παντελή

HOW-TO

R ProjectΕισαγωγή στη χρήση του R για στατιστικές αναλύσεις!

Το R είναι ταυτόχρονα γλώσσαπρογραμματισμού και περιβάλλον γιαστατιστικούς υπολογισμούς. Τελεί υπό τηναιγίδα του GNU Foundation και αποτελεί την«ανοιχτή» υλοποίηση του στατιστικού πακέτουS-Plus, που δημιουργήθηκε από τον John Cham-bers για λογαριασμό της IBM στα μέσα τηςδεκαετίας του 1970. Οι δημιουργοί του Rεμμένουν στην χρήση του όρου «περιβάλλον»για το χαρακτηρισμό της εφαρμογής. Οόρος «περιβάλλον» χρησιμοποιείται για ναυπογραμμίσει τις ιδιότητες του R ως ένα πλήρωςπρογραμματισμένο και ευέλικτο σύστημα, που δεδεσμεύει το χρήστη του με υπερεξιδικευμένα καιμη παραμετροποιήσιμα εργαλεία.

Η βασική ιστοσελίδα του R είναι ηhttp://www.r-project.org. Για τηνεγκατάσταση του R προτείνεται ανεπιφύλακταη προσθήκη του http://tinyurl.com/ygxc28lστα software sources του συστήματος και κατόπινη εγκατάστασή του μέσω του Synaptic Pack-age Manager με την επιλογή εγκατάστασης τουπακέτου r-base-core καθώς και οποιουδήποτεάλλου το σύστημα μας κρίνει ότι χρειάζεται.

Η χρήση του R προτείνεται για πολλούςλόγους. Είναι ιδιαίτερα διαδεδομένοστην ακαδημαϊκή κοινότητα, δημιουργεί

εξαιρετικά γραφήματα, παρέχεται εκτενήςβιβλιογραφία και τεχνική βοήθεια, είναι απολύτωςπαραμετροποιήσιμο μέσω βιβλιοθηκών (pack-ages), είναι διαθέσιμο για -πρακτικά- όλες τιςπλατφόρμες (Windows, Mac, Solaris, Linux) καιφυσικά είναι δωρεάν.

Στο σημείο αυτό όμως πρέπει ναεπισημάνουμε και το βασικό μειονέκτημά: Δενείναι ιδιαίτερα αποδοτικό όταν διαχειρίζεται μεγάλαdata sets (20,000 τιμές και πάνω). Ακριβώς επειδήαποτελεί high-level γλώσσα προγραμματισμού,traversals, loops και άλλες επαναληπτικέςδιαδικασίες είναι στο R αισθητά πιο αργές σεσύγκριση με γλώσσες όπως η C/C++.

Η παρούσα παρουσίαση του R δε θα βασιστείσε κάποιο GUI. Διαθέσιμα GUI υπάρχουν στοWebμε το Rcommander και το Rkward να κερδίζουν τημερίδα του λέοντος στις προτιμήσεις των χρηστών.Όλες οι εντολές θα δοθούν στη γραμμή εντολών(terminal). Το R εκκινείται από τη γραμμή εντολώνμε την εντολή R.

Μια πρώτη άμεση ιδέα για τη λειτουργίατου R δίνεται με την εντολή plot(rnorm(1000)).Ουσιαστικά δημιουργούμε 1000 τυχαία στοιχεία,από μία κανονική κατανομή (random normal) ταοποία με τη σειρά τους γίνονται plot μέσω τηςεντολής plot(). Πρέπει να σημειώσουμε ότι αν

δεν παρέχονται συμπληρωματικοί παράμετροι γιατις ιδιότητες της κανονικής κατανομής η rnorm()θεωρεί ότι ο αριθμητικός μέσος είναι ίσος με 0 καιη τυπική απόκλιση ίση με 1.

> plot(rnorm(1000))

Τα «πάντα» στο R αποθηκεύονται καιεπεξεργάζονται ως αντικείμενα. Και οισυναρτήσεις plot και rnorm, και το αποτέλεσματης rnorm(1000) αλλά και ο αριθμός 1000καθαυτός θεωρούνται αντικείμενα με τα δικάτους ιδιοχαρακτηριστικά. Ως αντικείμενα λοιπόνδέχονται αλλά και λειτουργούν ως ορίσματα σεάλλα αντικείμενα ή συναρτήσεις.

27

Page 28: Ubuntistas vol.6

HOW-TO

Σχεδόν όλες οι εντολές στο R χρησιμοποιούνμία ή περισσότερες συναρτήσεις κατά τηνυλοποίησή τους. Μια συνάρτηση (όπως η plot)καλείται με το όνομά της ακολουθούμενη από μίαπαρένθεση στην οποία εμπεριέχονται ορίσματαγια αυτή. Η παρένθεση αυτή είναι πάντα παρούσαακόμα και αν δεν έχει ορίσματα ή συνάρτηση πουκαλείται (ή ορθότερα, δεν απαιτούνται ορίσματααπό τον ίδιο τον χρήστη). Σε κάθε περίπτωση το"man page" κάθε εντολής μπορεί να παρουσιαστείάμεσα είτε μέσω της εντολής help(command_-name) είτε μέσω της εντολής ?command_name.Πρέπει να σημειωθεί πως όταν παρουσιάζονται(...) στο πεδίο ορισμάτων η συνάρτηση δέχεταικαι άλλα πολλαπλά ορίσματα που συχνά είναιάλλες συναρτήσεις.

Προφανώς το R μπορεί να χρησιμοποιηθείως ένας τεράστιος υπολογιστής τσέπης. Οχρήστης μπορεί να κάνει προσθέσεις, αφαιρέσεις,πολλαπλασιασμούς και υπολογισμό δυνάμεωνάμεσα. Η διαχείριση τριγωνομετρικών μεγεθώνκαι λογαρίθμων είναι πολύ εύκολη καθώς καιη υλοποίηση πράξεων με μιγαδικούς αριθμούς.Έτσι η ακολουθία πράξεων:

> (( (sin(3))^2 + (cos(3))^2) * exp(0)) -((log(2.71828183)) * (0+1i)^2)

θα μας δώσει:

[1] 2-0i

To R όπως και πολλές άλλες γλώσσεςπρογραμματισμού χρησιμοποιεί συμβολικέςμεταβλητές, δηλαδή αναθέτει μια τιμή σε μιαμεταβλητή ώστε να τη «συμβολίζει». Το ζεύγος

χαρακτήρων <- είναι ο τελεστής εκχώρησηςτιμής. Οι ακόλουθες εντολές παρουσιάζουν μιαβασική διαδικασία εκχώρησης μεταβλητών με τονπαράλληλο σχολιασμό:

Ανάθεση τιμής στο x

> x <- 2

Ανάθεση τιμής στο y

> y = 3*((sin(pi))^2 +(cos(pi))^2)

Άθροισμα των x και y στο z

> z <- x+y

Παρουσίαση τιμής στο z

> z #show Z[1] 5

Οι περισσότερες όμως πράξεις εμπλέκουν«πολλούς» αριθμούς. Για αυτό το R χρησιμοποιείτα διανύσματα δεδομένων (data vectors). Έναδιάνυσμα (vector) στο R είναι πρακτικά μιαακολουθία μεταβλητών, που το R τις διαχειρίζεταιως μια ενιαία μεταβλητή. Ως άμεση συνέπειαπερίπλοκες πράξεις που θα χρειαζόντουσανεπαναληπτικούς βρόγχους, μπορούν ναυλοποιηθούν άμεσα πραγματοποιώντας πράξειςμε το σύνολο των τιμών ενός διανύσματος με τονίδιο ακριβώς τρόπο που θα μεταχειριζόμασταν μιαμοναδιαία μεταβλητή.

Στο ακόλουθο παράδειγμα θα εξετάσουμετο ύψος και το βάρος 10 φοιτητών. Θαδηλώσουμε το βάρος και το ύψος τους, καιθα δούμε πώς μπορούμε να μετατρέψουμε καινα μετονομάσουμε τις μεταβλητές αυτές. Στη

συνέχεια θα ορίσουμε την μεταβλητή δείκτη μάζαςπου είναι απόρροια ενός βασικού υπολογισμού,θα κάνουμε μια βασική επισκόπηση των κύριωνμεταβλητών του δείγματος μας και τέλος θακάνουμε έναν έλεγχο υπόθεσης. Πρέπει επίσης ναυπογραμμίσουμε ότι και το R όπως πολλές άλλεςγλώσσες προγραμματισμού είναι case-sensitive.

Ανάθεση τιμών βάρους(κιλά)

> weight_kilos <- c(75.9, 80.7, 67.1, 75.6,61.0, 85.0, 88.1, 95.5, 72.6, 97.2)

Ανάθεση τιμών ύψους(μέτρα)

> height <- c(1.76,1.77,1.68,1.78,1.72,1.69,1.88,1.87,1.77,1.90)Ανάθεση των τιμών βάρους σε νέα μεταβλητή

αλλά σε λίβρες

> weight_pounds <- weight_kilos * 2.205Προβολή τιμών βάρους σε λίβρες

> weight_pounds[1] 167.3595 177.9435 147.9555 166.6980

134.5050 187.4250 194.2605 210.5775[9] 160.0830 214.3260Ανάθεση/μετονομασία του διανύσματος

weight_kilos στο w_k / Το διάνυσμα weight_kilosεξακολουθεί να υπάρχει

> w_k <- weight_kilosΔιαγραφή της μεταβλητής weight_kilos

> rm(weight_kilos)

Υπολογισμός δείκτη μάζας ως το πηλίκο τουβάρος σε κιλά δια του τετραγώνου του ύψους σεμέτρα

> bmi <- w_k / height^2

28

Page 29: Ubuntistas vol.6

HOW-TO

Προβολή δεικτών μάζας του δείγματος

> bmi[1] 24.50284 25.75888 23.77409 23.86062

20.61925 29.76086 24.92644 27.30990[9] 23.17342 26.92521

Συνολικό άθροισμα βάρους των φοιτητών τουδείγματος

> sum(w_k)[1] 798.7

Μήκος (πλήθος τιμών) του διανύσματοςδεδομένων βάρους

> length(w_k)[1] 10

Αριθμητικός μέσος του διανύσματοςδεδομένων βάρους

> mean(w_k)[1] 79.87

Τυπική απόκλιση τιμών βάρους

> sd(w_k)[1] 11.76322

Μέγιστη τιμή στο διάνυσμα δεδομένων ύψους

> max(height)[1] 1.9

Συγκεντρωτικά στοιχεία του διανύσματοςδείκτη μάζας

> summary(bmi)Min. 1st Qu. Median Mean 3rd Qu. Max.20.62 23.80 24.71 25.06 26.63 29.76

Επιλογή δεικτών στο διάνυσμα δεδομένωνδείκτη μάζας οι οποίοι είναι μεγαλύτεροι από 25

> which(bmi > 25)[1] 2 6 8 10

Σύμφωνα με την παραπάνω αρχικήεπισκόπηση του δείκτη μάζας, «αρκετοί» φοιτητέςτου δείγματος έχουν δείκτη μάζας πάνω από25, άρα είναι υπέρβαροι. Είναι εύλογο λοιπόννα ελέγξουμε την υπόθεση αν ο αριθμητικόςμέσος του δείκτη μάζας του πληθυσμού είναιπράγματι 22.5, δηλαδή φυσιολογικός, πάντα υπότην προϋπόθεση ότι ο συνολικός πληθυσμόςτων φοιτητών είναι κανονικά κατανεμημένος.(Ο συνολικός πληθυσμός μπορεί να είναι πολύμεγαλύτερος από το μέγεθος του δείγματος μας).Το R παρέχει μια πληθώρα στατιστικών tests γιαέλεγχο υποθέσεων. Το πιο ευρέως διαδεδομένοκαι βασικό είναι το t-test. Λεπτομέρειες για τηχρήση προσφέρει η εντολή ?t.test.

Έλεγχος υπόθεσης με βάση το δείγμα bmi ότιο πραγματικός αριθμητικός μέσος του πληθυσμού(όχι του δείγματος) ισούται με 22.5

> t.test(bmi, mu=22.5)

One Sample t-test

data: bmit = 3.1951, df = 9, p-value = 0.01092alternative hypothesis:true mean is not equal to 22.595 percent confidence interval:23.24786 26.87445

sample estimates:

mean of x25.06115

Με βάση τα αποτελέσματα είναι μάλλοναπίθανο να έχουμε τέτοιο δείγμα αν ο αριθμητικόςμέσος ήταν πραγματικά 22.5

Επιλογή δεικτών στο διάνυσμα δεδομένωνδείκτη μάζας οι οποίοι είναι μικρότεροι ή ίσοι από22.5

> which(bmi <= 22.5)[1] 5

Είναι λοιπόν πολύ πιθανό ότι το δείγμα μαςέρχεται από ένα πληθυσμό φοιτητών που έχουνυψηλότερο δείκτη μάζας από το "φυσιολογικό"22.5.

Κάνοντας ένα βήμα πίσω εξετάζουμε πάλιβασικές έννοιες του R ως προγραμματιστικόπεριβάλλον. Όπως προείπαμε η κάθε μεταβλητήείναι ένα αντικείμενο. Μπορούμε να δούμετις μεταβλητές που έχουμε διαθέσιμες προςχρήση με την εντολή ls(). Παρατηρείτε ότι ημεταβλητή weight_kilos δεν υπάρχει αφού τηνέχουμε διαγράψει για να ελευθερώσουμε χώροστη μνήμη μέσω της rm().

> ls()[1] "bmi" "height" "weight_pounds" "w_k"[5] "x" "y" "z"

Νωρίτερα χρησιμοποιήσαμε διανύσματαδεδομένων αριθμητικών τιμών. Υπάρχει όμως καιη δυνατότητα να χρησιμοποιήσουμε χαρακτήρες(characters) ή και λογικές (logical) τιμές.

> names <- c("Axilleas",'Akakios',"Adam")> logic <- c(T,T,F)

29

Page 30: Ubuntistas vol.6

HOW-TO

Είναι εύκολο να δημιουργήσουμε διανύσματαλογικών τιμών τα οποία συχνά λειτουργούν ως"διακόπτες" για την κλήση ή όχι μιας συνάρτησης.Διανύσματα δεδομένων λογικών δημιουργούνταιαβίαστα με την χρήση σχεσιακών διατυπώσεων(relational expressions).

> overweight<-(bmi>25)> overweight[1] FALSE TRUE FALSE FALSE FALSE

TRUE FALSE TRUE FALSE TRUE

Πολύ χρήσιμες κρίνονται οι συναρτήσεις πουδημιουργούν διανύσματα δεδομένων αυτόματα.Υπάρχουν 3 τέτοιες συναρτήσεις στο R. Ήδησυναντήσαμε τη συνάρτηση c(), που ουσιαστικά«συνδέει» κάποιες τιμές σε ένα διάνυσμα (τοc είναι σύντμηση του concatenate). Επιπλέονπαρουσιάζονται και οι συναρτήσεις seq() καιrep(). Η seq() (sequence) είναι πρακτική γιατην δημιουργία απλών ακολουθιών από αριθμούς.Συνήθως λαμβάνει 3 ορίσματα. Την αρχικήτιμή, την τελική τιμή και τη διαφορά μεταξύ τωντιμών. Αν δεν οριστεί τρίτο όρισμα (διαφορά) αυτόθεωρείται αυτόματα ίσο με τη μονάδα.

> seq(1,6)[1] 1 2 3 4 5 6> seq(1,6,1.1)[1] 1.0 2.1 3.2 4.3 5.4

Τέλος η συνάρτηση rep() (replicate) παράγειεπαναλαμβανόμενες τιμές. Μπορεί να δεχτείδεχτεί όχι μόνο αριθμούς αλλά και διανύσματα ωςορίσματα της.

> rep(1,6)[1] 1 1 1 1 1 1> x1<-c(2,3)> rep(x1,3)[1] 2 3 2 3 2 3

Η R προσφέρει και άλλες δομές δεδομένωνοι οποίες δεν θα αναλυθούν στο παρόν κείμενο.Δίνεται πάντως δυνατότητα δημιουργίας πινάκων(matrices), πινάκων μεγαλύτερης διάστασης (ar-rays), λιστών (lists), παραγόντων (factors) καιπλαισίων δεδομένων (data frames).

H πλέον διαδεδομένη δομή (πέρα από ταδιανύσματα δεδομένων, προφανώς) είναι αυτήτων πλαισίων δεδομένων (data frames). Το κύριοπλεονέκτημα αυτής της δομής είναι ότι επιτρέπειτο συνδυασμό δεδομένων διαφορετικού τύπουμέσα σε ένα αντικείμενο για να χρησιμοποιηθείπρος ανάλυση. Η ιδέα του πλαισίου δεδομένωνείναι η ταξινόμηση των τιμών κατά μεταβλητή(στήλη) ανεξάρτητα της μορφής τους.

Σε κάθε περίπτωση είναι βολικό να έχουμετα δεδομένα μας συγκεντρωμένα σε έναπλαίσιο δεδομένων (data-frame). Μπορούμενα δημιουργήσουμε πλαίσια δεδομένων με τονσυνδυασμό προϋπαρχόντων μεταβλητών.

> students_d_f <- data.frame(w_k, height,overweight, bmi)

> students_d_fw_k height overweight bmi

1 75.9 1.76 FALSE 24.502842 80.7 1.77 TRUE 25.758883 67.1 1.68 FALSE 23.774094 75.6 1.78 FALSE 23.860625 61.0 1.72 FALSE 20.61925

6 85.0 1.69 TRUE 29.760867 88.1 1.88 FALSE 24.926448 95.5 1.87 TRUE 27.309909 72.6 1.77 FALSE 23.1734210 97.2 1.90 TRUE 26.92521

Εφόσον ένα διάνυσμα δεδομένων/μεταβλητήγίνει μέρος ενός πλαισίου δεδομένων είναιπροσβάσιμη με την χρήση του συμβόλου $.

> students_d_f$w_k[1] 75.9 80.7 67.1 75.6 61.0 85.0 88.1 95.5

72.6 97.2

Κατόπιν αυτού μπορεί να διαγραφεί το αρχικόδιάνυσμα w_k, μέσω της rm(w_k), αφού οι τιμέςτου έχουν αποθηκευτεί στο πλαίσιο δεδομένωνstudents_d_f.

Ένα τελευταίο θέμα προς εξέταση είναι αυτότου indexing. Στο R σε αντίθεση με ορισμένεςπαραδοσιακές γλώσσες προγραμματισμού, ηπρώτη τιμή ενός διανύσματος συμβολίζεται με τονδείκτη "1".

> height[2][1] 1.77

Για να έχουμε πρόσβαση σε μιαακολουθία μεταβλητών μπορούμε επίσης ναχρησιμοποιήσουμε τον συμβολισμό a:b (ο οποίοςείναι ισοδύναμος με την έκφανση seq(a,b,1)) :

> height[1:4][1] 1.76 1.77 1.68 1.78

Στην περίπτωση χρήσης ενός πλαισίουδεδομένων μπορούμε να χρησιμοποιήσουμε μια«πινακοειδή» επιλογή [a,b] όπου το a αντιστοιχείστην σειρά και το b στην στήλη.

30

Page 31: Ubuntistas vol.6

HOW-TO

> students_d_f[3,3][1] FALSE

Όλες οι παράμετροι μίας στήλης ή σειράςμπορούν φυσικά να επιλεχθούν με τις εντολές [,b]και [a,] αντίστοιχα.

> students_d_f[3,]w_k height overweight bmi

3 67.1 1.68 FALSE 23.77409

Τέλος βλέπουμε ότι πολλές φορές είναιχρήσιμο να επιλέξουμε δεδομένα βάση κάποιαςσυνθήκης. Όπως πχ. να επιλέξουμε τους φοιτητέςμε ύψος άνω του 1.80m, που είναι και υπέρβαροι:

> students_d_f[ (students_d_f$overweight ==T) & (students_d_f$height>1.80) ,]

w_k height overweight bmi8 95.5 1.87 TRUE 27.3099010 97.2 1.90 TRUE 26.92521

Αναφέραμε ότι το R μπορεί να επεκτείνει τηλειτουργικότητα του με την χρήση «πακέτων».Τα πακέτα δημιουργούνται από τους χρήστεςκαι ουσιαστικά παίζουν το ρόλο που έχουν οιβιβλιοθήκες σε άλλες γλώσσες προγραμματισμού.Το κάθε πακέτο μπορεί να εγκατασταθεί μεμια μονάχα εντολή εφόσον ο χρήστης είναισυνδεδεμένος στο διαδίκτυο. Η εντολή in-stall.packages("package_name", dependencies =TRUE) βρίσκει και εγκαθιστά το επιλεγόμενοπακέτο στο σύστημα του χρήστη.

> install.packages("Hmisc", dependencies= TRUE)

Για να «φορτωθεί» το πακέτο αρκεί να εισαχθείμε την εντολή library().

> library(Hmisc)

Για την εισαγωγή και εξαγωγή δεδομένων στοR υπάρχουν πολλοί τρόποι. Ο πιο ασφαλήςκαι απλός είναι με την χρήση αρχείων .csv. Tααρχεία .csv (comma separated values) είναι ηπλέον απλή μορφή αρχείων σε μορφή πινάκων.Κάθε γραμμή σε ένα .csv αρχείο αντιστοιχεί σε μιασειρά του πίνακα. Μέσα στη γραμμή τα πεδίαχωρίζονται με κόμμα, με κάθε πεδίο να ανήκεισε ξεχωριστή στήλη του αρχικού πίνακα. Tααρχεία αυτά αναγνωρίζονται αλλά και παράγονταιπρακτικά από όλες τις σύγχρονες εφαρμογέςspeadsheet (Apple Numbers, Microsoft Excel,OO Calc κ.α.) καθώς και από σχεδόν όλεςτις υπάρχουσες γλώσσες προγραμματισμού (Ba-sic, C/C++, Haskell, Java, Lisp, PHP και πολλέςάλλες)(*). Η εντολή write.csv() για την εγγραφήτων δεδομένων του χρήστη σε ένα αρχείο απαιτείμονάχα το όρισμα της μεταβλητής που θα εξαχθείκαθώς και το όνομα του αρχείου που εξάγεται.Το αρχείο που θα δημιουργηθεί θα βρίσκεταιπροφανώς στο φάκελο όπου ήδη εκτελείται το R.Ο παρών φάκελος μπορεί να ευρεθεί εύκολα μετην εντολή getwd() και να αλλαχθεί με την εντολήsetwd() (συντμήσεις για get working directory καιset working directory αντίστοιχα).

> write.csv( students_d_f, file="foo1.csv")> getwd()[1] "/home/feanor"> setwd("/home/feanor/Desktop/RBUNTU")

Για την εισαγωγή των δεδομένων από ένααρχείο .csv χρησιμοποιείται η εντολή read.csv().Απαιτείται από τον χρήστη να ορίσει εκτός

από το όνομα του αρχείου, τουλάχιστον 2παραμέτρους. Πρώτον το αν υπάρχουν ή όχιεπικεφαλίδες, δηλαδή ονόματα στα πεδία/στήλες.Δεύτερον πρέπει να δηλώσει ποιος χαρακτήραςχρησιμοποιείται για τον διαχωρισμό τωνπεδίων/στηλών αφού πολλοί χρήστες μπορεί ναεπιλέξουν σύμβολο «διαχωρισμού» διαφορετικότου standard "," (το σύμβολο ";" είναι επίσηςδημοφιλές).

> copy_dg <- read.csv(file="foo1.csv",head=TRUE, sep=",")

Φτάνοντας προς το τέλος αυτής της αρχικήςεπισκόπησης βλέπουμε μια εισαγωγική διαδικασίαδημιουργίας γραφημάτων. Όπως ειπώθηκε ταγραφήματα είναι ένα από το σημεία υπεροπλίαςτου R. Προηγουμένως η plot() παρουσίαζε τααποτελέσματά της στο τερματικό, ανοίγονταςαυτόματα ένα παράθυρο με τη γραφική απεικόνισητων δεδομένων μας. Όμως μέσω της χρήσηςτης εντολής png() μπορούμε να προωθήσουμεάμεσα τα αποτελέσματα της εντολής plot(και οποιαδήποτε άλλης εντολής παραγωγήςγραφικών) σε ένα αρχείο png που ορίζεταιαπό το χρήστη. Εκτός από την εντολήpng(), είναι διαθέσιμες και οι εντολές pdf(),win.metafile(), jpeg(), bmp() και postscript(), οιοποίες παράγουν και τα αντίστοιχα αρχεία. Γιανα ολοκληρωθεί η διαδικασία δημιουργίας τουαρχείου γραφικών πρέπει να δοθεί η εντολήdev.off() όπου επαναφέρει το προεπιλεγμένοπεριβάλλον απεικόνισης στο τερματικό.

Αρχίζουμε ενδεικτικά χρησιμοποιώντας ταδιανύσματα r1 και r2 που δημιουργούνται μέσωδειγματοληψιών από 2 τυχαίες κατανομές.

31

Page 32: Ubuntistas vol.6

HOW-TO

> r1<-rnorm(200)> r2<-rnorm(200,sd=2)

Φαίνεται άμεσα ότι η διασπορά των τιμών τουr2 θα είναι μεγαλύτερη αφού η τυπική απόκλισητων τιμών είναι ίση με 2. (Στο r1 αφού δεν ορίζεται,είναι ίση με τη μονάδα)

Προωθούμε αμέσως τα γραφικάαποτελέσματα μας στο αρχείο "ourdata.png"ορίζοντας και το μέγεθος του παραγόμενουγραφήματος (αν και θα μπορούσαμε να τοαφήσουμε στο "default" 480x480).

> png("ourdata.png",width = 720, height= 720)

Στη συνέχεια διαχωρίζουμε την γραφικήμας απεικόνιση (το παράθυρο τρόπον τινά)σε 4 επιμέρους κομμάτια μέσω της εντολήςpar(). Η εντολή par() (parameters) επιτρέπειτον καθορισμό παραμέτρων των παραγόμενωνγραφικών, όπως το πάχος των γραμμών,τις γραμματοσειρές, χρώματα γραμμάτων καιγραφημάτων. Εδώ η par() μέσω του ορίσματοςmfrow=c(2,2) δημιουργεί 2 σειρές με 2 στήλες στηνκάθε σειρά. Αντίστοιχα αν θέλαμε 4 γραφήματασε σειρά θα επιλέγαμε τιμές ορίσματος c(1,4).Κατά τη διάρκεια της διαδικασίας πρέπει ναθυμόμαστε ότι ΔΕΝ θα έχουμε κανένα άμεσογραφικό αποτέλεσμα. Τα αποτελέσματα τωνεντολών εγγράφονται στο ourdata.png το οποίο θαείναι αναγνώσιμο μετά την εκτέλεση της εντολήςdev.off().

> par(mfrow=c(2,2))

Δημιουργούμε ένα πρώτο scatterplot τωντιμών του r1. Επιπρόσθετα ορίζουμε μέσωτου ορίσματος ylim=c(-6,6) δεσμεύοντας το R νααπεικονίσει τα αποτελέσματα στον άξονα y μέσαστο διάστημα (-6,6).

> plot(r1,ylim=c(-6,6))

Ακολούθως κάνουμε ένα δεύτερο scatterplotτων τιμών του r2. Πάλι ορίζουμε το εύρος τουδιαστήματος απεικόνισης μέσω της ylim ώστε ναείναι συγκρίσιμα τα μεγέθη μας.

> plot(r2,ylim=c(-6,6))

Συνεχίζουμε κάνοντας ένα boxplot για ναέχουμε μια γενική επισκόπηση τυχόν ακραίωντιμών στο (ψευδο)τυχαίο δείγμα μας.

> boxplot(r1,r2)

Ολοκληρώνοντας εισάγουμε το πακέτο Hmiscκαι χρησιμοποιούμε την εντολή histbackback()μέσα από αυτό. Όπως και στην plot() η histback-back() μπορεί να δεχτεί ορίσματα για το εύρος τωναπεικονιζόμενων τιμών. Σε αυτή τη περίπτωσημέσω της xlim περιορίζουμε τα αποτελέσματαμέσα στο διάστημα (-88,88).

> library(Hmisc)> histbackback(r1,r2,xlim=c(-88,88))

Τέλος εισάγουμε ένα γενικό τίτλο σταγραφήματα μας μέσω της εντολής mtext() (margintext). Αυτή η εντολή δέχεται πολλαπλά ορίσματαπου καθορίζουν το ακριβές σημείο αποτύπωσηςτων γραμμάτων (μέσω των outer και line) καθώςκαι τον τύπο στοιχείων (μέσω της font).

> mtext("Experimental Plottings",outer=TRUE, line=-3, font=2)

Για να οριστικοποιήσουμε τo αρχείο our-data.png επαναπροσδιορίζουμε την έξοδο τωνγραφικών αποτελεσμάτων στο τερματικό.

> dev.off()

Έτσι έχουμε δημιουργήσει μια γραφικήαπεικόνηση των μεταβλητών μας, που μπορείνα εξυπηρετήσει σε μια πρωταρχική γραφικήεπισκόπηση τους.

Το παρόν tutorial προσφέρει μια πρώτηεισαγωγή στo περιβάλλον του R. Οι δυνατότητεςτου R είναι σχεδόν απεριόριστες και δεσμεύονταιουσιαστικά από τους διαθέσιμους υπολογιστικούςπόρους και την τεχνογνωσία του χρήστητου. Το R δεν είναι ένα εύκολο πρόγραμμακαι απαιτεί χρόνο και προσπάθεια για τηνκατανόηση του. Από την άλλη όμως προσφέρειπραγματικά επαγγελματικού επιπέδου ποιότητακαι επεξεργαστικές τεχνικές σε όλους τουςχρήστες, ασχέτως χρημάτων και ακαδημαϊκούεπιπέδου. Είναι μια πραγματική «νίκη» γιατην κοινότητα ελευθέρου λογισμικού όταν μιαεφαρμογή σαν το R, όχι μόνο υπάρχει αλλάουσιαστικά θέτει το standard για τις άλλεςεφαρμογές «κλειστού» κώδικα για το τι πρέπεινα ξεπεράσουν αλλά και να υλοποιήσουν, ώστενα ονομάζονται state-of-the-art.

32

Page 33: Ubuntistas vol.6

του Παπαδόπουλου ∆ημήτρη

REVIEW

Xaos«Εν αρχή ην το χάος»

Στην αρχή ήταν το χάος περιγράφει ο Ηρόδοτοςστη Θεογονία του.

Σήμερα είναι γνωστό ότι πολλά φυσικάφαινόμενα είναι χαοτικά, όπως ο καιρός, οι χτύποιτης καρδιάς, το χρηματιστήριο και όχι μόνο.Ένας πολωνικής καταγωγής γαλλοαμερικανόςμαθηματικός, ο Benoit Mandelbrot (στο ελληνικάσημαίνει αμυγδαλόψωμο) προσπάθησε νααναπαραστήσει το χάος που παρατήρησεστα ηλεκτρικά κυκλώματα του δικτύου τηςΙΒΜ. O Mandelbrot εισήγαγε τον όρο frac-tal από τη λατινική λέξη fractus, που σημαίνειθρυμματισμένος ή κατακερματισμένος. Και έτσιδημιουργήθηκε το περίφημο fractal του Mandel-brot.

Τα fractals είναι μαθηματικά αντικείμενα πουδημιουργούνται από επαναληπτικές διαδικασίεςοι οποίες εφαρμόζονται σε μιγαδικούς αριθμούς.Επειδή όμως μια τέτοια διαδικασία θα ήτανχρονοβόρα αν γινόταν με το χέρι, υπάρχουνπρογράμματα όπως το Xaos, που κάνουν τηδουλειά για εμάς. Στις παρακάτω εικόνεςφαίνονται ορισμένα χαρακτηριστικά παραδείγματαfractals, που φέρουν τα ονόματα των δημιουργώντους.

Ο τάπητας του Sierpinski αποτελείται απόένα τετράγωνο το οποίο'το χωρίζουμε σεεννιά υποτετράγωνα. Στα οκτώ από αυτά,εκτός το κεντρικό, εφαρμόζουμε την ίδιαδιαδικασία, χωρίζουμε δηλαδή το καθένα σεεννιά υποτετράγωνα και στα οκτώ εφαρμόζουμετην ίδια διαδικασία. Ένα παρόμοιο αποτέλεσμαοδηγούμαστε αν ξεκινήσουμε με τρίγωνο, το οποίοχωρίσουμε σε τέσσερα υποτρίγωνα.

Η χιονονιφάδα του Koch είναι ένα τρίγωνο στοοποίο έχει εφαρμοσθεί η ακόλουθη διαδικασία.Κάθε πλευρά χωρίζεται σε τρία ίσα τμήματακαι στο μεσαίο τμήμα δημιουργείται ένα τρίγωνοπρος την εξωτερική πλευρά του τριγώνου. Ηδιαδικασία αυτή εφαρμόζεται σε κάθε νέα πλευράτου σχήματος.

Μια από τις πιο ενδιαφέρουσες ιδιότητεςπολλών fractals, όπως της χιονονιφάδας τουKoch, είναι το γεγονός ότι έχουν πεπερασμένο

εμβαδόν αλλά άπειρη περίμετρο (κι όμως κάτιτέτοιο είναι όντως πραγματικό). Αυτή η ιδιότηταείναι που τα κάνει και κλασματικά, fractal δηλαδή,μιας και δεν ανήκουν πλέον στο ευκλείδιο επίπεδοαλλά έχουν κλασματική διάσταση (περίπου 1,26για τη χιονονιφάδα του Koch).

Mια άλλη ιδιότητα των fractals είναι ότι ότανεστιάζουμε σε περιοχή τους, δε βλέπουμε τοαρχικό σχήμα αλλά κάτι που μοιάζει αρκετά μετο αρχικό. Αυτό ονομάζεται αυτοομοιότητα. Τοπρόγραμμα Xaos μας δίνει τη δυνατότητα ναδημιουργήσουμε όλα αυτά τα fractals και ναεστιάσουμε σε αυτά ώστε να γνωρίσουμε μέχρικαι τις πιο άγνωστες πτυχές τους. Προσπαθήστενα εστιάσετε στο fractal του Mandelbrot για ναανακαλύψετε διάφορες καινούριες περιοχές του.

Επιπλέον μπορούμε να εισάγουμε του δικούςμας αλγόριθμους ώστε να δημιουργήσουμεμορφές και fractals από εξισώσεις τωνφαινομένων που μας ενδιαφέρουν. Φυσικά δενείναι όλα τα φαινόμενα χαοτικά αλλά ποτέ δε ξέρεικανείς πού θα ανακαλύψει τη μαγεία του χάους.

Η εγκατάσταση γίνεται εύκολα: Εφαρμογές-> Προσθαφαίρεση προγραμμάτων, ή απότη γραμμή εντολών: sudo apt-get installxaos. Περισσότερες πληροφορίες μπορούν ναβρεθούν στην ιστοσελίδα του προγράμματος:http://xaos.sourceforge.net.

33

Page 34: Ubuntistas vol.6

του Διαμαντή Δημήτρη

REVIEW

Video editorsΤο καλοκαίρι πέρασε και το μόνο που έμεινε είναι οι αναμνήσεις, οι φωτογραφίες και τα βίντεο για να το θυμόμαστε. Καιρός λοιπόν για λίγηδημιουργία με το υλικό που μαζέψαμε ώστε το απολαμβάνουμε και να αναπολούμε τις στιγμές στις κρύες νύχτες του χειμώνα...

Cinelerra

Ο πιο προχωρημένος από θέμα επιδόσεων καιδυνατοτήτων επεξεργαστής και συνθέτης βίντεοστο linux. Μπορεί να καλύψει επαγγελματικέςαπαιτήσεις αν και έχει μείνει λίγο πίσω σαν έργοκαθώς υπολείπεται μερικών δυνατοτήτων πουπροσφέρουν πλέον οι ανταγωνιστές του. Δεδιαθέτει ιδιαίτερα φιλικό περιβάλλον οπότε ανδεν είστε επαγγελματίας του είδους μάλλον θααπογοητευτείτε.

Kdenlive

Αρκετά δημοφιλής και όχι άδικα καθώς εκτόςτου ότι είναι εύκολος στην χρήση και με φιλικόπεριβάλλον μπορεί σίγουρα να καλύψει όλεςτις απαιτήσεις του απλού χρήστη και όχι μόνο.Ακολουθώντας και αυτός τα υπόλοιπα έργα τουkde, έχει γίνει port σε kde4 προσφέρονταςένα native περιβάλλον στους χρήστες του ενλόγω desktop environment. Δοκιμάζοντας τηντελευταία έκδοση δυστυχώς διαπίστωσα ότι δενείναι ιδιαίτερα σταθερός και το συχνό σώσιμο τουσχεδίου στο οποίο δουλεύουμε είναι απαραίτητο.Βέβαια αυτό δε θα πρέπει να σας εμποδίσει ώστενα κάνετε μια δοκιμή καθώς η ανάπτυξή του είναιγρήγορη και τα bugs διορθώνονται.

LiVES

Επίσης γνωστός και με αρκετές δυνατότητεςεκτός από την επεξεργασία βίντεο μπορεί ναχρησιμοποιηθεί και σαν VJ καθώς προσφέρειμίξη βίντεο σε πραγματικό χρόνο! Αποτελείτην επιλογή αρκετών επαγγελματιών του είδουςπαραμένοντας ταυτόχρονα απλός και εύκολοςστην χρήση για τον οποιοδήποτε. Εκτός τωνάλλων μπορεί κάποιος να τον χειριστεί και απόμακριά ή μέσω script παίζοντας το ρόλο του βίντεοεξυπηρετητή.

34

Page 35: Ubuntistas vol.6

REVIEW

Avidemux

Ελεύθερος και διαπλατφορμικός, έχει σχεδιαστείγια απλή επεξεργασία μεμονωμένων βίντεοπροσφέροντας απλό κόψιμο, φιλτράρισμακαθώς και διαδικασίες κωδικοποίησης.Υποστηρίζει αρκετούς τύπους αρχείων καθώςκαι αυτοματοποίηση των διαδικασιών μέσωπροσχεδίων, εργασιών σε ουρά και ισχυρέςδυνατότητες scripting.

Kino

Αν και το όνομά του μπορεί να παραπέμπει σεKDE λόγω του K, είναι μια gtk+ 2 εφαρμογή.Θα φανεί ιδιαίτερα χρήσιμη στους χρήστες cam-era καθώς συνεργάζεται άριστα με αυτές σεσχέση με τις υπόλοιπες εφαρμογές του είδουςπροσφέροντας άριστη συνεργασία με την διεπαφήIEEE-1394 (firewire) για σύλληψη βίντεο, VTRcontrol και αντίγραφο πίσω στην camera. Μπορείνα κάνει σύλληψη βίντεο σε Raw DV και Avi for-mat.

Openshot

Όχι ιδιαίτερα γνωστό και με λίγες δυνατότητεςπρος το παρόν καθότι νέο project, είναι σίγουραη πιο υποσχόμενη πρόταση καθώς αν και δενέχει ακόμα κάποια επίσημη έκδοση διαθέσιμη,θα μείνετε έκπληκτοι από τη φιλικότητα και τησταθερότητα της εφαρμογής. Στην ιστοσελίδατου θα βρείτε αρχεία εγκατάστασης της πρώιμηςέκδοσης για το Ubuntu αν θέλετε να τονδοκιμάσετε.

Open Movie Editor

Προσφέροντας τα βασικά χαρακτηριστικά μιαςεφαρμογής του είδους, έχει σχεδιαστεί για να είναιαπλός και εύκολος. Έτσι αποτελεί μια από τιςκαλύτερες προτάσεις για τους νέους «καλλιτέχνες»του είδους που σίγουρα δε θα παρατηρήσουνκάποια διαφορά απ' ότι με μια πιο εξειδικευμένηλύση.

Πηγές

• cinelerra.org

• kdenlive.org

• lives.sourceforge.net

• fixounet.free.fr/avidemux

• kinodv.org

• openshotvideo.com

• openmovieeditor.org

• en.wikipedia.org

35

Page 36: Ubuntistas vol.6

του Σαββίδη Σόλωνα

ΠΑΙΧΝΙΔΙΑ

TORCSΌταν οι ρόδες... "σφυρίζουν"!

Καθώς το καλοκαιράκιμας αποχαιρετά και οχειμώνας κοντεύει, ο καιρόςχαλάει και η προσοχήμας στο δρόμο πρέπει να

είναι πιο τεταμένη. Ως συντακτική ομάδα πουενδιαφέρεται για το αναγνωστικό της κοινό,σας προτείνουμε γι' αυτήν την περίοδο έναπαιχνίδι δράσης, οδηγικής δεξιοτεχνίας και...προγραμματιστικής λογικής! Αν δε γίνετε άσσοιστην οδήγηση, τουλάχιστον θα γίνετε καλύτεροιπρογραμματιστές.

Το TORCS λοιπόν απευθύνεται σε «εικονικούςπιλότους» με πάθος για την οδήγηση.Γρήγορα αυτοκίνητα, παράτολμοι οδηγοί και

προγραμματιστές που βάλθηκαν να γίνουνο Senna στη θέση του Senna! Αν σαςφαίνονται ενδιαφέροντα όλα αυτά... προχωρήστεπαρακάτω...

Λίγα λόγια για την ιστορία του...

Η ανάπτυξή του ξεκίνησε το 1997 απο τουςEric Espié και Christophe Guionneau. Ήταν έναπαιχνίδι (σε αντίθεση με τη σημερινή του μορφή)2 διαστάσεων και το ονόμαζαν Racing Car Sim-ulator (RCS). Επιρροές στην ιδέα υπήρξαν αποτο RARS (Robot Auto Racing Simulator - παιχνίδιμε αυτοκίνητα Robot). Κατά την «εκπόνηση» τουεγχειρήματος, η απόκτηση μιας κάρτας γραφικώντης 3dfx για την ανάπτυξη παιχνιδιών έκανε τηνομάδα να αποφασίσει τη μετατροπή του έργου τηςσε τρεις διαστάσεις. Έτσι γεννήθηκε το ORCS(Open Racing Car Simulator).

Στις πρώτες του εκδόσεις τα αυτοκίνητα δενείχαν κινητήρες με αποτέλεσμα να είναι τύπουέλκηθρου που έτρεχαν σε κατηφόρες. Μόλις όμωςπροστέθηκαν οι μηχανές και οι ήχοι αυτών, τοπαιχνίδι μετονομάστηκε σε TORCS (The OpenRacing Car Simulator) κάνοντας λογοπαίγνιο μετη λέξη Torque (αγγλικά: ροπή κινητήρα). Τοέργο αναπτύσσεται ακόμη και σήμερα με αρχηγόπλέον τον Bernhard Wymann. Γράφεται σε C/C++

με άδεια χρήσης GNU GPL. Για ακόμη μία φορά,όπως έχουμε συνηθίσει απο ένα ανοιχτό καιελεύθερο λογισμικό, υπάρχουν εκδόσεις για τατέσσερα βασικά λειτουργικά συστήματα: Linux,FreeBSD, MacOS X και Windows. Κανείς δε θαμείνει παραπονεμένος. Κινήσεις που καλό θα ήταννα τις λάβουν σοβαρά υπ' όψιν οι μεγάλες εταιρίεςτου χώρου των παιχνιδιών κλειστού κώδικα.

Οδηγώντας σαν τον άνεμο...

Το παιχνίδι λαμβάνει δράση σε πίστεςσχεδιασμένες για να αναδείξουν τους καλύτερουςοδηγούς - με αντίληψη πάνω στην ταχύτητα καιστις σφικτές στροφές. Προσοχή λοιπόν στο γκάζιγιατί πολύ εύκολα μπορούμε να βρεθούμε σεδυσάρεστες καταστάσεις όπου το αυτοκίνητό μαςπαρουσιάζει υπερστροφικές τάσεις, αναγκάζοντάςμας σε ανάποδα τιμόνια και χρήση φρένων πουσαν αποτέλεσμα έχουν να χάνουμε πολύτιμοχρόνο και θέσεις στην κατάταξη. Βέβαια όσογρήγορα μπορούμε να χάσουμε τον έλεγχοστην οδήγηση, άλλο τόσο μπορούμε και να τομάθουμε. Όσο περισσότερο ασχολούμαστε με τηνοδήγηση μαθαίνουμε τον τρόπο του και εθιζόμαστεπερισσότερο σε αυτό. Υπάρχει πληθώρα απόπίστες που μπορούμε να επιλέξουμε για νατρέξουμε, και αυτό προσθέτει πόντους στηδιαχρονικότητά του.

36

Page 37: Ubuntistas vol.6

ΠΑΙΧΝΙΔΙΑ

Σχεδίαση και Γραφικά

Τα γραφικά του, όπως αναφέραμε και πριν,είναι πλέον τρισδιάστατα, με καλοδουλεμέναμοντέλα από διαφορετικές μάρκες. Ένα μικρόδείγμα είναι οι McLaren F1, Mitsubishi LancerEvo, Peugeot 206 WRC, Subaru Imprezaκαι άλλα πολλά, το καθένα με τα δικά τουξεχωριστά χαρακτηριστικά σε δύναμη, κίνηση καισυμπεριφορά που θα κρατήσει το ενδιαφέρον σαςαμείωτο για αρκετό διάστημα. Επίσης υπάρχει ηδυνατότητα να κατεβάσετε από την ιστοσελίδα τουπαιχνιδιού καινούργια οχήματα ή να σχεδιάσετεδικά σας και να τα δημοσιεύσετε.

Ήχος - Μουσική

Εδώ δυστυχώς τα πράγματα δεν είναι τόσοεξαιρετικά όσο τα προηγούμενα που διαβάσαμε.Δεν υπάρχει μουσική και οι ήχοι περιορίζονταιστους ήχους από τους κινητήρες των αυτοκινήτων.Πράγμα για άλλους θετικό και άλλους αρνητικό,δεδομένων των στάνταρ που έχουν θέσει τα νέαπαιχνίδια κλειστού κώδικά - μα και χιλιάδων ευρώπροϋπολογισμού!

Multiplayer δυνατότητες

Όλοι θα περιμέναμε από ένα παιχνίδι τέτοιουμεγέθους να υποστηρίζει πολλούς παίκτεςμέσω δικτύου. Δεν υπάρχει αυτή η επιλογήενσωματωμένη, αν και είναι στα μελλοντικά σχέδιατης ομάδας ανάπτυξης. Πριν όμως σπεύσετε ναεκφράσετε την όποια δυσαρέσκεια, θα ήθελα ναδιαβάσετε ακόμη λίγο... Ό,τι του λείπει από ταπροαναφερθέντα χαρακτηριστικά το κερδίζει μεμια καινοτομία που δεν τη βρίσκουμε εύκολα! Ανέχετε φτάσει πλέον σε ένα επίπεδο και πιστεύετε

πως μπορείτε να συναγωνιστείτε παίκτες αποόλο τον κόσμο, υπάρχει αυτή η δυνατότητα.Μπορείτε να προγραμματίσετε το δικό σαςαυτοκίνητο robot, με τα δικά του χαρακτηριστικάκαι τρόπο συμπεριφοράς! Είπαμε, είναι έναπαιχνίδι ανοιχτού κώδικα, δε θα μπορούσε ναμην υπάρχει μέσα ένα ψήγμα από το μικρόβιο τουπρογραμματιστή!

Υπάρχουν αρκετοί οδηγοί που θα σαςβοηθήσουν να ξεκινήσετε με το δικό σας robot,κάνοντας απλά πράγματα και να φτάσετε σεεπίπεδα που θα ζήλευε ακόμη και το λογισμικόαπο τα αυτοκίνητα του ΜΙΤ! Ολοκληρώνονταςτον κώδικα από το καμάρι σας, είστε έτοιμοινα το ρίξετε στις πίστες και να ανταγωνιστείτεμε τα δημιουργήματα άλλων προγραμματιστών.Οι συμμετοχές είναι απο όλο τον κόσμο καιο συναγωνισμός μεγάλος. Η ανάπτυξη τωνμοντέλων πραγματοποιείται σε γλώσσες C++ καιDelphi.

Εγκατάσταση

Η εγκατάσταση μπορεί να γίνει είτε από το

Synaptic στο σύστημά μας, είτε κατεβάζοντάς τοαπό την επίσημη ιστοσελίδα του παιχνιδιού.

Συνοψίζοντας

Κλείνοντας την παρουσίαση μπορούμε ναπούμε πως μας άφησε καλές εντυπώσεις σανπαιχνίδι, με τα όμορφα γραφικά και τις επιλογέςπαραμετροποίησης. Πάντοτε καλοδεχούμενη ηδυνατότητα εκτέλεσης σε πολλές πλατφόρμες- επικροτούμε και πάλι την προσπάθεια τουΕλεύθερου - Ανοιχτού Λογισμικού σε αυτόν τοντομέα. Ενδιαφέρον επίσης και πολύ σημαντικόκαθώς και καινοτόμο, το κομμάτι με τη δυνατότηταανάπτυξης του δικού μας αυτοκινήτου. Ήδηέχουμε ξεκινήσει το δικό μας. Ποιός ξέρει, μπορείμια μέρα να φιγουράρει στις πρώτες θέσεις τοRobot-άμαξο του ubuntu-gr. Μέχρι τότε, νασας ευχηθούμε καλή διασκέδαση και γιατί όχι;...προγραμματισμό! Να οδηγείτε προσεκτικά και ναθυμάστε πως οι ζώνες ασφαλείας σώζουν ζωές ;-)

Απαιτήσεις συστήματος

Ελάχιστες: 550MHz CPU, 128 MB RAM,συμβατή κάρτα γραφικών με OpenGL 1.3 και32MB RAM.

Προτεινόμενες: Επεξεργαστής 800MHz,256MB RAM, συμβατή κάρτα γραφικών μεOpenGL 1.3 και 64MB RAM.

Περισσότερες πληροφορίες μπορείτε νααντλήσετε απο την επίσημη ιστοσελίδα τουπαιχνιδιού: http://torcs.sourceforge.netΓια όσους ενδιαφέρονται παραπάνω, ο οδηγόςγια την εξέλιξη των ρομπότ: Οδηγοί σε C++- http://www.berniw.org Οδηγοί σε Delphi -http://www.wdbee.gotdns.org:8080

37

Page 38: Ubuntistas vol.6

του Φωτιάδη Φίλιππου

ΝΕΑ & ΑΝΑΚΟΙΝΩΣΕΙΣ

Νέα & Ανακοινώσεις...της ελληνικής κοινότητας του Ubuntu (ubuntu-gr)!

Ανασύσταση της ομάδας του φόρουμ

Έγιναν πολλές αλλαγές τους τελευταίουςμήνες. Αποχωρούν από την ομάδα συντονιστών-διαχειριστών οι εξής: gourgi, nikosal, simosx καιmedigeek. Ο καθένας από αυτούς αποχωρεί γιαδιαφορετικούς λόγους. Όπως και να έχει όμως,τους ευχαριστούμε όλους θερμά για την σημαντικήτους προσφορά. Τους αξίζει ένα μεγάλο μπράβοκαι φυσικά, είναι όλοι καλοδεχούμενοι στις όποιεςμελλοντικές δραστηριότητες της κοινότητας! Ηανασύσταση της ομάδας όμως συνεχίζεται, με τηναλλαγή του Nisok από συντονιστή σε διαχειριστήκαι την προσθήκη των pros, vagrale13, καθώςκαι του υποφαινόμενου filippos.xf. Περισσότερα:http://tinyurl.com/y9b3esg.

Αυτόματο μήνυμα προς τουςνεοεισερχόμενους του φόρουμ

Στα τέλη Οκτωβρίου υλοποιήσαμε μια νέαλειτουργία στο φόρουμ της κοινότητας μας. Η νέαλειτουργία είναι η αποστολή ενός ενημερωτικούμηνύματος με την μορφή καλωσορίσματος προςόλα τα νέα μέλη της κοινότητας Ubuntu-gr καισυγκεκριμένα υλοποιήθηκε στις 23 Οκτωβρίου.Για να δείτε το μήνυμα πατήστε στον σύνδεσμο:http://tinyurl.com/yzdspsr

Σχετικά με την κεντρική ιστοσελίδατης κοινότητας Ubuntu-gr

Δημιουργήσαμε ένα θέμα στο φόρουμ τηςκοινότητας για να μπορούμε ελεύθερα ναπροτείνουμε αλλαγές, βελτιώσεις, ιδέες αλλά καινα αναφέρουμε τις απορίες μας σχετικά με τηνκεντρική ιστοσελίδα της κοινότητας. Είναι πολλοίαυτοί που έχουν εξοικειωθεί με το φόρουμ καιτους βολεύει αυτό το μέσο επικοινωνίας, για αυτόδημιουργήσαμε αυτό το νέο θέμα στο φόρουμ.Για παράδειγμα μπορεί να έχετε κάποια ιδέαγια την διαμόρφωση της σελίδας, κάτι που δενυπάρχει και μπορεί να προστεθεί. Μπορείτε νακάνετε ποστ όσοι θέλετε να προσφέρετε στηνιστοσελίδα, είτε γράφοντας νέα & ανακοινώσεις,είτε με διαφορετικό τρόπο π.χ. να κάνετεανανέωση τις επιλογές που έχει. Αν απλά τοσκέφτεστε μένει να κάνετε ποστ ώστε να σαςδοθούν οι απαραίτητες πληροφορίες. Η κεντρικήιστοσελίδα είναι η πρόσοψη της κοινότηταςUbuntu-gr, για αυτό και αξίζει την προσοχή μας!(http://www.ubuntu-gr.org/)

Βαθμοί μελών της κοινότητας

Αρκετοί αναρωτιούνται αν υπάρχει στο φόρουμπίνακας με τους βαθμούς των μελών τηςκοινότητας ... και η απάντηση είναι ναι ...υπάρχει πλέων ένας τέτοιος πίνακας για τυπικούςλόγους! Για να τον δείτε πατήστε στον σύνδεσμοhttp://tinyurl.com/yjcywvc αλλά διαβάστε και όσααναφέρονται κάτω από τον πίνακα.

Η κοινότητα Ubuntu-gr σε διάφορεςυπηρεσίες

Στον σύνδεσμο που παραθέτω παρακάτω θαβρείτε ιστοσελίδες κοινωνικής δικτύωσης, βίντεο,φωτογραφίας κτλ. στις οποίες έχουν δημιουργηθείομάδες από την κοινότητα Ubuntu-gr, με στόχοτην μεταξύ τους επικοινωνία αλλά και τηνγνωριμία και υποστήριξη άλλων ατόμων πουενδιαφέρονται για το Ubuntu. Κάποιες απόαυτές τις ομάδες δημιουργήθηκαν πρόσφατα.http://tinyurl.com/yhlzaub

38

Page 39: Ubuntistas vol.6