<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tsevdos.com &#187; markup</title>
	<atom:link href="http://www.tsevdos.com/category/markup/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsevdos.com</link>
	<description>Web design, internet news and blogging tips</description>
	<lastBuildDate>Wed, 11 Jan 2012 13:46:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Front-end development: Libraries, frameworks και άλλα εργαλεία</title>
		<link>http://www.tsevdos.com/2011/07/26/front-end-development-libraries-frameworks-and-other-tools/</link>
		<comments>http://www.tsevdos.com/2011/07/26/front-end-development-libraries-frameworks-and-other-tools/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 07:22:20 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[inspiration]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5shiv]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[respond.js]]></category>
		<category><![CDATA[selectivizr]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=864</guid>
		<description><![CDATA[H εποχή που με έναν απλό και ταπεινό text editor ξεκινάγαμε να γράφουμε από την αρχή τα πάντα έχει τελειώσει εδώ και πολύ καιρό. Πλέον για την δημιουργία ακόμα και του πιο απλού HTML template είναι σχεδόν υποχρεωτικό να χρησιμοποιήσουμε τουλάχιστον ένα CSS-reset καθώς και αρκετά javascript files, έτσι ώστε να προσθέσουμε συμβατότητα σε παλιότερους browsers, να ελέγξουμε τι [...]]]></description>
			<content:encoded><![CDATA[<p>H εποχή που με έναν απλό και ταπεινό text editor ξεκινάγαμε να γράφουμε από την αρχή τα πάντα έχει τελειώσει εδώ και πολύ καιρό. Πλέον για την δημιουργία ακόμα και του πιο απλού HTML template είναι σχεδόν υποχρεωτικό να χρησιμοποιήσουμε τουλάχιστον ένα CSS-reset καθώς και αρκετά javascript files, έτσι ώστε να προσθέσουμε συμβατότητα σε παλιότερους browsers, να ελέγξουμε τι υποστηρίζει ο κάθε browser κτλ κτλ. Παρακάτω περιγράφω τι διαδικασία, και φυσικά τα εργαλεία, libraries, scripts και snippets που χρησιμοποιώ σχεδόν σε κάθε νέο project, από το πιο μικρό μέχρι το πιο μεγάλο&#8230;</p>
<h2>Markup</h2>
<p>Ίσως το πιο εύκολο κομμάτι του puzzle. Μέχρι και πέρσι, συνήθως χρησιμοποιούσα ένα δικό μου template (βασισμένο σε <strong>Strict XHTML</strong>), ωστόσο μιας και προσπαθώ να το γυρίσω σε <strong>HTML5</strong>, πιάνω τον εαυτό μου να χρησιμοποιεί όλο και πιο συχνά το <strong><a title="HTML5 Boilerplate" href="http://html5boilerplate.com/">HTML5 boilerplate</a></strong> του <a title="Paul Irish" href="http://paulirish.com/">Paul Irish</a>. Το μόνο κακό που του βρίσκω είναι πως δεν μου φαίνεται και τόσο &#8220;boilerplate&#8221;, και συνήθως μου παίρνει αρκετή ώρα στο να διαγράφω αρχεία και κώδικα έτσι ώστε να το φέρω στα μέτρα μου. Σιγά-σιγά θέλω να φτιάξω και την <a title="A really simple HTML5 template from Phrappe.com" href="http://phrappe.com/markup/a-really-simple-html5-template/">δική μου λύση</a>, ωστόσο μέχρι τότε το HTML5 boilerplate κάνει μια χαρά την δουλειά του.</p>
<h2>CSS</h2>
<p>Το πρώτο πράγμα που χρειάζομαι είναι ένα καλό <strong>CSS-reset</strong>. Αν η markup μου είναι <strong>HTML5</strong>, χρησιμοποιώ το <a title="HTML5 CSS reset" href="http://html5doctor.com/html-5-reset-stylesheet/"><strong>HTML5 reset</strong> του HTML5 Doctor</a>, αν όχι χρησιμοποιώ το παλιό καλό <strong><a title="CSS reset" href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">HTML reset</a></strong> του <a title="Eric Meyer" href="http://meyerweb.com">Eric Meyer</a> . Πολλές φορές αν το project &#8220;βιάζεται&#8221;, χρησιμοποιώ και σαν βάση την τυπογραφία κάποιου έτοιμου <strong>CSS framework</strong>, συνήθως του <strong><a title="Blueprint CSS framework" href="http://www.blueprintcss.org/">Blueprint</a></strong> ή του <a title="HTML5 Boilerplate" href="http://html5boilerplate.com/">HTML5 boilerplate</a>. Τέλος, αν το project βιάζεται απελπιστικά ή θέλω κάποιο γρήγορο prototype εδώ και τώρα, χρησιμοποιώ και το grid system του <a title="Blueprint CSS framework" href="http://www.blueprintcss.org/">Blueprint</a> (είναι και το μόνο που έχω μάθει!). Τέλος, συνήθως περνάω και τα <strong><a title="Hardboiled CSS3 Media Queries" href="http://www.stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries/">media queries</a></strong> του <a title="Andy Clarke" href="http://stuffandnonsense.co.uk/">Andy Clarke</a> αλλά και ένα <strong>print-only style</strong> που περιέχει όλη την βασική τυπογραφία για εκτύπωση, για να υπάρχουν (αργά ή γρήγορα θα χρειαστούν)&#8230;</p>
<h2>Javascript</h2>
<p>Και εφόσον κλείσαμε από markup και CSS το μόνο που μας μένει είναι η <strong>Javascript</strong> μας. Εάν το project έχει <strong>HTML5 markup</strong>, το <strong><a title="HTML5 shiv" href="http://code.google.com/p/html5shiv/">html5shiv</a></strong> είναι το πρώτο &#8220;must&#8221; script που πρέπει να φορτώσουμε. Από εκεί και πέρα συνήθως περνάω το <strong><a title="Μodernizr" href="http://www.modernizr.com/">modernizr</a></strong> και το <strong><a title="jQuery" href="http://jquery.com/">jQuery</a></strong> γιατί όλο και κάπου θα χρειαστούν. Τώρα τελευταία μου αρέσει πολύ σαν ιδέα και το <strong><a title="Selectivizr" href="http://selectivizr.com/">selectivizr</a></strong> μιας και σε βοηθάει πολύ στο να κρατάς την markup σου ακόμα πιο καθαρή, ωστόσο μπορώ να ζήσω και χωρίς αυτό. Τέλος, υπάρχει πιθανότητα (πάντα ανάλογα το project και εάν ο πελάτης είναι περίεργος/φανατικός χρήστης IE) να χρησιμοποιήσω και το <strong><a title="Respond.js: Fast CSS3 Media Queries for Internet Explorer 6-8 and more" href="http://filamentgroup.com/lab/respondjs_fast_css3_media_queries_for_internet_explorer_6_8_and_more/">Respond.js</a></strong>, έτσι ώστε τα <strong>media queries</strong> να παίζουν και σε IE 6-7-8&#8230;</p>
<p>Αυτά τα λίγα σχετικά με το front-end κομμάτι των site. Όπως καταλαβαίνεται, ακόμα και μικρά projects μπορεί να θέλουν όλα τα παραπάνω και ακόμα περισσότερα για να στηθούν και να λειτουργήσουν όπως πρέπει. Τέλος αν κάποιος χρησιμοποιεί φανατικά κάποιο εργαλείο/library που δεν αναφέρω παραπάνω, ας αφήσει ένα σχόλιο έτσι ώστε το τεστάρουμε και εμείς&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2011/07/26/front-end-development-libraries-frameworks-and-other-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML5 σκέψεις</title>
		<link>http://www.tsevdos.com/2010/09/13/html5-thoughts/</link>
		<comments>http://www.tsevdos.com/2010/09/13/html5-thoughts/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 08:00:18 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[inspiration]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[manifest]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[offiline]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[websql]]></category>
		<category><![CDATA[workers]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=664</guid>
		<description><![CDATA[Αυτό το καλοκαίρι το έριξα &#8211; όπως και πολλοί άλλοι φαντάζομαι &#8211; στην HTML5 η οποία έχει ήδη αρχίσει να κάνει δειλά-δειλά την εμφάνιση σε αρκετά sites, σε μικρότερο ή μεγαλύτερο βαθμό. Τα βιβλία που διάβασα ήταν το &#8220;HTML5 for web designers&#8221; του Jeremy Keith και το &#8220;Introducing HTML5&#8221; των Bruce Lawson και Remy Sharp. [...]]]></description>
			<content:encoded><![CDATA[<p>Αυτό το καλοκαίρι το έριξα &#8211; όπως και πολλοί άλλοι φαντάζομαι &#8211; στην <strong>HTML5</strong> η οποία έχει ήδη αρχίσει να κάνει δειλά-δειλά την εμφάνιση σε αρκετά sites, σε μικρότερο ή μεγαλύτερο βαθμό. Τα βιβλία που διάβασα ήταν το &#8220;<a title="HTML5 for web designers book" href="http://books.alistapart.com/">HTML5 for web designers</a>&#8221; του <a title="Jeremy Keith site" href="http://adactio.com/">Jeremy Keith</a> και το &#8220;<a title="Introducing HTML5 book" href="http://introducinghtml5.com/">Introducing HTML5</a>&#8221; των <a title="Bruce Lawson site" href="http://www.brucelawson.co.uk/">Bruce Lawson</a> και <a title="Remy Sharp site" href="http://remysharp.com/">Remy Sharp</a>. Καταρχάς όποιος σκέφτεται να αγοράσει κάποιο βιβλίο αυτήν την στιγμή, του προτείνω το δεύτερο (<a title="Introducing HTML5 book" href="http://introducinghtml5.com/">Introducing HTML5</a>), μιας και το πρώτο με απογοήτευσε αρκετά για &#8220;A book apart&#8221; βιβλίο. Γενικότερα δεν θα το περιέγραφα καν ως βιβλίο, αλλά σαν μια γενική, θεωρητική εισαγωγή για το τι είναι η <strong>HTML5</strong>. Αντίθετα, το <strong>Introducing HTML5</strong> με ξάφνιασε ευχάριστα τόσο με τα πολλά θέματα που καλύπτει όσο και με τον τρόπο που τα καλύπτει, μιας και δεν μένει μόνο στην θεωρία, αλλά προχωράει και στην πράξη (ρίξτε οπωσδήποτε και μια ματιά στα <a title="Introducing HTML5 site examples" href="http://introducinghtml5.com/">παραδείγματα του βιβλίου</a>).</p>
<p>Μετά από αυτήν την μικρή εισαγωγή λοιπόν, και με την ελάχιστη εμπειρία που έχω στο θέμα, θέλω να καταγράψω κάποιες σκέψεις, προβληματισμούς, και γενικότερα να ξεκινήσω μια συζήτηση με τα πιο ανήσυχα μυαλά&#8230; Θα προσπαθήσω να είμαι σαφής και γρήγορος, έτσι ώστε να μην μπερδέψω  και να μην κουράσω. Επίσης σε αυτό το post γράφοντας HTML5 εννοώ και τα APIs ή τις τεχνολογίες οι οποίες δεν είναι μέρος του επίσημου <a title="HTML5 Spec" href="http://dev.w3.org/html5/spec/">HTML5 specification</a> (είναι από μόνα τους ξεχωριστά specifications), ωστόσο θα χρησιμοποιηθούν κυρίως με αυτήν την markup και την ίδια περίοδο. Ας δούμε λοιπόν τι μας επιφυλάσσει το μέλλον, ε, το παρόν ήθελα να πω!</p>
<h2>Markup</h2>
<p>Ας ξεκινήσουμε με το πιο απλό μέρος της HTML5 &#8211; θεωρητικά πάντα &#8211; την <strong>markup</strong> και τα <strong>semantics</strong>. Τα semantics λοιπόν έχουν αλλάξει αρκετά και πλέον γίνεται ακόμα πιο δύσκολο το να γράψεις σημασιολογική markup. Παρακάτω περιγράφω αυτά που μου φάνηκαν πιο περίεργα, σημαντικά ή παράξενα!</p>
<ul>
<li>Το <strong>outline</strong> &#8211; το οποίο δεν έχει υλοποιηθεί ακόμα από κανέναν browser (!!!) &#8211; αλλάζει τελείως τον νόημα των headings (<code>h1-h6</code>). Πλέον ένα <code>h3</code> heading μπορεί να είναι πιο σημαντικό από ένα <code>h1</code> heading! Στην ουσία στην HTML5 θα μπορούσαμε να είχαμε ένα και μοναδικό τύπο heading (h για παράδειγμα), ωστόσο υπάρχουν ακόμα έξι (h1-6) για compatibility θέματα. Μένει να δούμε πως θα επηρεάσει και το SEO αυτό το θέμα.</li>
<li>Τα <code>sections</code> και τα <code>articles</code> είναι αρκετά δύσκολα στην κατανόηση, μιας και το ένα μπορεί να υπάρχει μέσα στο άλλο αρκετές φορές! Θέλει αρκετή μελέτη έτσι ώστε να τα χρησιμοποιήσει κάποιος σωστά.</li>
<li>Τέλος είμαι πραγματικά περίεργος να δω πως θα φτιάξουν τους WYSIWYG web editors (Dreamweaver για παράδειγμα) έτσι ώστε να γράφουν semantic HTML5. Παλιότερα τα πράγματα ήταν πανεύκολα, απλά πετούσαν παντού ένα div και το θέμα τελείωνε, τώρα τι λύση θα βρουν άραγε;</li>
</ul>
<h2>Φόρμες (forms)</h2>
<p>Οι φόρμες επιτέλους δεν θα σπάνε τα νεύρα σε αυτούς που τις φτιάχνουν. Μερικά <strong>attributes</strong> στην markup μας και θα αφήνουμε τον browser να κάνει όλη την &#8220;βρόμικη&#8221; δουλειά. Οι περισσότεροι browsers υποστηρίζουν λίγα πράγματα προς το παρόν (ο πιο ολοκληρωμένος browser στο θέμα είναι ο Opera) ωστόσο σιγά-σιγά θα τον φτάσουν και οι υπόλοιποι.</p>
<ul>
<li>Πολύ έξυπνο compatibility μιας και όλες οι φόρμες εμφανίζονται σαν απλά <code>text inputs</code> σε παλιότερους browsers που δεν καταλαβαίνουν τα νέα HTML5 attributes.</li>
<li>Δυστυχώς θα γράφουμε για πολύ καιρό ακόμα Javascript validation scripts (ιδιαίτερα στην Ελλάδα, με τους αρχαιοελληνικούς browsers που κυκλοφορούν)!</li>
<li>Πρέπει οπωσδήποτε να υπάρξει μια επίσημη γραμμή για το πως θα εμφανίζονται/φαίνονται τα διάφορα widgets (πχ. επιλογή ημερομηνίας) και τα λάθη (validation errors), καθώς και για το πως θα διαγράφουμε αυτά τα default browser styles, γιατί προβλέπω να γίνεται χαμός σε αυτό το θέμα.</li>
<li>Ακόμα λιγότερη Javascript χάρις τα <code>autofocus</code>, <code>placeholder</code>, <code>autocomplete</code> και <code>required</code> attributes.</li>
<li>Το <code>pattern</code> attribute απλά τα σπάει! Ελέγχει κατευθείαν στον browser το regular expression που έχει δηλωθεί στο pattern!</li>
</ul>
<h2>Video και Audio</h2>
<p>Εδώ πέρα τα πράγματα ξεκίνησαν καλά και απλά, αλλά μια (τραγική;) παράληψη στο specification έκανε τα εύκολα δύσκολα! Όπως όλοι ξέρουμε ο κάθε κατασκευαστής browser αποφάσισε (ή θα αποφασίσει) να υποστηρίξει τον video codec που τον συμφέρει.</p>
<ul>
<li>Χρησιμοποιώντας πολλαπλά source elements μπορούμε να φορτώσουμε πολλά διαφορετικά φορμάτ. Πολύ χρήσιμο για την κατάσταση που θα επικρατήσει.</li>
<li>Χρησιμοποιώντας το video element με codec Ogg Theora (.ogg), H.264 (mp4) και webM (βασισμένο στον VP8 codec της Google), είμαστε καλυμμένοι στους μοντέρνους browsers, ωστόσο 3 διαφορετικές κωδικοποιήσεις είναι πολλές για το ίδιο video.</li>
<li>Και μην ξεχνάτε πως πρέπει να το κωδικοποιήσουμε και σε Flash video για να παίζει σε παλιότερους browsers!</li>
<li>Στο audio τα πράγματα είναι αρκετά πιο απλά, μιας και με ένα mp3 έχουμε τελειώσει.</li>
<li>Στα θετικά είναι πως το API του <code>video</code> και <code>audio</code> tag είναι ακριβώς το ίδιο (αν θυμάμαι καλά το audio element έχει κανα-δυο λιγότερες methods και attributes &#8211; όπως πχ. width και height).</li>
</ul>
<h2>Canvas</h2>
<p>Με το Canvas API μπορείς να <a title="Canvas demo 4" href="http://people.mozilla.com/~prouget/demos/DynamicContentInjection/play.xhtml">κάνεις</a> <a title="canvas demo 1" href="http://canvaspaint.org/">πραγματικά</a> <a title="canvas demo 2" href="http://mugtug.com/sketchpad/ ">τρελά</a> <a title="Canvas demo 3" href="http://introducinghtml5.com/examples/ch05/animate-with-video.html ">πράγματα</a>, ωστόσο το θέμα <strong>accessibility</strong> είναι τεράστιο! Στην ουσία ότι &#8220;ζωγραφίζεται&#8221; πάνω στον καμβά, δεν μπορεί να διαβαστεί από screen readers. Είναι δηλαδή (προς το παρόν) ένα καθαρά οπτικό (visual) element/API, χωρίς μάλιστα να έχει προβλεφθεί κάποια εναλλακτική λύση για την προβολή περιεχομένου (όπως στο video tag για παράδειγμα)!</p>
<h2>Client-side Data storage</h2>
<p>Και εδώ δεν γνώριζα αρκετά πράγματα. Οι 2 σοβαρές τεχνολογίες ονομάζονται <strong>Web Storage</strong> και <strong>Web SQL Database</strong> (υπάρχει και μια τρίτη από την Mozilla η οποία μάλλον θα σβήσει &#8211; δεν θυμάμαι καν το όνομα της), με αρκετή υποστήριξη από τους browsers.</p>
<ul>
<li>Το <strong>Web Storage</strong> είναι κάτι σαν cookies on steroids. Επίσης η τεχνολογία υποστηρίζετε από όλους (!!!) τους μοντέρνους browsers.</li>
<li>H <strong>Web SQL</strong> υποστηρίζεται σε Opera, Chrome και Safari ενώ η SQL μηχανή που χρησιμοποιούν είναι η <a title="SQLite site" href="http://sqlite.org/">SQLite</a> (δεν γνωρίζω εάν το αναφέρει πουθενά το specification, ωστόσο αυτή την έκδοση SQL έχουν οι παραπάνω browsers).</li>
<li>Και πάλι θα συνεχίσουμε να γράφουμε για πολύ καιρό cookies για να υποστηρίξουμε τους παλιότερους browsers (fallback κώδικας).</li>
</ul>
<h2>Offline Application Caching</h2>
<p>Μια τεχνολογία που δεν είχα ιδέα πως λειτουργούσε, η οποία αν και εντυπωσιακή για κάποιο λόγο δεν μου αρέσει ο τρόπος λειτουργίας της (ωστόσο θα ενθουσιάσει αυτούς που ασχολούνται με web servers, .htaccess files κτλ.). Πολύ απλά δηλώνουμε σε ένα &#8220;μανιφέστο&#8221; ποια αρχεία θέλουμε να cachαριστούν (αλήθεια πως θα το μεταφράζατε αυτό;) στον browser, έτσι ώστε το site/web app μας να συνεχίζει να λειτουργεί ακόμα και εάν πάψει να λειτουργεί η σύνδεση μας.</p>
<ul>
<li>Η χρήση είναι σχετικά απλή, απλά δημιουργούμε ένα <a title="Offline Web applications" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#offline">.manifest</a> <a title="Offline Application Caching APIs" href="http://www.w3.org/TR/offline-webapps/#offline">αρχείο</a> στο οποίο αναφέρουμε τα <a title="HTML 5 Offline Application Cache" href="http://developer.apple.com/library/safari/#documentation/iphone/conceptual/safarijsdatabaseguide/OfflineApplicationCache/OfflineApplicationCache.html">αρχεία που θέλουμε να cashaρηστούν</a>, και το δηλώνουμε στην markup μας (<code>&lt;html manifest="demo.manifest"&gt;</code>). Για κάποιο λόγο ωστόσο δεν μου αρέσει αυτός ο τρόπος λειτουργίας&#8230; Με κάνει να αισθάνομαι κάπως έξω από τα νερά μου, μιας και όπως εξήγησα και πιο πάνω μοιάζει πιο πολύ με την δημιουργία κάποιου .htaccess αρχείου, κάτι που δεν κάνει συχνά κάποιος web designer (ή έστω front-end developer).</li>
</ul>
<h2>Geolocation</h2>
<p>Ένα από τα πιο εύκολα και αγαπημένα μου χαρακτηριστικά. Το <strong>Geolocation API</strong> δεν είναι μέρος της HTML5, ωστόσο το αναφέρω για τους λόγους που εξήγησα στην εισαγωγή. Είναι σχετικά απλό (με 2 methods έχετε καθαρίσει &#8211; <code>getCurrentPosition</code> και <code>watchPosition</code>), και πιστεύω πως όλο και περισσότερα sites θα το χρησιμοποιούν για να μας δείχνουν πιο “ντόπια” προϊόντα, διαφημίσεις, νέα, προσφορές, κτλ. κτλ. Με λίγα λόγια, &#8220;θα φορεθεί πολύ&#8221;&#8230;</p>
<h2>Web Messaging API, Web Workers API και Web Sockets API</h2>
<p>Τα παραπάνω APIs τα αναφέρω και τα 3 μαζί μιας και είναι φτιαγμένα για καθαρά Web εφαρμογές (δεν είναι ούτε και αυτά μέρος της HTML5). Με τα παραπάνω APIs μας δίνονται οι παρακάτω δυνατότητες:</p>
<ul>
<li>Το <strong>Web Messanging</strong> υποστηρίζεται από πολλούς browsers (και IE) και μας επιτρέπει να κάνουμε διάφορα ωραία, όπως να στέλνουμε μηνύματα σε άλλα domains κτλ. Φανταστείτε το κάτι σαν AJAX on steroids και αυτό.</li>
<li>Χρησιμοποιώντας <strong>Web Workers</strong> μπορούμε να κάνουμε την web εφαρμογή μας να τρέχει την Javascript σε διαφορετικά threads! Από μια γρήγορη ματιά που έριξα, η λογική είναι αρκετά πολύπλοκη και πιστεύω πως αυτήν την στιγμή είναι πολύ κακό για το τίποτα, ωστόσο οφείλω να ομολογήσω πως σε μια πολύπλοκη web εφαρμογή (φανταστείτε κάτι σε Photoshop στο web) μπορεί να κάνει τρελή διαφορά (πχ. να χρησιμοποιεί ένα φίλτρο, και ενώ ο web worker κάνει τους υπολογισμούς του, ο χρήστης να συνεχίζει να χρησιμοποιεί την εφαρμογή, χωρίς αυτή να φαίνεται σαν να έχει κολλήσει).</li>
<li>Τα <strong>Web Sockets</strong> ανοίγουν μια αμφίδρομη επικοινωνία μεταξύ του server και του client χρησιμοποιώντας τον browser σαν &#8220;μεσάζοντα&#8221;. Αρκετά βολικό και χρήσιμο&#8230;</li>
</ul>
<div>Αυτές είναι οι πρώτες εντυπώσεις/σκέψεις μου για την HTML και όλα τα άλλα ωραία καλούδια που έρχονται μαζί της. Έχετε στο μυαλό σας πως  υπολογίζουν πως η HTML5 θα είναι 100% ολοκληρωμένη (σε browser επίπεδο τουλάχιστον) γύρω στο 2020 (!!!) ωστόσο δεν χάνουμε τίποτα με το να χρησιμοποιούμε και να μαθαίνουμε τα νέα χαρακτηριστικά της. Πολλά από αυτά άλλωστε υποστηρίζονται και από τους σημερινούς μοντέρνους browsers ενώ λογικά με την έλευση του IE9 θα δούμε ακόμα πιο πολλές HTML5-based εφαρμογές. Μην φοβάστε λοιπόν να την χρησιμοποιήσετε εδώ και τώρα, απλή HTML είναι άλλωστε <img src='http://www.tsevdos.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Τα υπόλοιπα τα λέμε στα σχόλια!</div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2010/09/13/html5-thoughts/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Base tag, ή αλλιώς το client-side debuging tag</title>
		<link>http://www.tsevdos.com/2010/07/26/base-tag-or-simply-the-client-side-debuging-tag/</link>
		<comments>http://www.tsevdos.com/2010/07/26/base-tag-or-simply-the-client-side-debuging-tag/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 08:04:32 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[markup]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=659</guid>
		<description><![CDATA[Είναι αρκετές οι φορές όπου κάποιος συνάδελφος ή φίλος, μου στέλνει ένα url προς κάποια σελίδα με την γνωστή ατάκα &#8211; &#8220;Γιατί δεν παίζει;&#8221;. Συνήθως η δομή της σελίδας είναι αρκετά πολύπλοκη με πολλά elements και διάφορα πραγματάκια να γίνονται εδώ και εκεί&#8230; Φυσικά το πρώτο πράγμα που ζητάω είναι πρόσβαση στα αρχεία, ωστόσο πολλές [...]]]></description>
			<content:encoded><![CDATA[<p>Είναι αρκετές οι φορές όπου κάποιος συνάδελφος ή φίλος, μου στέλνει ένα url προς κάποια σελίδα με την γνωστή ατάκα &#8211; &#8220;Γιατί δεν παίζει;&#8221;. Συνήθως η δομή της σελίδας είναι αρκετά πολύπλοκη με πολλά elements και διάφορα πραγματάκια να γίνονται εδώ και εκεί&#8230; Φυσικά το πρώτο πράγμα που ζητάω είναι πρόσβαση στα αρχεία, ωστόσο πολλές φορές αυτό δεν είναι εφικτό.</p>
<p>Έχω βρει εναλλακτική λύση όμως! Η δεύτερη καλύτερη λύση είναι η χρήση του base tag. Το μόνο που έχετε να κάνετε είναι να αντιγράψετε την markup από το site που θέλετε (copy-paste του source code), και μετά να προσθέσετε το παρακάτω tag στο <code>head</code> μέρος της markup σας.</p>
<pre name="code" class="html">
&lt;base href=&quot;http://domain.com&quot; /&gt;
</pre>
<p>Με αυτόν τον πολύ απλό τρόπο, δηλώνουμε στην markup πoιο url είναι η προεπιλογή μας για όλα τα links της σελίδας μας! Έτσι μπορούμε να δούμε και να επεξεργαστούμε την στατική σελίδα που μόλις κατεβάσαμε, με όλα τα stylesheets και javascripts να παίζουν κανονικότατα, και από εκεί και πέρα να προσθέσουμε ότι θέλουμε χρησιμοποιώντας inline CSS ή Javascript (για test/development καταστάσεις μόνο <img src='http://www.tsevdos.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). Πολύ βολικό έτσι;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2010/07/26/base-tag-or-simply-the-client-side-debuging-tag/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Γράψτε HTML5 χρησιμοποιώντας XHTML&#8230;</title>
		<link>http://www.tsevdos.com/2010/03/23/write-html5-using-xhtml/</link>
		<comments>http://www.tsevdos.com/2010/03/23/write-html5-using-xhtml/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 09:15:38 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[inspiration]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=617</guid>
		<description><![CDATA[Πολλοί είναι αυτοί που παραπονιούνται πως ενώ θέλουν να χρησιμοποιήσουν την καινούργια markup (HTML5), και όλα τα ωραία semantics που περιέχει, δυστυχώς είναι ακόμα κάπως νωρίς για μια τέτοια αλλαγή, ιδιαίτερα σε μεγάλα sites. Ευτυχώς για όλους εμάς όμως, κάποιοι άνθρωποι είναι ιδιαίτερα δημιουργικοί και βρήκαν μια πολύ εύκολη και πρακτική λύση. Χρησιμοποιώντας απλά την [...]]]></description>
			<content:encoded><![CDATA[<p>Πολλοί είναι αυτοί που παραπονιούνται πως ενώ θέλουν να χρησιμοποιήσουν  την καινούργια markup (<strong>HTML5</strong>), και όλα τα ωραία semantics που περιέχει,  δυστυχώς είναι ακόμα κάπως νωρίς για μια τέτοια αλλαγή, ιδιαίτερα σε  μεγάλα sites. Ευτυχώς για όλους εμάς όμως, κάποιοι άνθρωποι είναι  ιδιαίτερα δημιουργικοί και βρήκαν μια πολύ εύκολη και πρακτική λύση.  Χρησιμοποιώντας απλά την υπάρχον <strong>XHTML</strong> μαζί <a title="Preparing for HTML5 with Semantic Class Names" href="http://jontangerine.com/log/2008/03/preparing-for-html5-with-semantic-class-names">με κάποιες συγκεκριμένες και προκαθορισμένες κλάσεις</a>,  μπορούμε να προσφέρουμε τα semantics της <strong>HTML5</strong> στην (X)HTML μας. Το μόνο που  χρειάζεται να κάνετε, είναι να προσθέσετε στα elements σας <a title="HTML5 id/class name cheatsheet" href="http://boblet.tumblr.com/post/60552152/html5"> κάποιες κλάσεις</a> <a href="http://boblet.tumblr.com/post/60552152/html5"></a> όπως article, section, header κτλ.</p>
<p>Ακολουθώντας τους παραπάνω κανόνες λοιπόν, αν και συνεχίζουμε να  γράφουμε την παλιά, καλή και δοκιμασμένη XHTML, κερδίζουμε δύο πράγματα:  Πρώτον μαθαίνουμε να σκεφτόμαστε και να χρησιμοποιούμε την HTML5, η  οποία έχει αρκετές διαφορές και ιδιαιτερότητες από την (X)HTML. Τέλος, το  δεύτερο και πιο σημαντικό είναι πως το site μας θα είναι κατά 99% έτοιμο  (σε markup επίπεδο τουλάχιστον) όταν αποφασίσουμε να το αναβαθμίσουμε  σε πραγματική HTML5. Το μόνο που θα χρειαστεί να κάνουμε, είναι να  αντικαταστήσουμε τα παλιομοδίτικα divs με τα  καινούργια πιο semantic elements.</p>
<p>Προσωπικά θα προσπαθήσω να εισάγω αυτό τον τρόπο συγγραφής markup σε καινούργια projects, μιας και μόνο κερδισμένος μπορώ να βγω από  αυτήν την διαδικασία.  Όσοι ενδιαφέρεστε και θέλετε να ξεκινήσετε, ρίξτε μια ματιά στα παραπάνω links τα οποία περιέχουν τις πιο τεχνικές λεπτομέρειες.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2010/03/23/write-html5-using-xhtml/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Styling HTML5 elements</title>
		<link>http://www.tsevdos.com/2009/12/30/styling-html5-elements/</link>
		<comments>http://www.tsevdos.com/2009/12/30/styling-html5-elements/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 09:30:56 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[markup]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=569</guid>
		<description><![CDATA[Όσοι έχετε δοκιμάσει να παίξετε με την HTML5 θα έχετε πέσει σε διάφορες παραξενιές της. Χτες έπεσα σε μία από αυτές που μου έφαγε πολύ χρόνο, ενώ μου προκαλεσε και εντύπωση το γεγονός πως πολλά HTML5 άρθρα και posts δεν αναφέροντε στο συγκεκριμένο πρόβλημα όσο ξεκάθαρα θα έπρεπε (μέχρι και το Google με απογοήτευσε στις [...]]]></description>
			<content:encoded><![CDATA[<p>Όσοι έχετε δοκιμάσει να παίξετε με την HTML5 θα έχετε πέσει σε διάφορες παραξενιές της. Χτες έπεσα σε μία από αυτές που μου έφαγε πολύ χρόνο, ενώ μου προκαλεσε και εντύπωση το γεγονός πως πολλά HTML5 άρθρα και posts δεν αναφέροντε στο συγκεκριμένο πρόβλημα όσο ξεκάθαρα θα έπρεπε (μέχρι και το Google με απογοήτευσε στις αναζητήσεις μου).</p>
<p>Το πρόβλημα που είχα, ήταν πως ενώ η HTML5 markup μου ήταν σωστή (και valid), elements όπως header, section, footer και aside, <strong>δεν</strong> καταλάβαιναν τους styling κανόνες που τους έβαζα! Οι μοντέρνοι και HTML5-ready browsers έδειχναν να μην κάνουν σωστό rendering τα καινούργια elements (ο Firefox και ο Chrome τουλάχιστον, αν και έχω την αίσθηση πως και οι υπόλοιποι θα έχουν ανάλογα προβλήματα). Η λύση τελικά είναι πανεύκολη, απλά δίνουμε στα καινούργια elements <code>display:block</code>.</p>
<pre name="code" class="css">
header, section, footer, aside, nav, article, figure { display: block; }
</pre>
<p>Από ότι κατάλαβα για κάποιο περίεργο λόγο, οι browsers κάνουν τα παραπάνω στοιχεία rendering ως inline elements, οπότε με τον παραπάνω απλό κανόνα καθαρίσαμε. Μπορεί έχασα ένα ολόκληρο απόγευμα, ωστόσο πιστεύω πως άξιζε τον χρόνο. Άλωστε μόνο έτσι μαθαίνεις&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/12/30/styling-html5-elements/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Εύκολα στην υλοποίηση accessibility tips : Χρησιμοποιήστε (σωστά) labels στις  φόρμες σας.</title>
		<link>http://www.tsevdos.com/2009/11/17/easy-to-implement-accessibility-tips-use-correct-labels/</link>
		<comments>http://www.tsevdos.com/2009/11/17/easy-to-implement-accessibility-tips-use-correct-labels/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 08:22:08 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[accessibility and usability]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[φόρμες]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=526</guid>
		<description><![CDATA[Ένα πανεύκολο και πολύ απλό στην υλοποίηση accessibility tip που δυστυχώς δεν το συντάω συχνά σε ελληνικά site. Τα πράγματα είναι εξαιρετικά απλά σε αυτό το θέμα. Ο μοναδικός σκοπός του label (ετικέτα) element είναι να &#8220;συνδέεται&#8221; και να περιγράφει όσο καλύτερα μπορεί ένα και μοναδικό form control, όπως για παράδειγμα checkbox, radio button, text input κτλ. [...]]]></description>
			<content:encoded><![CDATA[<p>Ένα πανεύκολο και πολύ απλό στην υλοποίηση accessibility tip που δυστυχώς δεν το συντάω συχνά σε ελληνικά site. Τα πράγματα είναι εξαιρετικά απλά σε αυτό το θέμα. Ο μοναδικός σκοπός του label (ετικέτα) element είναι να &#8220;συνδέεται&#8221; και να περιγράφει όσο καλύτερα μπορεί ένα και μοναδικό form control, όπως για παράδειγμα checkbox, radio button, text input κτλ. (εκτός από τα buttons φυσικά). Αντιθέτως, κάθε form control μπορεί &#8220;συνδεθεί&#8221; με πολλά label elements, έτσι ώστε να παρουσιάσει μηνύματα βοήθειας, λάθους κτλ.  Οι δύο παρακάτω τρόποι κάνουν σωστή χρήση του label element. Προσωπικά προτιμώ τον πρώτο γιατί σου αφήνει περισσότερα περιθώρια ελευθερίας τόσο σε markup όσο και σε styling επίπεδο&#8230;</p>
<pre name="code" class="html">
&lt;label for=&quot;name&quot;&gt;Όνομα:&lt;/label&gt;
&lt;input id=&quot;name&quot; name=&quot;name&quot; type=&quot;text&quot; /&gt;

&lt;label&gt;Όνομα:
&lt;input id=&quot;name&quot; name=&quot;name&quot; type=&quot;text&quot; /&gt;
&lt;/label&gt;
</pre>
<p>Τα accessibility οφέλη που παίρνουμε είναι πως τα παραπάνω labels ενεργοποιούν κατευθείαν τα controls που περιγράφουν, κάτι πολύ σημαντικό για την ευκολότερη συμπλήρωση φορμών. Πολλά controls είναι μικρά, δυσδιάκριτα και δύσκολα στο να επιλεχθούν (ειδικά τα radio buttons), οπότε επιλέγοντας το κείμενο της ετικέτας μας (label) επιλέγουμε αυτόματα και το ανάλογο control. Τέλος ας μην ξεχνάμε πως βοηθάμε πολύ και τους χρήστες text browser και screen readers&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/11/17/easy-to-implement-accessibility-tips-use-correct-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Εύκολα στην υλοποίηση accessibility tips : Χρησιμοποιήστε option groups στις φόρμες σας.</title>
		<link>http://www.tsevdos.com/2009/10/12/easy-to-implement-accessibility-tips-use-option-groups-to-forms/</link>
		<comments>http://www.tsevdos.com/2009/10/12/easy-to-implement-accessibility-tips-use-option-groups-to-forms/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 10:12:14 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[accessibility and usability]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[option group]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[φόρμες]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=508</guid>
		<description><![CDATA[Ένα πανεύκολο tip που θα ωφελήσει όλες τις κατηγορίες χρηστών σας και θα κάνει τις φόρμες σας ομορφότερες αλλά και ευκολότερες στο να συμπληρωθούν. Εάν λοιπόν έχετε κάποιο select element  με πολλά option elements, καλό θα ήταν να τα κατηγοριοποιήσετε χρησιμοποιώντας τα option groups. Η χρήση τους είναι εξαιρετικά απλή, απλά ονομάζεται το group δίνοντας [...]]]></description>
			<content:encoded><![CDATA[<p>Ένα πανεύκολο tip που θα ωφελήσει όλες τις κατηγορίες χρηστών σας και θα κάνει τις φόρμες σας ομορφότερες αλλά και ευκολότερες στο να συμπληρωθούν. Εάν λοιπόν έχετε κάποιο select element  με πολλά option elements, καλό θα ήταν να τα κατηγοριοποιήσετε χρησιμοποιώντας τα <strong>option groups</strong>.</p>
<p>Η χρήση τους είναι εξαιρετικά απλή, απλά ονομάζεται το group δίνοντας του ένα όνομα (label) και στην συνέχεια του προσθέτεται τα option elements που θέλετε. Ρίξτε μια ματιά παρακάτω και προσπαθήστε να το χρησιμοποιήσετε την επόμενη φορά που θα έχετε μια λίστα με πολλές επιλογές&#8230;</p>
<pre name="code" class="html">
&lt;label for=&quot;bestepisode&quot;&gt;Διάλεξε το καλύτερο επεισόδιο τριλογίας!&lt;/label&gt;
&lt;select name=&quot;bestepisode&quot; id=&quot;bestepisode&quot;&gt;
&lt;optgroup label=&quot;Star Wars&quot;&gt;
&lt;option value=&quot;starwars4&quot;&gt;The Star Wars&lt;/option&gt;
&lt;option value=&quot;starwars5&quot;&gt;The Empire Strikes Back&lt;/option&gt;
&lt;option value=&quot;starwars6&quot;&gt;Return of the Jedi&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;Indiana Jones&quot;&gt;
&lt;option value=&quot;ij1&quot;&gt;Raiders of the Lost Ark&lt;/option&gt;
&lt;option value=&quot;ij2&quot;&gt;The Temple of Doom&lt;/option&gt;
&lt;option value=&quot;ij3&quot;&gt;The Last Crusade&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;Matrix&quot;&gt;
&lt;option value=&quot;matrix1&quot;&gt;The Matrix&lt;/option&gt;
&lt;option value=&quot;matrix2&quot;&gt;The Matrix Reloaded&lt;/option&gt;
&lt;option value=&quot;matrix3&quot;&gt;The Matrix Revolutions&lt;/option&gt;
&lt;/optgroup&gt;
&lt;/select&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/10/12/easy-to-implement-accessibility-tips-use-option-groups-to-forms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kαλοπιστικά γραφικά vs γραφικά περιεχομένου</title>
		<link>http://www.tsevdos.com/2009/09/23/presentational-graphics-vs-content-graphics/</link>
		<comments>http://www.tsevdos.com/2009/09/23/presentational-graphics-vs-content-graphics/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 09:47:59 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[accessibility and usability]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=498</guid>
		<description><![CDATA[Σε αυτό το μικρό postακι θα προσπαθήσω να εξηγήσω την διαφορά των συγκεκριμένων γραφικών/images καθώς και πως πρέπει να εμφανίζονται στην markup μας (με τι attributes κτλ.). Για κάποιον λόγο αυτή η απλή διαφορά δεν γίνεται αμέσως αντιληπτή, ιδιαίτερα στους  νέους του χώρου, οπότε ας ξεκαθαρίσουμε λίγο τα πράγματα. Η λύση είναι απλούστατη και θέμα θέμα [...]]]></description>
			<content:encoded><![CDATA[<p>Σε αυτό το μικρό postακι θα προσπαθήσω να εξηγήσω την διαφορά των συγκεκριμένων γραφικών/images καθώς και πως πρέπει να εμφανίζονται στην markup μας (με τι attributes κτλ.). Για κάποιον λόγο αυτή η απλή διαφορά δεν γίνεται αμέσως αντιληπτή, ιδιαίτερα στους  νέους του χώρου, οπότε ας ξεκαθαρίσουμε λίγο τα πράγματα.</p>
<p>Η λύση είναι απλούστατη και θέμα θέμα απλής λογικής. Όποιο γραφικό είναι <strong>μέρος του περιεχομένου</strong>, όπως πχ. μια φωτογραφία, ένα διάγραμμα, κτλ., πρέπει να παρουσιάζεται με το HTML img tag και να περιέχει &#8211; εκτός φυσικά από το src attribute &#8211; και ένα <strong>περιγραφικό alt attribute</strong>. Αντιθέτως τα γραφικά που <strong>δεν είναι μέρος του περιεχομένου</strong>, <strong>δεν</strong> θα πρέπει να υπάρχουν καθόλου στην markup μας (ως img tags)! Τα συγκεκριμένα γραφικά θα πρέπει να παρουσιάζονται είτε μέσω CSS, είτε μέσω DOM injection χρησιμοποιώντας κάποια Javascript library. Εάν φυσικά τα πράγματα δεν γίνονται αλλιώς (δεν μπορούμε να κάνουμε και μαγικά σε μερικές περιπτώσεις), τότε μπορούμε να προσθέσουμε τα συγκεκριμένα γραφικά με img tags τα οποία θα έχουν κενή την alt attribute τους (<code>&lt;img src="logo.jpg" alt="" /&gt;</code>). Εύκολο έτσι;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/09/23/presentational-graphics-vs-content-graphics/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Εύκολα στην υλοποίηση accessibility tips : Οδηγείστε τους χρήστες screen readers / text browsers κατευθείαν στο περιεχόμενο ή όπου αλλού θέλετε.</title>
		<link>http://www.tsevdos.com/2009/08/23/easy-to-implement-accessibility-tips-skip-over-navigation-links/</link>
		<comments>http://www.tsevdos.com/2009/08/23/easy-to-implement-accessibility-tips-skip-over-navigation-links/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 06:45:51 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[accessibility and usability]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[screen readers]]></category>
		<category><![CDATA[text browsers]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=483</guid>
		<description><![CDATA[Ένα πανεύκολο στην υλοποίηση accessibility feature, που θα βοηθήσει αφάνταστα τους screen readers και τους χρήστες που χρησιμοποιούν text-browsers. Το μόνο που πρέπει να κάνετε είναι στην αρχή κάθε document, να προσθέσετε τα links που θα οδηγούν τον χρήστη κατευθείαν στο σημείο που έχετε ορίσει. Έτσι για παράδειγμα, σε αυτό το site, το πρώτο πράγμα [...]]]></description>
			<content:encoded><![CDATA[<p>Ένα πανεύκολο στην υλοποίηση accessibility feature, που θα βοηθήσει αφάνταστα τους screen readers και τους χρήστες που χρησιμοποιούν text-browsers. Το μόνο που πρέπει να κάνετε είναι στην αρχή κάθε document, να προσθέσετε τα links που θα οδηγούν τον χρήστη κατευθείαν στο σημείο που έχετε ορίσει. Έτσι για παράδειγμα, σε αυτό το site, το πρώτο πράγμα που &#8220;εμφανίζεται&#8221; στην markup μου είναι μια λίστα με αυτά τα links (μέσα σε ένα div).</p>
<pre name="code" class="html">
&lt;div id=&quot;accessibilitylinks&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;Go to content&quot; href=&quot;#content&quot;&gt;Skip to content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Go to main navigation&quot; href=&quot;#navigation&quot;&gt;Skip to main navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Go to Search form&quot; href=&quot;#search&quot;&gt;Skip to Search form&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>Με τον παραπάνω κώδικα, οι χρήστες screen reader μπορούν πολύ εύκολα &#8211; στην κυριολεξία με ένα κλικ &#8211; να μετακινηθούν στο περιεχόμενο της σελίδας μου, στο navigation ή στην search form. Φυσικά μπορούμε να εφαρμόσουμε και όλους τους γνωστούς styling κανόνες στην λίστα έτσι ώστε να την διαμορφώσουμε όπως θέλουμε. Καλό θα είναι εάν θέλουμε να την κρύψουμε, να μην χρησιμοποιήσουμε τον κανόνα <code>display:none</code> αλλά να την κρύψουμε με κάποιο άλλο τρόπο (πχ. <code>absolute position</code>), και αυτό γιατί πολλοί screen readers/text browsers δεν διαβάζουν τα elements με <code>display:none</code>. Για παράδειγμα, εγώ κρύβω την συγκεκριμένη λίστα links με τον παρακάτω κώδικα:</p>
<pre name="code" class="css">
#accessibilitylinks {
position:absolute;
top:-1000px;
}
</pre>
<p>Είναι πραγματικά το πιο εύκολο αλλά και πρακτικό usability χαρακτηριστικό που μπορείτε να έχετε στην σελίδα σας!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/08/23/easy-to-implement-accessibility-tips-skip-over-navigation-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Εύκολα στην υλοποίηση accessibility tips : Extra navigation για text browsers / screen readers (και όχι μόνο)</title>
		<link>http://www.tsevdos.com/2009/07/30/easy-to-implement-accessibility-tips-extra-navigation-for-text-browsers-and-screen-readers/</link>
		<comments>http://www.tsevdos.com/2009/07/30/easy-to-implement-accessibility-tips-extra-navigation-for-text-browsers-and-screen-readers/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 11:29:25 +0000</pubDate>
		<dc:creator>John Tsevdos</dc:creator>
				<category><![CDATA[accessibility and usability]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[screen readers]]></category>
		<category><![CDATA[text browsers]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.tsevdos.com/?p=342</guid>
		<description><![CDATA[Η αλήθεια είναι πως όσο καλός και ενημερωμένος να είσαι στο χώρο του web, πάντα υπάρχει κάτι καινούργιο να μάθεις. Επειδή λοιπόν και εγώ πρόσφατα (πριν από έναν χρόνο για την ακρίβεια, αλλά ας μείνουμε στο πρόσφατα), ανακάλυψα μερικά ενδιαφέροντα και πολύ εύκολα στην υλοποίηση accessibility tips, θα τα παρουσιάσω σε αυτή την μίνι σειρά [...]]]></description>
			<content:encoded><![CDATA[<p>Η αλήθεια είναι πως όσο καλός και ενημερωμένος να είσαι στο χώρο του web, πάντα υπάρχει κάτι καινούργιο να μάθεις. Επειδή λοιπόν και εγώ πρόσφατα (πριν από έναν χρόνο για την ακρίβεια, αλλά ας μείνουμε στο πρόσφατα), ανακάλυψα μερικά ενδιαφέροντα και πολύ εύκολα στην υλοποίηση accessibility tips, θα τα παρουσιάσω σε αυτή την μίνι σειρά post.</p>
<p>Οι περισσότεροι γνωρίζετε το <a title="Link element" href="http://www.w3.org/TR/REC-html40/struct/links.html#h-12.3">link element</a> που βάζουμε στο head κομμάτι του κώδικα μας, και δηλώνει πως το εν λόγω document έχει κάποια σχέση (relationship &#8211; rel) με κάποιο άλλο document ή πηγή. Ο πιο κλασικός τρόπος χρήσης του είναι η εισαγωγή κάποιου εξωτερικού stylesheet (CSS), όπως για παράδειγμα :</p>
<pre name="code" class="html">
&lt;link rel=&quot;stylesheet&quot; href=&quot;default.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
</pre>
<p>Αυτό που δεν γνωρίζουν οι περισσότεροι, είναι πως με το εν λόγω element μπορούμε να προσφέρουμε επιπλέον navigation χαρακτηριστικά στους χρήστες screen readers, text browsers αλλά και σε κάποιους κανονικούς browsers (όπως Opera) οι οποίοι αρχίζουν να υποστηρίζουν και αυτήν την ιδιότητα του link element. Μερικά παραδείγματα και τρόπους χρήσης του μπορείτε να δείτε παρακάτω :</p>
<pre name="code" class="html">
&lt;link rel=&quot;home&quot; title=&quot;Home&quot; href=&quot;http://www.tsevdos.com/&quot; /&gt;
&lt;link rel=&quot;prev&quot; title=&quot;Title of previous page&quot; href=&quot;http://www.tsevdos.com/&lt;/code&gt;&lt;code&gt;previous-page&quot; /&gt;
&lt;link rel=&quot;next&quot; title=&quot;Title of next page&quot; href=&quot;http://www.tsevdos.com/&lt;/code&gt;&lt;code&gt;next-page&quot; /&gt;
</pre>
<p>Όπως βλέπεται η χρήση του είναι πανεύκολη και τα πλεονεκτήματα αρκετά, έτσι ώστε να το χρησιμοποιήσουμε.</p>
<p>Τέλος το συγκεκριμένο tag μπορεί να χρησιμοποιηθεί και για άλλους σκοπούς, όπως για παράδειγμα στο να <a title="Links and search engines" href="http://www.w3.org/TR/REC-html40/struct/links.html#h-12.3.3">ενημερώσει τις μηχανές αναζήτησης εάν το περιεχόμενο της σελίδας μας υπάρχει και σε άλλες γλώσσες ή σε άλλη μορφή</a>. Παρακάτω μπορείτε να βρείτε τα ανάλογα παραδείγματα, ωστόσο δεν θα σταθώ πολύ σε αυτά μιας και θέλω στο συγκεκριμένο post να συγκεντρωθώ κυρίως στο θέμα προσβασημότητας/accessibility. Όπως και να έχει ρίξτε οπωσδήποτε μια πιο λεπτομερή ματιά στο <a title="Link element" href="http://www.w3.org/TR/REC-html40/struct/links.html#h-12.3">link element</a> και δεν θα χάσετε.</p>
<pre name="code" class="html">
&lt;link lang=&quot;fr&quot; title=&quot;La documentation en Fran&amp;ccedil;ais&quot; type=&quot;text/html&quot; rel=&quot;alternate&quot; hreflang=&quot;fr&quot; href=&quot;http://someplace.com/manual/french.html&quot;&gt;
&lt;link media=&quot;print&quot; title=&quot;The manual in postscript&quot; type=&quot;application/postscript&quot; rel=&quot;alternate&quot; href=&quot;http://someplace.com/manual/postscript.ps&quot;&gt;
&lt;link rel=&quot;Start&quot; title=&quot;The first page of the manual&quot; type=&quot;text/html&quot; href=&quot;http://someplace.com/manual/start.html&quot;&gt;
</pre>
<p>Μείνετε συντονισμένοι και για τα επόμενα!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsevdos.com/2009/07/30/easy-to-implement-accessibility-tips-extra-navigation-for-text-browsers-and-screen-readers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

