13. Februar 2009

FLASH-NEWS: Firefox Absturz wegen Speicherüberlauf vermeiden



FLASH-NEWS


Wenn der Firefox aufgrund von zu vielen Routenberechnungen abstürzt, hilft es die Einstellungen im Firefox so anzupassen das der Speicherüberlauf verhindert wird und man eine Fehlermeldung bekommt statt den Browser neu starten zu müssen.

Dazu muss man lediglich im Firefox in der URL Adresszeile die Konfiguration aufrufen mit: about:config

Dann gibt man in die Zeile mit dem Filter: dom.max_script_run_time ein.
Mit dem Doppelklick auf die gefundene Zeile kann man die Einstellungen ändern. Ich hatte mit
20 (Sekunden) keine Probleme mehr und konnte den Fehler einfacher finden und gleichzeitig wesentlich entspannter arbeiten ;-)

23. Januar 2009

Geocoding mit Graticule



gem Graticule


In unserer Applikation von gb consite GmbH

verwenden wir einige der freien Geocoding plugins und gems wie z.B. das heute beschriebene Graticule.



Graticule kann durch den Aufruf über die Konsole als gem eingespielt werden.

gem install graticule


Wir verwenden Graticule zur Zeit zum geocoding* und auch zum reverse geocoding**



Bei der Entwicklung vom reverse geocoding ist uns aufgefallen,

dass die Adressen in unterschiedlichen Sprachen dargestellt wurden.

Statt München haben wir Monaco di Bavaria bekommen.



Um dieses Problem zu beseitigen empfiehlt es sich die Einstellungen des Googlelinks

in der google.rb Datei von Graticule zu ändern.



Auf meinem Linux Ubuntu Server befand sich die Datei unter:

/usr/lib/ruby/gems/1.8/gems/graticule-0.2.8/lib/graticule/geocoder/google.rb


Dort muss man nun lediglich die Top-Level-Domain umstellen von .com auf .de.

def initialize(key)
@key = key
@url = URI.parse 'http://maps.google.de/maps/geo'
end



Bevor es los geht Google Key holen!!!

Nun fehlt nur noch die Registierung bei Google für einen Google-Key

auf die Domain die man später verwenden möchte.



Es ist ausreichend nur die Domain anzugeben, wie z.B. http://www.gbconsite.de.

Alles was danach kommt wie z.B. http://www.gbconsite.de/graticule ist automatisch

durch die Domain registiert.



Für reine Test- und Entwicklungszwecke läuft der Key auch auf Localhost!



So, nun aber zum Einsatz in einem Model.

Schnell mal ein Model in Rails anlegen...

ruby script/generate model Site


Dann legen wir im Migrationsscript noch die Tabelle an

class CreateSites < null =""> false, :default => '' # Bezeichnung des Standorts
t.column :street, :string, :null => true
t.column :zip_code, :string, :null => true
t.column :city, :string, :null => true
t.column :longitude, :float, :null => true # Koordinaten des Standpunkts
t.column :latitude, :float, :null => true
end
end

def self.down
drop_table :sites
end
end


Ich geh davon aus das eine Datenbank bereits angelegt ist! ;-)

So und jetzt richten wir uns das Model ein:

class Site <>3 && city.length>3 # Sind Strasse und Stadt vorhanen...
geocoder = Graticule.service(:google).new "GOOGLE_MAPS_API_KEY"
begin
location = geocoder.locate :street => street, :locality => city, :country => 'DE'
lat, lng = location.coordinates
self.latitude = lat.to_f
self.longitude = lng.to_f
rescue
self.latitude = 0
self.longitude = 0
errors.add([:street, :city],'Standort nicht gefunden')
end
else
# Haben wir koordinaten?
begin
location = geocoder.locate "#{latitude},#{longitude}"
self.street = location.street
self.city = location.locality
self.zip_code = location.postal_code
rescue
self.street = ''
self.city = ''
self.zip_code = 0
errors.add([:street, :city],'Standort nicht gefunden')
end
end
end
end
end


Natürlich kann man hier noch einiges anders machen. Aber es geht mir hier ja nur ums

Prinzip.

Also könnten wir jetzt mit der

ruby script/console


Einen Datensatz anlegen und geokodieren bzw. reverse geokodieren.

>@test = Site.create :name => 'geokodieren', :street => 'Marienplatz', :city => 'München'


Wenn alles geklappt hat, dann sollte man mit der Eingabe @test in der Konsole die Koordinaten finden in den Attributen :longitude und :latitude.



Das wars fürs erste. Schreibt mir Eure Kommentare solltet Ihr Probleme haben mit meinem mini Beispiel. Und sorry wegen der Formatierung des Codes... Werd ich noch mal anpassen so bald wie möglich...



Schönes Wochenende!

neuholger







*geocoding: Aus einem Klick in die Googlekarte die Koordinaten erhalten.
**reverse geocoding: Mit den Koordinaten Longitude und Latitude eine Adresse erhalten.

14. Januar 2009

Jetzt wird mit geblogged!


Ständig hab ich im Internet nach guten Dokumentationen gesucht die mir bei meiner Arbeit helfen Google Maps und Rails einfach zu verbinden. Und oft bin ich über interessante Blogs auf Lösungen oder Lösungsansätzen für meine Arbeit oder speziellen Problemen gekommen. Das meiste war in englisch geschrieben. Da ich ein absoluter Fan von Ruby on Rails bin und mir auch oft zu Ohren gekommen ist das es für Ruby on Rails kaum Dokumentationen und Texte in Deutsch gibt, dachte ich ich fang damit mal an.


Mit diesem Blog möchte ich zukünftig interessante Links teilen und auch gerne zu Diskussionen und Verbesserungsvorschlägen einladen.


In meinem Job, bei der
gb consite GmbH, geht es um das Thema Standortanalysen. Und wir arbeiten fleißig daran unsere Online Applikation so bald wie möglich umzusetzten. Und das tun wir mit Ruby on Rails und Google Maps.

Der Kunde soll später mal die Möglichkeit haben, seinen bestehenden Standort, oder auch einen weiteren Standort, mit einem Quickcheck online zu analysieren. Existenzgründer können diese Anwendung auch verwenden, um für Ihre Planung den bestmöglichen Standort zu finden.


Mehr Informationen zum Thema Standortanalysen und Existenzgründung findet man auf der Webseite
http://www.gbconsite.de.

So, der Startschuß ist da, die Grundeinstellungen im Blog eingerichtet und bald gehts mit dem ersten Thema los...

Let's blog,
neuholger