<?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>Web design blog &#187; CorfuGmr</title>
	<atom:link href="http://www.web-resources.eu/archives/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.web-resources.eu</link>
	<description>Ενημερωθείτε για τις εξελίξεις στο web, για εργαλεία, δωρεάν πηγές και άλλα</description>
	<lastBuildDate>Fri, 03 Feb 2012 15:32:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Σταματήστε την ψήφιση του ACTA</title>
		<link>http://www.web-resources.eu/archives/stop-acta</link>
		<comments>http://www.web-resources.eu/archives/stop-acta#comments</comments>
		<pubDate>Fri, 03 Feb 2012 15:32:04 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Γενικά]]></category>
		<category><![CDATA[ACTA]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[διαδίκτυο]]></category>
		<category><![CDATA[νόμος]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3394</guid>
		<description><![CDATA[Σήμερα, βρήκα λίγο χρόνο και διάβασα κάποια πράγματα γύρο από το ACTA. Ότι και να πω θα είναι πολύ λίγο, για το λόγο αυτό παραθέτω ένα βίντεο που περιγράφει τα όσα το ACTA προβλέπει. Το κείμενο που ακολουθεί είναι το σύνολο των υπό-τίτλων: Αυτό το βίντεο μπορεί να μην απεικονίζει τις τελευταίες αλλαγές στο νομοσχέδιο [...]]]></description>
			<content:encoded><![CDATA[<p>Σήμερα, βρήκα λίγο χρόνο και διάβασα κάποια πράγματα γύρο από το ACTA. Ότι και να πω θα είναι πολύ λίγο, για το λόγο αυτό παραθέτω ένα βίντεο που περιγράφει τα όσα το ACTA προβλέπει.<span id="more-3394"></span></p>
<p><iframe width="630" height="354" src="http://www.youtube.com/embed/63JyXmu0fqM?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Το κείμενο που ακολουθεί είναι το σύνολο των υπό-τίτλων:</p>
<p>Αυτό το βίντεο μπορεί να μην απεικονίζει τις τελευταίες αλλαγές στο νομοσχέδιο του ACTA.</p>
<p>Παρόλα αυτά, θα σας δώσει την κεντρική ιδέα για το ACTA, περί τίνος πρόκειται και γιατί το διαδίκτυο θα πρέπει να πολεμήσει.</p>
<p style="text-align: right;">&#8211; Ανώνυμοι</p>
<p style="text-align: left;">ACTA &#8211; «Σύμφωνο Ενάντια στην ανταλλαγή πλαστών προϊόντων». Το όνομα ACTA είναι παραπλανητικό, η αρχική ιδέα του ACTA είναι να προστατεύσει διεθνώς την πνευματική ιδιοκτησία.</p>
<p style="text-align: left;">Υποτίθεται ότι βοηθάει στην αποτροπή πλαστογράφησης προϊόντων και Trademarks (σημάτων κατατεθέν), όπως «μαϊμού» αντίγραφα ακριβών αντικειμένων.</p>
<p style="text-align: left;">Προωθεί τη χρήση των Trademarks, χρησιμοποιώντας ας πούμε τη μάρκα μιας παγκοσμίου φήμης αυτοκινητοβιομηχανίας &#8230; σε ταμπόν, για παράδειγμα δημιουργώντας το «General Motors ταμπόν».</p>
<p style="text-align: left;">Θα εξασφαλίσει τις επενδύσεις για την έρευνα για την ανάπτυξη προϊόντων, προστατεύοντας ιατρικές πατέντες ή φαρμακευτικά προϊόντα. Επίσης υποτίθεται ότι υποστηρίζει καλλιτέχνες και δημοσιογράφους επιτρέποντας τους την παραγωγή υψηλής ποιότητας δουλειάς, εναρμονισμένη με τους διεθνείς νόμους του copyright.</p>
<p style="text-align: left;">Ακούγεται ωραίο, έτσι δεν είναι;</p>
<p style="text-align: left;">Αλλά υπάρχει μια περιπλοκή!</p>
<p style="text-align: left;">Σύμφωνα με το αγγλικό λεξικό της Οξφόρδης η πλαστογραφία ορίζεται ως : «μια δόλια/πλαστή απομίμηση από κάτι».</p>
<p style="text-align: left;">Όταν όμως αντιγράφεται ένα αρχείο στο διαδίκτυο, είναι ακριβώς το ίδιο με το πρωτότυπο αρχείο, δεν είναι απομίμηση. Και δεν έχει κλαπεί, αφού το αρχικό/πρωτότυπο δεν έχει αφαιρεθεί. Η πληροφορία, απλώς μοιράζεται χωρίς χρέωση. Άρα η πλαστογραφία δεν έχει καμία σχέση με αυτό.</p>
<p style="text-align: left;">Ας εξηγήσουμε</p>
<p style="text-align: left;">Η πνευματική ιδιοκτησία στην πραγματικότητα, δεν ορίζεται ρητά μέσα στο ACTA. Μπορεί να εννοεί είτε trademarks, είτε οποιαδήποτε ιδέα ή πληροφορία, που σημαίνει ότι μπορεί να αποκτήσει copyright, να περιοριστεί ή να ποινικοποιηθεί. Αυτό όμως θα έχει μια τρομερή επίδραση στο διαδίκτυο, με τη μορφή που το έχουμε γνωρίσει μέχρι τώρα.</p>
<p style="text-align: left;">Η διατύπωση του νομοσχεδίου ACTA καλύπτει μια τεράστια ποικιλία θεμάτων και είναι πολύ πολύπλοκη και δύσκολο να παρασταθεί.</p>
<p style="text-align: left;">Οπότε ας εξηγήσουμε τι θα συμβεί στο διαδίκτυο, με μια υποθετική αναλογία του πραγματικού κόσμου.</p>
<p style="text-align: left;">Φανταστείτε ότι πληρώνετε για να κάνετε ένα μάθημα μαγειρικής. Κατά τη διάρκεια αυτού του μαθήματος, μαθαίνετε να μαγειρεύετε ένα εξαιρετικά νόστιμο τηγανητό κοτόπουλο. Έπειτα επιστρέφετε σπίτι και διδάσκετε τη συνταγή στη γυναίκα σας. Και εδώ ακριβώς είναι η παγίδα.</p>
<p style="text-align: left;">Σύμφωνα με το ACTA και οι δυο τώρα θεωρείστε εγκληματίες, εφ&#8217; όσον μοιραστήκατε αυτή την πληροφορία δωρεάν, ενώ μόνο εσείς πληρώσατε για να τη μάθετε.</p>
<p style="text-align: left;">Οι ρυθμίσεις του νομοσχεδίου ACTA είναι ξεκάθαρες. Όταν σας υποπτεύονται ότι μοιράζεστε πληροφορίες που καλύπτονται από copyright, ανάλογα με τη χώρα που κατοικείτε, τότε η πρόσβαση σας σε οποιουδήποτε είδους μαθήματα θα μπλοκαριστεί, θα πληρώσετε πρόστιμο ή θα μπείτε κατευθείαν στη φυλακή.</p>
<p style="text-align: left;">Μα φυσικά, κανένας δεν θα ανακάλυπτε ότι μοιραστήκατε τη γνώση του μυστικού του τηγανιτού κοτόπουλου στον ιδιωτικό σας χώρο, στο σπίτι σας. Και έχετε δίκιο! Με βάση τον ισχύοντα νόμο, κανένας δε θα μπορούσε να το γνωρίζει.</p>
<p style="text-align: left;">Αλλά χάρη σε αυτά τα συμφωνητικά, διαμέσου εξονυχιστικής επιτήρησης, όλες οι επικοινωνίες σας θα παρακολουθούνται, κι όχι μόνο οι δικές σας, αλλά και της οικογένειάς σας, των φίλων σας, όλες θα παρακολουθούνται «για κάθε ενδεχόμενο».</p>
<p style="text-align: left;">Μα δε χρειάζεστε ιδιωτικότητα, πολιτικά δικαιώματα ή πολιτικές ελευθερίες, επειδή δεν έχετε κάτι να κρύψετε &#8230;</p>
<p style="text-align: left;">Κρύβετε κάτι;</p>
<p style="text-align: left;">Τώρα που γνωρίζεται την βασική αρχή, ας δούμε πως αυτό μπορεί να εφαρμοστεί στο διαδίκτυο όταν τεθεί σε ισχύ το ACTA.</p>
<p style="text-align: left;">Μπορείτε να φανταστείτε τη σύνδεση σας στο διαδίκτυο σαν ένα ιμάντα ο οποίος κινείται σε δυο κατευθύνσεις. Πάνω στον ιμάντα βρίσκονται δεδομένα τα οποία είτε μπαίνουν είτε βγαίνουν από τον υπολογιστή σας.</p>
<p style="text-align: left;">Υπό τη νομοθεσία του ACTA, οι ISP, οι εταιρείες που πληρώνετε για να έχετε πρόσβαση στο διαδίκτυο, θα αναγκαστούν να ανοίγουν και να επιθεωρούν κάθε πακέτο δεδομένων που στέλνετε και λαμβάνετε, προς έλεγχο πληροφορίας, αν προστατεύεται από copyright.</p>
<p style="text-align: left;">Αν στέλνετε ή λαμβάνετε πληροφορίες που έχουν copyright, μπορεί να αποσυνδεθείτε από το διαδίκτυο ή να αντιμετωπίσετε ποινικές διώξεις. Αυτό σημαίνει ότι αν πχ στέλνετε ένα mp3 αρχείο σε κάποιο φίλο, μέσα από κάποια υπηρεσία συνομιλιών (chat), ένα ανεβάσετε ένα βίντεο από ένα πάρτι στο οποίο ακούγεται μουσική με copyright, ή αν παραθέσετε ένα άρθρο εφημερίδας, το οποίο προστατεύεται από copyright, μέσα σε κάποιο e-mail σας, χαθήκατε ! Είστε παράνομος! Είναι τόσο απλό.</p>
<p style="text-align: left;">Και σαν να μην έφτανε αυτό, οι πληροφορίες που παραθέσατε για το άρθρο της εφημερίδας στο e-mail σας, θα σταλεί στον εκδότη, και με βάση τις αξιώσεις του, μπορεί να πληρώσετε πρόστιμο ή να πάτε φυλακή.</p>
<p style="text-align: left;">Οι εταιρείες ISP θα υποχρεωθούν επιπλέον, να ελέγχουν συνεχώς ότι καμία πληροφορία ή κανένας σύνδεσμος που οδηγεί σε πληροφορία που προστατεύεται με copyright δε βρίσκεται πουθενά στους «εξυπηρετητές» τους.</p>
<p style="text-align: left;">Αυτό θα είναι «μοιραίο» για ιστοσελίδες που κρατούν οποιουδήποτε είδους επαναχρησιμοποιημένο  ή παραγόμενο περιεχόμενο, όπως μουσική, εικόνες ή βίντεο.</p>
<p style="text-align: left;">Πως θα μπορούσε το YouTube ή το Twitter να λειτουργήσει υπό ένα τέτοιο νόμο;</p>
<p style="text-align: left;">Συνεπώς το διαδίκτυο όπως γνωρίζουμε βρίσκεται στο χείλος του γκρεμού.</p>
<p style="text-align: left;">Τουλάχιστον, θα πιστεύατε ότι τα λεφτά που θα κερδηθούν από αυτές τις μηνύσεις θα ωφελήσουν τους δημιουργικούς ανθρώπους, αλλά οι μουσικοί, οι συγγραφείς, οι κινηματογραφιστές, οι δημοσιογράφοι, οι μηχανικοί λογισμικού και οι ερευνητές επίσης χάνουν, αφού πρέπει να υπακούν στους ίδιους κανόνες.</p>
<p style="text-align: left;">Οι προστατευόμενες ιδέες πλέον δεν μπορούν να επαναχρησιμοποιηθούν, να τελειοποιηθούν ή αναπτυχθούν περισσότερο. Ακόμα και μέρη προτάσεων μπορούν να προστατεύουν και να τεθούν υπό περιορισμό βάση copyright.</p>
<p style="text-align: left;">Το συνολικό εγχείρημα επωφελεί μονάχα ένα μικρό μέρος της βιομηχανίας, τη λεγόμενη «μαφία περιεχομένου», εκδοτικές εταιρείες μίντια, όπως είναι η RIAA και η MPAA, οι οποίες εδώ και πολύ καιρό προσπαθούν να «λύσουν το πρόβλημα του διαδικτύου» που απειλεί τα απαρχαιωμένα επιχειρηματικά μοντέλα.</p>
<p style="text-align: left;">Το ACTA είναι το αποτέλεσμα των παρασκηνιακών πιέσεων τους στις κυβερνήσεις που λαμβάνουν μέρος στις διαπραγματεύσεις. Οι τελευταίες «διαρροές» σημειώνουν ότι κάθε τεχνολογία που χρησιμοποιείται για να παρακάμψει κάποιος τους περιορισμούς μπλοκαρίσματος, θα κατασταθεί επίσης παράνομη.  Και το χειρότερο; Όλα αυτά γίνονται στα κρυφά. Και αν είστε Ευρωπαίος πολίτης, όλα αυτά γίνονται ακόμη και από ανθρώπους που δεν έχουν καν εκλεγεί από το λαό.</p>
<p style="text-align: left;">Θα έχετε δει ήδη ότι αυτό επικρατεί στο YouTube, κάποια βίντεο δεν είναι διαθέσιμα, σε ορισμένες γεωγραφικές περιοχές.</p>
<p style="text-align: left;">Αυτή η εμμονή για την προστασία αντιγραφής είναι επίσης ένα εξαιρετικό εργαλείο για την καταστολή της πληροφορίας. Μόλις όλα τα διαδικτυακά φίλτρα και οι τεχνικές μπλοκαρίσματος τεθούν στη θέση τους, πρακτικά όλες οι πληροφορίες οι οποίες προστατεύονται από copyright, μπορούν να κατασταλλούν.</p>
<p style="text-align: left;">Ίσως ένα μπλόγκ που ασκεί έντονη κριτική ή ένας λογαριασμός του twitter ή ένα βίντεο που φτιάξατε για στημένες εκλογές ή για περιβαλλοντικές καταστροφές, ή ακόμα και φωτογραφίες των γατιών σας. Εντάξει, ίσως όχι οι φωτογραφίες των γατιών σας, εκτός και αν ζωγραφίσετε στο τρίχωμά τους το σήμα της Coca Cola.</p>
<p style="text-align: left;">Αυτό μπορεί να μοιάζει εξωπραγματικό για κάποιον ακόμα που έχει μια στοιχειώδη γνώση για το πως λειτουργεί το διαδίκτυο, αλλά θυμηθείτε, ότι αυτοί που δουλεύουν στο νομοσχέδιο ίσως  και αυτοί να μην έχουν ιδέα για το πως δουλεύει το διαδίκτυο, και από τη στιγμή που θα υπογραφεί η συμφωνία, πρέπει να εφαρμοστούν οι δικοί τους κανονισμοί.</p>
<p style="text-align: left;">Οι συνέπειες που θα αντιμετωπίσουμε είναι : λογοκρισία στο διαδίκτυο, περιορισμός στην ελευθερία έκφρασης, απώλεια της ουδετερότητας του δικτύου εξαιτίας περιορισμού συγκεκριμένων μερών του, πλήρης επιτήρηση όσο είστε σε σύνδεση όλης της δραστηριότητας σας, απώλεια της ελευθερίας και περιορισμός των πολιτικών δικαιωμάτων, τιμωρίες όπως είναι η απώλεια της διαδικτυακής πρόσβασης, και τι θα κερδίσουμε; Τίποτα !</p>
<p style="text-align: left;">Η ώρα για να δράσουμε υπέρ του διαδικτύου είναι τώρα ! Ψάξτε, γκουκλάρετε τι είναι το ACTA, φορτώστε τα tweets σας και τα photoshops! Και ας γίνει γνωστό ότι κανένας δεν τα βάζει με το διαδίκτυο.  Και μεταφέρετέ το στους δρόμους ! Σταματήστε το (μυθικό τέρας) Κράκεν !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/stop-acta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Τι είναι το Cloud Hosting</title>
		<link>http://www.web-resources.eu/archives/what-is-the-cloud-hosting</link>
		<comments>http://www.web-resources.eu/archives/what-is-the-cloud-hosting#comments</comments>
		<pubDate>Fri, 23 Dec 2011 09:01:12 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Cloud Hosting]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[Φιλοξενία]]></category>
		<category><![CDATA[φιλοξενία ιστοσελίδας]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3383</guid>
		<description><![CDATA[Μπορεί να το γνωρίζεται, μπορεί και όχι, αλλά ήδη πολλοί από εμάς σε καθημερινή βάση χρησιμοποιούμε το cloud hosting. Αν για παράδειγμα χρησιμοποιείτε το GMail για την ηλεκτρονική σας αλληλογραφία, ή ανεβάζεται τις φωτογραφίες σας στο Flickr, τότε χρησιμοποιείτε δυο δημοφιλή υπηρεσίες που είναι πάνω σε Cloud Hosting. Με το Cloud Hosting σιγά σιγά αποχαιρετούμε την παλιά ιδέα [...]]]></description>
			<content:encoded><![CDATA[<p>Μπορεί να το γνωρίζεται, μπορεί και όχι, αλλά ήδη πολλοί από εμάς σε καθημερινή βάση χρησιμοποιούμε το cloud hosting. Αν για παράδειγμα χρησιμοποιείτε το GMail για την ηλεκτρονική σας αλληλογραφία, ή ανεβάζεται τις φωτογραφίες σας στο Flickr, τότε χρησιμοποιείτε δυο δημοφιλή υπηρεσίες που είναι πάνω σε Cloud Hosting.<span id="more-3383"></span></p>
<p>Με το Cloud Hosting σιγά σιγά αποχαιρετούμε την παλιά ιδέα του Web Hosting, όπου ενοικιάζαμε ένα Server, ή χώρο σε ένα Shared Server. Στη θέση τους, το Cloud Hosting μας παρέχει ομαδοποίηση πολλών servers. Έτσι αντί να χρησιμοποιούμε τους πόρους από ένα και μόνο Server, μπορείτε τώρα να έχετε πρόσβαση στους πόρους περισσότερων από ένα Servers, οι οποίοι είναι συνδεδεμένοι μεταξύ τους μέσω του visualization.</p>
<h2>Ένα παράδειγμα χρήσης του Cloud Hosting</h2>
<p>Λίγο πολύ, όλοι θα έχουμε παρατηρήσει το φαινόμενο μια ιστοσελίδα να καθυστερεί να ανταποκριθεί γιατί είναι πολύ δημοφιλής και έχει μεγάλο αριθμό επισκεπτών ταυτόχρονα συνδεδεμένους.</p>
<p>Με ένα παραδοσιακό Web Hosting λογαριασμό, όταν ο Server φτάσει στα όρια του τότε δεν μπορεί να ανταποκριθεί στις αιτήσεις που λαμβάνει συνέχεια.</p>
<p>Με το Cloud Hosting μπορείτε να έχετε πρόσβαση σε περισσότερους από ένα Servers. Έτσι μια ιστοσελίδα που έχει μεγάλη κίνηση, μπορεί να έχει πρόσβαση σε όσο BandWidth, σε όση μνήμη, όση επεξεργαστική ισχύς ή κάποιο άλλο πόρο θέλει.</p>
<p>Γενικότερα το Cloud Hosting είναι σχεδιασμένο για να παρέχει υπολογιστική ισχύ κατά απαίτηση. Όταν η ιστοσελίδα σας σταματήσει να ζητάει την επιπλέον ισχύ, αυτή ελευθερώνετε και είναι διαθέσιμη για άλλη ιστοσελίδα.</p>
<h2>Μερικοί λόγοι που το Cloud Hosting είναι καλό για εσάς</h2>
<p>Το βασικότερο κομμάτι στο Cloud Hosting είναι ότι δεν χρειάζεται ποια να σκέφτεστε το υλικό υπόβαθρο του Server που φιλοξενεί την ιστοσελίδα σας, αλλά μόνο την ιστοσελίδα σας.</p>
<p>Το Cloud Hosting εύκολα μπορεί να κλιμακωθεί για να καλύψει τις ανάγκες σας σε ενέργεια.</p>
<p>Το Cloud Hosting σας υπολογιστική ισχύ μόνο όταν τη χρειάζεστε</p>
<p>Στο Cloud Host πληρώνετε μόνο του πόρους που χρησιμοποιείτε.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/what-is-the-cloud-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Πόσο κώδικα έχουν οι μεγάλες εφαρμογές</title>
		<link>http://www.web-resources.eu/archives/large-scale-applications-total-lines-of-code</link>
		<comments>http://www.web-resources.eu/archives/large-scale-applications-total-lines-of-code#comments</comments>
		<pubDate>Thu, 15 Dec 2011 15:17:35 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Γενικά]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OsCommerce]]></category>
		<category><![CDATA[phpBB]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3361</guid>
		<description><![CDATA[Όλοι μας χρησιμοποιούμαι καθημερινά λογισμικό ανοικτού κώδικα, είτε το γνωρίζουμε είτε όχι. Έχουμε όμως ποτέ αναρωτηθεί τι πραγματικά συμβαίνει στο παρασκήνιο; Στο άρθρο που ακολουθεί θα δείτε μερικές λεπτομέρειες που ίσως δεν τις γνωρίζατε. Οι εφαρμογές ανοικτού κώδικα που ακολουθούν είναι χωρισμένες σε κατηγορίες ανάλογα με την εργασία που είναι προγραμματισμένες να κάνουν. Επίσης για κάθε εφαρμογή ακολουθούν [...]]]></description>
			<content:encoded><![CDATA[<p>Όλοι μας χρησιμοποιούμαι καθημερινά λογισμικό ανοικτού κώδικα, είτε το γνωρίζουμε είτε όχι. Έχουμε όμως ποτέ αναρωτηθεί τι πραγματικά συμβαίνει στο παρασκήνιο; Στο άρθρο που ακολουθεί θα δείτε μερικές λεπτομέρειες που ίσως δεν τις γνωρίζατε.</p>
<p><span id="more-3361"></span></p>
<p>Οι εφαρμογές ανοικτού κώδικα που ακολουθούν είναι χωρισμένες σε κατηγορίες ανάλογα με την εργασία που είναι προγραμματισμένες να κάνουν.</p>
<p>Επίσης για κάθε εφαρμογή ακολουθούν και μερικές άλλες πληροφορίες που σχετίζονται με την εφαρμογή έτσι ώστε να μάθουμε λίγο καλύτερα τι είναι η κάθε μια από αυτές τις εφαρμογές και τι πραγματικά συμβαίνει στο παρασκήνιο.</p>
<p>Επίσης η κάθε εφαρμογή εμφανίζεται βάση τον χρηστών που το χρησιμοποιούν της στον ιστότοπο OhLoh από τον οποίο και συλλέξαμε όλες τις πληροφορίες.</p>
<h2>Συστήματα Διαχείρισης Περιεχομένου και Forum (<abbr title="Content Management System">CMS</abbr>)</h2>
<h3> WordPress</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/WordPress.jpg"><img class="alignnone size-full wp-image-3364" title="WordPress Code" src="http://www.web-resources.eu/wp-content/uploads/2011/12/WordPress.jpg" alt="WordPress Code" width="630" height="262" /></a></p>
<h3>Στατιστικά για το WordPress</h3>
<p>Κώδικας : <strong>153.733</strong><br />
Σχόλια : <strong>49.736</strong><br />
Κενές γραμμές : <strong>31.764</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>62%</td>
<td>95.428</td>
<td>45.493</td>
<td>32,3%</td>
<td>21.777</td>
<td>162.298</td>
</tr>
<tr>
<td>JavaScript</td>
<td>17%</td>
<td>26.033</td>
<td>2.864</td>
<td>9,9%</td>
<td>5.068</td>
<td>33.965</td>
</tr>
<tr>
<td>CSS</td>
<td>14%</td>
<td>22.266</td>
<td>1.312</td>
<td>5,6%</td>
<td>3.935</td>
<td>27.513</td>
</tr>
<tr>
<td>HTML</td>
<td>6%</td>
<td>9.969</td>
<td>67</td>
<td>0,7%</td>
<td>1.377</td>
<td>11.413</td>
</tr>
<tr>
<td>XML</td>
<td>1%</td>
<td>37</td>
<td>0</td>
<td>0,0%</td>
<td>7</td>
<td>44</td>
</tr>
</tbody>
</table>
<h3>phpBB</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/phpBB.jpg"><img class="alignnone size-full wp-image-3369" title="phpBB" src="http://www.web-resources.eu/wp-content/uploads/2011/12/phpBB.jpg" alt="phpBB" width="630" height="262" /></a></p>
<h3>Στατιστικά για το phpBB</h3>
<p>Κώδικας : <strong>410.714</strong><br />
Σχόλια : <strong>56.563</strong><br />
Κενές γραμμές : <strong>64.907</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>81%</td>
<td>331.220</td>
<td>43.974</td>
<td>11,7%</td>
<td>48.338</td>
<td>423.532</td>
</tr>
<tr>
<td>HTML</td>
<td>10%</td>
<td>42.435</td>
<td>7.599</td>
<td>15,2%</td>
<td>9.465</td>
<td>59.499</td>
</tr>
<tr>
<td>SQL</td>
<td>?</td>
<td>15.687</td>
<td>1.946</td>
<td>11,0%</td>
<td>2.858</td>
<td>20.491</td>
</tr>
<tr>
<td>CSS</td>
<td>?</td>
<td>13.039</td>
<td>1.194</td>
<td>8,4%</td>
<td>2.847</td>
<td>17.080</td>
</tr>
<tr>
<td>JavaScript</td>
<td>?</td>
<td>5.956</td>
<td>1.472</td>
<td>19,8%</td>
<td>1.080</td>
<td>8.508</td>
</tr>
<tr>
<td>XML</td>
<td>?</td>
<td>1.569</td>
<td>82</td>
<td>5,0%</td>
<td>153</td>
<td>1.140</td>
</tr>
<tr>
<td>Shell Script</td>
<td>?</td>
<td>710</td>
<td>288</td>
<td>28,9%</td>
<td>142</td>
<td>1.140</td>
</tr>
<tr>
<td>Python</td>
<td>?</td>
<td>98</td>
<td>8</td>
<td>7,5%</td>
<td>24</td>
<td>130</td>
</tr>
</tbody>
</table>
<h3>Drupal</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/Drupal.jpg"><img class="alignnone size-full wp-image-3371" title="Drupal" src="http://www.web-resources.eu/wp-content/uploads/2011/12/Drupal.jpg" alt="" width="630" height="262" /></a></p>
<h3>Στατιστικά για το Drupal</h3>
<p>Κώδικας : <strong>574.551</strong><br />
Σχόλια : <strong>243.166</strong><br />
Κενές γραμμές : <strong>92.834</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>89%</td>
<td>509.139</td>
<td>232.187</td>
<td>31,3%</td>
<td>86.352</td>
<td>827.678</td>
</tr>
<tr>
<td>CSS</td>
<td>6%</td>
<td>32.925</td>
<td>2.816</td>
<td>7,9%</td>
<td>2.205</td>
<td>37.946</td>
</tr>
<tr>
<td>JavaScript</td>
<td>?</td>
<td>14.420</td>
<td>7.005</td>
<td>32,7%</td>
<td>2.284</td>
<td>23.709</td>
</tr>
<tr>
<td>HTML</td>
<td>?</td>
<td>9.483</td>
<td>52</td>
<td>0,5%</td>
<td>916</td>
<td>10.451</td>
</tr>
<tr>
<td>C++</td>
<td>?</td>
<td>3.341</td>
<td>632</td>
<td>15,9%</td>
<td>428</td>
<td>4.401</td>
</tr>
<tr>
<td>Shell Script</td>
<td>?</td>
<td>2.758</td>
<td>58</td>
<td>2,1%</td>
<td>449</td>
<td>3.266</td>
</tr>
<tr>
<td>Perl</td>
<td>?</td>
<td>1.239</td>
<td>328</td>
<td>20,9%</td>
<td>126</td>
<td>1.693</td>
</tr>
<tr>
<td>XML</td>
<td>?</td>
<td>952</td>
<td>52</td>
<td>5,2%</td>
<td>18</td>
<td>1.022</td>
</tr>
<tr>
<td>SQL</td>
<td>?</td>
<td>294</td>
<td>35</td>
<td>10,6%</td>
<td>56</td>
<td>385</td>
</tr>
</tbody>
</table>
<h3>Joomla</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/Joomla.jpg"><img class="alignnone size-full wp-image-3373" title="Joomla" src="http://www.web-resources.eu/wp-content/uploads/2011/12/Joomla.jpg" alt="" width="630" height="262" /></a></p>
<h3>Στατιστικά για το Joomla</h3>
<p>Κώδικας : <strong>1.188.100</strong><br />
Σχόλια : <strong>392.804</strong><br />
Κενές γραμμές : <strong>294.148</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>56%</td>
<td>671.234</td>
<td>347.027</td>
<td>34,1%</td>
<td>191.252</td>
<td>1.209.513</td>
</tr>
<tr>
<td>JavaScript</td>
<td>17%</td>
<td>200.688</td>
<td>32.070</td>
<td>13,8%</td>
<td>47.572</td>
<td>280.330</td>
</tr>
<tr>
<td>HTML</td>
<td>11%</td>
<td>133.688</td>
<td>1.275</td>
<td>0,9%</td>
<td>26.133</td>
<td>161.273</td>
</tr>
<tr>
<td>CSS</td>
<td>8%</td>
<td>93.662</td>
<td>8.722</td>
<td>8,5%</td>
<td>21.858</td>
<td>121.242</td>
</tr>
<tr>
<td>XML</td>
<td>6%</td>
<td>74.634</td>
<td>638</td>
<td>0,8%</td>
<td>4.668</td>
<td>79.940</td>
</tr>
<tr>
<td>SQL</td>
<td>?</td>
<td>14.010</td>
<td>3.068</td>
<td>18,0%</td>
<td>2.663</td>
<td>19.741</td>
</tr>
<tr>
<td>Shell Script</td>
<td>?</td>
<td>6</td>
<td>4</td>
<td>40,0%</td>
<td>2</td>
<td>12</td>
</tr>
<tr>
<td>XSL</td>
<td>?</td>
<td>1</td>
<td>0</td>
<td>0,0%</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
<h2>Shopping Carts</h2>
<h3>VirtueMart</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/VirtueMart.jpg"><img class="alignnone size-full wp-image-3377" title="VirtueMart" src="http://www.web-resources.eu/wp-content/uploads/2011/12/VirtueMart.jpg" alt="" width="630" height="262" /></a></p>
<h3>Στατιστικά για το VirtueMart</h3>
<p>Κώδικας : <strong>54.988</strong><br />
Σχόλια : <strong>22.789</strong><br />
Κενές γραμμές : <strong>11.758</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>62%</td>
<td>34.076</td>
<td>20.635</td>
<td>37,7%</td>
<td>9.394</td>
<td>64.105</td>
</tr>
<tr>
<td>JavaScript</td>
<td>14%</td>
<td>7.921</td>
<td>1.385</td>
<td>14,9%</td>
<td>726</td>
<td>10.032</td>
</tr>
<tr>
<td>HTML</td>
<td>12%</td>
<td>6.758</td>
<td>218</td>
<td>3,1%</td>
<td>980</td>
<td>7.956</td>
</tr>
<tr>
<td>CSS</td>
<td>5%</td>
<td>3.015</td>
<td>227</td>
<td>7,0%</td>
<td>364</td>
<td>3.606</td>
</tr>
<tr>
<td>SQL</td>
<td>?</td>
<td>2.147</td>
<td>298</td>
<td>12,2%</td>
<td>237</td>
<td>2.682</td>
</tr>
<tr>
<td>XML</td>
<td>?</td>
<td>1.071</td>
<td>26</td>
<td>2,4%</td>
<td>57</td>
<td>1.154</td>
</tr>
</tbody>
</table>
<h3>Magento</h3>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/12/Magento.jpg"><img class="alignnone size-full wp-image-3379" title="Magento" src="http://www.web-resources.eu/wp-content/uploads/2011/12/Magento.jpg" alt="" width="630" height="262" /></a></p>
<h3>Στατιστικά για το Magento</h3>
<p>Κώδικας : <strong>3.401.055</strong><br />
Σχόλια : <strong>1.690.887</strong><br />
Κενές γραμμές : <strong>430.539</strong></p>
<h3>Ποιο συγκεκριμένα</h3>
<table>
<tbody>
<tr>
<th>Γλώσσα προγραμματισμού</th>
<th>Ποσοστό</th>
<th>Κώδικας</th>
<th>Σχόλια</th>
<th>Ποσοστό σχολίων</th>
<th>Καινές γραμμές</th>
<th>Σύνολο γραμμών</th>
</tr>
<tr>
<td>PHP</td>
<td>55%</td>
<td>1.857.447</td>
<td>1.604.685</td>
<td>46,3%</td>
<td>345.427</td>
<td>3.807.559</td>
</tr>
<tr>
<td>XML</td>
<td>30%</td>
<td>1.030.727</td>
<td>33.815</td>
<td>3,2%</td>
<td>8.804</td>
<td>1.073.346</td>
</tr>
<tr>
<td>JavaScript</td>
<td>8%</td>
<td>260.921</td>
<td>37.539</td>
<td>12,6%</td>
<td>50.714</td>
<td>349.174</td>
</tr>
<tr>
<td>HTML</td>
<td>?</td>
<td>132.621</td>
<td>2.454</td>
<td>1,8%</td>
<td>10.838</td>
<td>145.913</td>
</tr>
<tr>
<td>CSS</td>
<td>?</td>
<td>111.501</td>
<td>11.093</td>
<td>9,0%</td>
<td>13.940</td>
<td>136.534</td>
</tr>
<tr>
<td>Python</td>
<td>?</td>
<td>2.505</td>
<td>0</td>
<td>0,0%</td>
<td>0</td>
<td>2.505</td>
</tr>
<tr>
<td>XML Schema</td>
<td>?</td>
<td>2.116</td>
<td>12</td>
<td>0,6%</td>
<td>216</td>
<td>2.344</td>
</tr>
<tr>
<td>ActionScript</td>
<td>?</td>
<td>1.968</td>
<td>900</td>
<td>31,4%</td>
<td>368</td>
<td>3.236</td>
</tr>
<tr>
<td>Shell Script</td>
<td>?</td>
<td>497</td>
<td>76</td>
<td>13,3%</td>
<td>102</td>
<td>675</td>
</tr>
<tr>
<td>MXML</td>
<td>?</td>
<td>420</td>
<td>192</td>
<td>31,4%</td>
<td>0</td>
<td>612</td>
</tr>
<tr>
<td>SQL</td>
<td>?</td>
<td>173</td>
<td>115</td>
<td>39,9%</td>
<td>85</td>
<td>373</td>
</tr>
<tr>
<td>XSL</td>
<td>?</td>
<td>159</td>
<td>6</td>
<td>3,6%</td>
<td>45</td>
<td>210</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/large-scale-applications-total-lines-of-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS μόνο για τον IE</title>
		<link>http://www.web-resources.eu/archives/css-that-only-load-on-internet-explorer</link>
		<comments>http://www.web-resources.eu/archives/css-that-only-load-on-internet-explorer#comments</comments>
		<pubDate>Fri, 11 Nov 2011 08:44:57 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3350</guid>
		<description><![CDATA[Ο Internet Explorer ενώ εκσυγχρονίζετε συνέχεια αποτελεί το μεγαλύτερο πρόβλημα των Web Developers, καθώς έχεις τις δικές του ιδιαιτερότητες σε ότι αφορά τον τρόπο αναπαραγωγής ιστοσελίδων και τα Hacks που απαιτούνται στο CSS για να λειτουργήσουν όλα όπως πρέπει. Στο σημερινό άρθρο θα σας παρουσιάσω τις ετικέτες ελέγχου έκδοσης του Internet Explorer έτσι ώστε να είστε σε [...]]]></description>
			<content:encoded><![CDATA[<p>Ο <strong>Internet Explorer</strong> ενώ εκσυγχρονίζετε συνέχεια αποτελεί το μεγαλύτερο πρόβλημα των <strong>Web Developers</strong>, καθώς έχεις τις δικές του ιδιαιτερότητες σε ότι αφορά τον τρόπο αναπαραγωγής ιστοσελίδων και τα <em>Hacks</em> που απαιτούνται στο <abbr title="Cascading Style Sheets">CSS</abbr> για να λειτουργήσουν όλα όπως πρέπει.<span id="more-3350"></span></p>
<p>Στο σημερινό άρθρο θα σας παρουσιάσω τις ετικέτες ελέγχου έκδοσης του Internet Explorer έτσι ώστε να είστε σε θέση να φορτώσετε περιεχόμενο στη σελίδα σας που είναι απαραίτητο για όποια έκδοση του browser θέλετε.</p>
<h2>Γιατί να χρησιμοποιήσετε ετικέτες ελέγχου για τα CSS;</h2>
<ul>
<li>Παρουσιάζονται προβλήματα που χρειάζονται ειδική μεταχείριση</li>
<li>Για να διατηρήσετε το κεντρικό αρχείο <abbr title="Cascading Style Sheets">CSS</abbr> της ιστοσελίδας σας καθαρό από Hacks</li>
<li>Για να μην δημιουργείτε inline Hacks.</li>
<li>Είναι μια κοινά αποδεκτή τεχνική, ακόμα και από την ίδια την <strong>Microsoft</strong>.</li>
</ul>
<p>Σε αυτό το σημείο θα πρέπει να σημειωθεί πως οι ετικέτες ελέγχου δεν είναι μόνο για τα CSS σας. Μπορείτε να τις χρησιμοποιήσετε για να φορτώσετε επίσης διάφορα σενάρια εντολών (<em>JavaScript</em>) ή ακόμα και να εμφανίσετε διάφορα μηνύματα σε χρήστες με <strong>Internet Explorer</strong>.</p>
<h2>Ο κώδικας</h2>
<p>Το καλύτερο σημείο στη σελίδα σας για να φορτώσετε τα αρχεία μορφοποίησης (CSS) είναι το τμήμα head της ιστοσελίδας σας. Οπότε κατά συνέπεια είναι καλό να χρησιμοποιείτε τον κώδικα που ακολουθεί στο ίδιο τμήμα της ιστοσελίδας σας. Η ετικέτα έναρξης, και η ετικέτα τερματισμού για τον έλεγχο είναι έγκυρα HTML σχόλια. Έτσι οι περιηγητές διαδικτύου που δεν μπορούν να κατανοήσουν το νόημα αυτών των ετικετών απλά αντιμετωπίζουν το περιεχόμενο τους ως σχόλιο.</p>
<p>Επίσης οι κανόνες ελέγχου είναι αρκετά προφανείς. Για να κάνουμε ένα λογικό έλεγχο με τον τελεστή «not» χρησιμοποιούμαι το σύμβολο «!». Έτσι, για να πούμε ότι δεν θέλουμε να είναι ο Internet Explorer η σύνταξη θα είναι κάπως έτσι !<abbr title="Internet Explorer">IE</abbr>. Επίσης χρησιμοποιούνται οι τελεστές «<abbr title="Greater than">gt</abbr>» (greater than) που σημαίνει μεγαλύτερο από, «<abbr title="Greater than equal">gte</abbr>» (greater than equal) που σημαίνει μεγαλύτερο από ή ίσο, «<abbr title="Lower than">lt</abbr>» (lower than) που σημαίνει μικρότερο από και τέλος «<abbr title="Lower than equal">lte</abbr>» (lower than equal) που σημαίνει μικρότερο από ή ίσο.</p>
<h2>Στόχευση σε όλες τις εκδόσεις του Internet Explorer</h2>
<pre class="brush:html;">&lt;!--[if IE]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση όλων των περιηγητών διαδικτύου εκτός του Internet Explorer</h2>
<pre class="brush:html;">&lt;!--[if !IE]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση μόνο του Internet Explorer 7</h2>
<pre class="brush:html;">&lt;!--[if IE 7]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση μόνο του Internet Explorer 6</h2>
<pre class="brush:html;">&lt;!--[if IE 6]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση μόνο του Internet Explorer 5</h2>
<pre class="brush:html;">&lt;!--[if IE 5]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση μόνο του Internet Explorer 5.5</h2>
<pre class="brush:html;">&lt;!--[if IE 5.5000]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση στους Internet Explorer 6 και κάτω</h2>
<pre class="brush:html;">&lt;!--[if lt IE 7]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<pre class="brush:html;">&lt;!--[if lte IE 6]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση στους Internet Explorer 7 και κάτω</h2>
<pre class="brush:html;">&lt;!--[if lt IE 8]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<pre class="brush:html;">&lt;!--[if lte IE 7]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση στους Internet Explorer 6 και πάνω</h2>
<pre class="brush:html;">&lt;!--[if gt IE 5.5]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<pre class="brush:html;">&lt;!--[if gte IE 6]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση στους Internet Explorer 7 και πάνω</h2>
<pre class="brush:html;">&lt;!--[if gt IE 6]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<pre class="brush:html;">&lt;!--[if gte IE 7]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<h2>Στόχευση στους Internet Explorer 8 και πάνω</h2>
<pre class="brush:html;">&lt;!--[if gt IE 7]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
<pre class="brush:html;">&lt;!--[if gte IE 8]&gt;
    &lt;link rel="stylesheet" type="text/css" href="ie-stylesheet.css" /&gt;
&lt;![endif]--&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/css-that-only-load-on-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Νέα χαρακτηριστικά για το Joomla 1.7</title>
		<link>http://www.web-resources.eu/archives/joomla-1-7-new-features</link>
		<comments>http://www.web-resources.eu/archives/joomla-1-7-new-features#comments</comments>
		<pubDate>Thu, 20 Oct 2011 07:24:23 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3345</guid>
		<description><![CDATA[Η έκδοση 1.7 για το Joomla έχει κυκλοφορήσει από τις 19 Ιουλίου του 2011. Σε αυτή την έκδοση τα νέα χαρακτηριστικά είναι κατά κύριο λόγο αόρατα καθώς αφορούν αλλαγές στην λειτουργικότητα του Joomla. Τα νέα χαρακτηριστικά όμως, ενώ δεν είναι εμφανή, είναι πάρα πολύ ισχυρά και μπορούν επίσης να αναβαθμιστούν με ένα κλικ.  Ακόμα ένα νέο χαρακτηριστικό [...]]]></description>
			<content:encoded><![CDATA[<p>Η έκδοση 1.7 για το Joomla έχει κυκλοφορήσει από τις 19 Ιουλίου του 2011. Σε αυτή την έκδοση τα νέα χαρακτηριστικά είναι κατά κύριο λόγο αόρατα καθώς αφορούν αλλαγές στην λειτουργικότητα του Joomla. Τα νέα χαρακτηριστικά όμως, ενώ δεν είναι εμφανή, είναι πάρα πολύ ισχυρά και μπορούν επίσης να αναβαθμιστούν με ένα κλικ.  Ακόμα ένα νέο χαρακτηριστικό είναι πως το νέα πλατφόρμα του Joomla είναι απομονωμένη από το CMS κομμάτι της εφαρμογής.<span id="more-3345"></span></p>
<p>Στη νέα έκδοση όλοι απολαμβάνουμε τις ενημερώσεις που απλός πραγματοποιούνται με ένα μόνο κλικ. Με αυτό το νέο χαρακτηριστικό μπορούμε να χαλαρώσουμε λίγο και αν μην έχουμε το άγχος της αναβάθμισης για σημαντικές ενημερώσεις. Βέβαια, ενώ οι Web Developers έχουν κάνει πραγματικά πολύ καλή δουλειά στο κομμάτι της αναβάθμισης εσείς θα πρέπει πάντα να διατηρείτε αντίγραφα ασφαλείας !</p>
<p>Ακόμα ένα άλλο χαρακτηριστικό του Joomla που το σχεδιάζουν εδώ και έξι χρόνια είναι η απομόνωση της πλατφόρμας του Joomla από το κομμάτι διαχείρισης περιεχομένου (CMS). Η πλατφόρμα του Joomla αποτελείτε από τα αρχεία στους φακέλους library και media. Το CMS έρχεται και βασίζεται πάνω σε αυτά τα αρχεία. Αυτό το χαρακτηριστικό είναι μοναδικό και ως αυτή τη στιγμή δεν υπάρχει κάποιο άλλο CMS που να πραγματοποιεί διαχωρισμό αυτού του τύπου. Τα πλεονεκτήματα από αυτό το διαχωρισμό είναι πολλά. Για παράδειγμα μπορείτε να δημιουργήσετε ένα δικό σας CMS που να βασίζεται στην πλατφόρμα του Joomla, ή να προσθέσετε νέα χαρακτηριστικά στο Joomla, γιατί είναι ευκολότερο να επεκτείνεται την πλατφόρμα του Joomla παρά το CMS.</p>
<p>Η νέα έκδοση του Joomla, εκτός από χαρακτηριστικά που αναφέραμε ως εδώ έχει και μια σειρά από άλλα χαρακτηριστικά όπως αυτά που ακολουθούν:</p>
<ul>
<li>Τα νέα χαρακτηριστικά γλώσσας επιτρέπουν στα στοιχεία του μενού να είναι μεταφρασμένα σε άλλες γλώσσες</li>
<li>Δημιουργία προκαθορισμένων πεδίων αναζήτησης</li>
<li>Η λειτουργία αποθήκευσης έχει βελτιωθεί. Πραγματοποιεί αυτόματα επικύρωση των δεδομένων και προσθέτει επιπλέον προστασία από ανεπιθύμητη πρόσβαση.</li>
<li>Δυνατότητα αυτόματης κατανομής κατηγοριών για τα άρθρα</li>
<li>Μαζική επεξεργασία άρθρων.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/joomla-1-7-new-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP 2.0.0</title>
		<link>http://www.web-resources.eu/archives/cakephp-2-0-0</link>
		<comments>http://www.web-resources.eu/archives/cakephp-2-0-0#comments</comments>
		<pubDate>Thu, 20 Oct 2011 06:48:03 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3336</guid>
		<description><![CDATA[Επιτέλους. Μετά από πολύ καιρό η νέα έκδοση του CakePHP κυκλοφόρησε και είναι πραγματικά εντυπωσιακή καθώς έχει αφήσει πίσω κακές συνήθειες και έχει ενσωματώσει νέα χαρακτηριστικά που πραγματικά είναι χρήσιμα για τον Web Developer. Το άσχημο με τη νέα έκδοση είναι πως δεν υπάρχει καλός βαθμός συμβατότητας προς, και έτσι παλαιότερες εφαρμογές γραμμένες σε CakePHP θα πρέπει [...]]]></description>
			<content:encoded><![CDATA[<p>Επιτέλους. Μετά από πολύ καιρό η νέα έκδοση του CakePHP κυκλοφόρησε και είναι πραγματικά εντυπωσιακή καθώς έχει αφήσει πίσω κακές συνήθειες και έχει ενσωματώσει νέα χαρακτηριστικά που πραγματικά είναι χρήσιμα για τον Web Developer.<span id="more-3336"></span></p>
<p>Το άσχημο με τη νέα έκδοση είναι πως δεν υπάρχει καλός βαθμός συμβατότητας προς, και έτσι παλαιότερες εφαρμογές γραμμένες σε CakePHP θα πρέπει να τροποποιηθούν για να ανέβουν και αυτό το σκαλοπάτι ! Μια από τις μεγαλύτερες ασυμβατότητες του CakePHP 2.0.0 προς τα πίσω είναι πως η νέα έκδοση απαιτεί PHP 5.2.6 ή νεότερη, γιατί υλοποιούνται χαρακτηριστικά της γλώσσας που δεν υπάρχουν σε προηγούμενες εκδόσεις.</p>
<h2>Νέα χαρακτηριστικά και δυνατότητες</h2>
<p>Η νέα έκδοση διαθέτει δυο διαφορετικά αντικείμενα για τα Response και τα Request. Με αυτό τον τρόπο είναι ευκολότερη η προσπέλαση της πληροφορίας καθώς επίσης και οι διάφορες δοκιμές.</p>
<p>Η κατανάλωση μνήμης έχει βελτιωθεί αισθητά με το μοντέλο Lazy loading που φορτώνει αντικείμενα στη μνήμη μόνο όταν αυτά είναι απαραίτητα. Αυτό είναι ένα χαρακτηριστικό που βελτιώνει πολύ και τις επιδόσεις μεγάλων Web Based Applications.</p>
<p>Στην έκδοση 2.0.0 χρησιμοποιούν το PHPUnit σαν πλατφόρμα δοκιμών που θεωρείτε μια σταθερά σε ότι αφορά την δοκιμή μονάδων.</p>
<p>Από αυτή την έκδοση το CakePHP χρησιμοποιεί εξαιρέσεις εσωτερικά με αποτέλεσμα να επιτρέπει στον Web Developer να διαχειρίζεται τα σφάλματα και τις εξαιρέσεις ποιο αποδοτικά, με περισσότερες παραμέτρους και λειτουργίες.</p>
<p>Οι Helpers και τα Components παραμετροποιούνται κατά ανάγκη για να βελτιωθεί η απόδοση.</p>
<p>Η νέα πλατφόρμα κονσόλας έχει γραφτεί από την αρχή ώστε να είναι ποιο ευέλικτη, ισχυρή και έγχρωμη !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/cakephp-2-0-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer για CakePHP εφαρμογές</title>
		<link>http://www.web-resources.eu/archives/cakephp-web-based-application-installer</link>
		<comments>http://www.web-resources.eu/archives/cakephp-web-based-application-installer#comments</comments>
		<pubDate>Sat, 08 Oct 2011 07:40:12 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Based Aplication]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[μάθημα]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3329</guid>
		<description><![CDATA[Οι περισσότεροι από εμάς έχουμε κατά καιρούς εγκαταστήσει διάφορες εφαρμογές στο διαδίκτυο, είτε αυτές είναι ιστολόγια όπως το WordPress, είτε είναι εφαρμογές διαχείρισης περιεχομένου όπως το Joomla ή κάποιο φόρουμ όπως το phpBB με τη βοήθεια των installer που έχουν οι εφαρμογές αυτές. Το ερώτημα είναι πως μπορούμε να δημιουργήσουμε τον δικό μας installer για [...]]]></description>
			<content:encoded><![CDATA[<p>Οι περισσότεροι από εμάς έχουμε κατά καιρούς εγκαταστήσει διάφορες εφαρμογές στο διαδίκτυο, είτε αυτές είναι ιστολόγια όπως το WordPress, είτε είναι εφαρμογές διαχείρισης περιεχομένου όπως το Joomla ή κάποιο φόρουμ όπως το phpBB με τη βοήθεια των installer που έχουν οι εφαρμογές αυτές. Το ερώτημα είναι πως μπορούμε να δημιουργήσουμε τον δικό μας installer για μια εφαρμογή CakePHP;<span id="more-3329"></span>Ο installer που θα δημιουργήσουμε θα είναι βασισμένος πάνω σε ένα Controller, ο οποίος θα φορτώνει αυτόματα την πρώτη φορά που ο χρήστης θα επισκέπτεται την εφαρμογή. Για να καταφέρουμε την αυτόματη κλήση του Controller που θα κάνει την εγκατάσταση πρέπει να γράψουμε λίγο κώδικα στο αρχείο routes.php που είναι στο φάκελο app/config/. Γράψτε τον κώδικα που ακολουθεί στο αρχείο routes.php της εφαρμογής σας:</p>
<pre class="brush: php;">if(file_exists(TMP.'app_installed'))
{
    // Εδώ θα βάλετε τα routes που θα χρησιμοποιηθούν από την εφαρμογή σας μετά την εγκατάσταση
}
else
{
    Router::connect('/:action', array('controller' =&gt; 'installer'));
}</pre>
<p>Έτσι για όσο δεν υπάρχει το αρχείο app_installed, ο χρήστης θα βλέπει την πρώτη σελίδα του installer όταν θα πληκτρολογεί το URL της εφαρμογής στον περιηγητή διαδικτύου. Ως συνέπεια αυτής της λογικής είναι αφού ολοκληρώσουμε την εγκατάσταση της εφαρμογής θα πρέπει να δημιουργήσουμε και το αρχείο app_installed.</p>
<p>Ο controller για τον Installer είναι πολύ απλός από μόνος του. Κάθε action είναι μια σελίδα στην διαδικασία εγκατάστασης και ο βασικός κώδικας είναι ο ακόλουθος. Σαφώς και μπορείτε να τον αλλάξετε ή να προσθέσετε επιπλέον λογική ανάλογα με τις ανάγκες της εφαρμογής σας.</p>
<pre class="brush: php;">// app/controllers/
uses('model' . DS . 'connection_manager');

class InstallerController extends AppController
{
    var $uses = array();

    function beforeFilter()
    {
        if(file_exists(TMP . 'app_installed'))
        {
            echo 'Η εφαρμογή είναι εγκατεστημένη. Για να εγκαταστήσετε ξανά την εφαρμογή διαγράψτε το αρχείο Remove app/config/app_installed';
            exit();
        }
    }

    function index(){}

    function database()
    {
        $db = ConnectionManager::getDataSource('default');

        if(!$db-&gt;isConnected())
        {
            echo 'Η σύνδεση με τη βάση δεδομένων δεν μπορεί να πραγματοποιηθεί. Παρακαλώ ελέγξτε τις ρυθμίσεις στο αρχείο app/config/database.php και δοκιμάστε ξανά';
            exit();
        }

        $this-&gt;__executeSQLScript($db, CONFIGS . 'sql' . DS . 'app.sql');
        $this-&gt;redirect('/installer/installed');
    }

    function thanks()
    {
        file_put_contents(TMP . 'app_installed', date('Y-m-d, H:i:s'));
    }

    function __executeSQLScript($db, $fileName)
    {
        $statements = file_get_contents($fileName);
        $statements = explode(';', $statements);

        foreach($statements as $statement)
        {
            if(trim($statement) != '')
            {
                $db-&gt;query($statement);
            }
        }
    }
}</pre>
<p>Ο παραπάνω κώδικας μπορεί να επεκταθεί σε μεγάλο βαθμό και να μετατραπεί σε ένα πολύ ισχυρό εργαλείο εγκατάστασης, με πολλά επίπεδα ελέγχων και άλλα χαρακτηριστικά.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/cakephp-web-based-application-installer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Γραφική αναπαράσταση των SQL join</title>
		<link>http://www.web-resources.eu/archives/visual-explanation-of-sql-joins</link>
		<comments>http://www.web-resources.eu/archives/visual-explanation-of-sql-joins#comments</comments>
		<pubDate>Wed, 05 Oct 2011 08:09:22 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[μάθημα]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3303</guid>
		<description><![CDATA[Πολλές φορές χρειάζεται να εκτελέσουμε ερωτήματα στην SQL για να πάρουμε τα αποτελέσματα από δυο ή/και περισσότερα. Ο ποιο απλός τρόπος είναι τρέξουμε μια SELECT που θα χρησιμοποιεί περισσότερους από ένα πίνακες. Αλλά τι πραγματικά συμβαίνει όταν θέλουμε ποιο πολύπλοκα ερωτήματα με ποιο κατανοητά ερωτήματα; Στο σημερινό άρθρο θα προσπαθήσω να σας παρουσιάσω με γραφικά [...]]]></description>
			<content:encoded><![CDATA[<p>Πολλές φορές χρειάζεται να εκτελέσουμε ερωτήματα στην SQL για να πάρουμε τα αποτελέσματα από δυο ή/και περισσότερα. Ο ποιο απλός τρόπος είναι τρέξουμε μια SELECT που θα χρησιμοποιεί περισσότερους από ένα πίνακες. Αλλά τι πραγματικά συμβαίνει όταν θέλουμε ποιο πολύπλοκα ερωτήματα με ποιο κατανοητά ερωτήματα;<span id="more-3303"></span></p>
<p>Στο σημερινό άρθρο θα προσπαθήσω να σας παρουσιάσω με γραφικά τη χρήση των εντολών JOIN της <abbr title="Structured Query Language">SQL</abbr>. Οι JOIN είναι πολύ ισχυρές και επιτρέπουν να διαλέξετε δεδομένα ανάλογα με τις ανάγκες σας, εύκολα, γρήγορα και με καθαρό κώδικα.</p>
<p>Για το παράδειγμα μας θα υποθέσουμε πως έχουμε δυο πίνακες. Ο ένας πίνακας έχει μέσα τα ονόματα κατηγοριών και ονομάζεται categories και ο άλλος έχει προϊόντα που ανήκουν σε κατηγορίες και ονομάζεται products. Οι πίνακες έχουν επίσης και δεδομένα και τα δεδομένα τους είναι τα ακόλουθα :</p>
<pre class="brush: plain;">categories                           products
-------------------------------      ------------------------------------------
| ID | CATEGORY               |      | ID | CATEGORY        | PRODUCT         |
-------------------------------      ------------------------------------------
| 1  | CPU                    |      | 1  | CPU             | 2 GHz           |
| 2  | MOUSE                  |      | 2  | HD              | 2 TB            |
| 3  | HD                     |      | 3  | External HD     | 1 TB            |
| 4  | MONITOR                |      | 4  | MONITOR         | 24" Monitor     |
| 5  | MODEM                  |      | 5  | CPU             | 1 GHz           |
| 6  | RAM                    |      | 1  | CPU             | 3 GHz           |
-------------------------------      ------------------------------------------</pre>
<p>Στη συνέχεια θα ενώσουμε αυτά τα αρχεία βάση της στήλης CATEGORY με διαφορετικούς τρόπους ενώ παράλληλα θα κάνουμε και την εικονική αναπαράσταση των ενώσεων αυτών.</p>
<h2>Inner Join</h2>
<p>Η Inner Join παράγει αποτελέσματα που οι κατηγορία υπάρχει τόσο στον πίνακα categories όσο και στον πίνακα products. Το παρακάτω ερώτημα θα έχει τα αποτελέσματα που ακολουθούν.</p>
<pre class="brush: sql;">    SELECT * FROM categories INNER JOIN products ON categories.caregory = products.category</pre>
<p>τα αποτελέσματα είναι αυτά :</p>
<pre class="brush: sql;">-----------------------------------------------------------------------------
| ID | CATEGORY           | ID | CATEGORY           | PRODUCT               |
-----------------------------------------------------------------------------
| 1  | CPU                | 1  | CPU                | 2 GHz                 |
| 3  | HD                 | 2  | HD                 | 2 TB                  |
| 4  | MONITOR            | 4  | MONITOR            | 24" Monitor           |
| 1  | CPU                | 5  | CPU                | 1 GHz                 |
| 1  | CPU                | 6  | CPU                | 3 GHz                 |
-----------------------------------------------------------------------------</pre>
<p>και η εικονική αναπαράσταση είναι η ακόλουθη :</p>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/10/inner-join.png"><img class="alignnone size-full wp-image-3317" title="Inner Join" src="http://www.web-resources.eu/wp-content/uploads/2011/10/inner-join.png" alt="Inner Join" width="630" height="262" /></a></p>
<p>&nbsp;</p>
<h2>Full Outer Join</h2>
<p>Η Full Outer Join παράγει αποτελέσματα με τις κατηγορίες που υπάρχουν και στους δυο πίνακες. Αν για μια κατηγορία δεν υπάρχουν εγγραφές στον δεύτερο πίνακα, τότε οι αντίστοιχες γραμμές του άλλου πίνακα συμπληρώνονται με null. Το ερώτημα που ακολουθεί θα έχει τα αποτελέσματα που είναι αμέσως μετά.</p>
<pre class="brush: sql;">    SELECT * FROM categories FULL OUTER JOIN products ON categories.caregory = products.category</pre>
<p>τα αποτελέσματα είναι αυτά :</p>
<pre class="brush: sql;">----------------------------------------------------------------------------
| ID   | CATEGORY           | ID   | CATEGORY         | PRODUCT            |
----------------------------------------------------------------------------
| 1    | CPU                | 1    | CPU              | 2 GHz              |
| 1    | CPU                | 5    | CPU              | 1 GHz              |
| 1    | CPU                | 6    | CPU              | 3 GHz              |
| 2    | MOUSE              | null | null             | null               |
| 3    | HD                 | 2    | HD               | 2 TB               |
| 4    | MONITOR            | 4    | MONITOR          | 24" MONITOR        |
| 5    | MODEM              | null | null             | null               |
| 6    | RAM                | null | null             | null               |
| null | null               | 3    | External HD      | 1 TB               |
----------------------------------------------------------------------------</pre>
<p>και η εικονική αναπαράσταση είναι η ακόλουθη :</p>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/10/Full-Outer-Join.png"><img class="alignnone size-full wp-image-3319" title="Full Outer Join" src="http://www.web-resources.eu/wp-content/uploads/2011/10/Full-Outer-Join.png" alt="Full Outer Join" width="630" height="262" /></a></p>
<h2>Left Outer Join</h2>
<p>Η Left Outer Join παράγει σαν αποτέλεσμα το σύνολο των γραμμών από τον πίνακα categories σε αντιστοιχία με τις γραμμές του πίνακα products. Θα πρέπει να σημειωθεί πως οι εγγραφές του πίνακα categories που δεν έχουν αντίστοιχες εγγραφές στον πίνακα products θα ανακτηθούν και στης αντίστοιχες εγγραφές του πίνακα products θα δημιουργήσει τα πεδία με τιμές null. Το ερώτημα που ακολουθεί θα δημιουργήσει τα αποτελέσματα που είναι μετά το ερώτημα.</p>
<pre class="brush: sql;">    SELECT * FROM categories LEFT OUTER JOIN products ON categories.caregory = products.category</pre>
<p>Τα αποτελέσματα είναι αυτά :</p>
<pre class="brush: sql;">----------------------------------------------------------------------------
| ID   | CATEGORY           | ID   | CATEGORY         | PRODUCT            |
----------------------------------------------------------------------------
| 1    | CPU                | 1    | CPU              | 2 GHz              |
| 1    | CPU                | 5    | CPU              | 1 GHz              |
| 1    | CPU                | 6    | CPU              | 3 GHz              |
| 2    | MOUSE              | null | null             | null               |
| 3    | HD                 | 2    | HD               | 2 TB               |
| 4    | MONITOR            | 4    | MONITOR          | 24" MONITOR        |
| 5    | MODEM              | null | null             | null               |
| 6    | RAM                | null | null             | null               |
----------------------------------------------------------------------------</pre>
<p>και η εικονική αναπαράσταση είναι η ακόλουθη :</p>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/10/Left-Outer-Join.png"><img class="alignnone size-full wp-image-3321" title="Left Outer Join" src="http://www.web-resources.eu/wp-content/uploads/2011/10/Left-Outer-Join.png" alt="Left Outer Join" width="630" height="262" /></a></p>
<p>Αν θέλετε να έχετε το σύνολο των αποτελεσμάτων που υπάρχουν στον πίνακα categories αλλά δεν έχουν αντίστοιχες εγγραφές στον πίνακα products μπορούμε να εκτελέσουμε το ίδιο ερώτημα με Left Outer Join αλλά χρησιμοποιείστε και το WHERE για να επιλέξετε μόνο τις εγγραφές του πίνακα products που θέλετε εσείς. Έτσι έχουνε το ακόλουθο ερώτημα που παράγει τις εγγραφές που θα βρείτε παρακάτω:</p>
<pre class="brush: sql;">    SELECT * FROM categories LEFT OUTER JOIN products ON categories.caregory = products.category WHERE products.id IS NULL</pre>
<p>Τα αποτελέσματα είναι αυτά :</p>
<pre class="brush: sql;">----------------------------------------------------------------------------
| ID   | CATEGORY           | ID   | CATEGORY         | PRODUCT            |
----------------------------------------------------------------------------
| 2    | MOUSE              | null | null             | null               |
| 5    | MODEM              | null | null             | null               |
| 6    | RAM                | null | null             | null               |
----------------------------------------------------------------------------</pre>
<p>και η εικονική αναπαράσταση είναι η ακόλουθη :</p>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/10/Left-Outer-Join-Where.png"><img class="alignnone size-full wp-image-3323" title="Left Outer Join Where" src="http://www.web-resources.eu/wp-content/uploads/2011/10/Left-Outer-Join-Where.png" alt="Left Outer Join Where" width="630" height="262" /></a></p>
<p>Τέλος αν θέλετε να επιλέξετε μόνο τις εγγραφές από τους δυο πίνακες που δεν έχουν την αντίστοιχη εγγραφή στον άλλο πίνακα τότε μπορείτε να επεκτείνεται τα ορίσματα της WHERE. Το παρακάτω ερώτημα θα ανακτήσει τις εγγραφές και από τους δυο πίνακες που δεν έχουν αντίστοιχη εγγραφή στον άλλο πίνακα.</p>
<pre class="brush: sql;">    SELECT * FROM categories FULL OUTER JOIN products ON categories.caregory = products.category WHERE products.id IS NULL OR category.id IS NULL</pre>
<pre class="brush: sql;">----------------------------------------------------------------------------
| ID   | CATEGORY           | ID   | CATEGORY         | PRODUCT            |
----------------------------------------------------------------------------
| 2    | MOUSE              | null | null             | null               |
| 5    | MODEM              | null | null             | null               |
| 6    | RAM                | null | null             | null               |
| null | null               | 3    | External HD      | 1 TB               |
----------------------------------------------------------------------------</pre>
<p>και η εικονική αναπαράσταση είναι η ακόλουθη :</p>
<p><a href="http://www.web-resources.eu/wp-content/uploads/2011/10/Full-Outer-Join-Where.png"><img class="alignnone size-full wp-image-3325" title="Full Outer Join Where" src="http://www.web-resources.eu/wp-content/uploads/2011/10/Full-Outer-Join-Where.png" alt="Full Outer Join Where" width="630" height="262" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/visual-explanation-of-sql-joins/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Εξειδικευμένη χρήση του mod_rewrite</title>
		<link>http://www.web-resources.eu/archives/advanced_mod_rewrite</link>
		<comments>http://www.web-resources.eu/archives/advanced_mod_rewrite#comments</comments>
		<pubDate>Thu, 29 Sep 2011 14:45:17 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[Γενικά]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[μαθήματα]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3294</guid>
		<description><![CDATA[Θεωρείτε πως το επίπεδο σας είναι πολύ προχωρημένο στην χρήση του mod_rewrite; Το άρθρο που ακολουθεί είναι και για εσάς τότε ! Οι τεχνικές και οι μέθοδοι που ακολουθούν θα σας κάνουν ειδικούς σε ότι αφορά το mod_rewrite. Οι περισσότεροι, αν όχι όλοι Web Developers καθώς και οι διαχειριστές Web Server έχουν βρεθεί αντιμέτωποι κάποια στιγμή στην [...]]]></description>
			<content:encoded><![CDATA[<p>Θεωρείτε πως το επίπεδο σας είναι πολύ προχωρημένο στην χρήση του mod_rewrite; Το άρθρο που ακολουθεί είναι και για εσάς τότε ! Οι τεχνικές και οι μέθοδοι που ακολουθούν θα σας κάνουν ειδικούς σε ότι αφορά το mod_rewrite.<span id="more-3294"></span></p>
<p>Οι περισσότεροι, αν όχι όλοι Web Developers καθώς και οι διαχειριστές Web Server έχουν βρεθεί αντιμέτωποι κάποια στιγμή στην καριέρα τους με τη μονάδα mod_rewrite του Apache web server. Η μονάδα αυτή είναι πολύ δύσκολη στην κατανόηση της και μπορείτε να νιώσετε με αυτή λίγο ποιο άνετα μόνο με πολύ πρακτική εξάσκηση. Με αυτό το άρθρο ωστόσο θα σας βοηθήσω να κατανοήσετε καλύτερα το mod_rewrite.</p>
<h2>Γιατί το mod_rewrite είναι τόσο δύσκολο;</h2>
<p>Μετά από πολλές ώρες σκέψης κατέληξα στο συμπέρασμα πως ο λόγος για τον οποίο το mod_rewrite είναι τόσο δύσκολο είναι προφανής. Οι χρήστες προσπαθούν να εφαρμόσουν regular expressions σε URL και μεταβλητές που πραγματικά δεν κατανοούν. Αυτό που κατανοούν είναι αυτό που θέλουν, και αυτό που θέλουν δεν είναι αυτό που πραγματικά έχουν στα χέρια τους για να εργαστούν.</p>
<h2>Επιτυχία ή αποτυχία στα mod_rewrite;</h2>
<p>Οι περισσότεροι «ειδικοί» στα mod_rewrites κινούνται γύρο από αυτά που γνωρίζουν σχετικά με τα mod_rewrite. Αυτό όμως που τους κάνει να ξεχωρίζουν από του απλούς χρήστες είναι το ότι μπορούν να κατανοήσουν με ακρίβεια τι μπορεί να σημαίνει ένα reqular expression και η ικανότητα να κατανοούν αυτό που βλέπουν σε ένα κανόνα επανεγγραφής ενός URL. Πάρτε ως παράδειγμα το ακόλουθο:</p>
<pre class="brush: plain;">RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.askapache\.com$ [NC]
RewriteRule .+ http://www.askapache.com%{REQUEST_URI}</pre>
<p>Απλό δεν είναι; Λάθος. Οι περισσότεροι χρήστες δεν κατανοούν τι μπορεί να κάνει ο παραπάνω κανόνας επανεγγραφής URL.</p>
<h2>Γιατί;</h2>
<p>Ο λόγος είναι γιατί οι περισσότεροι που βλέπουν τις τιμές HTTP_HOST και REQUEST_URI δεν ξέρουν με τι πραγματικά μοιάζουν αυτές οι μεταβλητές.  Πως είναι δυνατόν να γράψετε ένα regular expression αν δεν γνωρίζεται τι είναι αυτό που πρέπει να ταιριάξετε;</p>
<h2>Μεταβλητές περιβάλλοντος για τα mod_rewrite (μυστικές)</h2>
<p>Ακολουθεί η λίστα με τις μεταβλητές που είναι προσπελάσιμες από το mod_rewrite. Άλλες είναι τεκμηριωμένες και άλλες όχι. Ένα πράγμα που πρέπει να σημειώσετε είναι πως μπορείτε να ορίσετε αυτές τις μεταβλητές στην αρχή του htaccess αρχείου σας με τα SetEnv, RewriteRule, Header και άλλα και να της προσπελάσετε στο τέλος του αρχείου htaccess.</p>
<p>Μεταβλητές:</p>
<p>API_VERSION<br />
AUTH_TYPE<br />
CONTENT_LENGTH<br />
CONTENT_TYPE<br />
DOCUMENT_ROOT<br />
GATEWAY_INTERFACE<br />
HTTPS<br />
HTTP_ACCEPT<br />
HTTP_ACCEPT_CHARSET<br />
HTTP_ACCEPT_ENCODING<br />
HTTP_ACCEPT_LANGUAGE<br />
HTTP_CACHE_CONTROL<br />
HTTP_CONNECTION<br />
HTTP_COOKIE<br />
HTTP_FORWARDED<br />
HTTP_HOST<br />
HTTP_KEEP_ALIVE<br />
HTTP_PROXY_CONNECTION<br />
HTTP_REFERER<br />
HTTP_USER_AGENT<br />
IS_SUBREQ<br />
ORIG_PATH_INFO<br />
ORIG_PATH_TRANSLATED<br />
ORIG_SCRIPT_FILENAME<br />
ORIG_SCRIPT_NAME<br />
PATH<br />
PATH_INFO<br />
PHP_SELF<br />
QUERY_STRING<br />
REDIRECT_QUERY_STRING<br />
REDIRECT_REMOTE_USER<br />
REDIRECT_STATUS<br />
REDIRECT_URL<br />
REMOTE_ADDR<br />
REMOTE_HOST<br />
REMOTE_IDENT<br />
REMOTE_PORT<br />
REMOTE_USER<br />
REQUEST_FILENAME<br />
REQUEST_METHOD<br />
REQUEST_TIME<br />
REQUEST_URI<br />
SCRIPT_FILENAME<br />
SCRIPT_GROUP<br />
SCRIPT_NAME<br />
SCRIPT_URI<br />
SCRIPT_URL<br />
SCRIPT_USER<br />
SERVER_ADDR<br />
SERVER_ADMIN<br />
SERVER_NAME<br />
SERVER_PORT<br />
SERVER_PROTOCOL<br />
SERVER_SIGNATURE<br />
SERVER_SOFTWARE<br />
THE_REQUEST<br />
TIME<br />
TIME_DAY<br />
TIME_HOUR<br />
TIME_MIN<br />
TIME_MON<br />
TIME_SEC<br />
TIME_WDAY<br />
TIME_YEAR<br />
TZ<br />
UNIQUE_ID</p>
<h2>Αποκωδικοποίηση των μεταβλητών mod_rewrite</h2>
<p>Το βασικό μου πρόβλημα βάση των παραπάνω είναι πως όταν ανακάλυψα όλες αυτές τις μεταβλητές δεν ήξερα τι δεδομένα είχαν μέσα και τι ελέγχους θα μπορούσα να πραγματοποιήσω με την εντολή RewriteCond, και έτσι αποφάσισα να βρω τρόπο να δω το περιεχόμενο τους. Να θυμάστε πως μπορείτε να χρησιμοποιήσετε και την εντολή RewriteLogging, αλλά αυτή επιτρέπετε μόνο για τους διαχειριστές του server καθώς θα πρέπει να δηλωθεί στο αρχείο httpd.conf και όχι σε κάποιο αρχείο .htaccess.</p>
<h2>Ορισμός μεταβλητών περιβάλλοντος με την RewriteRule</h2>
<p>Δοκίμασα μια σειρά από μεθόδους για να ορίσω και τελικά να μπορέσω να δω τις μεταβλητές περιβάλλοντος του Apache, χρησιμοποιώντας διάφορες μονάδες και μερικά κόλπα του πυρήνα του Apache, αλλά η μόνη μέθοδος που μου επέτρεψε να δω τις περισσότερες μεταβλητές περιβάλλοντος είναι η RewriteRule. Μια άλλη εντολή που θέλησα να χρησιμοποιήσω ήταν η SetEnvlf, αλλά δεν είναι τόσο δυνατή όσο είναι και η mod_rewrite λόγο του προγραμματισμού.</p>
<p>Ο κώδικας που ακολουθεί ορίζει τη μεταβλητή περιβάλλοντος INFO_REQUEST_URI ώστε να έχει την τιμή REQUEST_URI.</p>
<pre class="brush: plain;">RewriteEngine On
RewriteBase /
RewriteRule .* - [E=INFO_REQUEST_URI:%{REQUEST_URI},NE]</pre>
<h2>Αποθήκευση των τιμών των μεταβλητών του Apache</h2>
<p>Το μυστικό τώρα είναι πως θα δούμε τις μεταβλητές περιβάλλοντος του Apache. Ο τρόπος είναι απλός, θα στείλουμε τις μεταβλητές μέσω των HTTP headers. Η πρώτη μου απόπειρα ήταν να στείλω τις μεταβλητές στη γραμμή διευθύνσεων του περιηγητή διαδικτύου με μια ανακατεύθυνση, αλλά αντιμετώπισα προβλήματα με τη μεταβλητή HTTP_USER_AGENT η οποία δεν λειτουργούσε σωστά.</p>
<h3>Χρήση της RequestHeader στα htaccess</h3>
<p>Ο κώδικας που ακολουθεί εκμεταλλεύεται την μονάδα mod_headers του Apache για να προσθέσει ένα ολόκληρο header στην απάντηση του Server.</p>
<pre class="brush: php;">RequestHeader set INFO_REQUEST_URI "%{INFO_REQUEST_URI}e"</pre>
<h2>Προβολή της τιμής της μεταβλητής</h2>
<p>Σε αυτό το σημείο μπορείτε να χρησιμοποιήσετε κάθε είδους διερμηνέα  όπως για παράδειγμα perl, php, ruby και άλλους για να δείτε όλες τις τιμές. Κάθε διερμηνέας είναι σε θέση να διαβάσεις τα request headers.</p>
<h2>Κώδικας PHP για να προσπελάσετε τις μεταβλητές του header</h2>
<p>&nbsp;</p>
<pre class="brush: php;">&lt;?php
header("Content-Type: text/plain");
$INFO = $MISS = array();
foreach($_SERVER as $v=&gt;$r)
{
  if(substr($v,0,9)=='HTTP_INFO')
  {
    if(!empty($r))$INFO[substr($v,10)]=$r;
    else $MISS[substr($v,10)]=$r;
  }
}

/* thanks Mike! */
ksort($INFO);
ksort($MISS);
ksort($_SERVER);

echo "Received These Variables:\n";
print_r($INFO);

echo "Missed These Variables:\n";
print_r($MISS);

echo "ALL Variables:\n";
print_r($_SERVER);
?&gt;</pre>
<p>Αφού δημιουργήσετε το παραπάνω αρχείο στο server σας δημιουργήστε και ένα αρχείο .htaccess στον ίδιο κατάλογο που θα περιέχει το ακόλουθο κώδικα htaccess. Στη συνέχεια τρέξτε το αρχείο php που δημιουργήσατε ποιο πριν και δείτε το αποτέλεσμα.</p>
<pre class="brush: plain;">RewriteEngine On
RewriteBase /
RewriteRule .* - [E=INFO_API_VERSION:%{API_VERSION},NE]
RewriteRule .* - [E=INFO_AUTH_TYPE:%{AUTH_TYPE},NE]
RewriteRule .* - [E=INFO_CONTENT_LENGTH:%{CONTENT_LENGTH},NE]
RewriteRule .* - [E=INFO_CONTENT_TYPE:%{CONTENT_TYPE},NE]
RewriteRule .* - [E=INFO_DOCUMENT_ROOT:%{DOCUMENT_ROOT},NE]
RewriteRule .* - [E=INFO_GATEWAY_INTERFACE:%{GATEWAY_INTERFACE},NE]
RewriteRule .* - [E=INFO_HTTPS:%{HTTPS},NE]
RewriteRule .* - [E=INFO_HTTP_ACCEPT:%{HTTP_ACCEPT},NE]
RewriteRule .* - [E=INFO_HTTP_ACCEPT_CHARSET:%{HTTP_ACCEPT_CHARSET},NE]
RewriteRule .* - [E=INFO_HTTP_ACCEPT_ENCODING:%{HTTP_ACCEPT_ENCODING},NE]
RewriteRule .* - [E=INFO_HTTP_ACCEPT_LANGUAGE:%{HTTP_ACCEPT_LANGUAGE},NE]
RewriteRule .* - [E=INFO_HTTP_CACHE_CONTROL:%{HTTP_CACHE_CONTROL},NE]
RewriteRule .* - [E=INFO_HTTP_CONNECTION:%{HTTP_CONNECTION},NE]
RewriteRule .* - [E=INFO_HTTP_COOKIE:%{HTTP_COOKIE},NE]
RewriteRule .* - [E=INFO_HTTP_FORWARDED:%{HTTP_FORWARDED},NE]
RewriteRule .* - [E=INFO_HTTP_HOST:%{HTTP_HOST},NE]
RewriteRule .* - [E=INFO_HTTP_KEEP_ALIVE:%{HTTP_KEEP_ALIVE},NE]
RewriteRule .* - [E=INFO_HTTP_MOD_SECURITY_MESSAGE:%{HTTP_MOD_SECURITY_MESSAGE},NE]
RewriteRule .* - [E=INFO_HTTP_PROXY_CONNECTION:%{HTTP_PROXY_CONNECTION},NE]
RewriteRule .* - [E=INFO_HTTP_REFERER:%{HTTP_REFERER},NE]
RewriteRule .* - [E=INFO_HTTP_USER_AGENT:%{HTTP_USER_AGENT},NE]
RewriteRule .* - [E=INFO_IS_SUBREQ:%{IS_SUBREQ},NE]
RewriteRule .* - [E=INFO_ORIG_PATH_INFO:%{ORIG_PATH_INFO},NE]
RewriteRule .* - [E=INFO_ORIG_PATH_TRANSLATED:%{ORIG_PATH_TRANSLATED},NE]
RewriteRule .* - [E=INFO_ORIG_SCRIPT_FILENAME:%{ORIG_SCRIPT_FILENAME},NE]
RewriteRule .* - [E=INFO_ORIG_SCRIPT_NAME:%{ORIG_SCRIPT_NAME},NE]
RewriteRule .* - [E=INFO_PATH:%{PATH},NE]
RewriteRule .* - [E=INFO_PATH_INFO:%{PATH_INFO},NE]
RewriteRule .* - [E=INFO_PHP_SELF:%{PHP_SELF},NE]
RewriteRule .* - [E=INFO_QUERY_STRING:%{QUERY_STRING},NE]
RewriteRule .* - [E=INFO_REDIRECT_QUERY_STRING:%{REDIRECT_QUERY_STRING},NE]
RewriteRule .* - [E=INFO_REDIRECT_REMOTE_USER:%{REDIRECT_REMOTE_USER},NE]
RewriteRule .* - [E=INFO_REDIRECT_STATUS:%{REDIRECT_STATUS},NE]
RewriteRule .* - [E=INFO_REDIRECT_URL:%{REDIRECT_URL},NE]
RewriteRule .* - [E=INFO_REMOTE_ADDR:%{REMOTE_ADDR},NE]
RewriteRule .* - [E=INFO_REMOTE_HOST:%{REMOTE_HOST},NE]
RewriteRule .* - [E=INFO_REMOTE_IDENT:%{REMOTE_IDENT},NE]
RewriteRule .* - [E=INFO_REMOTE_PORT:%{REMOTE_PORT},NE]
RewriteRule .* - [E=INFO_REMOTE_USER:%{REMOTE_USER},NE]
RewriteRule .* - [E=INFO_REQUEST_FILENAME:%{REQUEST_FILENAME},NE]
RewriteRule .* - [E=INFO_REQUEST_METHOD:%{REQUEST_METHOD},NE]
RewriteRule .* - [E=INFO_REQUEST_TIME:%{REQUEST_TIME},NE]
RewriteRule .* - [E=INFO_REQUEST_URI:%{REQUEST_URI},NE]
RewriteRule .* - [E=INFO_SCRIPT_FILENAME:%{SCRIPT_FILENAME},NE]
RewriteRule .* - [E=INFO_SCRIPT_GROUP:%{SCRIPT_GROUP},NE]
RewriteRule .* - [E=INFO_SCRIPT_NAME:%{SCRIPT_NAME},NE]
RewriteRule .* - [E=INFO_SCRIPT_URI:%{SCRIPT_URI},NE]
RewriteRule .* - [E=INFO_SCRIPT_URL:%{SCRIPT_URL},NE]
RewriteRule .* - [E=INFO_SCRIPT_USER:%{SCRIPT_USER},NE]
RewriteRule .* - [E=INFO_SERVER_ADDR:%{SERVER_ADDR},NE]
RewriteRule .* - [E=INFO_SERVER_ADMIN:%{SERVER_ADMIN},NE]
RewriteRule .* - [E=INFO_SERVER_NAME:%{SERVER_NAME},NE]
RewriteRule .* - [E=INFO_SERVER_PORT:%{SERVER_PORT},NE]
RewriteRule .* - [E=INFO_SERVER_PROTOCOL:%{SERVER_PROTOCOL},NE]
RewriteRule .* - [E=INFO_SERVER_SIGNATURE:%{SERVER_SIGNATURE},NE]
RewriteRule .* - [E=INFO_SERVER_SOFTWARE:%{SERVER_SOFTWARE},NE]
RewriteRule .* - [E=INFO_THE_REQUEST:%{THE_REQUEST},NE]
RewriteRule .* - [E=INFO_TIME:%{TIME},NE]
RewriteRule .* - [E=INFO_TIME_DAY:%{TIME_DAY},NE]
RewriteRule .* - [E=INFO_TIME_HOUR:%{TIME_HOUR},NE]
RewriteRule .* - [E=INFO_TIME_MIN:%{TIME_MIN},NE]
RewriteRule .* - [E=INFO_TIME_MON:%{TIME_MON},NE]
RewriteRule .* - [E=INFO_TIME_SEC:%{TIME_SEC},NE]
RewriteRule .* - [E=INFO_TIME_WDAY:%{TIME_WDAY},NE]
RewriteRule .* - [E=INFO_TIME_YEAR:%{TIME_YEAR},NE]
RewriteRule .* - [E=INFO_TZ:%{TZ},NE]
RewriteRule .* - [E=INFO_UNIQUE_ID:%{UNIQUE_ID},NE]

RequestHeader set INFO_API_VERSION "%{INFO_API_VERSION}e"
RequestHeader set INFO_AUTH_TYPE "%{INFO_AUTH_TYPE}e"
RequestHeader set INFO_CONTENT_LENGTH "%{INFO_CONTENT_LENGTH}e"
RequestHeader set INFO_CONTENT_TYPE "%{INFO_CONTENT_TYPE}e"
RequestHeader set INFO_DOCUMENT_ROOT "%{INFO_DOCUMENT_ROOT}e"
RequestHeader set INFO_GATEWAY_INTERFACE "%{INFO_GATEWAY_INTERFACE}e"
RequestHeader set INFO_HTTPS "%{INFO_HTTPS}e"
RequestHeader set INFO_HTTP_ACCEPT "%{INFO_HTTP_ACCEPT}e"
RequestHeader set INFO_HTTP_ACCEPT_CHARSET "%{INFO_HTTP_ACCEPT_CHARSET}e"
RequestHeader set INFO_HTTP_ACCEPT_ENCODING "%{INFO_HTTP_ACCEPT_ENCODING}e"
RequestHeader set INFO_HTTP_ACCEPT_LANGUAGE "%{INFO_HTTP_ACCEPT_LANGUAGE}e"
RequestHeader set INFO_HTTP_CACHE_CONTROL "%{INFO_HTTP_CACHE_CONTROL}e"
RequestHeader set INFO_HTTP_CONNECTION "%{INFO_HTTP_CONNECTION}e"
RequestHeader set INFO_HTTP_COOKIE "%{INFO_HTTP_COOKIE}e"
RequestHeader set INFO_HTTP_FORWARDED "%{INFO_HTTP_FORWARDED}e"
RequestHeader set INFO_HTTP_HOST "%{INFO_HTTP_HOST}e"
RequestHeader set INFO_HTTP_KEEP_ALIVE "%{INFO_HTTP_KEEP_ALIVE}e"
RequestHeader set INFO_HTTP_MOD_SECURITY_MESSAGE "%{INFO_HTTP_MOD_SECURITY_MESSAGE}e"
RequestHeader set INFO_HTTP_PROXY_CONNECTION "%{INFO_HTTP_PROXY_CONNECTION}e"
RequestHeader set INFO_HTTP_REFERER "%{INFO_HTTP_REFERER}e"
RequestHeader set INFO_HTTP_USER_AGENT "%{INFO_HTTP_USER_AGENT}e"
RequestHeader set INFO_IS_SUBREQ "%{INFO_IS_SUBREQ}e"
RequestHeader set INFO_ORIG_PATH_INFO "%{INFO_ORIG_PATH_INFO}e"
RequestHeader set INFO_ORIG_PATH_TRANSLATED "%{INFO_ORIG_PATH_TRANSLATED}e"
RequestHeader set INFO_ORIG_SCRIPT_FILENAME "%{INFO_ORIG_SCRIPT_FILENAME}e"
RequestHeader set INFO_ORIG_SCRIPT_NAME "%{INFO_ORIG_SCRIPT_NAME}e"
RequestHeader set INFO_PATH "%{INFO_PATH}e"
RequestHeader set INFO_PATH_INFO "%{INFO_PATH_INFO}e"
RequestHeader set INFO_PHP_SELF "%{INFO_PHP_SELF}e"
RequestHeader set INFO_QUERY_STRING "%{INFO_QUERY_STRING}e"
RequestHeader set INFO_REDIRECT_QUERY_STRING "%{INFO_REDIRECT_QUERY_STRING}e"
RequestHeader set INFO_REDIRECT_REMOTE_USER "%{INFO_REDIRECT_REMOTE_USER}e"
RequestHeader set INFO_REDIRECT_STATUS "%{INFO_REDIRECT_STATUS}e"
RequestHeader set INFO_REDIRECT_URL "%{INFO_REDIRECT_URL}e"
RequestHeader set INFO_REMOTE_ADDR "%{INFO_REMOTE_ADDR}e"
RequestHeader set INFO_REMOTE_HOST "%{INFO_REMOTE_HOST}e"
RequestHeader set INFO_REMOTE_IDENT "%{INFO_REMOTE_IDENT}e"
RequestHeader set INFO_REMOTE_PORT "%{INFO_REMOTE_PORT}e"
RequestHeader set INFO_REMOTE_USER "%{INFO_REMOTE_USER}e"
RequestHeader set INFO_REQUEST_FILENAME "%{INFO_REQUEST_FILENAME}e"
RequestHeader set INFO_REQUEST_METHOD "%{INFO_REQUEST_METHOD}e"
RequestHeader set INFO_REQUEST_TIME "%{INFO_REQUEST_TIME}e"
RequestHeader set INFO_REQUEST_URI "%{INFO_REQUEST_URI}e"
RequestHeader set INFO_SCRIPT_FILENAME "%{INFO_SCRIPT_FILENAME}e"
RequestHeader set INFO_SCRIPT_GROUP "%{INFO_SCRIPT_GROUP}e"
RequestHeader set INFO_SCRIPT_NAME "%{INFO_SCRIPT_NAME}e"
RequestHeader set INFO_SCRIPT_URI "%{INFO_SCRIPT_URI}e"
RequestHeader set INFO_SCRIPT_URL "%{INFO_SCRIPT_URL}e"
RequestHeader set INFO_SCRIPT_USER "%{INFO_SCRIPT_USER}e"
RequestHeader set INFO_SERVER_ADDR "%{INFO_SERVER_ADDR}e"
RequestHeader set INFO_SERVER_ADMIN "%{INFO_SERVER_ADMIN}e"
RequestHeader set INFO_SERVER_NAME "%{INFO_SERVER_NAME}e"
RequestHeader set INFO_SERVER_PORT "%{INFO_SERVER_PORT}e"
RequestHeader set INFO_SERVER_PROTOCOL "%{INFO_SERVER_PROTOCOL}e"
RequestHeader set INFO_SERVER_SIGNATURE "%{INFO_SERVER_SIGNATURE}e"
RequestHeader set INFO_SERVER_SOFTWARE "%{INFO_SERVER_SOFTWARE}e"
RequestHeader set INFO_THE_REQUEST "%{INFO_THE_REQUEST}e"
RequestHeader set INFO_TIME "%{INFO_TIME}e"
RequestHeader set INFO_TIME_DAY "%{INFO_TIME_DAY}e"
RequestHeader set INFO_TIME_HOUR "%{INFO_TIME_HOUR}e"
RequestHeader set INFO_TIME_MIN "%{INFO_TIME_MIN}e"
RequestHeader set INFO_TIME_MON "%{INFO_TIME_MON}e"
RequestHeader set INFO_TIME_SEC "%{INFO_TIME_SEC}e"
RequestHeader set INFO_TIME_WDAY "%{INFO_TIME_WDAY}e"
RequestHeader set INFO_TIME_YEAR "%{INFO_TIME_YEAR}e"
RequestHeader set INFO_TZ "%{INFO_TZ}e"
RequestHeader set INFO_UNIQUE_ID "%{INFO_UNIQUE_ID}e"</pre>
<p>Το τελικό αποτέλεσμα θα πρέπει να μοιάζει κάπως έτσι :</p>
<pre class="brush: plain;">[API_VERSION] =&gt; 20020903:12
[AUTH_TYPE] =&gt; Digest
[DOCUMENT_ROOT] =&gt; /home/user/www_root/askapache.com
[HTTPS] =&gt; off
[HTTP_ACCEPT] =&gt; text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_COOKIE] =&gt; PHPSESSID=752ee6d56e15f305233e30045987e5ce568c034; __qca=1176541225-59967328-5223185;
[HTTP_HOST] =&gt; www.askapache.com
[HTTP_REFERER] =&gt; http://www.askapache.com/protest/index.php?askapache=awesomeness&amp;you=rock
[HTTP_USER_AGENT] =&gt; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
[IS_SUBREQ] =&gt; false
[QUERY_STRING] =&gt; e=404
[REMOTE_ADDR] =&gt; 22.162.144.211
[REMOTE_HOST] =&gt; 22.162.144.211
[REMOTE_PORT] =&gt; 4511
[REMOTE_USER] =&gt; administrator
[REQUEST_FILENAME] =&gt; /home/user/www_root/askapache.com/protest/index.php
[REQUEST_METHOD] =&gt; GET
[REQUEST_URI] =&gt; /protest/index.php
[SCRIPT_FILENAME] =&gt; /home/user/www_root/askapache.com/protest/index.php
[SCRIPT_GROUP] =&gt; daemonu
[SCRIPT_USER] =&gt; askapache
[SERVER_ADDR] =&gt; 208.113.134.190
[SERVER_ADMIN] =&gt; <span class="mh-email"><a href='http://www.google.com/recaptcha/mailhide/d?k=01O6igIzbFXIJILY4eu6uOew==&amp;c=pZ9J6SC-GjYY-fmtMLoKWqzzXbZ9cnhaYXjomZPXlP0=' onclick="window.open('http://www.google.com/recaptcha/mailhide/d?k=01O6igIzbFXIJILY4eu6uOew==&amp;c=pZ9J6SC-GjYY-fmtMLoKWqzzXbZ9cnhaYXjomZPXlP0=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;" title="Κάντε Click για να δείτε την ηλεκτρονική διεύθυνση">Κρυφή διεύθυνση αλληλογραφίας</a></span>
[SERVER_NAME] =&gt; www.askapache.com
[SERVER_PORT] =&gt; 80
[SERVER_PROTOCOL] =&gt; HTTP/1.1
[SERVER_SOFTWARE] =&gt; Apache/2.0.61 (Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2
[THE_REQUEST] =&gt; GET /protest/adf HTTP/1.1
[TIME] =&gt; 20080820014309
[TIME_DAY] =&gt; 20
[TIME_HOUR] =&gt; 01
[TIME_MIN] =&gt; 43
[TIME_MON] =&gt; 08
[TIME_SEC] =&gt; 09
[TIME_WDAY] =&gt; 3
[TIME_YEAR] =&gt; 2008</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/advanced_mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 &amp; HTML 4+ &#8211; Όλες οι ετικέτες</title>
		<link>http://www.web-resources.eu/archives/html5-and-html4-tags</link>
		<comments>http://www.web-resources.eu/archives/html5-and-html4-tags#comments</comments>
		<pubDate>Mon, 19 Sep 2011 07:45:05 +0000</pubDate>
		<dc:creator>CorfuGmr</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5 HTML4]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://www.web-resources.eu/?p=3278</guid>
		<description><![CDATA[Σήμερα άρχισα να κάνω μια σύντομη σύγκριση των ετικετών της HTML 4+ με τις ετικέτες της HTML5 έτσι ώστε να μπορέσω να δω ποιες είναι οι διαφορές από ετικέτα σε ετικέτα, ποιες ετικέτες έχουν κληρονομηθεί από την HTML 4+ και ποιες νέες ετικέτες υπάρχουν που δεν υπήρχαν στις προηγούμενες εκδόσεις. Έτσι μετά από αρκετή ώρα συγκρίσεων, συγκέντρωσα [...]]]></description>
			<content:encoded><![CDATA[<p>Σήμερα άρχισα να κάνω μια σύντομη σύγκριση των ετικετών της HTML 4+ με τις ετικέτες της HTML5 έτσι ώστε να μπορέσω να δω ποιες είναι οι διαφορές από ετικέτα σε ετικέτα, ποιες ετικέτες έχουν κληρονομηθεί από την HTML 4+ και ποιες νέες ετικέτες υπάρχουν που δεν υπήρχαν στις προηγούμενες εκδόσεις. Έτσι μετά από αρκετή ώρα συγκρίσεων, συγκέντρωσα μια λίστα με όλες τις ετικέτες που υπάρχουν στην HTML 4+ και στην HTML5.<span id="more-3278"></span></p>
<table>
<thead>
<tr>
<th style="width: 20%;">Ετικέτα</th>
<th style="width: 55%;">Περιγραφή</th>
<th>HTML 4+</th>
<th>HTML 5</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;comment&gt;</td>
<td>Ορίζει ένα σχόλιο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;DOCTYPE&gt;</td>
<td>Ορίζει τον τύπου του εγγράφου</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;a&gt;</td>
<td>Ορίζει ένα υπέρ-σύνδεσμο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;abbr&gt;</td>
<td>Ορίζει μια συντομογραφία</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;acronym&gt;</td>
<td>Ορίζει μια ακρώνυμο</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;address&gt;</td>
<td>Ορίζει ένα στοιχείο διεύθυνσης</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;applet&gt;</td>
<td>Ορίζει ένα applet</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;area&gt;</td>
<td>Ορίζει μια περιοχή μέσα σε ένα χάρτη εικόνας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;article&gt;</td>
<td>Ορίζει ένα άρθρο</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;aside&gt;</td>
<td>Ορίζει μια περιοχή δίπλα από το περιεχόμενο της σελίδας</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;audio&gt;</td>
<td>Ορίζει μια περιοχή ήχου</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;b&gt;</td>
<td>Ορίζει ένα έντονα γραμμένο κείμενο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;base&gt;</td>
<td>Ορίζει το βασικό URL για όλα τα URL της σελίδας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;basefont&gt;</td>
<td>Είναι απαγορευμένη. Στη θέση της χρησιμοποιήστε CSS</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;bdo&gt;</td>
<td>Ορίζει την κατεύθυνση του κειμένου που εμφανίζει</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;big&gt;</td>
<td>Ορίζει μεγάλο κείμενο</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;blockquote&gt;</td>
<td>Ορίζει μια μεγάλη περιοχή εισαγωγικών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;body&gt;</td>
<td>Ορίζει το στοιχείο κορμού</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;br&gt;</td>
<td>Εισάγει μια αλλαγή γραμμής</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;button&gt;</td>
<td>Εισάγει ένα κουμπί</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;canvas&gt;</td>
<td>Ορίζει μια περιοχή για γραφικά</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;caption&gt;</td>
<td>Ορίζει μια επικεφαλίδα σε πίνακες</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;center&gt;</td>
<td>Ορίζει ένα κείμενο στοιχισμένο στο κέντρο</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;cite&gt;</td>
<td>Ορίζει μια παραπομπή</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;code&gt;</td>
<td>Ορίζει μια περιοχή που προβάλει κώδικα υπολογιστών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;col&gt;</td>
<td>Ορίζει ιδιότητες για στήλες σε ένα πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;colgroup&gt;</td>
<td>Ορίζει ομάδες από στήλες σε ένα πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;command&gt;</td>
<td>Ορίζει ένα κουμπί εντολής</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;datagrid&gt;</td>
<td>Ορίζει δεδομένα σε λίστα δέντρου</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;datalist&gt;</td>
<td>Ορίζει μια αναδυόμενη λίστα δεδομένων</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;datatemplate&gt;</td>
<td>Ορίζει πρότυπα δεδομένων</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dd&gt;</td>
<td>Ορίζει την περιγραφή ενός ορισμού</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;del&gt;</td>
<td>Ορίζει ένα διαγραμμένο κείμενο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;details&gt;</td>
<td>Ορίζει της λεπτομέρειες ενός στοιχείου</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dialog&gt;</td>
<td>Ορίζει ένα διάλογο</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dir&gt;</td>
<td>Ορίζει μια λίστα καταλόγου</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;div&gt;</td>
<td>Ορίζει ένα τμήμα σε ένα έγγραφο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dfn&gt;</td>
<td>Ορίζει ένα ορισμό για ένα όρο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dl&gt;</td>
<td>Ορίζει μια λίστα ορισμών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;dt&gt;</td>
<td>Ορίζει ένα όρο ορισμού</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;em&gt;</td>
<td>Ορίζει ένα κείμενο με έμφαση</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;embed&gt;</td>
<td>Ορίζει ένα εξωτερικό διαδραστικό στοιχείο ή κάποιο plugin</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;eventsource&gt;</td>
<td>Ορίζει μια περιοχή «στόχο» για γεγονότα που αποστέλνονται από το web server</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;fieldset&gt;</td>
<td>Ορίζει μια περιοχή πεδίων φόρμας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;figure&gt;</td>
<td>Ορίζει μια ομάδα πολυμέσων και τους τίτλους τους</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;font&gt;</td>
<td>Ορίζει το όνομα το χρώμα και το μέγεθος της γραμματοσειράς</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;footer&gt;</td>
<td>Ορίζει το υποσέλιδο ενός τμήματος ή μιας σελίδας</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;form&gt;</td>
<td>Ορίζει μια φόρμα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;frame&gt;</td>
<td>Ορίζει ένα υπό-παράθυρο</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;frameset&gt;</td>
<td>Ορίζει ένα σύνολο από παράθυρα</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;h1&gt; &#8211; &lt;h6&gt;</td>
<td>Ορίζει επικεφαλίδες τάξης από 1 μέχρι 6</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;head&gt;</td>
<td>Ορίζει πληροφορίες σχετικά με το έγγραφο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;header&gt;</td>
<td>Ορίζει την επικεφαλίδα ενός τμήματος ή της σελίδας</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;hr&gt;</td>
<td>Ορίζει μια οριζόντια γραμμή</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;html&gt;</td>
<td>Ορίζει ένα έγγραφο html</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;i&gt;</td>
<td>Ορίζει πλάγια γράμματα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;iframe&gt;</td>
<td>Ορίζει ένα υπό-παράθυρο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;img&gt;</td>
<td>Ορίζει μια εικόνα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;input&gt;</td>
<td>Ορίζει ένα πεδίο εισαγωγής</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;ins&gt;</td>
<td>Ορίζει ένα κείμενο που προστέθηκε αργότερα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;isindex&gt;</td>
<td>Ορίζει ένα πεδίο εισαγωγής μιας γραμμής</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;kbd&gt;</td>
<td>Ορίζει κείμενο γραμμένο με το πληκτρολόγιο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;label&gt;</td>
<td>Ορίζει μια ετικέτα για ένα στοιχείο εισαγωγής φόρμας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;legend&gt;</td>
<td>Ορίζει τον τίτλο ενός συνόλου πεδίων</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;li&gt;</td>
<td>Ορίζει ένα στοιχείο λίστας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;link&gt;</td>
<td>Ορίζει την αναφορά σε μια πηγή</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;mark&gt;</td>
<td>Ορίζει ένα κείμενο με επισήμανση</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;map&gt;</td>
<td>Ορίζει ένα χάρτη εικόνας</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;menu&gt;</td>
<td>Ορίζει μια λίστα μενού</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;meta&gt;</td>
<td>Ορίζει μετά πληροφορίες για το έγγραφο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;meter&gt;</td>
<td>Ορίζει τη μέτρηση σε ένα προκαθορισμένο εύρος τιμών</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;nav&gt;</td>
<td>Ορίζει συνδέσμους πλοήγησης</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;nest&gt;</td>
<td>Ορίζει το σημείο ενθυλάκωσης σε ένα πρότυπο δεδομένων</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;noframes&gt;</td>
<td>Ορίζει ένα τμήμα που δεν έχει υπό-παράθυρα</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;noscript&gt;</td>
<td>Ορίζει μια περιοχή χωρίς σενάρια εντολών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;object&gt;</td>
<td>Ορίζει ένα ενσωματωμένο αντικείμενο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;ol&gt;</td>
<td>Ορίζει μια ταξινομημένη λίστα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;optgroup&gt;</td>
<td>Ορίζει ένα σύνολο επιλογών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;option&gt;</td>
<td>Ορίζει μια επιλογή σε μια αναδυόμενη λίστα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;output&gt;</td>
<td>Ορίζει ορισμένους τύπους εξόδου</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;p&gt;</td>
<td>Ορίζει μια παράγραφο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;param&gt;</td>
<td>Ορίζει μια παράμετρο ενός αντικειμένου</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;pre&gt;</td>
<td>Ορίζει ένα κείμενο που είναι μορφοποιημένο εξ αρχής</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;progress&gt;</td>
<td>Ορίζει την πρόοδο κάθε είδους εργασίας</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;q&gt;</td>
<td>Ορίζει σύντομα εισαγωγικά</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;rule&gt;</td>
<td>Ορίζει τους κανόνες αναβάθμισης ενός προτύπου</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;s&gt;</td>
<td>Ορίζει ένα κείμενο με μια γραμμή στη μέση</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;samp&gt;</td>
<td>Ορίζει δείγμα κώδικα υπολογιστή</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;script&gt;</td>
<td>Ορίζει ένα σενάριο εντολών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;section&gt;</td>
<td>Ορίζει ένα τμήμα</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;select&gt;</td>
<td>Ορίζει μια λίστα επιλογών</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;small&gt;</td>
<td>Ορίζει ένα κείμενο με μικρότερη γραμματοσειρά</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;source&gt;</td>
<td>Ορίζει πηγές πολυμέσων</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;span&gt;</td>
<td>Ορίζει ένα τμήμα του εγγράφου</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;strike&gt;</td>
<td>Ορίζει ένα κείμενο με μια γραμμή στη μέση</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;strong&gt;</td>
<td>Ορίζει ένα έντονα γραμμένο κείμενο</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;style&gt;</td>
<td>Ορίζει ένα ορισμό μορφοποίησης</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;sub&gt;</td>
<td>Ορίζει ένα κείμενο βάσης</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;sup&gt;</td>
<td>Ορίζει ένα κείμενο εκθέτη</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;table&gt;</td>
<td>Ορίζει ένα πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;tbody&gt;</td>
<td>Ορίζει τον κορμό ενός πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;td&gt;</td>
<td>Ορίζει ένα κελί του πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;textarea&gt;</td>
<td>Ορίζει μια περιοχή κειμένου</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;tfoot&gt;</td>
<td>Ορίζει το υποσέλιδο ενός πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;th&gt;</td>
<td>Ορίζει την επικεφαλίδα μια στήλης του πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;thead&gt;</td>
<td>Ορίζει την επικεφαλίδα ενός πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;time&gt;</td>
<td>Ορίζει μια ώρα/ημερομηνία</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;title&gt;</td>
<td>Ορίζει τον τίτλο του εγγράφου</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;tr&gt;</td>
<td>Ορίζει μια γραμμή σε ένα πίνακα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;tt&gt;</td>
<td>Ορίζει κείμενο τηλετύπου</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;u&gt;</td>
<td>Ορίζει ένα υπογραμμισμένο κείμενο</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>&lt;ul&gt;</td>
<td>Ορίζει μια αταξινόμητη λίστα</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;var&gt;</td>
<td>Ορίζει μια μεταβλητή</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>&lt;video&gt;</td>
<td>Ορίζει ένα video</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>&lt;xmp&gt;</td>
<td>Ορίζει ένα κείμενο μορφοποιημένο εξ ορισμού</td>
<td>✓</td>
<td></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.web-resources.eu/archives/html5-and-html4-tags/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

