Άφιλτρο

Ο χρόνος είναι ο χειρότερος εχθρός

Προβλήματα με το Web Sharing στο Leopard

Θέλησα κάποια στιγμή να ενεργοποιήσω το Web Sharing - τη δυνατότητα  να έχω ένα εξυπητητή διαδικτύου (web server) - στο Mac OSX, προκειμένου να μπορέσουν γνωστός μου να πάρει κάποια αρχεία. Το Mac OSX για τις ανάγκες του Web Sharing, διαθέτει το πάγκοινο εξυπηρετητή Apache. Στο παρελθόν (Tigger) είχα χωρίς δυσκολία ενεργοποιήσει τον apache. Στο Leopard, όμως, παρόλο ότι από τα System Preferences είχα την ενημέρωση ότι το Web Sharing ενεργοποιήθηκε στην ουσία ο Apache δε μπορούσε να ξεκινήσει. Μια γρήγορη ματιά στα logs του λειτουργικά έδειξε τα ακόλουθες καταχωρήσεις:

com.apple.launchd[1] (org.apache.httpd[614]): Exited with exit code: 1
com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds
org.apache.httpd[616]: (2)No such file or directory: httpd: could not open error log file /private/var/log/apache2/error_log org.apache.httpd[616]: Unable to open logs

Το πρόβλημα αυτό λύθηκε με τη δημιουργία του καταλόγου που έλλειπε (με την εντολή sudo mkdir /private/var/log/apache2 στο Terminal). Πως κι έλλειπε ο κατάλογος αυτός; Η πιο πιθανή εξήγηση είναι ότι είχα πρόσφατα αλλάξει το σκληρό δίσκο του υπολογιστή μου και είχα εγκαταστήσει το λειτουργικό από αντίγραφο του Time Machine. Δυστυχώς το Time Machine δεν είχε φροντήσει να τηρεί αντίγραφο του καταλόγου που έλλειπε.

