Evaggelos Balaskas - System Engineer

The sky above the port was the color of television, tuned to a dead channel

Blog
Posts
Wiki
About
Contact
rss.png twitter linkedin github gitlab profile for ebal on Stack Exchange

Next Page »
  -  
« Previous Page
Jul
20
2009
dhclient changes my resolv.conf
Posted by ebal at 08:42:30 in planet_ellak

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

Απλά βάζει το καλώδιο του δικτύου σε μία πρίζα και voila - δεν χρειάζεται να κάνεις τπτ.

Το πρόβλημα:

Όταν ο υπολογιστής σου συνδέεται σε πολλά και διαφορετικά δίκτυα στα οποία ΔΕΝ είσαι πάντα ο διαχειριστής. Έχεις φτιάξει τόσα χρόνια ωραία και όμορφα το routing tables σου, έχει ορίσει τους dns servers κ.λ.π.-κ.λ.π.

Και με το τρέχει το dhclient σου διαλύει τα πάντα !!!

Πως λες στο dhcpclient να ΜΗΝ αλλάξει το /etc/resolv.conf αρχείο σου;

  • Εύκολα, απλά κάνεις το εξής:

# cat > /etc/dhclient-enter-hooks << EOF
make_resolv_conf() {
echo "doing nothing to resolv.conf"
}
EOF

Η ερώτηση μου είναι η εξής:

Πως λες στο dhcpclient να ΜΗΝ σου αλλάξει το routing table;

  • 4 comments
Jul
18
2009
που είναι η libjpeg.so.62 ?
Posted by ebal at 20:51:01 in planet_ellak

Ένα από τα πράγματα που με εκνευρίζουν είναι όταν οι developers ΔΕΝ ξέρουν τι κάνουν.

Και παραθέτω το εξής: η βιβλιοθήκη jpeg έχει φτάσει στην έκδοση 7

Όταν ένας developer θέλει να ελέγξει ή να κάνει χρήση της βιβλιοθήκης τότε απλά πρέπει να προσθέσει το εξής: -ljpeg κατά το compilation.

Οι περισσότερες διανομές έχουν την εξής βιβλιοθήκη: libjpeg ή jpeg-dev ή κάπως έτσι.
Αυτό που χρειαζόμαστε πραγματικά είναι η ύπαρξη της εξής βιβλιοθήκης:

[ebal@myhome:~]€ ldd /usr/lib/libjpeg.so
linux-gate.so.1 => (0xb7fe8000)
libc.so.6 => /lib/libc.so.6 (0xb7e54000)
/lib/ld-linux.so.2 (0xb7fe9000)

η οποία είναι συνήθως (99%) link στην αντίστοιχη έκδοση:

[ebal@myhome:~]€ ls -l /usr/lib/libjpeg.so
lrwxrwxrwx 1 root root 16 2009-06-27 12:54 /usr/lib/libjpeg.so -> libjpeg.so.7.0.0

Τώρα γιατί ΜΑ ΓΙΑΤΙ ένας developer να έχει ορίσει το libjpeg.so.62 με το χέρι στον κώδικά του δεν μπορώ να το καταλάβω?

Το αποτέλεσμα είναι το παρακάτω γελοίο μήνυμα:

error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory

Στο παραπάνω πρόβλημα σκέφτηκα τρεις (3) λύσεις :

a. ln -s /usr/lib/libjpeg.so /usr/lib/libjpeg.so.62
b. downgrade σε libjpeg.so.62
c. edit source code και rebuild όλα τα source προγράμματα !

Η έκδοση 7 περιέχει αλλαγές και προσθήκες αλλά όχι αλλαγή αρχιτεκτονικής, η δημιουργία ενός συνδέσμου (επιλογή a) και ένα email στον αρχικό δημιουργό ώστε να τροποποιήσει εκείνος τον κώδικά του σε κάτι πιο ….. σωστό μου φάνηκε ο πιο γρήγορος κι εύκολος τρόπος.

Φυσικά τέτοια προβλήματα είναι το τίμημα όταν έχεις πάντα ένα υβριδικό μοντέλο μίας base διανομής και όλα τα υπόλοιπα να είναι built from scratch

Δυστυχώς ΔΕΝ έχω ακόμα βρει (δεν ξέρω φυσικά εάν θα την βρω και ποτέ) την υπέρτατη τέλεια διανομή.

ΥΓ: το παραπάνω πρόβλημα είναι ένα από τα “κλασικά” όταν κάνεις update ή όταν θέλεις να είσαι bleeding edge (ή κοινός να έχει τόσο ελεύθερο χρόνο ώστε να κάνει το testing σε unstable προγράμματα).

Jul
15
2009
Καλό είναι στο pidgin να μιλάς: Off The Record
Posted by ebal at 17:41:25 in planet_ellak

Αρκετές φορές θέλετε να πείτε κάτι πιο εμπιστευτικά σε φίλους ή συνεργάτες που έχετε στο pidgin, όπως για παράδειγμα να “μοιραστείτε” το συνθηματικό του διαχειριστή για έναν απομακρυσμένο διακομιστή (ναι καλά τώρα, σε πίστεψα ότι ΔΕΝ το έχεις κάνει ποτέ).

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

Η πρόταση (κι αρκετά καλή λύση) είναι να μιλάς Off The Record

Το otr (off-the-record) είναι στην πραγματικότητα ένα library (OTR Messaging Library) και χρειάζεται να εγκατασταθεί πριν το OTR plugin for Pidgin

