Η παρουσίαση μου στο πρώτο JoomlaFrappe

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

Θα ήθελα να ευχαριστήσω τον Φώτη Ευαγγέλου για την εξαιρετική προσπάθεια που ξεκίνησε, την πολύ καλή οργάνωση και τον πολύ όμορφο χώρο. Το Joomlafrappe θα γίνεται κάθε μήνα και μπορείτε να δηλώσετε συμμετοχή ως ακροατής αλλά και ως ομιλητής (αρκεί να έχετε να πείτε κάτι καλό στην ελληνική web κοινότητα). Enjoy…

Η παρουσίαση μου στο upNorth conference

Για όσους δεν κατάφεραν να έρθουν στο upΝorth conference (χάσατε by the way), μπορείτε να δείτε παρακάτω το video και τα slides της παρουσίασης μου (και να τα κατεβάσετε φυσικά).

Θα ήθελα να ευχαριστήσω τον Φώτη Ευαγγέλου για την κάλυψη και να ευχυθώ Καλά Χριστούγεννα και καλές γιορτές σε όλους!

Adaptive vs Responsive design: Ποια είναι η διαφορά;

Ακούω όλο και περισσότερο τους δύο παραπάνω όρους, τον δεύτερο σχεδόν καθημερινά, ωστόσο οι περισσότεροι έχουν την αίσθηση πως πρόκειται για ακριβώς το ίδιο πράγμα (συνωνυμία), κάτι που δεν ισχύει. Και επειδή αυτό μπορεί να οδηγήσει σε παρεξηγήσεις, γι αυτόν ακριβώς τον λόγο αποφάσισα να γράψω το παρακάτω post. Παρακάτω λοιπόν προσπαθώ να εξηγήσω με όσο το δυνατόν ευκολότερο τρόπο την διάφορα ενός Responsive και ενός Adaptive design.

Responsive design

Θα ξεκινήσω με τον πιο διάσημο όρο το Responsive design, τo οποίο χρησιμοποιεί απαραίτητα 3 χαρακτηριστικές web τεχνικές. Αυτό είναι το fluid grid (για το layout), media queries (για τον έλεγχο μεγέθους των οθονών) και flexible media (images, video, κτλ.). Αν λοιπόν το layout μας έχει και τα 3 παραπάνω χαρακτηριστικά, τότε είναι responsive, που πολύ απλά σημαίνει πως αν έχει κατασκευαστεί σωστά θα παίζει σε οποιαδήποτε ανάλυση/συσκευή. Δεν θέλω να σταθώ σε λεπτομέρειες και τεχνικές τύπου “mobile first” (όπου για λόγους bandwidth καλό είναι να κατασκευάζουμε το site ξεκινώντας από την μικρότερη ανάλυση που θέλουμε να υποστηρίξουμε, και να συνεχίσουμε με τις μεγαλύτερες) για την ώρα, ίσως το κάνω σε κάποιο άλλο post.

Adaptive design

Λέγοντας Adaptive design εννοούμε πως δεν ικανοποιεί και τα τρία προαναφερθέντα χαρακτηριστικά (συνήθως το fluid grid layout) και απλά προσπαθεί με τα media queries να προσαρμόσει (adapt) το layout όσο καλύτερα γίνεται σε διάφορες αναλύσεις και συσκευές. Η συγκεκριμένη τεχνική χρησιμοποιείται όλο και λιγότερο, μιας και όπως καταλαβαίνεται το responsive design αν και δυσκολότερο στην υλοποίηση, προσφέρει περισσότερα πλεονεκτήματα.

Τέλος θα ήθελα να θυμίσω πως βασικός λόγος δημιουργίας αυτής της σύγχυσης/παρεξήγησης στην ονοματολογία, ήταν πως στην γέννηση των media queries (άρα και των παραπάνω τεχνικών ) δεν υπήρχε standard ορολογία, οπότε ήταν καθαρά στην κρίση του designer το πως  θα ονόμαζε αλλά και τι εννοούσε (σε αυτό το μπέρδεμα συνείσφεραν ακόμα και γνωστά βιβλία) ωστόσο πλέον καλό θα είναι να ξέρουμε να τα διαχωρίζουμε.

Front-end development: Libraries, frameworks και άλλα εργαλεία

