Saturday, November 01, 2008

Αφίσα με θέμα την Οδικη Ασφάλεια

Με αφορμή μια προκήρυξη διαγωνισμού αφίσας με θέμα την Οδική Ασφάλεια από το ΓΕΣ, έφτιαξα την παρακάτω αφίσα:



η οποία έτυχε ιδιαίτερα θερμής υποδοχής από την διοίκηση της μονάδας όπου υπηρετώ.

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

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

Ακολούθως, η αμεσότητα της επικοινωνίας με τον αποδέκτη επιτυγχάνεται μέσω του κειμένου με τον τονισμό των γραμμάτων «ΠΑΥΤΕ». Η προσταχτική αυτή λέξη, μια παράλλαξη του «πάψτε», τονίζεται στο θέμα της αφίσας και συνδέει μεταξύ τους πέντε σπουδαίους παράγοντες της οδικής ασφάλειας. Μέσω των γραμμάτων της λέξης αυτής, μπορούν με ευκολία να μεταφερθούν ή να διδαχθούν στον αποδέκτη, οι κανόνες αυτοί. Αντιστρόφως, από την λέξη «ΠΑΥΤΕ», μπορεί και ο αποδέκτης μόνος του, να τους αναζητήσει.

Συμπληρώνοντας τα προηγούμενα, σκοπίμως στο θέμα της αφίσας δεν υπάρχει κάτι που να προσδιορίζει και να σχετίζεται με το σύνθημα «ΠΑΥΤΕ». Αντίθετα αυτό αφήνεται στην φαντασία του αποδέκτη ο οποίος, με βάση το θέμα της αφίσας, μπορεί να συνδέσει το «ΠΑΥΤΕ» με τους δικούς του κανόνες όπως αυτοί ταιριάζουν σε κάθε πτυχή της καθημερινότητας. Για παράδειγμα:

  • ΠΑΥΤΕ (πάψτε) να τρέχετε
  • ΠΑΥΤΕ (πάψτε) να οδηγείτε απρόσεχτα
  • ΠΑΥΤΕ (πάψτε) να οδηγείτε υπό την επήρεια αλκοόλ
  • ΠΑΥΤΕ (πάψτε) ό,τι μπορεί να οδηγήσει σε ένα τροχαίο ατύχημα
και άλλα παρόμοια.

Η αφίσα είναι μεγέθους Α3, με 300 dpi ανάλυση και μπορείτε να την βρείτε, σε πλήρη ανάλυση, εδώ.

Thursday, May 01, 2008

Remove obsolete objects form a library archive using GNU make


The build system of an application I work on, stores each compilation object in a library archive (using GNU ar). With every project build, the contents of this archive are updated with new objects from the compilation. This is achieved by running ar -cru library.a $(OBJECTS)

Moreover, the archive needs also to be updated when files (and thus their objects) are removed from the project. The most convenient phase for this to happen is during the build.

The required archive updating, can be performed with the following part in the Makefile (consider this a template, since it cannot be used as is)

Makefile


obj: $(OBJECTS)
ifneq (,$(filter-out $(OBJECTS),$(wildcard $(OBJECT_DIR)*.o)))
$(warning "Deleting unused object files...")
ifeq (ar,$(firstword $(AR)))
-$(firstword $(AR)) -d $(LIBRARY) $(filter-out $(OBJECTS),$(wildcard $(OBJECT_DIR).o))
else
$(warning $(LIBRARY) may contain obsolete objects: $(filter-out $(OBJECTS),$(wildcard $(OBJECT_DIR)*.o)))
endif
rm -f $(filter-out $(OBJECTS),$(wildcard $(OBJECT_DIR)*.o))
rm -f $(filter-out $(OBJECTS:.o=.d),$(wildcard $(OBJECT_DIR)*.d))
endif


The above assumes that you are using GNU make and GNU ar. Also, dependencies are stored per source file, along with the objects and removed with them.

With the auto removal of objects, manual update or full rebuild of the archive is unnecessary. Also, headaches and hard to track errors, coming from doubly defined functions in the archive and obsolete code being used, are avoided.