Ένα καλό παράδειγμα λειτουργίας/επικοινωνίας είναι το εξής

  • 1 comment
Jul
14
2009
PIrsyncD 20090714
Posted by ebal at 14:00:32 in planet_ellak

Πρόσθεσα τις εξής λειτουργίες:

  • Πλέον το PIrsyncD παρακολουθεί τον πηγαίο κατάλογο για τα εξής events: WRITE,CREATE & DELETE
  • Ελέγχει τις ρυθμίσεις κι εάν τις πληρεί θα εκκινήσει.
  • Ξεκινάει ένα 1ο rsync κατά την εκτέλεση του προγράμματος.
  • ΔΕΝ ξεκινάει το rsync άμεσα, δλδ κατά την ενεργοποίηση ενός event αλλά μετά από μία καθυστέρηση των 5 δευτερολέπτων ώστε να έχει όσο γίνεται το latest state του καταλόγου.

Προβλήμα που θέλω να λύσω:

Ξεκινάει ένα rsync command που διαρκεί για αρκετή ώρα π.χ. 10 λεπτά.
Τα αρχεία που γράφονται στον πηγαίο κατάλογο σε αυτά τα 10 λεπτά δεν αντιγράφονται παρά μόνο στο επόμενο inotify event που θα ενεργοποιήσει τον δαίμονα.

Τέλος, δημιούργησα μία ξεχωριστή σελίδα: PIrsyncD
και πάντα η τελευαία έκδοση του script θα είναι η εξής:
http://balaskas.gr/PIrsyncD/PIrsyncD.tbz2

Jul
13
2009
PIrsyncD - failsafe rsync mechanism
Posted by ebal at 09:18:02 in planet_ellak

Κοιτώντας λίγο την λειτουργία του PIrsyncD (Python Inotify Rsync Daemon) διαπίστωσα το εξής πρόβλημα:

Όταν στον πηγαίο κατάλογο γράφονται πάρα πολλά αρχεία κατά την διάρκεια που εκτελεί το rsync process, τότε δημιουργούνται πάρα πολλά rsync threads με αποτέλεσμα να αυξάνει το process and memory usage. Το πρόβλημα αυξάνει όταν το synchronization των καταλόγων γίνεται μέσω δικτύου.

Για να αποφύγω τέτοια προβλήματα σκέφτηκα να δημιουργήσω προσωρινά ένα lockfile το οποίο θα λειτουργεί ως ασπίδα προστασίας. Εάν υπάρχει σημαίνει ότι ακόμα εκτελείτε προηγούμενο rsync proccess. Μόλις ολοκληρωθεί το rsync process διαγράφεται και το temporarily lockfile.

Μπορείτε να κατεβάσετε το πρόγραμμα από εδώ: PIrsyncD_20090713

Παραθέτω τον κώδικα:


#!/usr/bin/env python

# Python Inotify Rsync Daemon
# Evaggelos Balaskas, ebalaskas AT ebalaskas DOT gr
# Last change: Mon Jul 13 12:01:31 EEST 2009

import pyinotify,os

source_path = "/tmp/data/"
dest_path   = "/tmp/data2/"

# Variables for rsync to a remote server
dest_server = ""
#dest_server = "server:"
rsync_ssh   = ""
# rsync_ssh   = "-e ssh"

rsync_path  = "/usr/bin/rsync"
rsync_args  = "-az --delete"

rsync_command = rsync_path + " " + rsync_args + " " + source_path + " " + rsync_ssh + " " + dest_server + dest_path

# LockFile - failsafe mechanism
lockfile = "/tmp/.PIrsync.lock"

wm = pyinotify.WatchManager()
mask = pyinotify.IN_CLOSE_WRITE

class PTmp(pyinotify.ProcessEvent):
    def process_IN_CLOSE_WRITE(self, event):
    if not os.path.exists(lockfile):
        fd = os.open(lockfile, os.O_RDWR|os.O_EXCL|os.O_CREAT)
        os.system(rsync_command)
        os.remove(lockfile)

p = PTmp()

notifier = pyinotify.Notifier(wm, p)
wm.add_watch(source_path, mask, rec=True)
notifier.loop(daemonize=True, pid_file='/tmp/PIrsyncD.pid')
Jul
12
2009
Mirroring directories with PIrsynD
Posted by ebal at 20:29:45 in planet_ellak, pirsynd

Mirroring directories with PIrsynD

Τον τελευταίο καιρό βρέθηκα αντιμέτωπος με το εξής πρόβλημα:

Real time Data Replication over network.

Έπρεπε να υλοποιήσω μία λύση ανάμεσα σε δύο συστήματα που θα λειτουργούν ως Active/Passive. Ξεκίνησα το οδοιπορικό μου, ρωτώντας φίλους και συνεργάτες για το μοντέλο που θα επέλεγαν οι ίδιοι.

Φυσικά και η απλούστερη λύση είναι το rsync, αλλά το rsync θα πρέπει να εκτελείτε από κάποιο δαίμονα (π.χ. crond). Το πρόβλημα εδώ είναι ότι υπάρχει time lug μεταξύ των δύο συστημάτων. Εάν βάλω τον δαίμονα ανά μία ώρα θα έχω μία τεράστια διαφορά των δεδομένων της τάξης μίας ολόκληρης ώρας, κατά την ατυχή περίπτωση failover. Εάν βάλω τον δαίμονα ανά 5 λεπτά υπάρχει περίπτωση να μην προλάβει στα 5 λεπτά να ολοκληρώσει το syncing. Γενικά πρέπει να δημιουργήσεις ένα custom script που θα ελέγχει όλα αυτά κι όχι μπορεί να προκύψουν και φυσικά η διαχειριστική ευθύνη και κόστος αυξάνει αρκετά.

