Friday, November 14, 2014

Λυση για DNS σε OpenVPN

το προβλημα
Το προβλημα ειναι οτι καποιος σου παρεχει ενα λογαριασμο vpn και παρολο που συνδεεσαι κανονικα, τουλαχιστο σε Linux μηχανηματα δεν μπορεις να κανεις ping διευθυνσεις.

λιγη επεξηγηση
Αυτο συμβαινει γιατι ο client δεν κανει update το resolv.conf αρχειο. Το resolv.conf περιεχει τις διευθυνσεις που ο υπολογιστης θα ψαξει για μια συγκεκριμενη διευθυνση. Ειναι υπευθυνο λοιπον για να μετατρεπει ip σε διευθυνσεις. Κατι που μπορεις να κάνεις manual περνοντας την ip απο το conf αρχειο που εχεις για τον client στο vpn ή να ακολουθήσεις μερικα απλα βηματα, που περιγραφονται παρακατω.


Η λογικη ειναι να τρεξεις βαλεις ενα script μεσα στον client για να κανει αυτη τη δουλεια οταν ανοιγει το tunnel και ενα script για να επαναφερει το resolv.con οταν κλεινει το tunnel.

η λυση
Στην αναζητηση βρηκα πολλα script. Καποια ομως ειχαν καποιες εξαρτησεις και επρεπε να εγκαταστησεις καποιο προγραμμα, οπως το openresolv. Το οποιο ομως δεν υπαρχει σε ολα τα repository καθε διανομης. Η λυση λοιπον βρισκεται σε ενα repository στο github. Πηγαινουμε στο https://github.com/gronke/OpenVPN-linux-push/ και το κατεβαζουμε. Κανουμε copy τα δυο αρχεια up.sh και down.sh στο /etc/openvpn φακελο και ανοιγουμε τον client.conf ή client.ovpn σε καποιο editor για να προσθεσουμε τρεις γραμμες στο τελος.

script-security 2
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
Τα δυο script πρεπει να τρεχουν με την παραμετρο  script-security 2 που αν την αγνοησετε μεσα στο αρχειο, θα πρεπει να την δωσετε manual οταν θα τρεξετε το openvpn. Χρειαζετε για το openvpn θα τρεξει δυο εξωτερικα scripts.

Αυτό ήταν.

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.

Sunday, March 16, 2014

mini notes: emacs | modes και whitespaces, trailing whitespaces, indentation

Το emacs ειναι σιγουρα ενα εργαλειο το οποιο δεν το μαθαινεις over a night. Αν καταφερεις ομως να ασχοληθεις και μαθεις καποια πράγματα, δυσκολα ξανακοιτάς πίσω.

Σ'αυτο το κειμενο θα δουμε μερικα κολπάκια για να κανουμε ευκολα τη κατάλληλη διαμόρφωση ενος κειμένου ή του κώδικα. Γιατι είναι σημαντικό αυτο? Ο λόγος ειναι οτι τα λειτουργικα και ο κάθε editor "διαβάζει" διαφορετικά τις αλλαγές γραμμής και τα κενά. Ακόμα και ο ιδιος editor μπορει να ειναι διαφορετικα σεταρισμένος. Ετσι, οταν στέλνεις ενα κείμενο να εμφανίζετε διαφορετικα απο τον εναν στον αλλο. Σε ενα project που πολλοι πειραζουν το ιδιο αρχειο, το σωστο είναι να κρατάνε την ιδια διαμόρφωση.

Επισης σε καθε γλώσσα υπάρχουν διαφορετικοι κανόνες για code styling, κατι που βοηθάει γενικοτερα την καλυτερη αναγνωση του κωδικα. Η οπως σε άλλες γλωσσες ειναι καθοριστικο χαρακτηριστικο, μέρος της δομής της γλώσσας.

Modes