Sunday, April 27, 2008

Θεσσαλονίκη - Καλαμάτα, αναζήτηση δρομολογιού ΟΣΕ από το www.ose.gr

Στη προσπάθεια μου να μετακινηθώ μέ σιδηρόδρομο από τη Θεσσαλονίκη στην Καλαμάτα, επισκέφτηκα τον ιστοτόπο του ΟΣΕ (www.ose.gr). Η ημερομηνία του ταξιδιού μου ήταν η 12 Μαΐου 2008, ενώ η αναζήτηση των δρομολογίων έγινε στις 20 Απριλίου.

Συνάντησα τα εξής προβλήματα:


  1. Βάζοντας για αφετηρία τη Θεσσαλονίκη, δεν υπάρχει προορισμός στην Πελοπόννησο.

  2. Βάζοντας για αφετηρία τον "ΣΣ. Καλαμάτας", στην αναζήτηση προορισμού και στο γράμμα Κ δεν υπάρχει ο σταθμός του Κιάτο. Αντίθετα, τον βρίσκω στο Π (για Πάτρα)

  3. Καθώς η εύρεση επιθυμητών δρομολογίων φαίνεται αδύνατη, δοκιμάζω το Θεσσαλονίκη -> Αθήνα. Και εκεί η αναζήτηση αποτυχαίνει. Με δοκιμές βρίσκω πως δεν υπάρχουν δρομολόγια καταχωρημένα για μετά της 10 Μαΐου.


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

Αργότερα έμαθα πως για να πάει κανείς με τρένο από τη Θεσσαλονίκη στην Καλαμάτα, πρέπει πρώτα να πάει Αθήνα. Από εκεί, με τον προαστιακό να φτάσει Πάτρα και κατόπιν, αφού αλλάξει και πάλι τρένο, θα κατευθυνθεί για Καλαμάτα. Μάλλον τέτοιου είδους δρομολόγια δεν μπορεί να τα χειριστεί το πρόγραμμα αναζήτησης δρομολογίων του www.ose.gr. Η τηλεφωνική υπηρεσία εξυπηρέτησης πελατών ήταν σαφώς πιο εξυπηρετική.

Tuesday, April 22, 2008

Release cvsxxdiff v1.5

cvsxxdiff version 1.5 was released today.

In this release many significant changes are introduced, as you can see from the ChangeLog. At the moment, there are no plans for a new project version with major features.

Saturday, March 29, 2008

Αποστολή SMS από τη γραμμή εντολών

Από τα πρώτα προγράμματα που έγραψα σε C ήταν το mycosmos, ένα πρόγραμμα αποστολής SMS από τη γραμμή εντολών μέσω μιας web υπηρεσίας.

Όμως ο καιρός πέρασε, η web υπηρεσία άλλαξε και το mycosmos έπαψε να δουλεύει. Έτσι τον Δεκέμβριο του 2007 το ξαναέγραψα από την αρχή, δημιουργώντας αυτή τη φορά το climycosmos.

Η έκδοση 0.4 του climycosmos είναι αρκετά πλήρης. Είναι απολύτος αυτόνομη από εξωτερικές εξαρτήσεις και πλήρως παραμετροποιήσιμη για καθημερινή χρήση. Τις παράμετρους αποτελούν:
i) ο λογαριασμός χρήστη και οι κωδικοί εισόδου μέσω του οποίου θα αποσταλεί το μήνυμα
ii) ο ονομαστικός προσδιορισμός του παραλήπτη, μέσω ενός στοιχειώδους τηλεφωνικού ευρετηρίου
Τα παραπάνω αποτελόυν ιδιαίτερα σημαντικά γνωρίσματα, απαραίτητα κατά την γνώμη μου, που δίνουν μεγάλη ευχρηστία στην εφαρμογή.

