Where do your visitors come from?

My visitors a few minutes ago.
Σεραφείμ blogged about this last month.
You can get nice visitor stats like above through the service provided by GVisit.com. Once you register, you get a unique URL that links to a google map that shows where your visitors comes from.
A tale of Feta cheese

In the European Union, Feta cheese comes only from Greece. That was the ruling from the European Court of Justice.
Feta has a Protected Designation of Origin.


Still, outside the European Union, cheese-like products can still be called feta.
Learn more about feta at Wikipedia.
Greek lessons

This session was part of the bazaar events and I offered to teach basic Greek. I was a bit late to get there and as soon as I arrived, I grabbed some biscuits and waited at my teaching area. Soon afterwards, participants started to gather and we went on to the Greek Alphabet.

I started with writing the Greek alphabet. First the consonants and then the vowels. I was particularly surprised that it was easy to pronounce the letters. For every one of the consonants there was a person that could pronounce it perfectly. Vowels were easy as well, as several letters fold to the same sound (Eee, and Ooo).
Β Γ Δ Ζ
Θ Κ Λ Μ
Ν Ξ Π
Ρ Σ Τ
Φ Χ
Ψ
I was worried that I did not have handy Susan's matrix. However, it was easy to pronounce anyway.
The vowels are
Α Ε Η Ι Υ Ο Ω

Here it shows some sample Greek words. To make words is simply an issue of pairing up consonants and vowels. As soon as I finished writing a word, everyone could pronounce it without assistance. The opposite, write the word I pronounce worked as well.
I noticed that focusing on Greek capital letters helps to get people motivated to learn Greek. In addition, avoiding complex words in the beginning is good to get the confidence high.
Is Greek an easy language to learn, or were the students really good?
The return
I just arrived back home. I was flying with Ali.
The trip was quite tiring but we managed to pull through.
Rustam was really helpfull, he picked us up on time at midnight (there was an city electricity cut) and we reached the airport swiftly.
There, we waited a bit at the queue to check in. While waiting, a certain "semi-official" person came towards me and asked for my passport. For those who do not know, this is a leading question to give me your money.
I remembered Marek's story and quickly employed the response style Who are you to ask for my passport?. He lost a bit of steam and Ali took over talking in Persian/Tajik. He said we are both Iranians and that guy lost all interest and left.
We got front row seats, overlooking the grey wall of the aircraft, just before the pilot cockpit. The window seat of the row was allocated to a Tajik cardio-surgeon (perhaps a famous one?) who was going to Moscow for a conference. He was nice and talkative.
After four hours on the air, we reached Domodedovo and proceeded to the Transit Area, the dreadful place of eternal wait. You need to wait there for several hours before actually checking in. The wait depends on the time of your connecting flight. Our connecting flight was in 10 hours.
For the uninitiated, I include some shots

General view of Transit Area

Detail of the tiles. (Tile obsession? No, just read on).

View of the refreshment machine and precision scales.

View of shattered window (was still like that on the incoming leg). It's double-glazed and the outer layer is damaged but not broken, so it does not look like an emergency to fix.

