<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>theportraitofageek.com</title>
	
	<link>http://theportraitofageek.com/blog</link>
	<description>Living by coding &amp; design</description>
	<lastBuildDate>Wed, 21 Jul 2010 11:21:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/theportraitofageek/BxBy" /><feedburner:info uri="theportraitofageek/bxby" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Μουστάκι και ιστορίες</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/hRIFShkgzts/</link>
		<comments>http://theportraitofageek.com/blog/?p=910#comments</comments>
		<pubDate>Wed, 21 Jul 2010 11:21:53 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[ΑΠΟΨΕΙΣ]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=910</guid>
		<description><![CDATA[Εντάξει ο μήνας έχει 22 και ακόμα καλοκαίρι δε καταλάβαμε. Ούτε μάλλον θα πάρουμε χαμπάρι. Αλλά τι να γίνει, you win some, you lose some. Έτσι λοιπόν, μέσα στο κατακαλόκαιρο είπαμε να ετοιμάσουμε τις νέες μας υπηρεσίες. Vector Stories λοιπόν. To νέο site της Ελενίτσας (όχι Ελένης είπαμε). Οι υπηρεσίες που προσφέρει έχουν να κάνουν [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theportraitofageek.com/blog/wp-content/uploads/2010/07/vs.jpg" alt="" title="vector stories" width="707" height="444" class="alignleft size-full wp-image-911" /></p>
<p>Εντάξει ο μήνας έχει 22 και ακόμα καλοκαίρι δε καταλάβαμε. Ούτε μάλλον θα πάρουμε χαμπάρι. Αλλά τι να γίνει, you win some, you lose some. Έτσι λοιπόν, μέσα στο κατακαλόκαιρο είπαμε να ετοιμάσουμε τις νέες μας υπηρεσίες. <a href="http://www.vectorstories.com">Vector Stories</a> λοιπόν. To νέο site της <a href="http://www.twitter.com/pinkmoustache">Ελενίτσας</a> (όχι Ελένης είπαμε). Οι υπηρεσίες που προσφέρει έχουν να κάνουν με οτιδήποτε ξεκινάει από χαρτί και καταλήγει σε μορφή vector. Πάει και παραπέρα αλλά ρίξτε μια ματιά και αν χρειαστείτε κάτι, μη διστάσετε να επικοινωνήσετε μαζί της. </p>

<p><a href="http://feedads.g.doubleclick.net/~a/ctge-NxnDApjgseVOgha3T8GdPE/0/da"><img src="http://feedads.g.doubleclick.net/~a/ctge-NxnDApjgseVOgha3T8GdPE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ctge-NxnDApjgseVOgha3T8GdPE/1/da"><img src="http://feedads.g.doubleclick.net/~a/ctge-NxnDApjgseVOgha3T8GdPE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=hRIFShkgzts:iGANt-eOzfM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=hRIFShkgzts:iGANt-eOzfM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=hRIFShkgzts:iGANt-eOzfM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=hRIFShkgzts:iGANt-eOzfM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=hRIFShkgzts:iGANt-eOzfM:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/hRIFShkgzts" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=910</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=910</feedburner:origLink></item>
		<item>
		<title>Με τσίχλα και καπέλο</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/fiNMHgKkOBg/</link>
		<comments>http://theportraitofageek.com/blog/?p=905#comments</comments>
		<pubDate>Sun, 18 Jul 2010 20:54:40 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=905</guid>
		<description><![CDATA[Άργησα αλλά η αντίστροφη μέτρηση ξεκίνησε. Ένα ένα τα πράγματα μπαίνουν στη θέση τους και το cssigniter.com σε λίγο καιρό, το Σεπτέμβριο δλδ θα είναι online. Για όσους δε γνωρίζουν πρόκειται για άλλο ένα WordPress themes shop. Έχει γεμίσει ο τόπος, αλλά προσωπικά πιστεύω πως βρήκα τρόπο να διαφοροποιηθώ σε αρκετά σημεία. Όπως και να [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theportraitofageek.com/blog/wp-content/uploads/2010/07/cssigniter.png" alt="" title="cssigniter.com - premium wordpress themes" width="707" height="510" class="alignleft size-full wp-image-907" /></p>
<p>Άργησα αλλά η αντίστροφη μέτρηση ξεκίνησε. Ένα ένα τα πράγματα μπαίνουν στη θέση τους και το <a href="http://www.cssigniter.com">cssigniter.com</a> σε λίγο καιρό, το Σεπτέμβριο δλδ θα είναι online. Για όσους δε γνωρίζουν πρόκειται για άλλο ένα WordPress themes shop. Έχει γεμίσει ο τόπος, αλλά προσωπικά πιστεύω πως βρήκα τρόπο να διαφοροποιηθώ σε αρκετά σημεία. Όπως και να έχει στο cssigniter.com υπάρχει ένα newsletter στο οποίο μπορείτε να γραφτείτε και να μάθετε πότε θα είναι το site online όπως επίσης κάποια στιγμή θα δείτε και κάποια teasers από τα θέματα που θα βγούν για αρχή στον αέρα. </p>
<p>Επίσης έχω άλλο ένα twitter account ( <a href="http://www.twitter.com/cssigniter">@cssigniter</a> ) στο οποίο και εκεί μπορείτε να παρακολουθήσετε  θέματα σχετικά με αυτό το site.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/kxNoHAxYCBeh6c3cChkCHqgWgWg/0/da"><img src="http://feedads.g.doubleclick.net/~a/kxNoHAxYCBeh6c3cChkCHqgWgWg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kxNoHAxYCBeh6c3cChkCHqgWgWg/1/da"><img src="http://feedads.g.doubleclick.net/~a/kxNoHAxYCBeh6c3cChkCHqgWgWg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=fiNMHgKkOBg:OdCNtRL2YzY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=fiNMHgKkOBg:OdCNtRL2YzY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=fiNMHgKkOBg:OdCNtRL2YzY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=fiNMHgKkOBg:OdCNtRL2YzY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=fiNMHgKkOBg:OdCNtRL2YzY:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/fiNMHgKkOBg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=905</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=905</feedburner:origLink></item>
		<item>
		<title>PSD to HTML/CSS</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/N_922rbXEI0/</link>
		<comments>http://theportraitofageek.com/blog/?p=888#comments</comments>
		<pubDate>Mon, 05 Jul 2010 21:35:07 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[ΑΠΟΨΕΙΣ]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=888</guid>
		<description><![CDATA[Η μετατροπή μιας μακέτα σε HTML/CSS δεν είναι εύκολη υπόθεση. Για να το πω διαφορετικά, η σωστή μετατροπή δεν είναι εύκολη υπόθεση. Είναι μια διαδικασία που απαιτεί υπομονή. Προχθές έκοψα την 200η παραγγελία στο xhtmlme.com. Είπα λοιπόν να το γιορτάσω μοιράζοντας μαζί σου κάποια πράγματα που έμαθα όλο αυτό το καιρό. Εργαλεία Πολύ σημαντικό κομμάτι [...]]]></description>
			<content:encoded><![CDATA[<p>Η μετατροπή μιας μακέτα σε HTML/CSS δεν είναι εύκολη υπόθεση. Για να το πω διαφορετικά, η σωστή μετατροπή δεν είναι εύκολη υπόθεση. Είναι μια διαδικασία που απαιτεί υπομονή. Προχθές έκοψα την 200η παραγγελία στο xhtmlme.com. Είπα λοιπόν να το γιορτάσω μοιράζοντας μαζί σου κάποια πράγματα που έμαθα όλο αυτό το καιρό.</p>
<h3>Εργαλεία</h3>
<p>Πολύ σημαντικό κομμάτι όπως και σε κάθε τι που κάνουμε, όχι μόνο στο slicing. Εδώ όμως τα εργαλεία μπορούν να κάνουν τη διαφορά. Και τη διαφορά στη συγκεκριμένη δουλειά κάνει η ταχύτητα παράδοσης. Ο συγκεκριμένος παράγοντας δεν είναι μόνο απαραίτητος για την ικανοποίηση του πελάτη και του deadline, αλλά και για σένα που χρεώνεις με ένα συγκεκριμένο τρόπο. Όσο πιο γρήγορα δουλεύεις, πολύ απλά τόσο μεγαλύτερο είναι το κέρδος σου ανά ώρα. Δεν είμαι από αυτούς που θα σου πούνε ποιος editor είναι ο καλύτερος ή καλύτερα να πάρεις Mac για να κάνεις σωστή δουλειά. That&#8217;s BS. Προσωπικά τους τελευταίους 4 μήνες είμαι σε Mac και ακόμα ο αγαπημένος μου editor βρίσκεται στα Windows. Όμως και σε αυτή τη πλατφόρμα βρήκα εργαλεία που με κάνουν να είμαι γρήγορος και αποδοτικός. Πως το έχω στήσει λοιπόν.</p>
<h3>Mini Framework</h3>
<p><img class="size-full wp-image-891 alignleft" title="framework" src="http://theportraitofageek.com/blog/wp-content/uploads/2010/07/framework.gif" alt="" width="193" height="193" />Τίποτα τρομερό και φοβερό. Απλά ένα folder με ότι χρειάζομαι στο 90% των projects που δουλεύω. jQuery my JS framework of choice, ie6 + 7 conditional stylesheets, ένα &#8220;baseline.css&#8221; για γενικές δηλώσεις (resets, basic typography), ένα φάκελο για τα γραφικά και φύγαμε. Σε κάθε project προσθέτω και κάτι που θεωρώ ότι χρειάζεται να υπάρχει εκεί μέσα και πλέον μετά από καμιά 10αριά revisions είναι ένας μικρός ελβετικός σουγιάς. Μιας και οι περισσότερες παραγγελίες πλέον θέλουν και WordPress integration, κρατάω τη δομή ενός WordPress theme, αφήνοντας στο κεντρικό folder το style.css. Μόνο με αυτό το framework, γλιτώνω κοντά στο μισάωρο κάθε φορά που ξεκινάω νέο project.</p>
<h3>Editor</h3>
<p><img src="http://theportraitofageek.com/blog/wp-content/uploads/2010/07/snippets.gif" alt="" title="snippets" width="193" height="193" class="alignleft size-full wp-image-894" /> O editor πραγματικά μπορεί να κάνει τη διαφορά. Όπως κάθε editor έχει πλεονεκτήματα και μειονεκτήματα. Προσωπικά επέλεξα τον Coda. Ο λόγος είναι πολύ συγκεκριμένος και δεν έχει να κάνει με το hype που παίζει (άδικα). Όταν έκανα τη μετάβαση από PC σε Mac οι παραγγελίες τρέχανε. Δεν είχα χρόνο να κάτσω να ψάξω 10 διαφορετικούς editors να δω ποιος μου ταιριάζει. Σκέφτηκα λοιπόν να ασχοληθώ από τη μέρα 1 στο Mac με ένα editor που για να γίνεται τόσος ντόρος, κάτι σημαίνει (Yes, one more <a href="http://en.wikipedia.org/wiki/Social_proof">Social Proof victim</a>) και απλά να βρώ τα κουμπιά του για να συνεχίσω να δουλεύω χωρίς καμία καθυστέρηση. Wow δεν είπα, far from it, αλλά ναι είναι ελαφρύς, έχει διάφορα καλούδια και η ζωή είναι ωραία. Tα snippets εδώ ήταν από τα πρώτα πράγματα που έπρεπε να συνηθίσω. WordPress loops, Unordered lists, titles, lorem ipsum text πρέπει να έρχονται στον cursor με όσο το δυνατό λιγότερα κλικς. Όταν είσαι συγκεντρωμένος στο layout, σε θέματα τυπογραφίας κλπ. το τελευταίο πράγμα που χρειάζεσαι είναι να χάνεις τη συγκέντρωση σου ψάχνοντας lorem ipsum copy σε sites που έχουν 2 banners, που πάτησες στο 1, που πήγες σε άλλο site, που χάζεψες κανά τέταρτο, που.. το έχασες. Shortcuts και snippets λοιπόν οι καλύτεροι φίλοι σου.</p>
<p>Να κλείσω την ενότητα λέγοντας πως ο Coda είναι πραγματικά υπερτιμημένος. Κυριολεκτικά. Στη μισή τιμή ο <a href="http://www.blumentals.net/rapidphp/">RapidPHP </a>editor (for windows) προσφέρει τουλάχιστον 50 μετρημένα παραπάνω features. Oh well.</p>
<h3>Προσέγγιση</h3>
<p>Το πως θα ξεκινήσεις αποτελεί βασικό κριτήριο για το πότε και σημαντικότερα πως θα τελειώσεις. Προσωπικά με το που λάβω τα αρχεία PSD τα ανοίγω όλα στο Photoshop και αρχίζω να σημειώνω στο τετράδιο μου κοινά στοιχεία. Headers, boxes, images, styles. Στοιχεία δηλαδή που θα χρειαστούν σε παραπάνω από μια σελίδες. Το επόμενο βήμα είναι να καταγράψω όλα τα χρώματα και όλα τα μεγέθη γραμματοσειρών. Μετά παίζει λίγο μελέτη για το layout. Ποιές ενότητες και πως μπορούν να μοιραστούν κοινές δηλώσεις CSS, προβλήματα που μπορούν να προκύψουν σε παλιούς browsers, γενικά μια στρατηγική για ένα solid layout. Η συγγραφή κώδικα ξεκινάει πρώτα με την HTML και μετά ακολουθώ μια &#8220;Onion skin&#8221; τακτική. Η τακτική αυτή λέει ξεκινάω από τη Markup και μετά σε όλες τις σελίδες δημιουργώ το layout &#8211; βάζω τα στοιχεία στη θέση τους &#8211; και μετά ασχολούμαι με fine tuning ανά περιοχή (images, backgrounds etc). Αυτό βέβαια όταν έχω όλα τα PSD από τον πελάτη. Αν οι μακέτες έρχονται μια μια καθώς σχεδιάζονται τα πράγματα εκεί είναι διαφορετικά και συνήθως πιο πολύπλοκα. Αλλά αυτό το κομμάτι θα το δούμε σε ένα άλλο post. Πίσω στο project. Για την ώρα ασχολούμαι μόνο με browsers της προκοπής και απλά σημειώνω κάπου τι πρέπει να γίνει σε Internet Explorer. </p>
<h3>Δοκιμές</h3>
<p> Αφού τελειώσω δοκιμάζω σε όσους περισσότερους browsers μπορώ. Μετά ασχολούμαι με Internet Explorer. Γνωρίζοντας και έχοντας έρθει αντιμέτωπος με τα περισσότερα τερτίπια τους (ie6 + 7) αρκετά γρήγορα εφαρμόζω τις αντίστοιχες δηλώσεις αποκλειστικά για αυτούς και that&#8217;s it. Αλλά δε τελειώσα ακόμα. Μια γρήγορη ματιά στα PSD μήπως μου ξέφυγε τίποτα και μετά πίσω στο κώδικα για να δώ μήπως υπάρχουν περιττές δηλώσεις ή μήπως υπάρχει κάτι που μπορεί να βελτιωθεί. Η διαδικασία αυτή είναι και η αγαπημένη μου. Κάθε φορά.</p>
<h3>Σκούπισμα, Σφουγγάρισμα</h3>
<p>Αφού παραδώσω και δε καίγομαι να ξεκινήσω κάτι άλλο, ακολουθώ ένα ακόμα βήμα σε όλη τη διαδικασία. Βρίσκω τα κομμάτια κώδικα που με παίδεψαν για κάποιο λόγο και τα καταγράφω αναλυτικά. Έτσι, σε μελλοντικά projects που πέφτω στο ίδιο πρόβλημα έχω ένα καλό σημείο αναφοράς και άμεσης επίλυσης.</p>
<h3>Λίγα λόγια για τον &#8220;Πελάτη&#8221;</h3>
<p>Οι πελάτες σε αυτή τη δουλειά είναι είτε designers που δεν νιώθουν πως το &#8220;έχουν&#8221;, είτε developers που δεν έχουν χρόνο. Αν σκέφτεσαι να ξεκινήσεις μια τέτοια υπηρεσία με την οποία θα σε πλησιάσουν και άνθρωποι εκτός συνόρων έχω να σου πω αυτό. Πρόκειται για ανθρώπους. Με 2 χέρια και 2 πόδια, όπως εσύ. Άλλοι πιο έμπειροι, άλλοι άσχετοι όσο ποτέ. Κάποιοι ευγενικοί, κάποιοι ξερόλες,περίεργοι και για μπουνιές. Σε όλους δώσε την αίσθηση πως είσαι εκεί σε ότι και αν χρειαστούν αφού βάλεις τα λεφτά στη τσέπη μετά τη παράδοση. Όχι όμως μόνο στα λόγια. To support σε αυτή την ιστορία είναι το κλειδί για sticky clients. Αν κάποια στιγμή νιώσεις πως πλέον δουλεύεις τσάμπα, πες το. Προσωπικά δεν μου αρνήθηκε ΚΑΝΕΙΣ να πληρώσει κάτι παραπάνω για να πάρει αυτό που θέλει. Η λεπτή γραμμή εδώ όμως είναι να καταλάβεις πότε σου ζητάει αλλαγές σε δικές σου κακοτεχνίες και πότε νέα features. Εδώ είναι και το σημείο που θα δείξεις αν είσαι Pro ή περαστικός από τη δουλειά.  </p>
<h3>Κλείνοντας</h3>
<p>Είναι διαδικασία που μπορεί να καταλήξει σε άσχημη ρουτίνα και απαιτεί πραγματική αγάπη για να το κάνει κανείς βασική του δραστηριότητα. Προσωπικά 2 χρόνια μετά, ενώ έχουν υπάρξει περίοδοι που είπα δε πάει άλλο, συνεχίζω με το ίδιο κέφι όπως τότε που περίμενα να σκάσει η πρώτη παραγγελία. Και να ΞΑΝΑ πω πως υπάρχει χώρος και για άλλους. Ο τόπος μπορεί να έχει γεμίσει, αλλά η ζήτηση αυξάνεται δυσανάλογα. Go.w</p>

<p><a href="http://feedads.g.doubleclick.net/~a/0c4aRMZ3IWIShbrTjgVfbRnYIMc/0/da"><img src="http://feedads.g.doubleclick.net/~a/0c4aRMZ3IWIShbrTjgVfbRnYIMc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0c4aRMZ3IWIShbrTjgVfbRnYIMc/1/da"><img src="http://feedads.g.doubleclick.net/~a/0c4aRMZ3IWIShbrTjgVfbRnYIMc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=N_922rbXEI0:hXRsaiUr-00:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=N_922rbXEI0:hXRsaiUr-00:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=N_922rbXEI0:hXRsaiUr-00:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=N_922rbXEI0:hXRsaiUr-00:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=N_922rbXEI0:hXRsaiUr-00:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/N_922rbXEI0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=888</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=888</feedburner:origLink></item>
		<item>
		<title>Τα πρώτα μου WordPress plugins είναι πλέον διαθέσιμα</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/bCx2eABBZT8/</link>
		<comments>http://theportraitofageek.com/blog/?p=886#comments</comments>
		<pubDate>Fri, 11 Jun 2010 16:45:46 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=886</guid>
		<description><![CDATA[Για το πρώτο είχα μιλήσει και πλέον μαζί με κάποιες βελτιώσεις είναι διαθέσιμο για χρήση. Το 2o plugin (Custom CSS) προέκυψε από ανάγκη σήμερα το πρωί. Για περισσότερα δείτε τα σχετικά posts στο Webtoolkit4.me]]></description>
			<content:encoded><![CDATA[<p>Για το πρώτο είχα μιλήσει και πλέον μαζί με κάποιες βελτιώσεις είναι <a href="http://webtoolkit4.me/2010/06/10/wordpress-plugin-custom-post-relationships-cpr-v1-0/">διαθέσιμο για χρήση</a>. Το <a href="http://webtoolkit4.me/2010/06/11/wordpress-plugin-custom-css-stylesheet-for-posts-or-pages/">2o plugin (Custom CSS)</a> προέκυψε από ανάγκη σήμερα το πρωί. Για περισσότερα δείτε τα σχετικά posts στο Webtoolkit4.me</p>

<p><a href="http://feedads.g.doubleclick.net/~a/xjQXR6mkSfLP54uXRwNFWohAKO0/0/da"><img src="http://feedads.g.doubleclick.net/~a/xjQXR6mkSfLP54uXRwNFWohAKO0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xjQXR6mkSfLP54uXRwNFWohAKO0/1/da"><img src="http://feedads.g.doubleclick.net/~a/xjQXR6mkSfLP54uXRwNFWohAKO0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=bCx2eABBZT8:s__Itu18z1Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=bCx2eABBZT8:s__Itu18z1Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=bCx2eABBZT8:s__Itu18z1Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=bCx2eABBZT8:s__Itu18z1Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=bCx2eABBZT8:s__Itu18z1Y:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/bCx2eABBZT8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=886</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=886</feedburner:origLink></item>
		<item>
		<title>Grids are limiting</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/Sjv2PdJoXfQ/</link>
		<comments>http://theportraitofageek.com/blog/?p=873#comments</comments>
		<pubDate>Mon, 24 May 2010 07:47:41 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[ΑΠΟΨΕΙΣ]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=873</guid>
		<description><![CDATA[Έπεσα τυχαία πάνω σε αυτό το quote μέσω ενός link που έδωσε ο Βασίλης στο twitter.]]></description>
			<content:encoded><![CDATA[<p><a href="http://inspire.boranikolic.com/"><img src="http://theportraitofageek.com/blog/wp-content/uploads/2010/05/grid_quote1.png" alt="" title="grid_quote" width="707" height="300" class="no-bg" /></a></p>
<p>Έπεσα τυχαία πάνω σε αυτό το <a href="http://inspire.boranikolic.com/">quote</a> μέσω ενός <a href="http://twitter.com/vmasto/status/14606784428">link που έδωσε ο Βασίλης στο twitter</a>.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/J2ZuqlO5XBq0oMJ5opLJ7n_kEd0/0/da"><img src="http://feedads.g.doubleclick.net/~a/J2ZuqlO5XBq0oMJ5opLJ7n_kEd0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/J2ZuqlO5XBq0oMJ5opLJ7n_kEd0/1/da"><img src="http://feedads.g.doubleclick.net/~a/J2ZuqlO5XBq0oMJ5opLJ7n_kEd0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Sjv2PdJoXfQ:KzTN-jts6Ng:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Sjv2PdJoXfQ:KzTN-jts6Ng:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=Sjv2PdJoXfQ:KzTN-jts6Ng:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Sjv2PdJoXfQ:KzTN-jts6Ng:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=Sjv2PdJoXfQ:KzTN-jts6Ng:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/Sjv2PdJoXfQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=873</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=873</feedburner:origLink></item>
		<item>
		<title>Παιχνίδια με το jQuery DatePicker. Μέρος 2ο</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/XrYleEyHm8A/</link>
		<comments>http://theportraitofageek.com/blog/?p=870#comments</comments>
		<pubDate>Tue, 18 May 2010 20:18:03 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=870</guid>
		<description><![CDATA[Στο προηγούμενο post είδαμε πως μπορούμε να ενημερώσουμε 2 jQuery UI DatePickers. Όπως είδαμε στο παράδειγμα επιλέγοντας μια ημερομηνία στον έναν από τους 2 datepickers ενημερώνεται και ο άλλος. Το παράδειγμα δουλεύει κανονικά&#8230; αν το online travel shop έχει εκδρομές μόνο για 5 ημέρες μιας και ότι ημερομηνία να διαλέξει κανείς η διαφορά των ημερομηνιών [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theportraitofageek.com/blog/?p=859">Στο προηγούμενο post</a> είδαμε πως μπορούμε να ενημερώσουμε 2 jQuery UI DatePickers. Όπως είδαμε στο <a href="http://www.theportraitofageek.com/play/datepicker/">παράδειγμα</a> επιλέγοντας μια ημερομηνία στον έναν από τους 2 datepickers ενημερώνεται και ο άλλος. Το παράδειγμα δουλεύει κανονικά&#8230; αν το online travel shop έχει εκδρομές μόνο για 5 ημέρες μιας και ότι ημερομηνία να διαλέξει κανείς η διαφορά των ημερομηνιών είναι πάντα 5 ημέρες (μετά από δική μας ρύθμιση). Μπορούμε να βελτιώσουμε (διορθώσουμε) αυτή τη λογική λέγοντας στους 2 datepickers να ενημερωθούν μεταξύ τους μόνο όταν η ημερομηνία επιστροφής (2ος datepicker) είναι μικρότερη της ημερομηνίας αναχώρησης και αντίστροφα.</p>
<p>Έτσι, κάποιος να μπορεί ελεύθερα να διαλέξει τις ημερομηνίες που θέλει χωρίς όμως να μπορεί να διαλέξει π.χ. ημερομηνία επιστροφής μικρότερη από την ημερομηνία αναχώρησης.</p>
<p>Στο παρακάτω παράδειγμα είναι ακριβώς ο ίδιος κώδικας με του προηγούμενου post με τη διαφορά πως έχουμε ένα extra έλεγχο και στις 2 περιπτώσεις. Τσεκάρουμε αν η ημερομηνία επιστροφής είναι μικρότερη της ημερομηνίας αναχώρησης. Αν ναι, τότε ενημερώνονται μεταξύ τους οι 2 datepickers.</p>
<pre class="brush:javascript">
$('#dep').datepicker({
           inline: true,
           onSelect: function(theDate) {
               var dep = $('#dep').datepicker("getDate");
               var arr = $('#arr').datepicker("getDate");
               if (arr < dep) {
                var plustwo = $.datepicker.parseDate('mm/dd/yy', theDate);
                plustwo.setDate(plustwo.getDate() + 2);
                $('#arr').datepicker('setDate', plustwo);
               }
           }
       });

       $('#arr').datepicker({
           inline: true,
           onSelect: function(theDate) {
               var dep = $('#dep').datepicker("getDate");
               var arr = $('#arr').datepicker("getDate");
               if (arr < dep) {
                var minustwo = $.datepicker.parseDate('mm/dd/yy', theDate);
                minustwo.setDate(minustwo.getDate() - 2);
                $('#dep').datepicker('setDate', minustwo);
               }
           }
       });
</pre>
<p>Και φυσικά το <a href="http://www.theportraitofageek.com/play/datepicker2/">παράδειγμα </a>μας.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/71cu4mA8Ope9ftJaQeEc9mtIvrs/0/da"><img src="http://feedads.g.doubleclick.net/~a/71cu4mA8Ope9ftJaQeEc9mtIvrs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/71cu4mA8Ope9ftJaQeEc9mtIvrs/1/da"><img src="http://feedads.g.doubleclick.net/~a/71cu4mA8Ope9ftJaQeEc9mtIvrs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=XrYleEyHm8A:KiaRWmQAyGQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=XrYleEyHm8A:KiaRWmQAyGQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=XrYleEyHm8A:KiaRWmQAyGQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=XrYleEyHm8A:KiaRWmQAyGQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=XrYleEyHm8A:KiaRWmQAyGQ:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/XrYleEyHm8A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=870</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=870</feedburner:origLink></item>
		<item>
		<title>Παιχνίδια με το jQuery UI DatePicker</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/FgZAWsYh0kU/</link>
		<comments>http://theportraitofageek.com/blog/?p=859#comments</comments>
		<pubDate>Fri, 14 May 2010 21:14:03 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=859</guid>
		<description><![CDATA[To πιο σπαστικό πράγμα στα περισσότερα travel sites είναι η επιλογή ημερομηνιών ενός ταξιδιού. Πας διαλέγεις την ημερομηνία που θες να φύγεις και η ημερομηνία επιστροφής κάθεται εκεί και σε κοιτάει. Τι θα έπρεπε να κάνει δηλαδή; Κοίτα, 2 πράγματα θα μπορούσε να κάνει. Το ένα είναι να &#8220;ενημερωθεί&#8221; για την ημερομηνία αναχώρησης και να [...]]]></description>
			<content:encoded><![CDATA[<p>To πιο σπαστικό πράγμα στα περισσότερα travel sites είναι η επιλογή ημερομηνιών ενός ταξιδιού. Πας διαλέγεις την ημερομηνία που θες να φύγεις και η ημερομηνία επιστροφής κάθεται εκεί και σε κοιτάει.</p>
<h3>Τι θα έπρεπε να κάνει δηλαδή;</h3>
<p>Κοίτα, 2 πράγματα θα μπορούσε να κάνει. Το ένα είναι να &#8220;ενημερωθεί&#8221; για την ημερομηνία αναχώρησης και να γίνει και αυτή ίδια και το δεύτερο που θα μπορούσε να κάνει είναι να &#8220;ενημερωθεί&#8221; για την ημερομηνία αναχώρησης και να πάει 3 &#8211; 4 μέρες μπροστά. Τα ίδια θα έπρεπε να κάνει και ημερομηνία αναχώρησης αν παίξουμε με την ημερομηνία επιστροφής. Με τον επιλογέα ημερομηνίας (πως λέμε εντολέας; καμία σχέση) του <a href="http://jqueryui.com/demos/datepicker/">jQuery UI</a> κάτι τέτοιο είναι πολύ απλό να γίνει (και οι περισσότεροι το χρησιμοποιούν απλά για να εμφανίσουν τα ημερολόγια). <a href="http://www.theportraitofageek.com/play/datepicker/">Για δες τι θα κάνουμε. Επιλέγουμε μια ημερομήνια, είτε αναχώρησης είτε επιστροφής και προσθέτουμε ή αφαιρούμε αντίστοιχα 5 μέρες στο αντίστοιχο date picker.</a></p>
<h3>Λίγος, τόσο λίγος κώδικας</h3>
<p>Για αρχή απλά εμφανίζω 2 ημερολόγια ως εξής.</p>
<pre class="brush:javascript">
$('#dep').datepicker({
   inline: true,
   onSelect: function(theDate) {
     var plustwo = $.datepicker.parseDate('mm/dd/yy', theDate);
     plustwo.setDate(plustwo.getDate() + 5);
     $('#arr').datepicker('setDate', plustwo);
   }
});

$('#arr').datepicker({
   inline: true,
   onSelect: function(theDate) {
     var minustwo = $.datepicker.parseDate('mm/dd/yy', theDate);
     minustwo.setDate(minustwo.getDate() - 5);
     $('#dep').datepicker('setDate', minustwo);
   }
});
</pre>
<p>Τα &#8220;#dep&#8221; και &#8220;#arr&#8221; είναι 2 κενά div pairs που απλά υπάρχουν στην markup μας για να συνδέσω τα ημερολόγια. Τίποτα σπουδαίο. Αυτό που έχει σημασία να δούμε είναι τι συμβαίνει στο συμβάν onSelect. Σε απλά Ελληνικά κάνω το εξής. Στο συμβάν onSelect έχω μια function όπου της περνάω μια παράμετρο. Την ημερομηνία που έχω επιλέξει. Φυσικά την περνάω σαν string.  Χρησιμοποιώντας το utility function <a href="http://docs.jquery.com/UI/Datepicker">$.datepicker.parseDate</a> δημιουργώ μια ημερομηνία από το string που περάσαμε σαν παράμετρο και μετά με τις παλιές καλές Javascript functions <a href="http://www.w3schools.com/jsref/jsref_setdate.asp">setDate</a> kai <a href="http://www.w3schools.com/js/js_obj_date.asp">getDate</a> απλά προσθέτω στη πρώτη περίπτωση (αναχώρηση) και αφαιρώ στη 2η (επιστροφή) 5 μέρες. Η τελευταία γραμμή απλά ενημερώνει τον γείτονα date picker με τη νέα ημερομηνία. </p>
<p>15 λεπτά (μαζί με την έρευνα) για να υλοποιηθεί. Ε κρίμα δεν είναι να παιδευόμαστε;</p>
<p>Στο επόμενο σχετικό tutorial θα δούμε τι περιορισμούς μπορούμε να βάλουμε αλλά και να βελτιώσουμε τη λογική των date pickers. Νάνι τώρα.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/AA_cuijchZYjMWMNxj1PhZsNltI/0/da"><img src="http://feedads.g.doubleclick.net/~a/AA_cuijchZYjMWMNxj1PhZsNltI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AA_cuijchZYjMWMNxj1PhZsNltI/1/da"><img src="http://feedads.g.doubleclick.net/~a/AA_cuijchZYjMWMNxj1PhZsNltI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=FgZAWsYh0kU:wSUoqb3Cj6M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=FgZAWsYh0kU:wSUoqb3Cj6M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=FgZAWsYh0kU:wSUoqb3Cj6M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=FgZAWsYh0kU:wSUoqb3Cj6M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=FgZAWsYh0kU:wSUoqb3Cj6M:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/FgZAWsYh0kU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=859</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=859</feedburner:origLink></item>
		<item>
		<title>Custom Post Relationships για WordPress: Το πρώτο μου plugin (κάργα beta)</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/Cd6ZmrzYgnM/</link>
		<comments>http://theportraitofageek.com/blog/?p=844#comments</comments>
		<pubDate>Tue, 27 Apr 2010 20:35:31 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=844</guid>
		<description><![CDATA[Περίμενα μήπως και κυκλοφορήσει κάτι. Άδικα. Όλα τα plug-ins για WordPress που έχουν να κάνουν με related posts βασίζονται σε κάποιο &#8220;μαγικό αλγόριθμο&#8221;. Εγώ δε θέλω μαγικό αλγόριθμο. Θέλω να μπορώ να συνδέσω ένα post με κάποια άλλα posts με το χέρι. Έκατσα λοιπόν και το έφτιαξα. Πριν το βγάλω στον άγριο κόσμο του web, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-845 alignleft" title="cpr" src="http://theportraitofageek.com/blog/wp-content/uploads/2010/04/cpr.jpg" alt="" width="400" height="276" /> Περίμενα μήπως και κυκλοφορήσει κάτι. Άδικα. Όλα τα plug-ins για WordPress που έχουν να κάνουν με related posts βασίζονται σε κάποιο &#8220;μαγικό αλγόριθμο&#8221;. Εγώ δε θέλω μαγικό αλγόριθμο. Θέλω να μπορώ να συνδέσω ένα post με κάποια άλλα posts με το χέρι. Έκατσα λοιπόν και το έφτιαξα. Πριν το βγάλω στον άγριο κόσμο του web, βγάζω μια έκδοση εδώ για δοκιμή. Γενικά λειτουργεί όπως το θέλω απλά ακόμα έχει δουλειά. Όχι τόσο στο &#8220;πίσω&#8221; κομμάτι όσο στον κώδικα για την εμφάνιση των related posts. Αλλά θα φτάσω και εκεί. Σημασία έχει πως το &#8220;μανίκι&#8221; έφυγε από τη μέση και είμαι πολύ ικανοποιημένος γι&#8217; αυτό.</p>
<h3>Οδηγίες</h3>
<p>Κατεβάστε το plugin, ενεργοποιήστε το και πάτε σε κάποιο post. Θα εμφανιστεί ένα panel. Εκεί μπορεί να διαλέξετε κάποια κατηγορία και από τα post που θα εμφανιστούν να επιλέξετε ποιά posts θέλετε να συσχετίσετε. Μπορείτε να κάνετε όσες συσχετίσεις θέλετε. Το Filter posts για την ώρα φιλτράρει τα posts μιας κατηγορίας ψάχνοντας από την αρχή του ονόματος του post.  Αυτό θα διορθωθεί. Τα posts που έχετε συσχετίσει μπορούν να ταξινομηθούν με drag and drop. Για την ώρα δε θα σας μπερδέψω με το πως θα εμφανίσετε τις συσχετίσεις στο blog σας γιατί δεν έχω καταλήξει ακόμα στις επιλογές που θα δώσω. Παρόλα αυτά θα ήθελα τα σχόλια σας, τυχόν προβλήματα ή οτιδήποτε πιστεύετε χρειάζεται βελτίωση στο back-end κομμάτι.</p>
<p>Μπορείτε να κατεβάσετε τη <a href="http://www.theportraitofageek.com/files/custom_post_relationships_10.zip">πρώτη έκδοση του plugin</a>. Περιμένω τα σχόλια σας!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/jiv3gYoSMtoM7M5lypUFC_jV7tY/0/da"><img src="http://feedads.g.doubleclick.net/~a/jiv3gYoSMtoM7M5lypUFC_jV7tY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jiv3gYoSMtoM7M5lypUFC_jV7tY/1/da"><img src="http://feedads.g.doubleclick.net/~a/jiv3gYoSMtoM7M5lypUFC_jV7tY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Cd6ZmrzYgnM:DfshkSxhC6c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Cd6ZmrzYgnM:DfshkSxhC6c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=Cd6ZmrzYgnM:DfshkSxhC6c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=Cd6ZmrzYgnM:DfshkSxhC6c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=Cd6ZmrzYgnM:DfshkSxhC6c:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/Cd6ZmrzYgnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=844</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=844</feedburner:origLink></item>
		<item>
		<title>WordPress tip: Excluding categories</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/BxSxBsKgPD8/</link>
		<comments>http://theportraitofageek.com/blog/?p=842#comments</comments>
		<pubDate>Thu, 18 Mar 2010 14:28:56 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=842</guid>
		<description><![CDATA[Οι κατηγορίες στο wordpress είναι αναπόσπαστο κομμάτι κάθε developer. Για λίγο ακόμα (περιμένουμε την έκδοση 3.0 όπου αλλάζουν αρκετά πράγματα σε αυτό το κομμάτι) τις χρησιμοποιούμε για να κατηγοριοποιήσουμε posts, για να &#8220;ξεγελάσουμε&#8221; το wordpress και να παίξουμε μαζί του χρησιμοποιώντας το σαν CMS και άλλα τέτοια. Γενικά πάντως είναι πολλές οι φορές που πρέπει [...]]]></description>
			<content:encoded><![CDATA[<p>Οι κατηγορίες στο wordpress είναι αναπόσπαστο κομμάτι κάθε developer. Για λίγο ακόμα (περιμένουμε την έκδοση 3.0 όπου αλλάζουν αρκετά πράγματα σε αυτό το κομμάτι) τις χρησιμοποιούμε για να κατηγοριοποιήσουμε posts, για να &#8220;ξεγελάσουμε&#8221; το wordpress και να παίξουμε μαζί του χρησιμοποιώντας το σαν CMS και άλλα τέτοια. Γενικά πάντως είναι πολλές οι φορές που πρέπει να κάνουμε exclude κατηγορίες από διάφορα loops που έχουμε στο site μας. Π.χ. μπορεί να έχουμε χρησιμοποιήσει μια κατηγορία &#8220;featured posts&#8221; για να εμφανίσουμε κάποια συγκεκριμένα posts στη κεντρική σελίδα αλλά δε θέλουμε να εμφανίσουμε τη συγκεκριμένη κατηγορία στο sidebar του blog μας.</p>
<p>H λύση που προτείνω είναι απλή και ίσως κάποιοι από εσάς το κάνετε ήδη. Φτιάξτε μια κεντρική κατηγορία με ένα όνομα π.χ &#8220;Boηθητικές Κατηγορίες&#8221; και όλες τις κατηγορίες που χρησιμοποιείτε για κάποιο συγκεκριμένο σκοπό απλά δηλώστε τις σαν υποκατηγορίες της. Με αυτό το τρόπο όταν θέλετε να κάνετε exclude όλες αυτές τις κατηγορίες από ένα loop απλά κάνετε exclude το parent category και ξεμπερδέψατε.</p>
<p>Hope it helps.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/KY1-t-mMQWthLjpNXl113qB1wo4/0/da"><img src="http://feedads.g.doubleclick.net/~a/KY1-t-mMQWthLjpNXl113qB1wo4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KY1-t-mMQWthLjpNXl113qB1wo4/1/da"><img src="http://feedads.g.doubleclick.net/~a/KY1-t-mMQWthLjpNXl113qB1wo4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=BxSxBsKgPD8:-Qp_zc-rCk8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=BxSxBsKgPD8:-Qp_zc-rCk8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=BxSxBsKgPD8:-Qp_zc-rCk8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=BxSxBsKgPD8:-Qp_zc-rCk8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=BxSxBsKgPD8:-Qp_zc-rCk8:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/BxSxBsKgPD8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=842</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=842</feedburner:origLink></item>
		<item>
		<title>Dummy image generators for ExpressionEngine and Codeigniter</title>
		<link>http://feedproxy.google.com/~r/theportraitofageek/BxBy/~3/VR4PqPEIW2k/</link>
		<comments>http://theportraitofageek.com/blog/?p=816#comments</comments>
		<pubDate>Sun, 14 Feb 2010 17:33:42 +0000</pubDate>
		<dc:creator>tsiger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://theportraitofageek.com/blog/?p=816</guid>
		<description><![CDATA[Τα πρώτα μου plugins λοιπόν για codeigniter και expression engine. Πρόκειται για πολύ απλά plugins που δημιουργούν dummy images για να μη γεμίζετε το τόπο με &#8220;δοκιμαστικές&#8221; εικόνες κατα τη διάρκεια του development. Η ιδέα ήρθε από το dummyimage.com *edit* και απο εδώ. Codeigniter Κατεβάστε το αρχείο dummy.php.zip, αποσυμπιέστε και ρίξτε το αρχείο dummy_pi.php στο [...]]]></description>
			<content:encoded><![CDATA[<p>Τα πρώτα μου plugins λοιπόν για codeigniter και expression engine. Πρόκειται για πολύ απλά plugins που δημιουργούν dummy images για να μη γεμίζετε το τόπο με &#8220;δοκιμαστικές&#8221; εικόνες κατα τη διάρκεια του development. Η ιδέα ήρθε από το <a href="http://dummyimage.com/">dummyimage.com</a> <strong>*edit*</strong> <a href="http://twitter.com/netfreak/status/8541936374">και απο εδώ</a>.</p>
<h3>Codeigniter</h3>
<p>Κατεβάστε το αρχείο <a href="http://www.fest.gr/plugins/codeigniter/dummy_pi.php.zip">dummy.php.zip</a>, αποσυμπιέστε και ρίξτε το αρχείο dummy_pi.php στο φάκελο plugins της εγκατάστασης codeigniter που έχετε στο δίσκο.  Δημιουργήστε ένα φάκελο images στο ίδιο επίπεδο με το φάκελο system και μέσα στο images δημιουργήστε ένα φάκελο με όνομα &#8220;dummy&#8221; και δώστε δικαιώματα 777.<br />
Μετά στον Controller σας φορτώνετε το plugin (η αν θέλετε στο autoload):</p>
<pre class="brush:php">
$this->load->plugin('dummy');
</pre>
<p>Στο view που θέλετε να δημιουργήσετε ένα dummy image απλά κάντε το ως εξής:</p>
<pre class="brush:php">
 img src="? echo dummy('100x400'); ?" />
</pre>
<p>Στο παραπάνω λείπει το < στο img tag και τα < > στο echo. Για κάποιο λόγο δεν εμφανίζονται σωστά με το συγκεκριμένο highlighter. Προσθέστε τα όμως.</p>
<p>Και θα δημιουργηθεί μια εικόνα μεγέθους 100px X 400px</p>
<h3>Expression Engine 1.6.x</h3>
<p>Κατεβάστε το αρχείο <a href="http://www.fest.gr/plugins/ee16x/pi.dummy.php.zip">pi.dummy.php.zip</a>, αποσυμπιέστε και ρίξτε το αρχείο pi.dummy.php στο φάκελο plugins της εγκατάστασης expression engine που έχετε στο δίσκο. Δημιουργήστε ένα φάκελο με όνομα &#8220;dummy&#8221; μέσα στο φάκελο images και δώστε δικαιώματα 777. </p>
<p>Σε οποιοδήποτε template μπορείτε να δημιουργήσετε dummy images ως εξής:</p>
<pre class="brush:php">
 {exp:dummy class="imgClass"}500x500{/exp:dummy}
</pre>
<p>Αν δε περάστε class name τότε η εικόνα παίρνει ένα default class με όνομα &#8220;dummyimg&#8221;.</p>
<p>Have fun!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/-zJLilCHDVGXW-NZwfK1JvsdcCQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/-zJLilCHDVGXW-NZwfK1JvsdcCQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-zJLilCHDVGXW-NZwfK1JvsdcCQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/-zJLilCHDVGXW-NZwfK1JvsdcCQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=VR4PqPEIW2k:UB0th_qZN5M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=VR4PqPEIW2k:UB0th_qZN5M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=VR4PqPEIW2k:UB0th_qZN5M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?a=VR4PqPEIW2k:UB0th_qZN5M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/theportraitofageek/BxBy?i=VR4PqPEIW2k:UB0th_qZN5M:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/theportraitofageek/BxBy/~4/VR4PqPEIW2k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theportraitofageek.com/blog/?feed=rss2&amp;p=816</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://theportraitofageek.com/blog/?p=816</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.606 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-03 11:43:35 --><!-- Compression = gzip -->