Το emacs συμπεριλαμβάνει διαφορα modes. Τα modes καθορίζουν διαφορετικές συμπεριφορες και features. Ουσιαστικα ειναι βιβλιοθήκες Lisp  libraries που επεκτείνου, διαμορφώνουν και βελτιώνουν τον emacs. Οταν θα ανοιξετε ενα αρχειο με και το σωσετε με την αναλογη καταληξη o emacs θα φορτωσει και το αναλογο mode, το οποιο μπορουμε να δουμε στα δεξια της status bar. Οι περισσοτερες γλωσσες θα πρεπει να αναγνωρίζονται.

Πριν προχωρησω καποια πραγματα για οσους κανουν τα πρωτα βηματα. Οταν θελουμε να εκτελεσουμε μια λειτουργια και αν δεν θυμόμαστε το συνδιασμο πλήκτρων η μονη περιπτωση να εκτελεσεις μια εντολη ειναι ο συνδιασμος M-x και της εντολης. M==Meta==Alt || Esc. Οταν δινουμε M-x μπορουμε να αρχισουμε να πληκτρολογουμε μια εντολη και με το <ΤΑΒ> να εμφανιστουν ολες οι εντολες που συμπληρωνουν τη συγκεκριμενη λεξη που ξαχνουμε. Δοκιμαστε να σωσετε ας πουμε την εντολη indent και πατηστε tab.

highlight-changes-mode

Πες λοιπον οτι ανοιγεις ενα αρχειο example.pyκαι γραφεις ενα κομματι κωδικα. Το σωνεις και μετα απο καιρο το ξανανοιγεις. Αν θες τωρα να παρακολουθεις τις αλλαγες που κανεις σε συγκριση με το υπαρχων κειμενο, guess what?? Υπαρχει συγκεκριμένο mode. M-x highlight-changes-mode. Καντε τωρα μια αλλαγη και θα δειτε να εμφανιζετε με κοκκινο χρωμα καθως επεξεργαζεστε το κειμενο. Παρατηρηστε οτι στη status bar επισης εμφανιζεται η ενδειξη +chg

Απο τη στιγμη που εχει ενεργοποιηθει το συγκεκριμένο mode μπορεις να κανεις και αλλα. Με το highlight-changes-rotate-faces αλλαζει τα χρωματα στις αλλαγες που εχουν γινει. Δοκιμαστε να κανετε ξανα αλλαγες και ξανατρεξτε highlight-changes-rotate-faces για να δειτε πως συμπεριφερετε.

Μπορεις να πας στη προηγουμενη αλλαγη με highlight-changes-previous-change ή στην επομενη με highlight-changes-next-change. Αν θες να απενεργοποιησεις για λιγο το συγκεκριμενο mode πατας highlight-changes-remove-highlight, Το status bar τωρα εμφανιζει την ενδειξη -chg.

whitespaces

Ας πουμε οτι εχουμε αυτο το κειμενο:

my $h = { alpha => 1,
<TAB><TAB><SPC><SPC>beta => 2,
<TAB><TAB><SPC><SPC>gamma => 3
<TAB><TAB>};
if ($items->{beta} < 3) {
<TAB>do_something();
}
 
 
αυτο θα εμφανιζεται καπως ετσι:

my $h = { alpha => 1,
          beta => 2,
          gamma => 3
        };
if ($items->{beta} < 3) {
    do_something();
}
 
Νομιζω τωρα μπορείτε να δωσετε ευκολα την εντολη

M-x whitespace-mode