H εποχή που με έναν απλό και ταπεινό text editor ξεκινάγαμε να γράφουμε από την αρχή τα πάντα έχει τελειώσει εδώ και πολύ καιρό. Πλέον για την δημιουργία ακόμα και του πιο απλού HTML template είναι σχεδόν υποχρεωτικό να χρησιμοποιήσουμε τουλάχιστον ένα CSS-reset καθώς και αρκετά javascript files, έτσι ώστε να προσθέσουμε συμβατότητα σε παλιότερους browsers, να ελέγξουμε τι υποστηρίζει ο κάθε browser κτλ κτλ. Παρακάτω περιγράφω τι διαδικασία, και φυσικά τα εργαλεία, libraries, scripts και snippets που χρησιμοποιώ σχεδόν σε κάθε νέο project, από το πιο μικρό μέχρι το πιο μεγάλο…

Markup

Ίσως το πιο εύκολο κομμάτι του puzzle. Μέχρι και πέρσι, συνήθως χρησιμοποιούσα ένα δικό μου template (βασισμένο σε Strict XHTML), ωστόσο μιας και προσπαθώ να το γυρίσω σε HTML5, πιάνω τον εαυτό μου να χρησιμοποιεί όλο και πιο συχνά το HTML5 boilerplate του Paul Irish. Το μόνο κακό που του βρίσκω είναι πως δεν μου φαίνεται και τόσο “boilerplate”, και συνήθως μου παίρνει αρκετή ώρα στο να διαγράφω αρχεία και κώδικα έτσι ώστε να το φέρω στα μέτρα μου. Σιγά-σιγά θέλω να φτιάξω και την δική μου λύση, ωστόσο μέχρι τότε το HTML5 boilerplate κάνει μια χαρά την δουλειά του.

CSS

Το πρώτο πράγμα που χρειάζομαι είναι ένα καλό CSS-reset. Αν η markup μου είναι HTML5, χρησιμοποιώ το HTML5 reset του HTML5 Doctor, αν όχι χρησιμοποιώ το παλιό καλό HTML reset του Eric Meyer . Πολλές φορές αν το project “βιάζεται”, χρησιμοποιώ και σαν βάση την τυπογραφία κάποιου έτοιμου CSS framework, συνήθως του Blueprint ή του HTML5 boilerplate. Τέλος, αν το project βιάζεται απελπιστικά ή θέλω κάποιο γρήγορο prototype εδώ και τώρα, χρησιμοποιώ και το grid system του Blueprint (είναι και το μόνο που έχω μάθει!). Τέλος, συνήθως περνάω και τα media queries του Andy Clarke αλλά και ένα print-only style που περιέχει όλη την βασική τυπογραφία για εκτύπωση, για να υπάρχουν (αργά ή γρήγορα θα χρειαστούν)…

Javascript

Και εφόσον κλείσαμε από markup και CSS το μόνο που μας μένει είναι η Javascript μας. Εάν το project έχει HTML5 markup, το html5shiv είναι το πρώτο “must” script που πρέπει να φορτώσουμε. Από εκεί και πέρα συνήθως περνάω το modernizr και το jQuery γιατί όλο και κάπου θα χρειαστούν. Τώρα τελευταία μου αρέσει πολύ σαν ιδέα και το selectivizr μιας και σε βοηθάει πολύ στο να κρατάς την markup σου ακόμα πιο καθαρή, ωστόσο μπορώ να ζήσω και χωρίς αυτό. Τέλος, υπάρχει πιθανότητα (πάντα ανάλογα το project και εάν ο πελάτης είναι περίεργος/φανατικός χρήστης IE) να χρησιμοποιήσω και το Respond.js, έτσι ώστε τα media queries να παίζουν και σε IE 6-7-8…

Αυτά τα λίγα σχετικά με το front-end κομμάτι των site. Όπως καταλαβαίνεται, ακόμα και μικρά projects μπορεί να θέλουν όλα τα παραπάνω και ακόμα περισσότερα για να στηθούν και να λειτουργήσουν όπως πρέπει. Τέλος αν κάποιος χρησιμοποιεί φανατικά κάποιο εργαλείο/library που δεν αναφέρω παραπάνω, ας αφήσει ένα σχόλιο έτσι ώστε το τεστάρουμε και εμείς…

CSS3 και CSSS

Δεν ξέρω πόσοι από εσάς το πείραν χαμπάρι, αλλά η “δική” μας Λία ήταν ομιλήτρια στο τελευταίο Front-Trends Conference, το οποίο έγινε στην Βαρσοβία. Περισσότερα για τo θέμα μπορείτε να διαβάσετε στο post της (πάντα στα αγγλικά), ωστόσο εάν ασχολείστε έστω και λίγο με το web – και για να διαβάζετε αυτό το blog μάλλον ασχολείστε – πρέπει οπωσδήποτε να παρακολουθήσετε την παρουσίαση της ή ακόμα καλύτερα να την κατεβάσετε! Προσωπικά πιστεύω πως είναι μια από τις καλύτερες και πιο επεξηγηματικές παρουσιάσεις για το τι είναι το CSS3, τι λύσεις δίνει και τι νέες δυνατότητες παρέχει σε όλους εμάς. Καιρό είχα να παρακολουθήσω μια τόσο καλοφτιαγμένη και δομημένη παρουσίαση, και για να πω την αλήθεια στεναχωρήθηκα που δεν κατάφερα να την δω live, ωστόσο ελπίζω ακόμα σε κάποιο video της παρουσίασης…