The security officer. Oh, "no photos in Transit Area".
As seasoned Domodedovo Transit Passengers, Ali and I wrote down some tips on what to do to kill time while waiting. Ali did most of the work and also provided the cheat list.
34 things to do at Domodedovo Airport Transit Area while waiting
- Open a packet of baby wipes and start cleaning a difficult smudge on the floor; finish all tissues.
- Go to bathroom, change outfit and return. Ask where the transit area is.
- Make houses of cards using Demodedovo Transit information booklets. Compete with fellow passengers for tallest building. Organise competition between passengers and officers.
- Switch on laptop, when noticed, smile cunningly and rub palms together. Exclaim “free access!”.
- Take off shoes and belt while in Transit Area. When asked, reply you want to be ready for body search.
- Ask repeatedly where your checked-in luggage is.
- Enter staring contest with security officer. Hi-five fellow passengers when you win.
- Measure dimensions of shattered window; make estimate of cost to replace and start cookie jar fund.
- Sneeze near shattered window; start crying and apologise for shattering it.
- Weigh yourself at precision machine in the Transit Area. Make loud remarks that it does not report the correct weight.
- Count the number of steps at the staircase leading to transit area (15+15).
- Count the number of steps on elevator leading to transit area (62, 26 showing at any time).
- Count the number of dark blue tiles at the Transit Area (limit to those legally accessible by passengers: 60).
- Use every restroom in area.
- Annoy officers at Transit Area by walking up and down a la goose walk.
- Try to learn Russian by reading aloud the signs.
- Learn to tell the time in Russian (hint: ask security officer every ten minutes)
- Take a photograph of the shattered window (normally not permitted, mmm not encouraged).
- Persuade security officer to take photo of you at the shattered window (normally not permitted).
- Play hop-scotch.
- Close your eyes and walk in the Transit Area; avoid obstacles.
- Ask for help to fill in declaration forms (not required for transit passengers).
- Time the cleaning ladies with stopwatch. Congratulate at end in Russian.
- Examine suspiciously the fruit juice dispenser.
- Use foreign coins (not rubbles) at fruit dispenser. Complain if cans are not dispensed.
- Walk across Transit Area making sure you do not step on white blue tiles.
- Time how long the automatic escalator requires to pause; complain if anyone uses the escalator, show the direction to the stairs.
- Ask “Do you speak English?” to security officer. Observe expression when he says “No”.
- Establish the purpose of strange wire that leads to smoking station.
- Walk behind terminal desks; press random buttons when no one is watching.
- Find blind spots behind the pillars; so that the security officers or administrators cannot see you. Hide all waiting passengers in bling spots.
- Observe closely shattered window. Drag finger on it as if deciphering old script. Exclaim periodically “Aha!”.
- Locate nearer emergency exit. Time yourself how long it takes you to reach it.
- Sit at a check-in desk. When confronted, complain that the Internet kiosk “ate” your ten dollar bill. Demand full refund.
Thanks to the tips, time passed swiftly and we find ourselves at Gate 7, ready to embark the plane. Alas, the security door gets stuck and cannot open. Picture here the attempt for 4 officers trying to break a rather high-security door. After 15 minutes and over 4 minutes of video footage
, they managed to open it and we embarked the plane.
Upon touchdown at London, there is an announcement that Mr Ali and Mr Simos identify themselves to the crew. This obviously spooks the fellow passengers. After a few minutes, we find out that our checked-in luggage has not been sent with this airplane. Great, 10 hours waiting and the luggage are sent in wrong plane.
All in all, FOSSTJ was an excellent experience that I'll never forget.
Κατάσταση υγείας του σκληρού σας δίσκου
Ακούω πολλές φορές καταστάσεις που ο σκληρός δίσκος ενός υπολογιστή τα φτύνει με τον πιο άκομψο τρόπο.
Υπάρχει κάτι που μπορεί να γίνει για την πρόγνωση ενός τέτοιου κακού;
Όλοι οι νέοι σκληροί δίσκοι (από τα μέσα του '90) υποστηρίζουν το πρότυπο S.M.A.R.T. που μπορεί να ενημερώνει το λειτουργικό σύστημα για την κατάσταση υγείας. Συγκεκριμένα, μπορεί να εμφανίσει πληροφορίες όπως θερμοκρασία σκληρού δίσκου και αριθμό σφαλμάτων που έχουν συμβεί και διορθωθεί (υπάρχει δυνατότητα για αυτόματη διόρθωση από τον ίδιο το σκληρό δίσκο). Ακόμα υπάρχει η δυνατότητα για τον αυτο-έλεγχο του σκληρού δίσκο (short και long) που καλό είναι να κάνει κάποιος κάθε μερικούς μήνες.
Περισσότερες οδηγίες μπορεί να βρει κάποιος στο σχετικό άρθρο του LinuxJournal. Για κάποιον που βιάζεται, είναι πιθανό να υπάρχει το πρόγραμμα ήδη εγκατεστημένο στο σύστημά σας. Δοκιμάστε smartctl ως διαχειριστής.
Ένα ενδιαφέρον βοήθημα (tip) για το πρότυπο S.M.A.R.T. είναι ότι μπορεί κάποιος να δει πόσο καιρό ακριβώς έχει λειτουργήσει ο σκληρός δίσκος ενός υπολογιστή (και κατ' επέκταση πόσο έχει δουλέψει κάποιος έναν υπολογιστή). Είναι αρκετά χρήσιμο όταν αγοράζετε σκληρούς δίσκους ή υπολογιστές από δεύτερο χέρι
.
Πόσο παλιός είναι ο σκληρός σας δίσκος;
Ντοκιμαντέρ, έλληνες πάνε στην Ρωσία για εύρεση νύφης
Αυτή τη στιγμή δείχνει ένα ντοκιμαντέρ στην τηλεόραση. Μια ομάδα ελλήνων που είναι εργένηδες από κάποιο χωριό (Ζαχαροχώρι;) στην Ελλάδα, βρίσκεται κοντά στη Μόσχα. Έχουν οργανώσει το ταξίδι με τον δήμαρχο για να βρούνε νύφες.
Ο Κώστας έχει μεγάλη επιτυχία, είναι μαζί με την Γκάλια. Θέλει να την καλέσει τώρα στην Ελλάδα.
"Τί θέλουμε εδώ παιδί που δεν ξέρουμε την γλώσσα;" λέει ο Καβάφης.
Ο Ευθύμης, ο ηλεκτρολόγος, μαζεύει ηλ. διευθύνσεις και παίρνει φωτογραφίες. Θέλει να διαλεει όταν γυρίσει πίσω. Είναι δύσκολος.
Ο Επαμηνώνδας έχει καινούριο όνομα, Νόντ.
Τελικά η Γκάλια και Νάντια έρχονται στην Ελλάδα.
Ο Καβάφης και η Νάντια (δουλεύει σε τράπεζα) θα συναντηθούν στην Ελλάδα σε ένα μήνα.
Τώρα κάνουν βαρκάδα σε εκείνο το ποτάμι της Μόσχας.
"Γαμ' την πούτ. γαμ." λέει ο δήμαρχος και κλείνει η εκπομπή.
Τι εκτυπώνει το πρόγραμμα; [Λύση]
#include <stdio.h> int calculate(void); int calculate(void) int p[9]; for ( i = 0; i <= 3; i++ ) int main(int argc, char** argv) calculate(); return 0;
{
int i;
p[i*3+2]+=16;
}
{
printf("Hello, World!\n");
}
Μεταγλωττίζουμε το πρόγραμμα της προηγούμενης εγγραφής και εκτελούμε (πλατφόρμα Linux/i386, gcc 4.0.x).
simos@home /tmp
$ gcc calculate.c -o calculatesimos@home /tmp
$ ./calculatesimos@home /tmp
$ _
(Αν η προτροπή του φλοιού (shell) φαίνεται παράξενη, χρησιμοποιώ tcsh με tcshrc).
Όπως βλέπουμε, το πρόγραμμα calculate δεν εκτυπώνει τίποτα, ενώ στον κώδικα υπάρχει αναφορά να εκτυπώσει Hello, World!. Στον κώδικα δεν υπάρχει κάποια εντολή που να παρακάμπτει την εκτύπωση του μηνύματος. Τι συμβαίνει; Μπορεί η κλήση της αθώας συνάρτησης calculate() να επηρεάσει την ροή του προγράμματος;
Ας δούμε τι γίνεται στη συνάρτηση calculate(). Όταν η μεταβλητή i παίρνει την τιμή 3, γίνεται τροποποίηση του πεδίου p[11] του πίνακα p. Ο πίνακας p διαθέτει 9 θέσεις (p[0] μέχρι p[8]), οπότε σε τι πράγμα τροποποιήσαμε την τιμή;
Η C/C++ είναι μια γλώσσα untyped, που σημαίνει μεταξύ άλλων ότι είναι καθήκον και υποχρέωση του προγραμματιστή να προσέχει να μην γράφει σε θέσεις μνήμης που δεν έχει δεσμεύσει.
Οπότε, στο παράδειγμά μας πού γράψαμε στην μνήμη;
Με την εντολή objdump -d calculate μπορούμε να δούμε το πρόγραμμα σε μορφή γλώσσας μηχανής.
Ακολουθεί απόσπασμα από τον κώδικα της συνάρτησης main().
...
80483c4: b8 00 00 00 00 mov $0x0,%eax
80483c9: 83 c0 0f add $0xf,%eax
80483cc: 83 c0 0f add $0xf,%eax
80483cf: c1 e8 04 shr $0x4,%eax
80483d2: c1 e0 04 shl $0x4,%eax
80483d5: 29 c4 sub %eax,%esp
80483d7: e8 a0 ff ff ff call 804837c <calculate>
80483dc: 83 ec 0c sub $0xc,%esp
80483df: 68 98 84 04 08 push $0x8048498
80483e4: e8 bf fe ff ff call 80482a8 <puts @plt>
80483e9: 83 c4 10 add $0x10,%esp
80483ec: b8 00 00 00 00 mov $0x0,%eax
80483f1: c9 leave
80483f2: c3 ret
80483f3: 90 nop
-- τέλος της main() --
Προσέξτε την κλήση της συνάρτησης calculate() [θέση 80483d7]. Στον δομημένο προγραμματισμό έχουμε κλήσεις συναρτήσεων/υπορουτινών που μεταφέρουν την ροή εκτέλεσης σε ένα άλλο κομμάτι προγράμματος, και μετά επιστρέφουν για να προχωρήσουν στην επόμενη εντολή. Πως θυμάται το πρόγραμμα σε εκτέλεση ποια είναι η επόμενη εντολή (στην περίπτωση μας, η εντολή στην διεύθυνση 80483dc);
Την θυμάται επειδή την τοποθετεί στην στοίβα, σε μια περιοχή μνήμης που είναι εύκολα προσβάσιμη από την καλούμενη συνάρτηση (calculate() στην περίπτωσή μας). Στο παράδειγμα
int calculate(void)
{
int i;
int p[9];
το p[11] δείχνει στην διεύθυνση μνήμης που περιέχει την επόμενη εντολή που θα εκτελέσει ο επεξεργαστής μόλις ολοκληρώσει την εκτέλεση της συνάρτησης calculate(). Ένα ενδιαφέρον σημείο είναι ότι το p[9] είναι το ίδιο με την μεταβλητή i! Δηλαδή αν τροποποιήσουμε κατά λάθος το p[9], θα αλλάξει και το i, διότι δείχνουν στην ίδια περιοχή της μνήμης.
Στο πρόγραμμά μας προσθέτουμε 16 στο p[11]. Γιατί 16; Η σωστή τιμή του p[11] είναι 0x80483dc, εμείς όμως θέλουμε να παρακάμψουμε την εκτύπωση του μηνύματος (printf()). Θέλουμε δηλαδή να πάμε στην διεύθυνση 0x80483ec (εντολή return 0;).
0x80483ec - 0x80483dc = 0x10 ή 16 στο δεκαδικό σύστημα, οπότε πρέπει να προσθέσουμε 16 στην διεύθυνση επιστροφής.