Αμεσως θα δειτε καποια σημαδακια που υποδουλωνουν tabs, κενα(whitespaces),τελος γραμμης και διαφορα αλλα. Θα μπούμε τωρα στην ενοια του region. Region ειναι η επιλεγμενη περιοχη που μαρκαρουμε. Για να επιλεξεις μια περιοχη πατας Ctrl+spacebar με τον κερσορα απο το σημειο που θες και τον πας μεχρι εκει που θες να μαρκαρεις. Με αυτον τον τροπο μπορουμε να σβησουμε ευκολα οσα κενα εχουμε μεσα στο κειμενο καταλαθος. Η εντολη για αυτο ειναι M-x whitespace-cleanup ή whitespace-cleanup-region. Αν ειναι ενεργοποιημένο το mode για τις αλλαγες, θα δειτε αμεσως και που εχετε κενα και ποια διαγραφηκαν.

trailing whitespaces

Υπαρχει και η delete-trailing-whitespace που μπορει να διαγραψει ολα τα trailing whitespaces χωρις μαρκαρισμα. Επισης με ενεργοποιημενο το  whitespace-mode και το highlight-changes-mode ειναι εμφανεις οι αλλαγες. Αμεσα και γρηγορα.

indentation

Τωρα ισως εχετε και κάποια tabs μπροστα απο καθε γραμμή για τη σωστη στοιχηση. Κατα βαση ο emacs χρησιμοποιει tabs και spaces. Μπορειτε να ορισετε να χρησιμοποιει μονο το ενα απο τα δυο σαν προεπιλογη, να τα αλλαξετε αναλογα με την περισταση, ή να ορισετε ενα αρχειο μεμονομενα να συμπεριφερετε αναλογα.

Ας πουμε για να ορισουμε απο default να χρησιμοποιει μονο spaces, ανοιγουνε το αρχειο ~/.emacs και προσθετουμε στο τέλος:

(setq-default indent-tabs-mode nil)
 
Ο emacs χρεισιμοποιει 8 spaces/tab. Για να αλλαξει αυτο μονιμα σε 4 χαρακτηρες, παλι στο αρχειο .emacs μπορει να μπει:
 
(setq tab-width 4)

Επιλεγοντας ενα region και δινοντας M-x untabify μετατρεπεις τα tabs σε spaces. Αυτο είναι όλο. Μπορειτε να βρειτε πολυ περισσότερα και να κολήσετε. Γενικα το να πεις για το emacs ειναι ενα μεγαλο κεφαλαιο. Αλλα ειναι και ενα ιδιοφυες εργαλειο που μπορεις να κανεις απιστευτα πραγματα. Μεχρι και να παιξεις παιχνιδια.



  

Sunday, February 16, 2014

Custom progress bar με html5

Ειναι γεγονος οτι αν μαθαινεις μεσα απο την εργασια. Και εγω εχω μια ταση να μαθαινω με τον δυσκολο τροπο. Ή τουλαχιστον να με δυσκολευω αρκετα. Ετσι πιστευω οτι τα οφέλη ειναι περισσοτερα. Με αυτο που ασχοληθηκα τελευταία ειναι με την κατασκευη progress bar για ενα "προτζεκτάκι".  Το "προτζεκτάκι" αφορουσε ψηφοφοριες και αυτο που θελαμε ηταν να υπαρχουν μπαρες που να δειχνουν το progress καθε μιας.

Προσπερνώντας διαφορες λεπτομεριες η επιλογη ειναι html5 και λιγο css. Η html5 λοιπον ειναι εδω με πολλα καλουδια και απλοποιεί τη ζωή μας. Ναι? Δηλαδη στο απλο σεναριο που θελουμε να εμφανίσουμε μια progress bar γραφουμε

<progress></progress>

Αυτο θα δημιουργησει κατευθειαν μια progress bar στη σελιδα.
Οι επιλογες που εχετε για να δωσετε ειναι
  • max
  • value
Το value απο default ειναι 1.0  οπως και το max. Γιαυτο ο παραπανω κωδικας θα εμφανιζει τη μπαρα γεματη.
Με το αν βαλουμε attributes ή οχι το progress χωριζετε σε δυο κατηγορίες: Indeterminate και Determinate.

Αυτο ήταν ολο για το progress. Και τα ιδια ισχυουν για το meter. Το meter εχει καποια extra attributes. min, low, high, optimum.