Οι περισσότεροι μου πρότειναν το drbd με την χρήση του υπάρχοντος heartbeat. Απλά απαράδεκτο. Πάρα πολλοί περιορισμοί: Ανάγκη για ξεχωριστό δίσκο (block device), ΔΕΝ κάνει scale up, πολύ δύσχρηστο, αρκετή δουλειά μέχρι να το φέρεις στα μέτρα σου, δουλεύει μόνο ως Server/Client. Με απογοήτευσε αρκετά τολμώ να πω με θάρρος. Είναι όμως kernel module, το οποίο σημαίνει: ταχύτητα και διαφάνεια στον τρόπο που εργάζεται το υπόλοιπο σύστημα στο block device κι όντως έχεις Real time Data Replication

Η επόμενη επιλογή μου ήταν το gluster. Ένα από τα καλύτερα λογισμικά που έχω δει και δουλέψει. Μερικά από τα χαρακτηριστικά του είναι τα εξής: πανεύκολη εγκατάσταση, απλούστατο configuration, εξαιρετικό scale up (no limit πιστεύω), μπορείς να χρησιμοποιήσεις ως distribute filesystem, για replication, για striping, και μπορείς να υλοποιήσεις κάποια μοντέλα raid δια μέσου του δικτύου. Οι δυνατότητες που έχει, πιστεύω ότι μπορούν να καλύψουν τον οποιοδήποτε. Αλλά υλοποιείται με το μοντέλο server/client. Ορίζεις έναν client ο οποίος μπορεί να μιλήσει με n servers. Με δύο συστήματα μόνο ΔΕΝ μπορεί να δουλέψει και φυσικά μόνο όταν όλοι οι clients είναι linux.

Το επόμενο μου λογισμικό προς δοκιμή ήταν το incrond. Κάνει χρήση του inotify όταν αλλάζει ένα αρχείο οπότε με ελάχιστο scripting και λίγο rsync μπορείς να κάνεις αρκετά πράγματα. Αλλά και πάλι υπάρχει το διαχειριστικό κόστος, αρκετό scripting και φυσικά υπάρχει ένα θεματάκι με το recursive στους καταλόγους. Έχει όμως τρομερό documentation κι εάν το έχεις λίγο με τον προγραμματισμό μπορείς να δημιουργήσεις μία αρκετά καλή λύση.

Προσπαθώντας να βρω όντως την τέλεια λύση, στο μυαλό μου ήρθαν τα λόγια του Γιάννη Στοΐλη

  • Γιάννη, έχεις δουλέψει ποτέ με κάποιο cluster file system ή κάτι παρόμοιο; Θέλω να βρω μία λύση για real time data replication
  • Μπα, κάτι τέτοια τα αφήνω σε εσένα για δοκιμές, εγώ συνεχίζω να παίζω με custom rsync scripts

Τελικά το σκέφτηκα λίγο παραπάνω και μου ήρθε στο μυαλό η εξής εικόνα:

chickenrazor.jpg

Ξεκίνησα λοιπόν να “ξαναβλέπω” το rsync ίσως με κάποιο inotify feature και voila: lsyncd
Μερικά δευτερόλεπτα μετά κι έτοιμο:

On server1:


lsyncd /data server2:/data

On server2:


lsyncd /data server2:/data

it’s just too simple

Αλλά … unbelievable αργό και buggy. Επίσης υπάρχει κι εδώ ένα θέμα με τo recursive, κρίμα γιατί μου άρεσε πάρα μα πάρα πολύ.

Σε αυτό το σημείο, σκέφτηκα να κάνω ένα βήμα πίσω και να ξαναδώ καλύτερα τις επιλογές μου. Αυτό που θέλω να υλοποιήσω είναι μία απλή και γρήγορη λύση για να συγχρονίζω δύο συστήματα. Στο μυαλό μου τριγύριζε η κουβέντα του Γιάννη: “Εγώ παίζω με custom rsync scripts” και σκέφτηκα: “What the fuck” ας κάνω κι εγώ κάτι τέτοιο. Έπρεπε όμως να βρω μία λύση να το συνδειάσω με το inotify.

Αναζητώντας στο διαδίκτυο για μία καλή υλοποίηση του inotify κατέληξα στο εξής: Pyinotify. Είναι η πιο πλήρης τεκμηριωμένη υλοποίηση του inotify, είναι γραμμένη σε python και έχει εξαιρετικά απλά παραδείγματα. Άρχισα να παίζω με τα παραδείγματα που έχει και να καταλαβαίνω καλύτερα το πως δουλεύει. Ίσως σε αυτό το σημείο να είναι καλό να αναφέρω ότι ΔΕΝ ξέρω python κι ότι ΔΕΝ έχω ξαναγράψει ποτέ κάποιο python script. Ξέρω όμως από προγραμματισμό και λίγο από εδώ - λίγο από εκεί κατέληξα στο εξής script: PIrsyncD!!!

To PIrsyncd σημαίνει: Python Inotify Rsync Daemon και είναι ένα εξαιρετικά απλό python script που τρέχει στο background ως δαίμονας. Ελέγχει συνεχώς έναν source κατάλογο που του έχουμε πει κι όταν γραφτεί κάτι σε αυτόν ή στους υποκαταλόγους του εκτελεί μία rsync εντολή ώστε να συγχρονίσει τους δύο καταλόγους. Το ενδιαφέρον εδώ είναι θα εκτελεστεί ΜΟΝΟ όταν γραφτεί κάτι, και ποτέ άλλοτε.

