Αναρτήσεις

Εμφάνιση αναρτήσεων με την ετικέτα programming

Subversion 1.5.x και mod_dav_svn.so σε Apache 2.2.x

Σήμερα πήρα χαμπάρι ότι δεν έπαιζε το mod_dav_svn για repositories εκδόσεων 1.5. Αποφάσισα λοιπόν να το αναβαθμίσω καθότι ήταν ακόμα στην έκδοση 1.4.6. Έλα όμως που το Apache δεν ξεκινούσε με το νέο mod_dav_svn. Επειδή έχω αντιμετωπίσει παρόμοιες περιπτώσεις στο παρελθόν, ήξερα ότι έπρεπε να κοιτάξω τις DLL. Στην έκδοση 1.5.2 όμως (την οποία προσπαθούσα να εγκαταστήσω) παρατήρησα (αλί και τρισαλί) ότι οι DLL είχαν πολλαπλασιαστεί σε σχέση με την 1.4.6 αλλά και σε σχέση με την 1.5.0 (που είχα στα χέρια μου). Το περίεργο ήταν που όλες οι DLL υπήρχαν στο path και ήταν ενημερωμένες μια και τις πήρα από το zip της έκδοσης 1.5.2. Ο Apache όμως επέμενε να μη ξεκινάει δίνοντας τη παρακάτω καταχώριση στο event log των Windows: The Apache service named reported the following error: >>> httpd.exe: Syntax error on line 132 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so into...

Trac 0.11 - Subversion 1.5.0