Το δεύτερο πρόβλημα που αντιμετώπισα ήταν ότι όταν προσπαθούσα να έχω πρόσβαση στο προσωπικό μου κατάλογο (πχ http://127.0.01/~babis/) o Apache που επέστρεφε απόκριση ότι δεν έχω διακίωμα πρόσβασης (HTTP Status Code 403 - Forbidden). Αυτό το πρόβλημα είχες τις ρίζες του ότι είχα εγκαταστήσει το Leopard με αναβάθμιση του Tigger. Ευτυχώς βρήκα τη λύση που περιγράφεται εδώ.

Έπειτα απ’ αυτά τα προβλήματα(κια) το Web Sharing έπαιζε μια χαρά.

Ιούνιος 20, 2008 Δημοσιεύθηκε από routis | Apple | , , , , | Δίχως Σχόλια

Εκπαιδευτικά Video

Ανακάλυψα μια σειρά από εκπαιδευτικά video για παιδία του δημοτικού (κι όχι μόνο) στο δικτυακό τόπο Πανελλήνιο Σχολικό Δίκτυο. Αξίζει να ρίξετε μια ματιά.

Μάιος 31, 2008 Δημοσιεύθηκε από routis | Uncategorized | | Δίχως Σχόλια

Μια συμβουλή για όσους ψάχνουν για μια πρώτη δουλειά στο χώρο της πληροφορικής

Ωραία λοιπόν, μόλις έχεις τελειώσει το πανεπιστήμιο (πιθανώς να έχεις ολοκληρώσει και το μεταπτυχιακό σου, που σου είπανε ότι “μετράει” στο δημόσιο) και βγαίνεις σεριάνι για να βρεις τη πρώτη σου δουλειά.

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

Εδώ, λοιπόν, κάνεις και το πιο συνηθισμένο λάθος: Έχεις τη εντύπωση ότι η πρώτη δουλειά που θα βρεις θα πρέπει να είναι κι αυτή που θα σε αποκαταστήσει. Θα σου παρέχει, δηλαδή, απολαβές αντάξιες του κόπου και των σπουδών σου. Για το λόγο αυτό, ζητάς ένα ποσό που νομίζεις ότι αντιπροσωπεύει την τρέχουσα αξία σου. Χωρίς προϋπηρεσία, όμως - δηλαδή χωρίς να έχεις αποδείξει την αξία σου στις πολλές φορές  αντίξοες συνθήκες της καθημερινής εργασίας - ζητάς από μια εταιρεία να σε προσλάβει με μόνο εχέγγυο τις πανεπιστημιακές περγαμηνές σου.

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

Αυτό που θα ήθελα, αν μου επιτρέψεις να σε συμβουλέψω είναι το εξής: Χάραξε μια προοπτική σε βάθος 1 με 2,5 χρόνια. Στο τέλος αυτού του διαστήματος αναλογήσου με τι θα ήθελες να ασχολήσαι και πόσα θα ήθελες να παίρνεις για την ενασχόλησή σου αυτή. Χρησιμοποίεισαι αυτό το διάστημα δουλεύοντας σε μια εταιρεία που ίσως δεν καλύπτει εξαρχής τις οικονομικές απαιτήσεις σου, αλλά σου προσφέρει τη δυνατότητα να δοκιμάσεις αν το αντικείμενο της εργασίας σου είναι αυτό που περίμενες και κυριώτερο θα είναι κι ένας στοίβος για να αποδείξεις την αξία σου. Μετά απ’ το διάστημα αυτό, κι εφόσον δεν είσαι ευχαριστημένος με τις απολαβές σου, κάνε την κίνησή σου είτε στην εταιρεία που δουλεύεις είτε σε μια νέα. Να ‘σαι σίγουρος πως η αξιοσύνη, η εξυπνάδα και η εργατικότητά σου  θα ανταμειφθούν, μόλις έμπρακτα αποδειχθούν.

Μάιος 28, 2008 Δημοσιεύθηκε από routis | Uncategorized | | Δίχως Σχόλια

O Gabriel García Márquez στα στερνά του

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

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

Θα έδινα αξία στα πράγματα, όχι γι’αυτό που αξίζουν, αλλά γι’αυτό που σημαίνουν.

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

Αν ο Θεός μου δώριζε ένα κομμάτι ζωή, θα ντυνόμουν λιτά, θα ξάπλωνα μπρούμυτα στον ήλιο, αφήνοντας ακάλυπτο όχι μόνο το σώμα αλλά και την ψυχή μου.

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

 Θεέ μου, αν είχα ένα κομμάτι ζωή… Δεν θα άφηνα να περάσει ούτε μία μέρα χωρίς να πω στους ανθρώπους ότι αγαπώ, ότι τους αγαπώ. Θα έκανα κάθε άνδρα και γυναίκα να πιστέψουν ότι είναι οι αγαπητοί μου και θα ζούσα ερωτευμένος με τον έρωτα.

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

 Έμαθα πως ο άνθρωπος δικαιούται να κοιτά τον άλλον από ψηλά μόνο όταν πρέπει να τον βοηθήσει να σηκωθεί. Είναι τόσα πολλά τα πράγματα που μπόρεσα να μάθω από σας, αλλά δεν θα χρησιμεύσουν αλήθεια πολύ, γιατί όταν θα με κρατούν κλεισμένο μέσα σ’αυτή τη βαλίτσα, δυστυχώς θα πεθαίνω.

Να λες πάντα αυτό που νιώθεις και να κάνεις πάντα αυτό που σκέφτεσαι. Αν ήξερα ότι σήμερα θα ήταν η τελευταία φορά που θα σ’έβλεπα να κοιμάσαι, θα σ’αγκάλιαζα σφιχτά και θα προσευχόμουν στον Κύριο για να μπορέσω να γίνω ο φύλακας της ψυχής σου. Αν ήξερα ότι αυτή θα ήταν η τελευταία φορά που θα σ’έβλεπα να βγαίνεις απ’ την πόρτα, θα σ’αγκάλιαζα και θα σού ‘δινα ένα φιλί και θα σε φώναζα ξανά για να σου δώσω κι άλλα. Αν ήξερα ότι αυτή θα ήταν η τελευταία φορά που θα άκουγα τη φωνή σου, θα ηχογραφούσα κάθε σου λέξη για να μπορώ να τις ακούω ξανά και ξανά. Αν ήξερα ότι αυτές θα ήταν οι τελευταίες στιγμές που σ’έβλεπα, θα έλεγα “σ’αγαπώ” και δεν θα υπέθετα, ανόητα, ότι το ξέρεις ήδη.

Υπάρχει πάντα ένα αύριο και η ζωή μας δίνει κι άλλες ευκαιρίες για να κάνουμε τα πράγματα όπως πρέπει, αλλά σε περίπτωση που κάνω λάθος και μας μένει μόνο το σήμερα, θα ΄θελα να σου πω πόσο σ’αγαπώ κι ότι ποτέ δεν θα σε ξεχάσω.

Το αύριο δεν το έχει εξασφαλίσει κανείς, είτε νέος είτε γέρος. Σήμερα μπορεί να είναι η τελευταία φορά που βλέπεις τους ανθρώπους που αγαπάς. Γι’ αυτό μην περιμένεις άλλο, κάν’το σήμερα, γιατί αν το αύριο δεν έρθει ποτέ, θα μετανιώσεις σίγουρα για τη μέρα που δεν βρήκες χρόνο για ένα χαμόγελο, μια αγκαλιά, ένα φιλί και ήσουν πολύ απασχολημένος για να κάνεις πράξη μια τελευταία τους επιθυμία. Κράτα αυτούς που αγαπάς κοντά σου, πες τους ψιθυριστά πόσο πολύ τους χρειάζεσαι, αγάπα τους και φέρσου τους καλά, βρες χρόνο για να τους πεις “συγνώμη”, “συγχώρεσέ με”, “σε παρακαλώ”, “ευχαριστώ” κι όλα τα λόγια αγάπης που ξέρεις. Κανείς δεν θα σε θυμάται για τις κρυφές σου σκέψεις. Ζήτα απ’ τον Κύριο τη δύναμη και τη σοφία για να τις εκφράσεις. Δείξε στους φίλους σου τι σημαίνουν για σένα.

Μάιος 24, 2008 Δημοσιεύθηκε από routis | Uncategorized | | Ένα Σχόλιο

Unicode Rewriter

Έχει τύχει πολλές φορές, που έχω κατεβάσει μουσική mp3 από το διαδίκτυο, να βρεθώ αντιμέτωπος με το πρόβλημα ότι o δημιουργός του mp3, κατά πάσα πιθανότητα ακούσια, έχει χρησιμοποιήσει την κωδικοποίηση των Windows (CP1253) για τη δημιουργία των mp3 tags.
Αυτό για μένα είναι ενοχλητικό πρόβλημα, μιας και δε χρησιμοποιώ Windows, αλλά Mac OSX. Πρόχειρα, αντιμετώπιζα αυτό το πρόβλημα εισάγοντας τα mp3 στη μουσική βιβλιοθήκη του iTunes, κι από εκεί διόρθωνα, τα tags ένα ένα. Αν και πρόχειρη η λύση αυτή είναι αποδοτική, αν ο αριθμός των mp3 κομματιών είναι μικρός. Σ’ αντίθετη περίπτωση, η πρακτική αυτή είναι, το λιγότερο, εκνευριστική.
Ευτυχώς, υπάρχει ένα πρόγραμμα Λ.Α.Κ. (Λογισμικό Ανοιχτού Κώδικα - Open Source), στο οποίο του δίνεις ένα κατάλογο και την κωδικοποίηση των mp3 που είναι μέσα σ’ αυτόν (συνηθέστατα Windows CP1253), και εκείνο μετατρέπει τα mp3 tag από την εν λόγω κωδικοποίηση σε UTF-8, η οποία υποστηρίζει όλες τις γλώσσες και αναγνωρίζεται απ’ όλα τα λειτουργικά συστήματα.
Το πρόγραμμα ονομάζεται Unicode Rewriter, είναι κατασκευασμένο σε Java (οπότε τρέχει παντού) και μπορείτε να το βρείτε εδώ.

Μάιος 24, 2008 Δημοσιεύθηκε από routis | Apple, Java | , , | Δίχως Σχόλια

Συνοπτικό εγχειρίδιο για Spring Framework Context

Το dzone διαθέτει ελεύθερα ένα συνοπτικό εγχειρίδιο αναφοράς για τo Spring Framework Context στην έκδοση 2.5.x. Βρήκα το εγχειρίδιο πολύ βολικό, γιατί παρουσιάζει με σύντομο τρόπο τα βασικά schemas (spring-beans, spring-aop κ.λ.π) και τη συνήθη χρήση αυτών.

Αν δεν κάνω λάθος, παρότι το εγχειρίδιο διατείθεται ελεύθερα, απαιτείται εγγραφή στο dzone

Μάιος 24, 2008 Δημοσιεύθηκε από routis | Java | | Δίχως Σχόλια

Αναβάθμιση δίσκου σε MacBook

Πριν από λίγο καιρό είχα γράψει πόσο είχα εντυπωσιαστεί από την αναβάθμιση του λειτουργικού συστήματος του MacBook μου, από το Mac OSX Tiger στο Leopard. To Leopard, λοιπόν, με εντυπωσίασε για το πόσο εύκολο αναβάθμισα το σκληρό δίσκο του φορητού.
Κατ’ αρχήν αγόρασα ένα αρκετά μεγαλύτερο δίσκο (320GB αντί των 70GB που είχε ο MacBook). Πριν βγάλω το παλιό δίσκο είχα φροντίσει το time-machine να πάρει ένα πρόσφατο back-up. Μετά ακολούθησα τις οδηγίες που βρήκα στο iFixit, και έβγαλα τον παλιό δίσκο και εγκατέστησα το νέο. Ύστετα, έβαλα το DVD του Leopard και δημιούργησα ένα νέο partition στο νέο δίσκο κι επανεκκίνησα το Mac OSX από το DVD ξανά, έχοντας συνδέσει αυτή τη φορά και τον εξωτερικό δίσκο όπου βρισκόταν τα αντίγραφα του time-machine. Επέλεξα restore από τον εξωτερικό δίσκο στον νέο και 25 λεπτά αργότερα, έγραφα αυτό το post από το Mac.

Θεωρώ ότι ήταν από τις πιο εύκολες διαδικασίες.
Εντάξει, για να είμαι ειλικρινής είχα και κάποια προβληματάκια (τα οποία όμως οφείλονταν στην ανοργανωσιά μου κι όχι στο Leopard):

  • Δεν είχα κατσαβίδι Torx Tx8, αλλά ευτυχώς δανείστηκα (Thanks, Αντώνη).
  • Δεν θυμόμουν ότι για να μπουτάρεις από το DVD πρέπει κατά τη διάρκεια της επανεκκίνησης να είναι πατημένο το Cmd+D (Thanks, Αντώνη).

Μάιος 20, 2008 Δημοσιεύθηκε από routis | Apple | , , , , | Δίχως Σχόλια

Χειρισμός transactions εμπλέκοντας EJB, Hibernate και Spring Framework

Είναι γνωστό ότι στην περίπτωση που κάποιος υλοποιεί EJB με τη βοήθεια του Spring Framework, θα πρέπει να επιλέξει αν το χειρισμό των transactions θα τον πραγματοποιούν τα EJB (container managed transactions ή user managed transactions), είτε το Spring Framework. Οι δυο επιλογές δεν είναι ισοδύναμες, μιας και μόνο χρησιμοποιόντας το Spring Framework μπορείς να δοκιμάσεις τον κώδικά σου κι εκτός από JEE αpplication server.
Αυτά είναι λίγο πολύ γνωστά, σε όσους ασχολούνται με το Spring Framework. Αυτό όμως που δεν είναι γνωστό είναι πως γίνεται η διαχείριση των transactions στην περίπτωση όπου έχουμε EJB όπου χειρίζονται Spring POJO’s τα οποία με τη σειρά τους χρησιμοποιούν το Hibernate.
Η σπάνια αυτή περίπτωση, δυστυχώς δεν αναφέρεται η βιβλιογραφία του Spring Framework. Ευτυχώς όμως, υπάρχει μια εκτενής περιγραφή του πως πρέπει να ρυθμιστεί το Spring Context εδώ.

Μάιος 17, 2008 Δημοσιεύθηκε από routis | Java | , , , , , , , | Δίχως Σχόλια

Βιβλίο για Transactions με τη Java

Ένα από τα καθημερινά προβλήματα που έχει να αντιμετωπίσει ένας προγραμματιστής της Java είναι ο χειρισμός των transactions είτε αυτά είναι απλά, αφορούν δηλαδή ένα transactional resource (συνηθέστερα μια σχεσιακή βάση δεδομένων), είτε είναι κατανεμημένα, εμπλέκουν δηλαδή περισσότερα του ενός transactional resources (λ.χ. περισσότερες της μιας σχεσιακές βάσης δεδομένων ή/και συστήματα ουρών).
Σε ότι αφορά των χειρισμό των transactions η Java και πολύ περισσότερο η JEE, κατά την ταπεινή μου γνώμη προσφέρει ένα πλουσιότατο API, το οποίο όμως για να χρησιμοποιηθεί σωστά πρέπει να υπάρχει από πλευράς προγραμματιστή ένα ικανό θεωρητικό υπόβαθρο - περί transactions - και μια κατάλληλη εισαγωγή στα API της Java.
Στους προγραμματιστές της Intracom IT Services, όπου δουλεύω, συνιστώ ένα βιβλίο, σχετικό με τα transactions, που έχει δημοσιεύσει εδώ και καιρό ο δικτυακός τόπος InfoQ. Το βιβλίο είναι κατά τη γνώμη το πιο αξιόλογο στο θέμα του χειρισμού των transactions με τη Java, προσφέροντας παράλληλα κι ένα εισαγωγικό υπόβαθρο αναφορικά με τα transactions. Επιπλέον, το βιβλίο αναφέρεται διεξοδικά τόσο στα EJB transactions όσο και στο χειρισμό των transactions με χρήση του Spring Framework.

Ανακαλύψτε το.

Μάιος 17, 2008 Δημοσιεύθηκε από routis | Java | , , , , , , | Δίχως Σχόλια

Το Spring RichClient φεύγει, το Spring Desktop έρχεται

Spring - java/j2ee Application Framework Παρότι η αναγνώριση του Spring framework είναι δεδομένη στο κόσμο της server-side Java, το πολλά υποσχόμενο project Spring RichClient, που αφορούσε στην ανάπτυξη client-side εφαρμογών, δεν κατάφερε ποτέ να γίνει δημοφιλές. Το πρόβλημα, κατά τη γνώμη, ήταν ο πολύ μεγάλος χρόνος ανάπτυξης μιας πρώτης έκδοσης (αν και υπήρχε για καιρό μια σταθερή βάση κώδικα), αλλά και πιο γενικά η απαξίωση της Java για την ανάπτυξη RIA ή client-side εφαρμογών. Πρόσφατα, οι υπεύθυνοι του project ανακοίνωσαν ότι σκοπεύουν να αναπτύξουν ένα νέο project με την ονομασία Spring Desktop, του οποίου ο κώδικας δε θα βασίζεται στο Spring RichClient. Αναμένεται μια πρώτη έκδοση του project να είναι έτοιμη τον Οκτώβριο του ‘08. Στον ιστοτόπο του project γίνεται η εξής αναφορά:

The current codebase of Spring Richclient was started a few years ago. Although the code is quite stable, we realise that it’s not state-of-the-art anymore. Several technologies and ideas have emerged that should be embraced in the Spring Richclient code (eg JSR Application Framework) and the need for refactoring and revising of the codebase has grown. We opted to start a new project called Spring Desktop that allows us to do this without having our hands tied to the current codebase. This does not mean that Spring Richclient will be abandoned. The current project will be maintained and fixes will be deployed as needed. We’re aiming to release the first version of Spring Desktop in October as part of the Spring release train.

Μάιος 16, 2008 Δημοσιεύθηκε από routis | Προγραμματισμός | | Δίχως Σχόλια