Παραθέτω τον κώδικα:


#!/usr/bin/env python

# Python Inotify Rsync Daemon
# Evaggelos Balaskas, ebalaskas AT ebalaskas DOT gr
# Last change: Sun Jul 12 22:50:17 EEST 2009

import pyinotify,os

source_path = "/tmp/data/"
dest_path   = "/tmp/data2/"

# Variables for rsync to a remote server
dest_server = ""
#dest_server = "server:"
rsync_ssh   = ""
# rsync_ssh   = "-e ssh"

rsync_path  = "/usr/bin/rsync"
rsync_args  = "-az --delete"

rsync_command = rsync_path + " " + rsync_args + " " + source_path + " " + rsync_ssh + " " + dest_server + dest_path

wm = pyinotify.WatchManager()
mask = pyinotify.IN_CLOSE_WRITE

class PTmp(pyinotify.ProcessEvent):
    def process_IN_CLOSE_WRITE(self, event):
        os.system(rsync_command)

p = PTmp()

notifier = pyinotify.Notifier(wm, p)
wm.add_watch(source_path, mask, rec=True)
notifier.loop(daemonize=True, pid_file='/tmp/PIrsyncD.pid')

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

Εάν θέλετε να το δοκιμάσετε τότε χρειάζεται να εγκαταστήσετε και την pyinotify ή μπορείτε να κατεβάσετε το εξής αρχείο: PIrsyncD_20090712

Jul
09
2009
gtkperf to the Rescue
Posted by ebal at 06:09:26 in planet_ellak

Ολοκλήρωσα αυτές τις μέρες την πλήρη μετάβασή σε όλα τα μηχανήματά μου σε archlinux.

Μπορεί να είναι μόνο 3:

  • home desktop
  • laptop
  • work desktop

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

Σκέφτηκα λοιπόν, να τρέξω ένα gtkperf ώστε να ελέγξω εάν όντως είναι ταχύτερο το xfce στο archlinux σε σχέση με το ubuntu.

Ιδού το αποτέλεσμα μου:

GtkPerf 0.40 - Starting testing: Thu Jul 9 08:52:58 2009

GtkEntry - time: 0,00
GtkComboBox - time: 0,82
GtkComboBoxEntry - time: 0,68
GtkSpinButton - time: 0,09
GtkProgressBar - time: 0,04
GtkToggleButton - time: 0,05
GtkCheckButton - time: 0,05
GtkRadioButton - time: 0,10
GtkTextView - Add text - time: 0,54
GtkTextView - Scroll - time: 0,09
GtkDrawingArea - Lines - time: 0,51
GtkDrawingArea - Circles - time: 0,90
GtkDrawingArea - Text - time: 0,70
GtkDrawingArea - Pixbufs - time: 0,14
—
Total time: 4,71

Και μάλιστα το xfce είναι εγκατεστημένο από subversion (δλδ είναι unstable και αρκετά buggy)

[ebal@mywork ~] € xfwm4 –version
This is xfwm4 version 4.7.0svn.r30079 (revision 30079) for Xfce 4.7.0

4.71 πιστεύω ότι αποτελεί μία αρκετά καλή & γρήγορη επίδοση

Η παλαιότερη μέτρησή μου ήταν κοντά στο 6, see my old post

Jul
08
2009
Finally archlinux everywhere !
Posted by ebal at 08:00:53 in blog

Επιτέλους ολοκλήρωσα σήμερα το migration στον υπολογιστή της δουλειάς σε archlinux και πλέον παντού βασικό λειτουργικό είναι το arch.

Jul
07
2009
ΝΕΕΣ ΘΕΣΕΙΣ ΕΡΓΑΣΙΑΣ στον ΟΤΕ !
Posted by ebal at 09:04:27 in blog

Σήμερα πέτυχα την εξής ανακοίνωση (εντελώς τυχαία):
nees_theseis_ergasias

Μπορεί κάποιον να ενδιαφέρει

Jul
04
2009
Βελτιστοποίηση κώδικα
Posted by ebal at 13:06:16 in blog

Τελικά ο μοναδικός τρόπος να βελτιστοποιήσεις τον κώδικά σε ένα πρόγραμμα είναι απλά να το αφήσεις στην άκρη για λίγο καιρό.

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

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

ΞΑΦΝΙΚΑ σαν να με χτύπησε κεραυνός αφήνω το πληκτρολόγιο και κοιτάζω λίγο τον κώδικα.

- Τι σκατά έχω γράψει εδώ !!!

Μερικά λεπτά αργότερα, κι αφού έχω διαγράψει πάνω από το 50% του κώδικα βλέπω χαρούμενος το αποτέλεσμα.

Jul
04
2009
firefox 3.5
Posted by ebal at 12:51:16 in planet_ellak

Σήμερα προχώρησα με την αναβάθμιση του firefox στην έκδοση 3.5

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5

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

Jul
02
2009
File Recover via lsof
Posted by ebal at 19:18:02 in planet_ellak

Και σε ποιον δεν έχει τύχει να διαγράψει κατά λάθος ένα αρχείο.
Εάν όμως υπάρχει κάποια διεργασία που έχει “δεσμεύει” το αρχείο μας,
υπάρχουν αρκετές πιθανότητες να το ανακτήσουμε με την χρήση της lsof.

