Ένας άλλος πιασάρικος τίτλος θα ήταν “ΠΑΘΑΜΕ ΣΟΚ ΜΟΛΙΣ ΕΙΔΑΜΕ ΤΗΝ MODULAR CSS!!!!ENA!!1!!! ΠΟΙΑ Η ΣΧΕΣΗ ΤΗΣ ΜΕ ΤΟ SURVIVOR; ΔΓΙΑΔOΣΤAI“. Αλλά δεν κάνω τέτοια εγώ κι επέλεξα έναν πιο… σοβαρούτσικο τίτλο.
Η… περιπέτεια μου στο να γράφω πιο σύγχρονο κώδικα συνεχίζεται. Μετά από το γερό σουλούπωμα στον κώδικα της PHP (έχει φτάσει σε αρκετά καλό σημείο) και ένα μικρό σουλούπωμα στην Javascript (έσπασε ο κώδικας σε μικρότερα αρχεία, για αρχή. Στο μέλλον πρέπει να το δω κι αυτό καλύτερα), ήρθε η ώρα της CSS.
Με την CSS δεν έχω και τις καλύτερες σχέσεις και δεν την συμπαθώ καθόλου. Ούτε αυτή εμένα. Με το που πατάω σε ένα αρχείο CSS να κάνω κάποιο edit, κρύος ιδρώτας με λούζει για το τέρας που θα αντικρίσω. Ενώ η ροδέλα του ποντικιού ετοιμάζεται για αύξηση της θερμοκρασίας από το ατελείωτο scrolling που πρόκειται να γίνει στα χιλιόμετρα του κώδικα. Εδώ ίσως κολλάει λίγο (λίγο λέμε) το “στα άδυτα της CSS”.
Κι έτσι μια μέρα είπα “Φτάνει! ΩΣ ΕΔΩ! Θα γραφτώ στο σωματεί…” Α, όχι… αυτό είναι από αλλού.
Μια μέρα είπα, λοιπόν, ότι πρέπει να βρω τρόπο να στρώσει κάπως η κατάσταση και το τέρας να υποταχθεί. Object Oriented CSS, Modular CSS και τέτοια, μου εμφανίζονταν (σαν οράματα) αρκετές φορές σαν έννοιες. Το έψαξα τελικά λίγο και βρήκα 2 πολύ καλές πηγές που μου δείχνουν τον δρόμο. Καταρχήν μια σειρά άρθρων του Zell Liew ([1], [2], [3]) με τον δικό του οδηγό για να γράψεις Modular CSS. Μου φαίνεται πολύ καλό μοντέλο και αυτό σκοπεύω να ακολουθήσω περίπου.
Ταυτόχρονα διαβάζω τον οδηγό του Jonathan Snook, “Scalable and Modular Architecture for CSS (SMACSS)” για να καταλάβω ακόμη περισσότερο την φάση (αν και είναι διαφορετικό μοντέλο από του Zell Liew, αλλά πατάει κι αυτός πάνω στο SMACSS αρκετά).
Άρχισα ήδη να εφαρμόζω στο framework μου το μοντέλο. Για αρχή έχω σπάσει όλο το τέρας σε επιμέρους αρχεία. Κάθε αρχείο και διαφορετικό compoment ή object. Ευτυχώς το τέρας το είχα σχετικά οργανωμένο με κάθε επιμέρους αντικείμενο γκρουπαρισμένο και με τα σχόλια του. Οπότε η διαδικασία ήταν σχετικά εύκολη με copy-paste του κάθε group κώδικα σε ξεχωριστό αρχείο. Το αποτέλεσμα είναι περίπου αυτό.
Αυτή ήταν η εύκολη δουλειά, αλλά πολύ σημαντική ώστε να μπορέσω τώρα πολύ πιο εύκολα να εφαρμόσω το namespacing για τις κλάσεις που προτείνει το μοντέλο του Zell Liew. Στην αρχή από τα μικρότερα και απλούστερα objects, φτάνοντας κάποια στιγμή στις πιο πολύπλοκες δομές.
Μετά από αυτό θα μπορέσω επιτέλους να τελειώσω με το Parrot Tunes και να αρχίσω ένα άλλο project που έχω στο μυαλό.
Από το τελευταίο post έχει περάσει αρκετός καιρός, αλλά αυτό δεν σημαίνει ότι το project δεν εξελίσσεται. Συνεχίζω να χρωστάω την μεγάλη αναβάθμιση στον τρόπο που λειτουργούν τα φίλτρα, που θα σημαίνει ουσιαστικά και την ολοκλήρωση του project από πλευράς όλων των δυνατοτήτων που θα έχει.
Προς το παρόν όμως έδωσα προτεραιότητα σε έναν μεγάλο εκσυγχρονισμό του κώδικα. Δεν φαίνεται στον χρήστη, αλλά είναι σημαντικό για το μέλλον της εφαρμογής (και όχι μόνο), να είναι ο κώδικας όσο γίνεται πιο μοντέρνος. Οπότε το έχω ρίξει στο διάβασμα και κάνω τις ανάλογες αλλαγές, όσο προχωράει η εκπαίδευση μου.
Για παράδειγμα, μπαίνω περισσότερο στο νόημα του αντικειμενοστραφούς προγραμματισμού κι έτσι πολλά πράγματα που είχα κάνει στην αρχή, πλέον έχουν αλλάξει και έχουν σπάσει σε περισσότερες και πιο εύχρηστες κλάσεις. Ταυτόχρονα γίνεται χρήση των namespaces και χρησιμοποιείται autoloading σύμφωνα με τα πρότυπα της μοντέρνας PHP, για το φόρτωμα των απαραίτητων αρχείων κάθε φορά. Πράγμα που μου έλυσε τα χέρια, αφού πριν μου φαίνονταν πολύ μπακαλίστικο και χαζό να τα φορτώνω όλα με την μία ή κάποια συγκεκριμένα στην καλύτερη περίπτωση, το οποίο σημαίνει ότι θα έχανα την μπάλα όσο προχωράει το project.
Παράλληλα σπάω τον κώδικα ώστε το framework μου να είναι όσο γίνεται πιο ανεξάρτητο από την συγκεκριμένη εφαρμογή και άρα την κάθε πιθανή μελλοντική εφαρμογή που θα φτιάξω.
Σημαντικές αλλαγές έχουν γίνει και σε θέματα ασφάλειας.
Από τις αλλαγές που φαίνονται στον χρήστη είναι κάποιες βελτιώσεις στο κατέβασμα από YouTube. π.χ. μπορεί ο χρήστης να δώσει μια youtube playlist και να κατεβάσει όλα τα βίντεο με την μία. Επίσης έχει προστεθεί η επιλογή αν θέλει να κατεβάσει βίντεο (mp4) ή σκέτο ήχο (mp3).
Πολύ σημαντική προσθήκη είναι η δυνατότητα να κάνεις backup της βάσης (μέσα από την εφαρμογή) και αντίστοιχα το restore. Οπότε τώρα ο χρήστης μπορεί να έχει το κεφάλι του ήσυχο μην χάσει την συλλογή του από κάποια ζημιά στον server.
Στον player έχουν βελτιωθεί τα controls και (χαρές και πανηγύρια)… μπήκε κουμπί που ενεργοποιεί/απενεργοποιεί το shuffle mode…
Με τις βελτιώσεις που έχω κάνει στον κώδικα και νέα κόλπα που έχω μάθει, ελπίζω ότι στο επόμενο post θα πω για τα φίλτρα που γίνανε όπως πρέπει…