Το γνωστό issue tracker Trac που περιλαμβάνει Wiki και repository browser έφτασε αισίως στην έκδοση 0.11. Αυτή η έκδοση περιλαμβάνει αρκετές βελτιώσεις όπως, π.χ. custom workflows. Έχω ήδη μαζέψει κάποιες πληροφορίες από δοκιμές που έκανα στήνοντάς το μαζί με Subversion κάτω από Apache 2.2 με https (για ασφαλή πρόσβαση στον server σας από οπουδήποτε στο internet). Αν σας ενδιαφέρει, να επισπεύσω το post με όλες τις λεπτομέρειες βήμα-προς-βήμα για το στήσιμό τους (ανανεωμένο για το 0.11). Όσο για το Subversion , αυτό έφτασε (πάλι αισίως) στην έκδοση 1.5.0. Ακόμα δεν υπάρχουν Windows binaries :( και δεν μπορώ να το δοκιμάσω με το Trac (αν και το TortoiseSVN έχει βγάλει έκδοση για το 1.5.0).

Requirements

Ενδιαφέρον post πάνω στο θέμα των software requirements από τον Eric Sink... και πάνω απ' όλα... απλό και συνοπτικό. Το θέμα είναι μεγάλο και σηκώνει αρκετή συζήτηση, αλλά υπάρχουν και τα βασικά τα οποία καλύπτει όμορφα το προαναφερθέν άρθρο.

Book Review: "Facts and Fallacies of Software Engineering"

Εικόνα
Πριν από μερικές μέρες τελείωσα το “Facts and Fallacies of Software Engineering” του Robert Glass . Μπορώ να πω πως είναι ένα αξιόλογο βιβλίο που κάθε προγραμματιστής πρέπει να διαβάσει. Άλλωστε είναι αρκετά μικρό (γι' αυτό ακόμα και εγώ κατάφερα να το τελειώσω). Το θέμα του είναι η κατάρριψη μύθων, ή μάλλον η διατύπωση αληθειών (διατυπώνοντας 55 τέτοιες αλήθειες), όσον αφορά την ανάπτυξη λογισμικού, υποστηριζόμενος από μελέτες. Οι βασικοί τομείς που διαχωρίζει αυτές τις αλήθειες είναι τρεις: η διαχείριση (management), ο κύκλος ζωής (life cycle), και η ποιότητα (quality). Η «διαχείριση» αφορά τη διαχείριση της ανάπτυξης του λογισμικού και περιλαμβάνει αλήθειες όπως “Fact 2: The best programmers are up to 28 times better than the worst programmers.” Ο «κύκλος ζωής» αφορά τις φάσεις της ζωής του λογισμικού και περιλαμβάνει αλήθειες όπως “Fact 41: Maintenance typically consumes 40 to 80 percent of software costs. It is probably the most important life cycle phase of software.” Η «ποι...

Apache, Subversion, Trac, MoinMoin

Αποφάσισα πρόσφατα να δοκιμάσω προγράμματα προκειμένου να "χτίσω" ένα περιβάλλον εργαλείων ανάπτυξης (πέρα από IDE). Αυτό που με ενδιέφερε βασικά ήταν να βάλω Subversion (για source control ), ένα σύστημα bug/issue tracking, και ένα σύστημα για documentation, σημειώσεις κλπ. Ένα κριτήριο ήταν ότι έπρεπε αρχικά όλα να τρέχουν σε Windows και να μπορούν εύκολα να αντιγραφτούν-μετατραπούν για να τρέξουν και σε Linux. Το άλλο βασικό κριτήριο ήταν ότι έπρεπε να είναι όλα FOSS . Κατέληξα (προς το παρόν) στον παρακάτω συνδυασμό: Apache (2.x) Subversion (WebDAV στο Apache με το mod_dav_svn) Trac (κάτω από τον Apache) MoinMoin (για γενικό, non-project specific, Wiki) Το μόνο παραπάνω που χρειάζεται σε αυτό το combo είναι η Python. Subversion: Όπως ανέφερα παραπάνω, αρχικά με ενδιέφερε το Subversion. Προσπαθόντας να το εγκαταστήσω βέβαια, βρήκα ότι μπορούσα να χρησιμοποιήσω Apache αντί για τον δικό του server/daemon. Δοκίμασα λοιπόν το Apache, το οποίο βρήκα πολύ εύκολο να εγκαταστ...

Visual C++ & fstream (STL/iostream)

Χρειάστηκε για πρώτη φορά να ασχοληθώ με C++ streams (STL, όχι iostream) για να κάνω αλλαγές σε κώδικα και τα έχασα... η βλαμένη Visual C++ (ναι, μιλάμε για Visual Studio 6.0) έχει πρόβλημα με το code completion (ή όπως το λένε) και ενώ χρησιμοποιείς κλάσεις της STL, το code completion δίνει τα χαρακτηριστικά των κλάσεων της iostream. Τέλεια! Έχεις ένα ofstream και σου δίνει την εντύπωση ότι μπορείς να κάνεις open με protection flag. Χα! Κούνια που σε κούναγε. Το μεγαλύτερο πρόβλημά μου ήταν ότι δεν είχα ιδέα ότι υπάρχουν δύο βιβλιοθήκες για streams (δηλαδή υπήρχαν, γιατί όλες οι C++ βιβλιοθήκες που είναι έστω και λίγο πιο καινούριες από τη VCPP6 δεν έχουν τα παλιά iostream ούτε για λόγους συμβατότητας) . Φυσικά, δεν μπορείς να το καταλάβεις αυτό από το MSDN λόγω του κρυπτογραφικού συστήματος που χρησιμοποιούν (το MSDN χρησιμεύει μόνο για να θυμηθείς κάτι που ξέρεις ή να βρεις κάποια λύση σε κάποιο από τα πολλά γνωστά προβλήματα που καλύπτει η knowledge base της Microsoft). Γι' αυτ...

Και τα JSR να πέφτουν βροχή...

Παρακολουθώ τελευταία να γίνονται όλο προτάσεις για "βελτιώσεις" στη Java και "με πιάνει πονοκέφαλος" όπως λέει και ένας καλός φίλος. Τι closures από τη μια, τι properties από την άλλη... και δεν καταλαβαίνω τι θα τα κάνουν όλα αυτά. Δεν καταλαβαίνω γιατί υπάρχει αυτή η τάση για νεωτερισμούς. Φαίνεται σαν αντανακλαστικό της "επίθεσης" από το .NET με ανάμικτα συναισθήματα ανησυχίας μήπως το .NET "νικήσει" (λες και είμαστε σε αγώνα ποδοσφαίρου) και ανασφάλειας μήπως η Java δεν είναι πια η πρωτοπόρα γλώσσα που ήταν κάποτε ή δεν καλύπτει τις ανάγκες της "μοντέρνας" τεχνολογίας. Και λοιπόν; Η Java μου αρέσει έτσι όπως είναι σαν γλώσσα. Μεγαλύτερο πρόβλημα έχουν κάποιες βιβλιοθήκες παρά η γλώσσα. Καλύτερα θα ήταν να δούμε κάτι να αντικαθιστά το ελαφρώς γερασμένο Swing μπας και δούμε και αυτή τη πολυπόθητη "desktop Java" καμιά ώρα! (ως παράδειγμα το φέρνω) Κάποιες πρόσφατες προσθέσεις όπως τα annotations και τα generics είναι ok. Το...

Closures στη Java

Πήρε το μάτι μου σήμερα τη πιθανότητα να συμπεριληφθεί στο μέλλον η δυνατότητα χρήσης Closures στη Java. Ψάχνοντας λίγο τι ακριβώς είναι τα Closures και βλέποντας τα παραδείγματα, έχω μείνει με την απορία: τι διαφορά έχει με τη χρήση του strategy pattern ; Γνώμες; Ιδέες; Παραδείγματα;

Requirements

Τελείωσα αισίως το 3ο κεφάλαιο του Code Complete και ένα έχω να πω: " Software Requirements! ... ε ρε γλέντια!" (βάλτε μουσική από τον Καραγκιόζη για "χαλί") Θέλω να δω να εφαρμόζονται και στην Ελλάδα (Ελλάντα;) αυτά τα πρότυπα. "Καλά," θα μου πεις, "ας δούμε πρώτα να γίνεται η φάση της σχεδίασης και θα είμαστε πολύ καλύτερα!" και δεν θα 'χεις και άδικο. Και μια που ζητάμε σχεδίαση, καλά δε θα 'ταν να έχουμε και ανάλυση; (στην οποία ανήκει το requirements κομματί) Που είσαι Ζαχαρίααα ... :) ...για να δούμε παρακάτω τι λέει ο Steve-o...

I Want My .Mommy! (Episode I: Tooltip Tips)

Αυτό το άρθρο είναι παλιό και έχει μεταφερθεί (με την αυθεντική ημ/νία) από το άλλο μου blog (GreekIT) το οποίο είναι κατηργημένο. Από το MSDN : ToolTip Class Represents a small rectangular pop-up window that displays a brief description of a control's purpose when the user rests the pointer on the control. Ναι, καλά... Ο τρόπος υλοποίησης των tooltips είναι αρκετά μπερδεμένος. Αφήστε δε που η περιγραφή της ToolTip είναι παραπλανητική. Η ToolTip δεν "αντιπροσωπεύει" καθόλου ένα "pop-up window", αν ήταν έτσι, κάθε instance θα συνέδεε ένα control με το tooltip string. Καμμία σχέση με τη πραγματικότητα. Εν πρώτοις, φτιάχνεις ένα instance και μετά του λες με τη μέθοδο SetToolTip τι tooltip θα εμφανίζεται σε κάθε control (του δίνεις το control και το tooltip string). Δηλαδή, το κάθε instance "δένει" κάποια controls με τα αντίστοιχά τους tooltips. Μπορείς να φτιάξεις όσα ToolTip s θες και να δώσεις διαφορετικό tooltip για κάθε control από το κάθε instanc...

I Want My .Mommy! (εισαγωγή)

Αυτό το άρθρο είναι παλιό και έχει μεταφερθεί (με την αυθεντική ημ/νία) από το άλλο μου blog (GreekIT) το οποίο είναι κατηργημένο. Να σας πω πρώτα μερικά πράγματα που πρέπει να ξέρετε για μένα. Στην εργασία μου χρησιμοποιώ κυρίως C/C++ (Visual Studio 6). Πριν από 3-4 χρόνια κάποιος συνεργάτης μου είπε να διαβάσω λίγο Java για να μάθω αντικειμενοστραφή (object-oriented) προγραμματισμό. Διάβασα λοιπόν και "μου ανοίχτηκαν τα μάτια". Η Java μου άρεσε πολύ και με βοήθησε να καταλάβω πολλά πράγματα για τα οποία δεν είχα ιδέα (όσον αφορά OO προγραμματισμό). Με βοήθησε επίσης πολύ με τη C++, ώστε να μπορώ να γράφω καλύτερο κώδικα. Δεν λέω με κανένα τρόπο ότι η Java είναι τέλεια. Καθαρά σαν γλώσσα όμως και στις βασικές βιβλιοθήκες είναι υπόδειγμα σχεδίασης και υλοποίησης. Για να εκθέσω όλες τις πτυχές της Java (θετικές και αρνητικές) χρειάζεται χρόνος (για γράψιμο) και άλλος τόπος (τα blogs δεν είναι γι' αυτό το σκοπό), και για να κάνω μια σωστή σύγκριση με C#/.NET χρειάζεται οπωσ...

I Want My .Mommy!

Αυτό το άρθρο είναι παλιό και έχει μεταφερθεί (με την αυθεντική ημ/νία) από το άλλο μου blog (GreekIT) το οποίο είναι κατηργημένο. Λοιπόν, χτες ξεκίνησα να ασχολούμαι σοβαρά με το .NET (2005) και συγκεκριμένα με τη C# Express Edition. Να ’ναι καλά η Microsoft που έδωσε τσάμπα αυτά τα ωραία περιβάλλοντα ανάπτυξης (και χωρίς κανένα περιορισμό στην εμπορευματοποίηση του οποιουδήποτε προϊόντος), ας περιλαμβάνουν μόνο τα βασικά. Μέχρι προχτές είχα κάποια γνώση θεμάτων που θεωρούνται ελαττώματα της C# ή και γενικά του .NET . Παρ’ όλα αυτά, πίστευα ότι αυτά μπορούν να προσπεραστούν (εκτός, ίσως, από το πρόβλημα της System.Collections και της έλλειψης υποστήριξης MVC για τα controls). Άλλωστε, ο καλός προγραμματιστής κάνει το καλό πρόγραμμα, όχι η «καλή γλώσσα». Σωστά; Από χτες όμως άρχισα να απογοητεύομαι πραγματικά βλέποντας περισσότερα κρούσματα κακού (ναι, πραγματικά κακού) σχεδιασμού και πήρα το θάρρος να τα καταθέσω ενώπιόν σας. Αυτό θα γίνει σε «επεισόδια», σαν σήριαλ, αφού έτσι θα γ...