Η lsof μας δείχνει ποια είναι τα ανοιχτά αρχεία, δλδ τα αρχεία που αυτή την στιγμή έχουν “δεσμεύει οι διεργασίες του υπολογιστή μας.

Παραθέτω ένα πλήρες κι εύκολο παράδειγμα:

dmesg > dmesg.log
less dmesg.log

Ελέγχουμε το μέγεθος αλλά και το hash του αρχείου μέσω της md5sum για να πιστοποιήσουμε την ακεραιότητα παρακάτω:

ebal@myhome: € ls -l dmesg.log
-rw-r–r– 1 ebal ebal 28944 2009-07-02 21:46 dmesg.log

ebal@myhome: € md5sum dmesg.log
f8b02bca5b25244e71ada077a439a4cf dmesg.log

Διαγράφουμε το αρχείο, προσοχή το less που τρέχουμε παραπάνω είναι σε άλλο παράθυρο/τερματικό

ebal@myhome: € rm -f dmesg.log
ebal@myhome: € ls -l dmesg.log
ls: cannot access dmesg.log: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

Βλέπουμε εάν είναι “ανοιχτό” από κάποια άλλη διεργασία, περιμένουμε να δούμε την less

ebal@myhome: € lsof | grep dmesg.log
less 5412 ebal 4r REG 8,3 28944 6922 /tmp/dmesg.log (deleted)

Στην δεύτερη στήλη, ο αριθμός αυτός δηλώνει τον αριθμό της διεργασίας μας.
Κάθε φορά είναι διαφορετικός και σε κάθεναν θα είναι επίσης διαφορετικός.

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

ebal@myhome: € cp /proc/5412/fd/4 /tmp/dmesg.log

Πριν συνεχίσουμε, μερικές πληροφορίες.

/proc : ο κατάλογος στον οποίο καταγράφουν όλες οι διεργασίες προσωρινά πληροφορίες
5412: o αριθμός διεργασίας της less
fd : file descriptor, εάν έχουν ανοιχτεί αρχεία
4 : Συνήθως είναι το αρχείο, με την εντολή ls -l στον κατάλογο /proc/5412/fd/4 το επιβεβαιώνουμε

Περισσότερα για το proc filesystem μπορείτε να διαβάσετε εδώ

Κι ελέγχουμε εκ νέου το μέγεθος και την ακεραιότητα του αρχείου μας.

ebal@myhome: € ls -l dmesg.log
-rw-r–r– 1 ebal ebal 28944 2009-07-02 21:54 dmesg.log
ebal@myhome: € md5sum dmesg.log
f8b02bca5b25244e71ada077a439a4cf dmesg.log

Οπότε την επόμενη φορά που θα διαγράψουμε ένα αρχείο, ρίχνουμε μια ματιά στην lsof.

Αρχική πηγή: linuxplanet

  • 1 comment
Jun
26
2009
Always latest kernel on Archlinux. Is it safe?
Posted by ebal at 19:08:56 in planet_ellak

Τις τελευταίες ημέρες και καθώς προσπαθώ και ολοκληρώσω και το migration στο pc της δουλειάς σε archlinux αντιμετώπισα το εξής πρόβλημα:

Στο archlinux αναβάθμισαν τον πυρήνα σε 2.6.30
Ok παίδες βγήκε στις 10/06/2009 ως stable αλλά για κρατήστε τα άλογά σας λίγο (hold your horses).

Όταν οι περισσότερες εφαρμογές στηρίζονται σε προηγούμενες εκδόσεις του kernel και δεν έχουν προλάβει να κάνουν τις απαραίτητες διορθώσεις στον κώδικα τους, είναι εξαιρετικά unsafe να κάνεις upgrade τον kernel.

Είναι αντιπαραγωγικό να διορθώνει κάποιος με το χέρι τον κώδικα εφαρμογών, ή να περνάει diffs & patches από την development version ενός προγράμματος, επειδή η stable δεν παίζει πλέον.

  • 6 comments
Jun
21
2009
Virtualbox on archlinux
Posted by ebal at 09:56:24 in blog, planet_ellak

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