Ο λογος ειναι η μικρη του διαφορα στην λειτουργια. Το πρωτο θα το χρησιμοποιησετε για να εμφανισετε την προοδο μια διεργασιας ενω με το meter θελετε να μετρήσετε τις αποδοσεις της για παραδειγμα.

Αναλογα τις τιμες και το value που θα δωσετε θα δημιουργηθει  μια μπαρα με προεπιλεγμενα χρωματα: πρασινο, κιτρινο, κοκκινο.

<meter max="0.7" value=".5"></meter>

<meter min="0.3" max="0.7" value=".5"></meter>



       
<meter min="0.3" max="0.7" value=".2"></meter>
                                                                                                                  

Για τα low high πρεπει να θυμόμαστε:
  • min<low<high<max
Οταν δεν δινονται θεωρουμε:
  • min=low
  • high=max
Ουσιαστικα οταν δινονται επιλεγουμε τις επιθημητες τιμες να ειναι αναμεσα σε low και high.

Για το optimum:
  •  min ≤ optimum ≤ low
  •  high ≤ optimum ≤ max
  

<meter min=".2" low=".4" high="0.6" max="0.8" value=".3"></meter> 



<meter min=".2" low=".4" high="0.6" max="0.8" value=".7"></meter>

<meter min=".2" low=".4" high="0.6" max="0.8" value=".7" optimum=".25"></meter>
 

<meter min=".2" low=".4" high="0.6" max="0.8" value=".7" optimum=".75"></meter>



Τελευταια και προεριτικη επιλογη το title το οποιο ειναι readonly, απλα για να δηλωσουμε μοναδα μετρησης.
<meter min=".2" low=".4" high="0.6" max="0.8" value=".7" optimum=".75" title="GB"></meter>

 CSS

 Το style ειναι προκαθορισμενο οπως βλεπετε. Το προβλημα ειναι να ειναι cross combatibility με τους browsers. Το html5 ειναι φτιαγμενο γιά αυτο το λογο αλλα οι browsers δεν δινουν πληρη υποστηριξη. Σε συνδιασμο του browser και του λειτουργικου θα υπαρχουν διαφορες στην εμφανοση και αν θελετε να κανετε customization θα πρεπει να ορισετε για καθε browser χωριστα το style. Και παλι μπορει να δουλεψει οπως το meter στον IE!!!!!!!!!

Για meter στο chrome, safari, opera υπαρχουν οι pseudo-classes:
-web-meter-inner-element
-web-meter-bar
-web-meter-optimum-value
-web-meter-subotimum-value
-web-meter-even-less-good-value

 Για meter στο firefox:
-moz-meter-bar
-moz-meter-optimum
-moz-meter-sub-optimum
-moz-meter-sub-sub-optimum
Αυτα αφου πρωτα δηλωσουμε στο element το appearance 'μηδενικο':

