<?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>Advanced Programming Stories &#187; google</title>
	<atom:link href="http://developstories.gr/tag/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://developstories.gr</link>
	<description>advanced web development techniques &#38; reverse engineering stories</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:57:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Maps: Markers σε ομάδες με τον MarkerClusterer</title>
		<link>http://developstories.gr/jquery/google-maps-markers-%cf%83%ce%b5-%ce%bf%ce%bc%ce%ac%ce%b4%ce%b5%cf%82-%ce%bc%ce%b5-%cf%84%ce%bf%ce%bd-markerclusterer/</link>
		<comments>http://developstories.gr/jquery/google-maps-markers-%cf%83%ce%b5-%ce%bf%ce%bc%ce%ac%ce%b4%ce%b5%cf%82-%ce%bc%ce%b5-%cf%84%ce%bf%ce%bd-markerclusterer/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 10:48:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://developstories.gr/?p=105</guid>
		<description><![CDATA[Το παρών άρθρο είναι ένα guest post απο τον Αλέξη Μπρέσσα. Στο άρθρο προϋποθέτουμε ότι ο αναγνώστης γνωρίζει javascript, και θα βοηθούσε να έχει ασχοληθεί με το Google Maps API στο παρελθόν.
Το Google Maps API έδωσε τη δυνατότητα στους web developers να προσθέτουν χάρτες σε ιστοσελίδες, και να &#8220;σημαδεύουν&#8221; σημεία με markers.
Έτσι, έχει γίνει standard [...]]]></description>
			<content:encoded><![CDATA[<p>Το παρών άρθρο είναι ένα guest post απο τον <a href="http://www.facebook.com/abresas">Αλέξη Μπρέσσα</a>. Στο άρθρο προϋποθέτουμε ότι ο αναγνώστης γνωρίζει javascript, και θα βοηθούσε να έχει ασχοληθεί με το Google Maps API στο παρελθόν.</p>
<p>Το <a href="http://code.google.com/apis/maps/">Google Maps API</a> έδωσε τη δυνατότητα στους web developers να προσθέτουν χάρτες σε ιστοσελίδες, και να &#8220;σημαδεύουν&#8221; σημεία με markers.<br />
Έτσι, έχει γίνει standard για πολλές κατηγορίες ιστοσελίδων, όπως μεσητικά, <a href="http://www.businesscatalogue.gr/">κατάλογοι επιχειρήσεων</a> κ.α. ή για τη σελίδα επικοινωνίας εταιρειών.<br />
Εάν όμως οι καταχωρήσεις μιας ιστοσελίδας αυξηθούν αρκετά, τότε τα πολλά markers μειώνουν τη χρηστικότητα ενός χάρτη, ενώ μπορεί κανείς να φτάσει και σε τραγική<br />
κατάληξη όπως αυτή:</p>
<p><a href="http://imagehoster.eu/"><img class="alignnone" title="tragic" src="http://imagehoster.eu/images/ku825hfsv1zctasahl36.jpg" alt="" width="500" height="400" /></a></p>
<p>Προς μεγάλη ευκολία όποιου αντιμετωπίσει αυτό το πρόβλημα, έχει αναπτυχθεί ένα εργαλείο το οποίο φαίνεται να μην είναι ευρέως γνωστό: το MarkerClusterer.<br />
To MarkerClusterer λύνει το πρόβλημα με το να φτιάχνει ομάδες από markers, όταν αυτά είναι το ένα πολύ κοντά στο άλλο. Το παραπάνω τραγικό παράδειγμα,<br />
τώρα γίνεται πιο συμμαζεμένο, όμορφο, μέχρι και εντυπωσιακό:</p>
<p><a href="http://imagehoster.eu/"><img class="alignnone" title="impressive" src="http://imagehoster.eu/images/kg27l80fqp80tcy70epy.jpg" alt="" width="501" height="400" /></a></p>
<p>Για να δούμε πώς μπορεί κανείς να χρησιμοποιήσει το MarkerClusterer:</p>
<pre class="brush: jscript;">
function map_init( mapElement ) {
var greece = new GLatLng( 39.1130, 24.0313 );
var thessaloniki = new GLatLng( 40.5408, 23.0480 );

var gmap = new GMap2( mapElement );
gmap.setUIToDefault();
gmap.setCenter( greece, 7 );

// σε αυτό τον πίνακα θα προσθέσεις τα markers που θέλεις
var markers = [];

// εδώ προσθέτουμε markers σε 20 τυχαία σημεία κοντά στη Θεσσαλονίκη
for ( var i = 0; i &lt; 20; ++i ) {
var latoffset = Math.random() - 0.5;
var lngoffset = Math.random() - 0.5;
var latlng = new GLatLng( thessaloniki.lat() + latoffset, thessaloniki.lng() + lngoffset );
var marker = new GMarker( latlng );

// προσθήκη του marker στον πίνακα
markers.push( marker );
}

// δημιουργία του clusterer και προσθήκη των markers στο χάρτη
var clusterer = new MarkerClusterer( gmap, markers );
}
</pre>
<p>Αρκεί λοιπόν τώρα κανείς να καλέσει τη συνάρτηση map_init με παράμετρο ένα &lt;div&gt; που θα χρησιμοποιηθεί<br />
για το χάρτη. Συνήθως θα καλείται όταν φορτώσει η ιστοσελίδα. Με <a href="http://developstories.gr/cat/jquery/">jquery</a>, αν το div έχει id=&#8221;map_canvas&#8221;:</p>
<pre class="brush: jscript;">
$( document ).ready( function() {
map_init( $( 'map_canvas' )[ 0 ] );
} );
</pre>
<p>Θα πρέπει επίσης να προσθέσετε το javascript αρχείο του Google Maps (με το απαραίτητο key) και του MarkerClusterer<br />
(και βέβαια το jquery αν χρησιμοποιηθεί αυτό) στον HTML κώδικά σας:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=GOOGLE_MAPS_KEY&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/1.0/src/markerclusterer_packed.js&quot; /&gt;
</pre>
<p>Μπορείτε επίσης να δείτε τον MarkerClusterer εν δράσει στο <a href="http://www.businesscatalogue.gr">business catalogue</a>.</p>
<p>Ο MarkerClusterer είναι μέρος μιας βιβλιοθήκης πολλών εργαλείων για Google Maps που ονομάζεται &#8220;GMaps Utility Library&#8221; και μπορεί κανείς να τη <a href="http://code.google.com/p/gmaps-utility-library-dev">βρει εδώ</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/jquery/google-maps-markers-%cf%83%ce%b5-%ce%bf%ce%bc%ce%ac%ce%b4%ce%b5%cf%82-%ce%bc%ce%b5-%cf%84%ce%bf%ce%bd-markerclusterer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google trace script</title>
		<link>http://developstories.gr/php/google-trace-script/</link>
		<comments>http://developstories.gr/php/google-trace-script/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 11:18:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[nuSOAP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[search engine optimization]]></category>

		<guid isPermaLink="false">http://developstories.gr/?p=64</guid>
		<description><![CDATA[Ένα απο τα θέματα που μας ενδιαφέρουν σχετικά με το search engine optimization, είναι το κάθε πότε κάνει crawl το google το site μας. Ειδικότερα θέλουμε να δούμε &#8211; κυρίως για εγκυκλοπαιδικούς λόγους &#8211; πόσος καιρός μεσολαβεί απο ένα crawl μέχρι την παρουσία μιας σελίδας στο index.
Με αυτές τις απορίες κατά νου αποφασίσαμε να δημιουργήσουμε [...]]]></description>
			<content:encoded><![CDATA[<p>Ένα απο τα θέματα που μας ενδιαφέρουν σχετικά με το <a href="http://developstories.gr/cat/seo/">search engine optimization</a>, είναι το κάθε πότε κάνει crawl το google το site μας. Ειδικότερα θέλουμε να δούμε &#8211; κυρίως για εγκυκλοπαιδικούς λόγους &#8211; πόσος καιρός μεσολαβεί απο ένα crawl μέχρι την παρουσία μιας σελίδας στο index.</p>
<p>Με αυτές τις απορίες κατά νου αποφασίσαμε να δημιουργήσουμε ένα απλό scriptάκι το οποίο απλά καταγράφει κάθε valid request του google. To script είναι πάρα πολύ απλό, ωστόσο ελπίζω να σας χρησιμέψει.</p>
<h3>Το Google script</h3>
<p>Καταρχήν χρειαζόμαστε ένα mysql database που θα κρατάει τα δεδομένα μας. Στην προκειμένη περίπτωση δημιουργήσαμε ένα database με όνομα &#8220;google_spy&#8221; και τρέξαμε το παρακάτω SQL για να δημιουργηθεί ο πίνακας που θα κρατάει τα δεδομένα:</p>
<pre class="brush: sql;">
CREATE TABLE IF NOT EXISTS `trace` (
  `TraceID` int(10) unsigned NOT NULL auto_increment,
  `Domain` varchar(100) NOT NULL default '',
  `Time` datetime NOT NULL default '0000-00-00 00:00:00',
  `Bot` varchar(100) NOT NULL default '',
  `Url` text NOT NULL,
  PRIMARY KEY  (`TraceID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
</pre>
<p>Παρακάτω είναι το php script που κάνει την δουλειά:</p>
<pre class="brush: php;">
&lt;?
php
define ('GOOGLE_AGENT','Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');

//A few settings for the script:

$db_host = 'localhost';

$db_user = 'user';

$db_pass = 'password';

function googlebot($ip)  {

  $bot = 'googlebot.com';

  $name = gethostbyaddr($ip);

  if ($name == $ip) return false;

  return (strpos($name, $bot) !== false and gethostbyname($name) == $ip) ? true : false;

}

if ($_SERVER['HTTP_USER_AGENT']==GOOGLE_AGENT &amp;amp;amp;amp;&amp;amp;amp;amp; googlebot($_SERVER['REMOTE_ADDR'])) 

{

	$url='http://'.$_SERVER['HTTP_HOST'];

	if ($_SERVER['REQUEST_URI']) $url.=$_SERVER['REQUEST_URI'];

	$url_u8=iconv('Windows-1253','UTF-8',$url);

	if (crc32($url)==crc32(iconv('UTF-8','Windows-1253',$url_u8))) $url=$url_u8;

	$url=urldecode($url);

	$sql =&quot;INSERT LOW_PRIORITY INTO `google_spy`.`trace` SET `Domain`='&quot;.$_SERVER['HTTP_HOST'].&quot;',`Time`='&quot;.date('Y-m-d H:i:s').&quot;',&quot;;

	$sql.=&quot;`Bot`='&quot;.gethostbyaddr($_SERVER['REMOTE_ADDR']).&quot;',`Port`='&quot;.$_SERVER['REMOTE_PORT'].&quot;',`Url`='$url'&quot;;

	$con=mysql_connect($db_host,$db_user,$db_pass);

	mysql_query(&quot;SET NAMES 'utf8'&quot;,$con);

	mysql_query($sql,$con);

	mysql_close($con);

}

?&gt;
</pre>
<p>Για να το χρησιμοποιείσετε απλώς αλλάξτε τα settings στην αρχή ($db_host, $db_user, $db_pass) και κάντε include το script σε οποιοδήποτε site θέλετε να κρατάτε logs. Σημειώστε οτι το script κρατάει μία εγγραφή ανα visit (που προέρχεται απο το google) οπότε καλό θα είναι να σβήνετε τα δεδομένα ανα τακτά χρονικά διαστήματα.</p>
<p>Αν κάνετε κάποια μετατροπή ή δημιουργήσετε ένα όμορφο interface για το scriptάκι μήν διστάσετε να το μοιραστείτε μαζί μας <img src='http://developstories.gr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/php/google-trace-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