ebal@mylaptop:~ € sudo pacman -Syu
:: Synchronizing package databases…
core is up to date
extra is up to date
community 366,2K 212,3K/s 00:00:02 [#####################] 100%
:: Starting full system upgrade…
local database is up to date

Έπειτα προσπάθησα να επαναεγκαταστήσω το Virtualbox:

ebal@mylaptop:~ € sudo pacman -S community/virtualbox-ose
resolving dependencies…
error: cannot resolve “kernel26>=2.6.30”, a dependency of “virtualbox-modules”
error: failed to prepare transaction (could not satisfy dependencies)
:: virtualbox-modules: requires kernel26>=2.6.30

Σκέφτηκα να κοιτάξω στο forum του archlinux, μήπως βρω κάτι σχετικό.

Στο 1ο post που βρήκα, διαβάσα ότι έχει γίνει κάποιο λάθος κι ότι θα έπρεπε να αναβαθμίζω την διανομή μου με την εξής εντολή:

pacman -Syu –ignore virtualbox-modules

Δυστυχώς μία από τις κακές μου συνήθειες είναι και η εξής: shoot first, ask questions later.
Στην παραπάνω περίπτωση λοιπόν, πρώτα αφαίρεσα το virtualbox για να λύσω το πρόβλημα του upgrade κι έπειτα αναζήτησα για την λύση του error.

Με αφορμή το παραπάνω, σκέφτηκα ότι θα ήταν μία καλή περίπτωση να δοκιμάσω να εγκαταστήσω το virtualbox από το site της oracle: http://www.virtualbox.org

Σε αυτόν τον σύνδεσμο: Linux_Downloads
έχει μία λίστα με διανομές. Επέλεξα το All distributions

Kατέβασα στον υπολογιστή μου το αρχείο: VirtualBox-2.2.4

Εγκατάσταση:

Επιβεβαιώνω την ακεραιότητα του αρχείο σύμφωνα με τον εξής σύνδεσμο:MD5SUMS

ebal@mylaptop:~ € md5sum VirtualBox-2.2.4-47978-Linux_x86.run
cc24c081e53d03da1c009dc1a2eaa95d VirtualBox-2.2.4-47978-Linux_x86.run

Και δίνω το δικαίωμα εκτέλεσης, στον χρήστη που ανήκει:

ebal@mylaptop:~ € chmod u+x VirtualBox-2.2.4-47978-Linux_x86.run

Ξεκινώ την εγκατάσταση:

ebal@mylaptop:~ € sudo ./VirtualBox-2.2.4-47978-Linux_x86.run
Verifying archive integrity… All good.
Uncompressing VirtualBox for Linux installation……..
VirtualBox Version 2.2.4 (2009-05-29T17:23:26Z) installer
Installing VirtualBox to /opt/VirtualBox
tar: Record size = 8 blocks
Building the VirtualBox kernel module
Building the VirtualBox netflt kernel module

VirtualBox has been installed successfully.

You will find useful information about using VirtualBox in the user manual
/opt/VirtualBox/UserManual.pdf
and in the user FAQ
http://www.virtualbox.org/wiki/User_FAQ

We hope that you enjoy using VirtualBox.

Η εντύπωση που αποκόμισα μέχρι αυτό το σημείο ήταν: Πανεύκολη εγκατάσταση!

Εκτέλεση

Χωρίς να χρειαστεί κάποια επανεκκίνηση πληκτρολογώ την ακόλουθη εντολή:

ebal@mylaptop:~ € /opt/VirtualBox/VirtualBox

Και το αποτέλεσμα:

vb01.png
vb02.png
vb03.png

Όλα πήγαν εξαιρετικά λοιπόν.

  • 2 comments
Jun
18
2009
Ασφαλιστική/Συνεργείο - Εγώ, 1-0
Posted by ebal at 07:26:41 in blog

Την ημέρα των εκλογών του συλλόγου Hellug, Σάββατο 7 Μαρτίου 2009, είχα ένα τροχαίο με το αμάξι.
Όχι τπτ σοβαρό, αλλά επειδή με πέτυχαν πλάγια - αριστερά στο μπροστά φτερό άνοιξαν
οι αερόσακοι από το αμάξι (οδηγού και συνοδηγού). Το τροχαίο έγινε στο κέντρο της
Αθήνας - στην πλατεία Καραΐσκάκη (μεταξουργείο) όπου η διεύθυνση τροχαίας είναι 500μέτρα
στον ίδιο δρόμο. Τράκαρα γύρω 21.00, μέχρι τις 23.30 κανένας αστυνομικός από την τροχαία
δεν είχε έρθει για την καταγραφή του ατυχήματος. Μάλιστα το πιο εντυπωσιακό ήταν ότι
πέρασε περιπολικό της τροχαίας - αλλά όταν πήγα και τους ζήτησα να έρθουν για την καταγραφή
μου απάντησαν με θράσος:

- Εμείς σταματήσαμε για να γράψουμε κάποιον που μίλαγε στο κινητό !!!

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

Την δευτέρα το πρωί έκλεισα ραντεβού με τον πραγματογνώμονα της ασφαλιστικής (Ασπίς)
και την τρίτη 10 Μαρτίου 2009 το πρωί πήγα το αμάξι στο συνεργείο της αντιπροσωπίας (ΒΙΑΜΑΡ)
που βρίσκεται επί της Ιερά Οδούς. Να σημειώσω εδώ ότι τράκαρα το Σάββατο στην Αθήνα,
πήγα με το αμάξι μου στο σπίτι μου κανονικά, την Κυριακή έκανα μία μικρή βόλτα στην γειτονιά
για να ελέγξω το αυτοκίνητο και την τρίτη ξεκίνησα και το πήγα στο συνεργείο.

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

Πόσο λάθος έκανα !!!

Ο πραγματογνώμονας και το συνεργείο μου έβγαλαν το εξής κουστούμι: 6970 ευρώ !!!
Από ένα χιλιάρικο ο κάθε αερόσακος και το ταμπλό γύρω στο 1.500 (3.500),
φανάρι, προφυλακτήρας, βάψιμο, ευθυγράμμιση κ.λ.π. για να μην τρελαθούμε έφτασε
στα εφτά χιλιάρικα!

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

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

Μιας και δεν είχα τα χρήματα - έκανα ότι καλύτερο μπορούσα να κάνω σε αυτές τις περιπτώσεις: Δανείστηκα.

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

Από εκείνη την στιγμή ξεκινάει ο Γολγοθάς μου.

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

Περνάει ο Απρίλιος,

Μπαίνει ο Μάιος

Ξανά τηλέφωνα - πηγαίνω από εκεί - τπτ

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

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

Επειδή δεν πήγαινε άλλο, κι όπως προανέφερα μέρος τον χρημάτων ήταν δανεικά από την Δευτέρα 25 Μαΐου 2009 και σχεδόν κάθε μέρα πηγαίνω στα γραφεία της Ασπίς, προσπαθώ να βρω κάποιον να μιλήσω για να μου δώσει τα χρήματα μου ή τουλάχιστον κάποια ημερομηνία.

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

Μετά από αρκετή φασαρία τελικά και επί καθημερινής βάσης προσέλευσης μου στα γραφεία τους,
την Παρασκευή 29 Μαΐου 2009 μου δίνουν μία μεταχρονολογημένη επιταγή για τις 18 Ιουνίου 2009.

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

Υπομονή … Περιμένω να περάσουν οι (είκοσι) μέρες…

Σήμερα ξημέρωσε Πέμπτη 18 Ιουνίου 2009, μεταβαίνω στην Ασπίς Bank με την επιταγή στα χέρια μου.

Πάω στο ταμείο και με στέλνει να μιλήσω με κάποια κυρία, πηγαίνω στο γραφείο της και με ρωτάει:

  • Πότε σας έδωσαν αυτή την επιταγή;
    Γιατί για τόσο μεγάλο ποσό χρειάζεται παραγγελία για να φέρουμε τα χρήματα !!!

Έχοντας μία έκπληξη, της απαντάω:

  • Πριν από 20 μέρες.
  • Καλά μου λέει, για να δούμε τι μπορεί να γίνει.

Μετά από μερικά τηλεφωνήματα και αρκετή εγκράτεια από την πλευρά μου για να μην εκραγώ,
τελικά παίρνω τα χρήματα !!! ουάου

Για να μην έχω τα λεφτά επάνω μου - μπαίνω στην εθνική απευθείας.
Η τράπεζα εντελώς άδεια, πάω στο ταμείο και βγάζω την κάρτα της εθνικής:

Κοιτάει η κοπέλα την κάρτα και με απίστευτο ύφος:

  • Τι να βγάλετε χρήματα;
  • Καλημέρα, να βάλω θέλω, αλλά έχω ξεχάσει το βιβλιάριο
  • Ααα εντάξει

Τι στο καλό ρε γαμώτο πλέον στις τράπεζες δεν βάζει κανένας λεφτά;

Τέλος καλό λοιπόν.

Συμπεράσματα:

  • Η Ασπίς δεν κάνει για ασφαλιστική (κι όχι τπτ άλλο - πληρώνω μεικτή ασφάλεια, γύρω στο χιλιάρικο το χρόνο)
    και για αυτό λόγο λοιπόν την άλλαξα.

  • Δεν πρόκειται να ξαναπάω το αμάξι στην Βιαμάρ, εκτός από το απίστευτο ποσό - δεν μου άρεσε το ειρωνικό σχόλιο: Θα τα πάρεις τα λεφτά από την ασφαλιστική.

  • 1 comment
Jun
16
2009
Power Must 1400 USB P
Posted by ebal at 16:15:56 in blog, planet_ellak

Έχοντας κατά καιρούς προβλήματα με το ρεύμα στο σπίτι
αποφάσισα να προμηθευτώ με το εξής: Power Must 1400 USB P

Είχα την δυνατότητα να επιλέξω να το συνδέσω είτε μέσω RS-232 είτε μέσω USB,
μιας και τα usb είναι σχεδόν πάντα κατηλλημένα σκέφτηκα να βάλω το RS-232

To CD που παρέχετε μαζί με το PowerMust είναι υπερπλήρης !!!

  • AIX
  • FreeBSD
  • GenericUnix
  • HPUX
  • Linux
  • LinuxAMD64
  • MacOSX
  • Martrix usb driver for windows
  • Quick Installation and Setup.pdf
  • Solaris
  • WinPower V2.5.0.3 manual.pdf
  • Windows

Παρόλα αυτά σκέφτηκα να ρίξω μια ματιά στο site της Mustek: http://www.mustek.de/

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

Για να μην το πολυκουράζουμε το θέμα, βρίσκω την σελίδα με τους drivers
και κατεβάζω το εξής:

Winpower_setup_Linux.tar.gz

Χρειάζεται να υπάρχει jre (java runtime) και libxp (τουλάχιστον σε εμένα)

Η εγκατάσταση (ως διαχειριστές):

tar zxvf Winpower_setup_Linux.tar.gz
cd Winpower_setup_Linux/Linux/

./setup.bin

Αφού ακολουθήσουμε την πανεύκολη διαδικασία της εγκατάστασης παρατηρούμε ότι η εγκατάσταση
έχει γίνει στον κατάλογο: /opt/upspilot/

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

Εάν μέχρι εδώ πάνε όλα καλά (και γιατί να μην πάνε δλδ) τότε είμαστε έτοιμοι να
τρέξουμε το monitor πρόγραμμα:

(ως διαχειριστής)

cd /opt/upspilot/
./monitor

και θα ξεκινήσει το πρόγραμμά μας

Και τώρα το δύσκολο μέρος:

Από το menu: Act as Administrator
πληκτρολογούμε το προκαθορισμένο συνθηματικό: Administrator
(προσοχή είναι case sensitive)

Auto Search UPS

κι εάν αυτό δεν παίξει σωστά: COM Port Setting –> /dev/ttyS0 –> OK

Εάν όλα πάνε καλά θα δούμε κάτι σαν κι αυτό:

ups.jpg

  • 7 comments
Jun
14
2009
Archlinux mirror from otenet
Posted by ebal at 09:38:23 in blog, planet_ellak, archlinux

Και πάνω που ολοκλήρωσα το migration στο laptop σε archlinux,
διαπίστωσα ότι έχει ανοιχτεί επίσημα και η πρόσβαση στο mirror της otenet:

http://ftp.otenet.gr/linux/archlinux/
ftp://ftp.otenet.gr/linux/archlinux/

Αλλάζω το /etc/pacman.d/mirrorlist

ebal@mylaptop:~€ egrep -v ‘^#|^$’ /etc/pacman.d/mirrorlist
Server = ftp://ftp.otenet.gr/pub/linux/archlinux/$repo/os/i686

Και με την παραπάνω εντολή βλέπουμε ότι είμαστε οκ με την αναβάθμιση.

ebal@mylaptop:~# pacman -Syu
:: Synchronizing package databases…
core is up to date
extra is up to date
community is up to date
:: Starting full system upgrade…
local database is up to date

από ότι έμαθα το mirror στην otenet θα είναι ανά 8ώρο

Jun
13
2009
Archlinux on Fujitsu Siemens Amilo Si 1520
Posted by ebal at 16:13:48 in blog

Επιτέλους ένα πλήρες λειτουργικό πλέον laptop που τρέχει Archlinux.

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

Οπότε και έμεινε μόνο ο υπολογιστής στην δουλειά πλέον με ubuntu.
Νομίζω όμως ότι το migration στον υπολογιστή στην δουλειά θα μου πάρει αρκετό καιρό
(κυρίως για να βρω ελεύθερο χρόνο).

Μέχρι τότε λοιπόν:

2 down - 1 to go

Jun
09
2009
Linux & WPA2
Posted by ebal at 18:51:46 in blog, planet_ellak

Linux & WPA2

Έστω ότι βρισκόμαστε σε ένα ασύρματο δίκτυο όπου το κλειδί είναι σε WPA2 τι κάνουμε;

wpa2.jpeg

RTFM τo iwconfig: δες xkcd

και φτάνεις σε αυτό το σημείο:

Passphrase is currently not supported

Άρα εάν δεν έχεις καλώδιο τι κάνεις οεο;
Γυρνάς σε MS Windows; όχιιιιιιιι υπάρχει λύση βρε κουτό: wpasupplicant

RTFM το wpasupplicant

Χρειαζόμαστε το αποτέλεσμα της εξής εντολής:


$ wpa_passphrase 
usage: wpa_passphrase <ssid> [passphrase]

Έστω λοιπόν ότι το ssid μας είναι το εξής: myssid
και το συνθηματικό μας (passphrase): testtest


$ wpa_passphrase myssid testtest
network={
    ssid="myssid"
    #psk="testtest"
    psk=520551d66108e15f8fcc6cac00e33b19e0f53fcb8af3d45b705ffdf20eb0524f
}

Αποθηκεύουμε το αποτέλεσμα σε ένα αρχείο:


$ wpa_passphrase myssid testtest > /etc/network/myssid.wpa2

Οπότε είμαστε έτοιμοι να απολαύσουμε το ασύρματο δίκτυο μας.

Εάν συνδεόμαστε με dhcp:

$ cat /etc/network/interfaces
auto lo wlan0
iface lo inet loopback

iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/network/myssid.wpa2

Εάν πάλι συνδεόμαστε με στατική IP:

$ cat /etc/network/interfaces
auto lo wlan0
iface lo inet loopback

iface wlan0 inet static
address 192.168.2.131
netmask 255.255.255.0
gateway 192.168.2.1

wpa-driver wext
wpa-conf /etc/network/myssid.wpa2

Ελπίζω να βοηθήσω λιγάκι να γλιτώσετε χρόνο :)

  • 3 comments