Πέρα από αυτό και για τις ανάγκες της ίδιας της παρουσίασης, η Λία δημιούργησε και το δικό της slideshow system το οποίο ακούει στο όνομα CSSS. Όπως εύκολα καταλαβαίνει κάποιος στηρίζεται κυρίως σε CSS3 χαρακτηριστικά (και Javascript φυσικά), ενώ μπορεί να το κατεβάσει και να το  χρησιμοποιήσει ο καθένας για τις παρουσιάσεις του (απορώ ποιοι χρησιμοποιούν ακόμα Powerpoint!). Και πάλι συγχαρητήρια και μακάρι να δούμε ανάλογου επιπέδου events και στην Ελλάδα (αν και το βλέπω πάρα πολύ δύσκολο)…

Styling HTML5 elements

Όσοι έχετε δοκιμάσει να παίξετε με την HTML5 θα έχετε πέσει σε διάφορες παραξενιές της. Χτες έπεσα σε μία από αυτές που μου έφαγε πολύ χρόνο, ενώ μου προκαλεσε και εντύπωση το γεγονός πως πολλά HTML5 άρθρα και posts δεν αναφέροντε στο συγκεκριμένο πρόβλημα όσο ξεκάθαρα θα έπρεπε (μέχρι και το Google με απογοήτευσε στις αναζητήσεις μου).

Το πρόβλημα που είχα, ήταν πως ενώ η HTML5 markup μου ήταν σωστή (και valid), elements όπως header, section, footer και aside, δεν καταλάβαιναν τους styling κανόνες που τους έβαζα! Οι μοντέρνοι και HTML5-ready browsers έδειχναν να μην κάνουν σωστό rendering τα καινούργια elements (ο Firefox και ο Chrome τουλάχιστον, αν και έχω την αίσθηση πως και οι υπόλοιποι θα έχουν ανάλογα προβλήματα). Η λύση τελικά είναι πανεύκολη, απλά δίνουμε στα καινούργια elements display:block.

header, section, footer, aside, nav, article, figure { display: block; }

Από ότι κατάλαβα για κάποιο περίεργο λόγο, οι browsers κάνουν τα παραπάνω στοιχεία rendering ως inline elements, οπότε με τον παραπάνω απλό κανόνα καθαρίσαμε. Μπορεί έχασα ένα ολόκληρο απόγευμα, ωστόσο πιστεύω πως άξιζε τον χρόνο. Άλωστε μόνο έτσι μαθαίνεις…

Kαλοπιστικά γραφικά vs γραφικά περιεχομένου

Σε αυτό το μικρό postακι θα προσπαθήσω να εξηγήσω την διαφορά των συγκεκριμένων γραφικών/images καθώς και πως πρέπει να εμφανίζονται στην markup μας (με τι attributes κτλ.). Για κάποιον λόγο αυτή η απλή διαφορά δεν γίνεται αμέσως αντιληπτή, ιδιαίτερα στους  νέους του χώρου, οπότε ας ξεκαθαρίσουμε λίγο τα πράγματα.

Η λύση είναι απλούστατη και θέμα θέμα απλής λογικής. Όποιο γραφικό είναι μέρος του περιεχομένου, όπως πχ. μια φωτογραφία, ένα διάγραμμα, κτλ., πρέπει να παρουσιάζεται με το HTML img tag και να περιέχει – εκτός φυσικά από το src attribute – και ένα περιγραφικό alt attribute. Αντιθέτως τα γραφικά που δεν είναι μέρος του περιεχομένου, δεν θα πρέπει να υπάρχουν καθόλου στην markup μας (ως img tags)! Τα συγκεκριμένα γραφικά θα πρέπει να παρουσιάζονται είτε μέσω CSS, είτε μέσω DOM injection χρησιμοποιώντας κάποια Javascript library. Εάν φυσικά τα πράγματα δεν γίνονται αλλιώς (δεν μπορούμε να κάνουμε και μαγικά σε μερικές περιπτώσεις), τότε μπορούμε να προσθέσουμε τα συγκεκριμένα γραφικά με img tags τα οποία θα έχουν κενή την alt attribute τους (<img src="logo.jpg" alt="" />). Εύκολο έτσι;