Όλες οι παράμετροι του προγράμματος ορίζονται από τον χρήστη και αποθηκεύονται σε ένα αρχείο κειμένου με όνομα .climycosmos.ini Η μορφή του αρχείου είναι εξαιρετικά απλή και ξεκάθαρη:


[Default]
username: 69XXXXXXXX
password: XXXXXXXX

[account2]
username: 69XXXXXXXX
password: XXXXXXXX

[Phonebook]
contact1: 69XXXXXXXX
contact2: 69XXXXXXXX
contact3: 69XXXXXXXX

Μέσω αυτής της παραμετροποίησης καθίσταται δυνατή η αποστολή μυνημάτων από τη γραμμή εντολών με τις ελάχιστες δυνατές παραμέτρους, πχ:
climycosmos -t contact1 -m "Γεια σου". 
Ασφαλώς το σύνολο των παραμέτρων μπορούν να περάσουν και άμεσα από την γραμμή εντολών.

Το climycosmos διανέμεται δωρεάν, κάτω από την GPLv2 άδεια χρήσης.

Tuesday, March 25, 2008

Office decoration using origami

My interest in origami folding, found some usage as means of office decoration. Some nice examples are given in the photographs that follow.

Roses



Bird (flying parrot) over Chamaedorea


Birds hanging from the ceiling


This technique creates quite a good result and a pleasant environment. The existence of moving decorations that one can even play with, give joy. Also, the addition of colors in the working place is great!

Tuesday, March 11, 2008

Report compilation total time using GNU make


When working constantly on the same application, it is very useful to have an idea of the time it takes to compile. Having this information allows you to plan your work ahead, compare machines, developing environments, etc.

I have put together this Makefile, to print the total compilation time. It requires gmake and the UNIX shell utilities date, bc, echo and printf.


Makefile


# Time expressed as the seconds of the year. More portable than seconds since
# the epoch: `date +%s'
COMPILE_START_TIME := $(shell date +\(%j\*24\*60\*60+%H\*60\*60+%M\*60+%S\))
COMPILE_CURRENT_TIME = `date +\(%j\*24\*60\*60+%H\*60\*60+%M\*60+%S\)`


# Print the time difference between Tcurrent and Tstart. This function can be
# used after any target, as shown in the form: (see example)
# $(call print_timer,$(COMPILE_CURRENT_TIME),$(COMPILE_START_TIME))

# args: Tcurrent = $(1), Tstart = $(2)
define print_timer
@CT=$(1) && \
printf "Compilation total time: %.2d:%.2d (min:sec)\n" \
`echo "($$CT - $(2))/60" | bc` \
`echo "($$CT - $(2))%60" | bc`
endef


all: target

target:
@echo "Compiling for 2 seconds ..." && sleep 2 && echo Done
$(call print_timer,$(COMPILE_CURRENT_TIME),$(COMPILE_START_TIME))


Using this Makefile and running make, produces the following output:


Compiling for 2 seconds ...
Done
Compilation total time: 00:02 (min:sec)

Sunday, March 09, 2008

Folding paper for fun and office decoration

A few months ago I became interested on paper folding as a hobby. I searched the web for origami diagrams. Following the instructions I found, I created some of my own.

I showed them around and after motivation from a colleague, I used these paper foldings to decorate my office space. I hanged some of the from the ceiling using a fishing rod. I chose shapes of birds to hand and placed them on top of plants. The result was quite good and other people came and asked me to fold them some shapes to have on their desks.

An incomplete list of the shapes I have folded:

Pencil holder

Pencil holder origami

Candy dish
Candy dish origami

Swan

Swan origami

Rose
Rose origami

I folded flying parrots and a cranes to hang for decoration from the ceiling. Pictures will be included on a later post.

Saturday, February 16, 2008

xkcd webcomic

Το xkcd είναι ένα ενδιαφέρον webcomic. Ο συγγραφέας του το περιγράφει σαν "a webcomic of romance, sarcasm, math, and language". Η θεματολογία του είναι αρκετά προσφιλής για ανθρώπους που ασχολούνται με υπολογιστές (compiler complaint) και την τεχνολογία γενικότερα.