Jun
09
2009
ΕυρωΕρωτήσεις - ΕυρώΕκλογές
Posted by ebal at 04:44:47 in blog

Έστω ότι το ποσοστό αποχής είναι στο 99.99%
(βγάζω εκτός αυτούς που με την θέλησή τους έβαλαν υποψηφιότητα και λογικά θα ψήφιζαν τον εαυτό τους)

Με πιο τρόπο η εκάστοτε κυβέρνηση θα υλοποιούσε την λαϊκή ετυμηγορία;

Και γιατί αυτή η αποχή δεν εκφράζεται και στην εφορία όταν μας καλούν να πληρώσουμε τους φόρους μας;

Μήπως τελικά η αποχή είναι απλά ένα μέσο για να κάνουν τις “δουλείες” τους καλύτερα με την δική μας ανοχή;

Next Page »
  -  
« Previous Page

Search

Admin area

  • Login

Categories

  • blog
  • wiki
  • pirsynd
  • midori
  • books
  • archlinux
  • movies
  • xfce
  • code
  • beer
  • planet_ellak
  • planet_Sysadmin
  • microblogging
  • UH572
  • KoboGlo
  • planet_fsfe

Archives

  • 2025
    • April
    • March
    • February
  • 2024
    • November
    • October
    • August
    • April
    • March
  • 2023
    • May
    • April
  • 2022
    • November
    • October
    • August
    • February
  • 2021
    • November
    • July
    • June
    • May
    • April
    • March
    • February
  • 2020
    • December
    • November
    • September
    • August
    • June
    • May
    • April
    • March
    • January
  • 2019
    • December
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2018
    • December
    • November
    • October
    • September
    • August
    • June
    • May
    • April
    • March
    • February
    • January
  • 2017
    • December
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2016
    • December
    • November
    • October
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2015
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • January
  • 2014
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2013
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2012
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2011
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2010
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
  • 2009
    • December
    • November
    • October
    • September
    • August
    • July
    • June
    • May
    • April
    • March
    • February
    • January
Ευάγγελος.Μπαλάσκας.gr

License GNU FDL 1.3 - CC BY-SA 3.0