meter {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
Οι pseudo-classes εχουν μια διαφορα στην δηλωση

πχ. για τις webkit ειναι καπως ετσι:
meter::-webkit-meter-bar {
 -webkit-appearance: meter;
}                                              --->για την μπαρα
meter::-webkit-meter-value  {}  ---->ΞΕΧΩΡΙΣΤΑ για το progress

ενω για mozilla:
 meter:-moz-meter-optimum::-moz-meter-bar {
-moz-appearance: meterchunk;
}                                               -----> δεν χωριζει bar και value;

Υπαρχουν μια δυο διαφορες ακομα αλλα αυτα ειναι αρκετα για να κανετε οτι θελετε.

Για meter στον ΙΕ:

Απλα φτιαχνουμε σε bar σε html4:

<div class="bar"><span class="progress" style="width: 80%;"></span</div> και φτιαχνουμε το css. Επισης αυτο που παρατηρησα ειναι οτι στον ΙΕ επισης οτι οσο το value στο width μεγαλωνει  η τιμη αυτο συνεχιζει. Αυτο ισως να μη φανει με το default μονοχρωμο style αλλα χρειαστηκε και ενα script να ελεγχει ποτε ξεπεραστηκε το 100% της μπαρας και να το ρυθμίζει. Και σχετικα αυτο ειναι ευκολο, αν εχεις περισσοτερα απο ενα meter πρεπει να φιλτραρεις το attr('style') και με μια loop να παρεις την τιμη που θα ελεγξεις. btw.

 Παρομοια για το progress element ισχυει meter::-webkit-progress-bar και meter::-webkit-progress-val ακομα και για ΙΕ και meter::-moz-progress-bar για firefox.


Tuesday, January 28, 2014

Fedora 20 release party

Το Σαββατο που περασε 25-01 η ελληνική κοινότητα της αγαπημένης μας διανομής εκανε το καθιερωμένο παρτυ για την εκδοση 20 που ειναι διαθέσιμο απο τις 17-12-2013 με το κωδικο όνομα "Heisebug". Το όνομα μας προτρεπει σε εναν κβαντικο επιστημονα τον Heisenberg που παρατηρησε οτι η πράξη της παρατήρησης ενός συστήματος μεταβάλλει αναπόφευκτα την κατάσταση του. Απο αυτον λοιπον δανειστηκε η επιστημη των υπολογιστων τον ορο Heisebug για να περιγραψει ενα bug το οποιο φαινεται να αλλαζει οταν μελετιεται. Ψαγμένο αρκετα ετσι??

Το Fedora 20 συμπιπτει με την επετειο των 10 χρόνων του project καθως και με την αποφαση μεγαλη στροφη στο infrastructure, ωστε να γινει ακομα πιο καινοτομο, ευχρηστο και ελκυστικο για τους developers. Το Fedora.Next εχει ηδη ξεκινησει και το αναμενουμε, προσωπικα αγωνιωδως. Τα οσα γινονται και οσα θα φερει ηταν ενα απο τα θεματα που συζητησαμε στο party καθως ολα ειναι ακομα σε εμβρυικο σταδιο και οι αλλαγες ειναι σημαντικες.

Επισης πριν λιγες μερες το askbot του Fedora στο ask.fedoraproject.org συμπερίελαβε υποστηριξη στα ελληνικα. Η ελληνικη κοινοτητα ειναι υπευθυνη για τη λειτουργια και την μεταφραση. Ετσι ειχαμε και ενα workshop με μεταφραση για το συγκεκριμένο project. Τωρα μπορειτε να κανετε τις ερωτήσεις σας και να λυνετε τις αποριες σας στα ελληνικα. Οσοι θελουν μπορουν να συνησφερουν στην μεταφραση πηγαίνοντας εδω. Θα ηταν χαρα μου να σας απαντησω σε αποριες ή οτιδηποτε σχετικα.

Περα απο αυτα, εγιναν και δυο μικρες παρουσιασεις, ενα με τα νεα features και τις αλλαγες στην τρεχουσα διανομη και ενα για το πως θα φτιαξετε το δικο σας repository. Ανταλαχθηκαν αποψεις, γνωσεις και εμπειριες. Μπορειτε να βρειτε περισσοτερα στο report του event

Στο event οπως παντα μοιραστηκαν cd και stickers σε φιλους και γνωστους. Λυσαμε αποριες σε καινουργιους χρηστες και καναμε σχεδια για το μελλον. Ενα απο αυτα προκειται για ενα lab για τη security spin. Ολα αυτα συνεβησαν και θα συμβουν στο hackerspace. Πολλοι απο μας ετοιμαζομαστε και θα βρεθουμε την προσεχως βδομαδα στο Βέλγιο που παιρνει μερος η Fossdem. Το Fedora και η ελληνικη κοινοτητα θα είναι εκει.