Tuesday, May 20, 2014

fedora.next at Fosscomm 2014

I gave my first presentation for fedora this year.  In fact my colleague Zacharias Mitzelos and me were the presenters of fedora.next at yearly conference Fosscomm. The conference for 2014 was at Lamia in the Univercity of the town. Three auditoriums be hold.

We chose to talk about fedora.next because we believed would be a very interesting subject for such event and for the greek fedora and open source communities as well. Fedora.next is in the way and many things are going on. Zacharias and I collect as much information and we tried to pass the big picture of Matthews' idea and the current status of the project.

In forty minutes we presented the rings, each group separately and their PRDs, the technical issues and solutions which its group deal with, what we can achieve from that, what the open source gain from that and finally we try to answer some questions from the audiences.

In conclusion, this was my first attempt to present something and I was so exciting about that. For the presentation itself I know it could better. I hope to learn from this attempt and make it better the next time. Read  more if you want at osarema or fedora-gr .You can find the presentation here. As a proud member of fedora, I am clad for this big step of the project. I am waiting to see how all this will affects us into the community and around us. Fedora.next is here and will attract our attention day by day more and more. 

Friday, May 16, 2014

αφαιρεση στοιχειων μιας λιστας με Python

Ενα απλο προβλημα που θα μπορουσαμε να εχουμε ειναι να διαγραψουμε καποια συγκεκριμενα στοιχεια μιας λιστας. Αν πουμε οτι αυτη η λιστα περιεχει τα στοιχεια [1,2,3,2,1]. Η πιο απλη περιπτωση ειναι να μας ζητηθει να διαγραψουμε ενα συγκεκριμενο στοιχειο. Ας πουμε το '2'.

mylist.remove(2)

αυτο θα διαγραψει το πρωτο στοιχειο που θα βρει και να γυρισει

>>[1,3,2,1]

Στην περιπτωση που θελαμε να διαγραψουμε και τα δυο δυαρια στη λιστα?

for item in mylist:
....mylist.remove(2)

Αυτο θα γυρναγε λαθος, παρολο που θα γινοταν αυτο που θελαμε, επειδη θα εφτανε στο σημειο να διαγραψει ενα στοιχειο το οποιο δεν θα υπαρχει στη λιστα.

Μια καλη 'φορμουλα' για αυτο θα ηταν:

[mylist.remove(x) for x in n if x==2]


Τι γινεται αν θελουμε να διαγραψουμε ομως τα μοναδικα στοιχεια της λιστας?
Δηλ στην περιπτωση της mylist εχουμε [1,2,3,2,1]. Το μοναδικο στοιχειο εδω ειναι το '3'. Ουσιαστικα πρεπει για καθε ενα στοιχειο στη λιστα να βρουμε αν υπαρχει αλλο παρομοιο απο το επομενο στοιχειο μεχρι το τελος της λιστας. Αν δεν υπαρχει να το διαγραψουμε.

for y in mylist:
....pos=mylist.index(y)
....if y not in mylist[pos+1:]:
........mylist.pop(pos)

Αυτο φαινεται να δουλευει μια χαρα για τη λιστα που εχουμε. Αν την τροποποιησουμε ομως λιγο το αποτελεσμα θα μας ξαφνιασει πιθανον. Δοκιμαστε να αλλαξετε σειρα, να προσθεσετε ή να αφαιρεσετε. !!!!!!

Η ερωτηση ειναι σε πιο position παει οταν διαγραφει ενα απο την αρχικη λιστα??

mylist=[1,2,3,4,5]

και τρεχουμε τον παραπανω κωδικα...
>>[2,4]

Το επομενο value που θα περνει το pos θα ειναι δηλ ενα μετα απο καθε διαγραφη, αφου το indexing θα εχει αλλαξει.

Οποτε ισως καταληξουμε σε κατι σαν

nlist=[]
    for y in mylist:
        pos=mylist.index(y)
        if y not in mylist[pos+1:]:
            nlist.append(y)
           
    for ind in nlist:
        mylist.remove(ind)

OK! Αυτο πρεπει να δουλευει... Αλλα σιγουρα δεν ειναι το πιο αποδοτικο. Κατι που παιρνω απο το Veky και μαρεσε πολυ ειναι η χρηση της μεθοδου Counter.

from collections import Counter
    nonunique = Counter(data) - Counter(set(data))
    return [x for x in data if x in nonunique]
 
Τοσο απλο. Η Counter γυρναει ενα dictionary με τη συχνοτητα καθε στοιχειου στο value. Εδω αφαιρει τα values και αυτο του δινει τα μη-μοναδικα στοιχεια. Μετα ολα ειναι απλα. 
 
 

Sunday, May 11, 2014

Τα πρωτα βήματα για μία παρουσιαση

Το να κανεις μια παρουσιαση φαινομενικα φαινεται ευκολο. Πριν λίγες μέρες εδωσα την πρωτη μου "σοβαρη" παρουσιαση. Ευκολο? δεν θα το ελεγα. Γιαυτο ειπα να γραψω την προσωπικη μου εμπειρια πανω στο θεμα. Αργα ή γρηγορα για ολους ερχεται η πρωτη φορα. Και παρολο που μια παρουσιαση θελει ενα ικανο ομιλητη, πιστευω οτι υπαρχουν μερικα πραγματα που μπορει ο οποιοσδηποτε να κανει για να αποφυγει τουλαχιστον τα χειροτερα.

Πρωτο απολα ειναι φυσικα η προετοιμασια. Γνωρισε οσο πιο καλα ξερεις το θεμα. Προετοιμασου για ερωτησεις που μπορουν να προκειψουν. Μπορεις να βαλεις τον εαυτο σου στη θεση του ακροατη και να κανεις ερωτησεις μονος σου. Σκεψου τη σειρα που θα ξεδιπλωσεις το θεμα, ετσι που να γινει ενδιαφερον αλλα ταυτοχρονα να μπορει ο ακροατης να καταλαβει. Αν το θεμα ειναι αρκετα εξειδικευμενο ή οχι τοσο ενδιαφερον απο μονο του, ισως ειναι καλο να κανεις συχνες παυσεις και να ρωτας για αποριες, ωστε να εισαι σιγουρος οτι οσα εχεις πει ειναι ξεκαθαρα ή για να "ξυπνησεις" το ακροατηριο. 

Το βασικοτερο ομως, που ισως δεν περιμενεις σαν νεος παρουσιαστης, ειναι να γνωρισεις σε τι ακροατηριο θα μιλησεις. Ποσο ειναι σχετικο με το θεμα, ποσες γνωσεις μπορει να εχει σχετικα κτλ. Αποφυγε να ξεκινησεις να φτιαχνεις τη παρουσιαση πριν ρωτησεις τη κοινο περιμενεις να εχεις. Αν ξεκινησεις καλο θα ηταν να την δωσεις σε καποιον πιο εμπειρο να παρεις feedbacks.