Η μέθοδος εισαγωγής πολυ-επαφής (multitouch) σημαίνει πως μπορούμε να αλληλεπιδρούμε με μια συσκευή λαμβάνοντας υπόψη όσα σημεία επαφής με αυτή επιθυμούμε. Στην Python υπάρχει η βιβλιοθήκη PyMT που μας επιτρέπει να γράψουμε κώδικα για multitouch συσκευές. Βασίζεται σε OpenGL και επιτρέπει να χειριστούμε γεγονότα που προέρχονται από multi-touch είσοδο μέσω ενός επιπέδου αφαίρεσης που μας προσφέρει. Επειδή βασίζεται σε Python παίζει σχεδόν παντού.
Χρόνια Πολλά και Καλή Χρονιά!
Αν σας παραξενεύει η αρχική πρόταση, πριν ένα χρόνο δημιουργήθηκε η κοινότητα μας! Ακολουθεί μια σύντομη χρονική αναδρομή για αυτόν τον χρόνο.
Το πρώτο μήνυμα σε mailing list έγινε στις 1/2/2009 [1]. Ακολούθησε η δημιουργία του site (ανέβασμα αρχείων Joomla και μετριοπαθής ανακοίνωση [2]).
Η προσπάθεια είχε ξεκινήσει ύστερα από μια συνάντηση στο Τραμ ενώ η ιδέα είχε πέσει λίγο καιρό πριν. Ο ενθουσιασμός των πρώτων ημερών κάλυψε την απειρία μας και με αρκετά βήματα δημιουργήθηκε το site (αλλάξαμε τον τίτλο σε TasPython και μια δυο εικονίτσες). Σε όλα αυτά μας συντρόφευε η ΑΕΚ (Αρχή Ελαχίστου Κόπου) καθώς θέλαμε να επικεντρωθούμε στην Python και όχι στην κατασκευή ιστοσελίδας.
Το site (taspython.eu αν αναρωτιέστε τώρα) τότε είχε domain name burned.co.cc και είχαμε πάρει και το taspython.tk (αν τυχόν έχετε κοιτάξει παλιές δημοσιεύσεις). Τα πράγματα προχώρησαν σύμφωνα με το πλάνο και βγάζαμε ασκήσεις (και δίναμε παρατάσεις). Κάπου εκεί άρχισε να δημιουργείται ο οδηγός της Python στην αρχή ως σημειώσεις.
Το καλοκαίρι αλλάξαμε server (βρήκαμε καλύτερο τζάμπα) και template. Τα βράδια κάναμε όνειρα (=όνειρα θερινής νυκτός) τα οποία τα μαζέψαμε στην επόμενη συνάντηση μας που έγινε Σεπτέμβρη. Εκεί είπαμε γιατί θέλουμε να γίνουμε πιο εξωστρεφείς και ήμασταν τόσο ενθουσιασμένοι που μαζέψαμε καμιά 10αριά άτομα να το συζητήσουμε πως θα είναι μετά. Η συνάντηση πήγε πολύ καλά (παίξαμε καινούργια επιτραπέζια και γνωρίσαμε κάποια καινούργια άτομα).
Αφού η συμφωνία είχε επιτευχθεί, θα αρχίζαν πια οι παρουσιάσεις στο ceid. Πριν από αυτό όμως είχαμε καινούργιο domain name (το τρέχον). Όλα αυτά χάρη στις δωρεές μελών του taspython όπου όλοι μαζί συγκεντρώσαμε τα απαραίτητα χρήματα για το δωρεάν hosting και δωρεάν domain.
Η πρώτη παρουσίαση περιλάμβανε και πολύ πιασάρικους τίτλους (Python, Django, Mercurial, CEID Battle). Λίγες μέρες πριν μας είχαν ανακαλύψεις scouters και το project στο bitbucket. Οι επόμενες παρουσιάσεις έγιναν με περισσότερη εμπειρία και ευτυχώς υπήρχαν αρκετά άτομα για να μας βοηθήσουν σε αυτό.
Πλέον στο site υπάρχουν βίντεο από παρουσιάσεις, συγκεντρωμένο υλικό γύρο από Python στο forum, slides παρουσιάσεων, οδηγοί, σύνδεσμοι σε εκπαιδευτικό υλικό. Έχουμε μια δημοσίευση στο pythonpapers.org και έχουμε βρει περισσότερα άτομα που μπορούν να κάνουν παρουσιάσεις. Οι καθημερινές επισκέψεις είναι περίπου επί 20 σε σχέση με τις πρώτες μέρες (μπαίναμε δυο φορές την μέρα).
Τα σχέδια περιλαμβάνουν περισσότερα ταξιδάκια, αν βοηθήσει ο καιρός και ακόμα καλύτερες παρουσιάσεις. Το CEID Battle μάλλον θα αντικατασταθεί με ένα μεγαλύτερο (και πιο χρήσιμο) project. Ελπίζουμε του χρόνου, ο γενέθλιος απολογισμός να μας βρει σε ακόμα καλύτερη θέση.
Πολλά κομμάτια έχουν παραληφθεί (όπως πχ τι πίναμε στο Τραμ). Αναλυτικότερα, μπορεί κάποιος να κοιτάξει τα άρθρα στο taspython σιγά σιγά (50) και τα mails στην mailing list (120 στην παλιά + λίγα ακόμα της καινούργιας).
Όποιος θυμάται άλλα κομμάτια ας συμπληρώσει. Ιδιαίτερα δεκτές προσθήκες για το μέλλον!
[1] Για όποιον έχει πρόβλημα με τις επετείους είναι καλή ιδέα μια τέτοια ημερομηνία!
http://groups.google.com/group/taspython/browse_thread/thread/a1b7838ed4b1a6be?hl=en
Το Sikuli είναι μια οπτική τεχνολογία για την αναζήτηση και αυτοματοποίηση γραφικών διεπαφών (GUI) χρησιμοποιώντας εικόνες (screenshots). Η πρώτη έκδοση του Sikyli περιλαμβάνει την Siculi Script, ένα οπτικό API για scripting σε Jython, το Sikuli IDE, ένα ολοκληρωμένο περιβάλλον προγραμματισμού για την εγγραφή των οπτικών scripts εύκολα. Το Sikuli αυτοματοποιεί οτιδήποτε βλέπουμε στην οθόνη χωρίς να χρειάζεται την υποστήριξη εσωτερικού API. Μπορούμε να το προγραμματίσουμε να ελέγχει μια σελίδα στο διαδίκτυο, μια εφαρμογή τοπικά στον υπολογιστή μας που τρέχει σε Windows/Linux/Mac OS X ή ακόμα και μια εφαρμογή iphone που τρέχει σε έναν εξομοιωτή.
Αν τα παραπάνω δεν είναι αρκετά για να σας πείσουν, τότε δείτε το βίντεο από την επίσημη ιστοσελίδα της εφαρμογής. Η εφαρμογή αναπτύσεται από το MIT. Η καινοτομία της ιδέας βασίζεται στο γεγονός ότι μέχρι τώρα χρησιμοποιούσαμε κείμενο για να διασυνδέσουμε τις εφαρμογές μας. Τώρα πια μπορούμε να χρησιμοποιήσουμε αυτό που βλέπουμε μέσα από το γραφικό περιβάλλον. Καιρός δεν νομίζετε ότι ήταν μετά από σχεδόν 20 χρόνια εφαρμογών με GUI στους υπολογιστές;
Η PyQt 4.7 μόλις δημοσιεύτηκε. Αποτελεί ένα κατανοητό σύνολο από bindings για Qt εφαρμογές από την Nokia. Υποστηρίζει τις ίδιες πλατφόρμες όπως και το Qt (Windows, Linux, MacOS/X).
Η PyQt υποστηρίζει Python 3 και Python 2.3 ή μεταγενέστερη.
Περισσότερες πληροφορίες:
http://www.riverbankcomputing.com/software/pyqt/intro
Όπως είχαμε αναφέρει σε παλιότερο άρθρο είναι πιθανή η συγχώνευση του Unladen Swallow, ενός project που έχει ξεκινήσει από την Google με σκοπό την επιτάχυνση της απόδοσης της Python, με την κύρια υλοποίηση της Python (CPython). Σήμερα, λοιπόν, προτάθηκε και το αντίστοιχο Python Enhancement Proposal (PEP) 3146 που αποσκοπεί στην περιγραφή της διαδικασίας που θα ακολουθηθεί ώστε να γίνει κάτι τέτοιο.
Αυτό το PEP προτείνει την συγχώνευση του Unladen Swallow project στο δέντρο του πηγαίου κώδικα της CPython. Το Unladen Swallow είναι ένα ανοικτού κώδικα κομμάτι της CPython που επικεντρώνεται στην απόδοση (performance). Το Unladen Swallow είναι συμβατό σε επίπεδο κώδικα με έγκυρες Python 2.6.4 εφαρμογές και αρθρώματα επέκτασης σε C (C extension modules).
Το Unladen Swallow προσθέτει έναν ακριβώς-στην-ώρα μεταγλωτιστή (just-in-time (JIT) compiler) στην CPython, επιτρέποντας την μεταγλώτισση επιλεγμένων κομματιών κώδικα Python ώστε να βελτιστοποιηθούν σε κώδικα μηχανής. Πέρα από κλασικές στατικές βελτιστοποιήσεις, ο Unladen Swallow JIT compiler χρησιμοποιεί δεδομένα που συλλέγει κατά την εκτέλεση του προγράμματος για να κάνεις ορισμένες ελεγμένες υποθέσεις για την συμπεριφορά του κώδικα, επιτρέποντας την παραγωγή ακόμα πιο γρήγορου κώδικα μηχανής
Αυτό το PEP προτείνει την συγχώνευση του Unladen Swallow στο CPython δέντρο ανάπτυξης κώδικα σε ένα ξεχωριστό κλαδί (branch) που θα ονομάζεται py3k-jit, στοχεύωντας για τελική συγχώνευση στην κύριο κλαδί (branch) της py3k. Ενώ Unladen Swallow δεν είναι ολοκληρωμένο ή τέλειο, υπάρχει η αίσθηση ότι έχει αρκετή ωριμότητα ώστε να εισέλθει στα κύρια σχέδια της CPython. Ελπίζεται ότι θα δημιουργηθεί μια σταθερή πλατφόρμα για την ευρύτερη κοινότητα προγραμματιστών της CPython στην οποία θα μπορούν να βασιστούν και η οποία θα εγείερει αυξανόμενη απόδοση στα επόμενα χρόνια.
Από την έκδοση 3.2 της Python θα έχουμε καινούργιο Global Interpreter Lock (GIL). Η καινούργια έκδοση του GIL φέρνει αρκετές βελτιώσεις σε σχέση με την παλιότερη και προβλήματα που αυτή δημιουργούσε. Χαρακτηριστικά, σε πολυπήρυνους επεξεργαστές ένα πρόγραμμα που χρησιμοποιεί νήματα (threads) μπορούσε να τρέχει πιο αργά από ότι σε μονοπήρυνους, εφόσον η ταχύτητα του ήταν συναρτήσει της επεξεργαστικής ισχύος του μηχανήματος (cpu bounded) και δεν αφορούσε λειτουργίες εισόδου/εξόδου (IO bound). Το παραπάνω παράξενο φαινόμενο είχε τις ρίζες του στα πολλά σήματα (signals) που ανταλλάσαν μεταξύ τους τα νήματα ώστε να μπορέσει να καθοριστεί ποιο θα εκτελεστεί και θα πάρει το GIL, ώστε να εκτελείται αποκλειστικά αυτό.
Το πρόβλημα αυτό βελτιώνεται καθοριστικά στην καινούργια έκδοση, όπου μια καινούργια υλοποίηση λαμβάνει χώρα. Όταν υπάρχουν πάνω από ένα νήματα, ένα νήμα που θέλει να πάρει το GIL ενημερώνει αυτό που τρέχει. Εδώ υπάρχουν δύο περιπτώσεις. Είτε το νήμα που τρέχει θα δώσει εθελοντικά το GIL (επειδή λ.χ κάνει κάποιο I/O) είτε θα το δώσει υποχρεωτικά επειδή πέρασε κάποιο χρονικό διάστημα. Στην δεύτερη περίπτωση, τελειώνει την λειτουργία που έκανε και δίνει υποχρεωτικά το GIL. Όταν αφήνεται το GIL, το thread που το κατείχε, περιμένει ενημέρωση ότι λήφθηκε σωστά από το άλλο thread που το αποκτά τώρα.
Μια σχετική παρουσίαση στα αγγλικά του θέματος μπορείτε να βρείτε στο:
http://www.dabeaz.com/blog/2010/01/presentation-on-new-python-gil.html
Πλέον μπορείτε να βρείτε στο site τις φωτογραφίες από την 7η Συνάντηση μας στο τμήμα Μηχανικών Η/Υ και Πληροφορικής...
Ευχαριστούμε τον Νίκο Νοδαράκη για την παροχή τους!
Τελικά μαζευτήκαμε περίπου στα 10 άτομα. Αφού αναφερθήκαμε στις πρόσφατες επιτυχίες του TasPython (άρθρο στο pythonpapers, επίσημη mailing list, παρουσιάσεις από ενδιαφέροντα άτομα), συζητήσαμε τις προοπτικές ανάπτυξης του. Ανάμεσα στα άλλα συζητήθηκαν αρκετά τολμηρές ιδέες για μελλοντικές δράσεις και επέκταση του κύκλου δράσης του TasPython.
Πέρα από αυτά, ενδιαφέρουσες ήταν και συζητήσεις που δεν εφάπτονταν της θεματολογίας περί Python, όπως εμπειρίες με την χρήση λαδιού για την απαγωγή θερμότητας, σύγκριση browsers, συζήτηση περί ανοικτού λογισμικού γενικότερα, εμπειρίες από το πανεπιστήμιο ή τις σχολές μας καθώς και ο τρόπος λειτουργίας άλλων ομάδων. Συζήτηση έγινε και για θέματα που δεν βρίσκονται καν στον ευρύτερο κύκλο της τεχνολογίας.
Στην συνάντηση υπήρχε αρκετό γέλιο, όμως το πιο σημαντικό είναι ότι τελικά γνωριστήκαμε με άτομα που δεν γνωρίζαμε και τόσο καλά, και αποτέλεσε το εύνασμα για έναν κύκλο εξωστρέφειας. Ίσως πρέπει να πυκνώσουμε και αυτές τις συναντήσεις, που δεν αφορούν τεχνικά θέματα με την πιθανή συνοδεία και κανενός επιτραπεζίου (κρίμα που δεν παίξαμε παλέρμο τελικά!)
Παρόντες Αλφαβητικά:
Αλέξανδρος
Γιώργος (gsfak)
Γιώργος (georgep)
Δημήτρης (myle)
Κώστας (sbos-x)
Κωνσταντίνα (orfanou)
Νίκος (aggelidis)
Χρήστος{mos_fb_discuss:9}
Λόγω τις πίεσης που υπάρχει αυτή τη περίοδο με την εξεταστική, αποφασίστηκε μετα από συζήτηση στη mailing-list να γίνει μία χαλαρή συνάντηση για ένα καφέ... για τα χρονια πολλά...!
Όσοι πιστοί προσέλθετε, αύριο, Κυριακή, στο τραμ στις 19:00!{mos_fb_discuss:9}
Μέχρι τώρα η διαδικασία υιοθέτησης της Python 3 ήταν αρκετά αργή σε ρυθμούς σε σχέση με τις εκδόσεις 2.x που συνεχίζαν την παλιότερη σειρά. Παρότι με την έκδοση 3 της Python εξαλείφονται λάθη του παρελθόντος και γίνεται πιο εύκολο να φανερωθούν πιθανές παραλήψεις κατά την σύνταξη ενός προγράμματος το ότι δεν είναι συμβατή προς τα πίσω, δεν προσφέρει αρκετά κίνητρα για την επιτάχυνση της διαδικασίας αντικατάστασης της σειράς 2.x. Επίσης, είχε παρατηρηθεί ότι σε αρκετές περιπτώσεις προγράμματα σε Python 3 ήταν πιο αργά από ότι σε Python 2. Όλα αυτά όμως θα αλλάξουν σύντομα.
Μια καλύτερη υλοποίηση του Global Interpreter Lock που έχει αποτελέσει σημείο αμφιλεγόμενο για προγράμματα με πολλά νήματα είναι στον δρόμο, ενώ το Unladen Swallow είναι πολύ πιθανό να συγχωνευθεί σύντομα με την κύρια υλοποίηση της Python (CPython). Το Unladen Swallow, που σημαίνει μη φορτωμένο περιστέρι και είναι project της Google, έχει ως σκοπό του την επιτάγχυνση της απόδοσης των προγραμμάτων που γράφονται σε Python.
Για αυτή την αύξηση της ταχύτητας, το Unladen Swallow χρησιμοποιεί την LLVM (Low Level Virtual Machine) ώστε να παράξει ένα JIT (Just in Time) compiler. Τα νέα αυτά είναι καταπληκτικά, γιατί αν κάποιο δει τις αναφορές προόδου για το Unladen Swallow, έχουν γίνει σημαντικά βήματα βελτίωσης της ταχύτητας εκτέλεσης των προγραμμάτων.