Το σαββατοκύριακο που μας πέρασε η ομάδα μας συμμετείχε στο OpenFest, ένα φεστιβάλ ανοικτού κώδικα και ελεύθερου λογισμικού, με τρεις παρουσιάσεις.
Αφού μιλήσαμε για τις πρόσφατες εξελίξεις όσον αφορά την κοινότητα μας (OpenFest, προοπτική για Fosscomm κλπ) συνεχίσαμε τις παρουσιάσεις πάνω στην Python, μιλήσαμε για έναν ελέφαντα στο δωμάτιο και είδαμε πως ένας άλλος μπορεί να πετάξει. Πιο αναλυτικά:
Έφτασε η ώρα για την επόμενη συνάντηση μας... Η αλήθεια είναι ότι πέρασε αρκετός καιρός, λόγω Χριστουγέννων και εξεταστικών, αλλά πλέον επανερχόμαστε συστηματικά!
Τα θέματα που θα παρουσιάσουμε θα είναι:
Σας περιμένουμε όλους αυτήν την Πέμπτη (4/3/2010), ώρα 19:00, στην αίθουσα Β3 του τμήματος Μηχανικών Η/Υ και Πληροφορικής.{mos_fb_discuss:9}
Μια πολύ ενδιαφέρουσα παρουσίαση από Michael Foord στο PyCon 2010 για τις αλλαγές που έρχονται στην καινούργια έκδοση της Python 3.2 και έχουν μεταφερθεί (backport) στην έκδοση 2.7.
Αν επιθυμείτε να έχετε τα καινούργια χαρακτηριστικά σε παλιότερες εκδόσεις της Python μπορείτε να χρησιμοποιήσετε το:
http://pypi.python.org/pypi/unittest2/
Για αυτά, εκτός από την παρουσίαση μπορείτε να διαβάσετε και στον επίσημο οδηγό:
http://docs.python.org/dev/py3k/library/unittest.html
Αν είσαστε άνθρωπος που προτιμάτε το οπτικοακουστικό τρόπο εκμάθησης από ότι αυτόν της ανάγνωσης, σίγουρα το site http://python.mirocommunity.org/ θα σας φανεί εκπληκτικά ενδιαφέρον.
Σε αυτό μπορείτε να βρείτε πολλά ενδιαφέροντα video σχετικά με Python, όπως υλικό για εκμάθηση python, που ασχολείτε είτε με βασικά ζητήματα είτε και πιο προχωρημένα, video από διάφορα pycons, αλλά και σχετικά με web development και άλλα πολλά...
Επίσης μπορείτε να υποβάλετε και δικά σας σχετικά video!
Προσοχή μόνο μην κολλήσετε...!
Αν κάποιος/κάποια ομάδα θέλει να αναρτήσει μια εργασία που έχει κάνει σε Python στο site μας, καλό θα ήταν να επικοινωνήσει μαζί μας προκειμένου να δωθούν αναλυτικές οδηγίες. Εφόσον η εργασία πληρεί κάποια ελάχιστα κριτήρια (είναι πρωτότυπη, λειτουργεί κτλ) τότε αυτή θα αναρτηθεί. Ιδανικά, μπορεί κάποιος να ανεβάσει και μια συνοδευτική αναφορά για αυτή. Η άδεια υπό την οποία θα αναρτηθεί η εργασία πρέπει να είναι κάποια ανοικτού κώδικα.
Σήμερα συμμετύχαμε στην εκδήλωση που διοργανώθηκε στα πλαίσια του μαθήματος Εισαγωγή στους Υπολογιστές Ι του τμήματος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών. Στην εκδήλωση είχαμε την ευκαιρία να δούμε τις παρουσιάσεις ορισμένων πολύ ενδιαφέροντων εργασιών που εκπονήθηκαν από τους φοιτητές. Προς το τέλος της εκδήλωσης, ανταποκρινόμενοι και στην πρόσκληση των διδασκόντων του μαθήματος κάναμε μια σύντομη ανακοίνωση όπου αναφέραμε κάποια βασικά στοιχεία για την ομάδα μας και πως θα μπορούσαμε να συνεργαστούμε με παιδιά από το τμήμα. Τα στοιχεία που αναφέρθηκαν είναι:
Ποιοί είμαστε:
Τι σκοπεύουμε να κάνουμε:
Όπως ίσως να έχετε δει από παλιότερη ανάρτηση, έχει προταθεί η χρήση ενός νέου GIL (Global Interpreter Lock) στην Python 3.2. Μόλις χθες υποβλήθηκε ένα καινούργιο θέμα που προκύπτει με αυτόν τον GIL.
Επειδή ο χρόνος εκτέλεσης των I/O (Input/Output) λειτουργειών συνηθώς είναι αρκετά μεγάλος, όποτε αρχίζει μια τέτοια λειτουργία, ελευθερώνεται ο GIL ώστε να μπορούν να εκτελεστούν άλλα νήματα. Παρόλα αυτά υπάρχει ένας μεγάλος αριθμός από I/O λειτουργίες που εκτελούνται άμεσα, όπως για παράδειγμα η λειτουργία send() σε κάποιο socket όταν υπάρχει αρκετός χώρος στο buffer για να δεχθεί τα δεδομένα. Σε αυτές τις περιπτώσεις η απελευθέρωση του GIL για να εκτελεστεί κάποιο άλλο νήμα, επειδή περιμέναμε ότι η συγκεκριμένη λειτουργία θα έπαιρνε πολύ ώρα, είναι περιττή.
Ένα χαρακτηριστικό της καινούργιας υλοποίησης του GIL είναι ότι ο διερμηνευτής δεν ειδοποιεί περιοδικά τα νήματα που περιμένουν. Αντιθέτως, τα νήματα εναλλάσονται αφού περιμένουν ένα συγκεκριμένο χρονικό διάστημα. Αφού περάσει ένα συγκεκριμένο χρονικό διάστημα, ένα νήμα ειδοποιεί ότι θέλει τον GIL και τότε το νήμα που τον έχει μέχρι εκείνη την στιγμή υποχρεωούται να σταματήσει την λειτουργία του και να τον παραδώσει.
Αν και αυτή η ιδέα λύνει το πρόβλημα των νημάτων που είναι CPU-φραγμένα, εισάγει ένα καινούργιο πρόβλημα όταν αναμυγνείονται CPU-φραγμένα νήματα και I/O φραγμένα μαζί. Το πρόβλημα γίνεται εμφανές επειδή όταν το I/O φραγμένο νήμα εκτελεί μια I/O λειτουργία, απελευθερώνει πάντα τον GIL. Αφού ο GIL απελευθερώθηκε, ένα CPU φραγμένο νήμα είναι ελεύθερο να τον αποκτήσει και να τρέξει. Ωστόσο, αν η I/O λειτουργία σταματήσει αμέσως, τότε το I/O φραγμένο νήμα παγώνει μέχρι να επιστρέψει η κλήση συστήματος που αντιστοιχουσε την I/O λειτουργία. Για να πάρει το νήμα πίσω τον GIL, πρέπει να περιμένει αναγκαστικά να περάσει μια χρονική περίοδος, παρότι η λειτουργία του εκτελέστηκε σχεδόν ακαριαία.
Η ίδια συμπεριφορά παρουσιάζεται και στην Python 2, αλλά λόγω των μικρών χρονικών διαστημάτων στα οποία γίνεται ο έλεγχος, το I/O φραγμένο νήμα παίρνει πίσω τον GIL σχετικά γρήγορα.
Για περισσότερες λεπτομέρειες:
http://bugs.python.org/issue7946
Μπορείτε να διαβάσετε μια σύντομη συνέντευξη της κοινότητας μας στο ellak.gr χάρη στον Κώστα (tsakf). Για όσους μας βρήκατε μέσω του ellak.gr και διαβάζοντας αυτή την ανακοίνωση μπορεί να βρεθείτε σε ατέρμονο βρόγχο κάνοντας κλικ στους υπερσυνδέσμους που περιέχει αυτή, είστε ελεύθεροι να περιηγηθείτε και στο ύπολοιπο site!
Αυτή η έκδοση της IronPython κάνει μεγάλα βήματα στη σταθερότητα και τη συμβατότητα, περιλαμβάνοντας πάνω από 50 διορθώσεις σφαλμάτων. Η IronPython 2.6.1 έρχεται σε δύο εκδόσεις. Η πρώτη τρέχει πάνω από το .NET 4.0 RC ενώ η άλλη σε οποιοδήποτε framework αρχίζοντας από το .NET 2.0 SP1. Η .NET 4.0 εκδοχή περιλαμβάνει επιπρόσθετα μερικές αλλαγές με σκοπό την καλύτερη διασύνδεση της με το .NET 4.0 framework.