Archiv

Archive for Januar 2013

3 Helfer für die SharePoint-Entwicklung

24. Januar 2013 1 Kommentar

SharePoint bietet als Entwicklungsplattform viele Möglichkeiten. Will man sich als Entwickler in dieses Gebiet einarbeiten kämpft man aber sehr bald mit einer Black Box. Was läuft nun eigentlich genau in meinem SharePoint? Wie bekomme ich das Paket an die richtige Stelle? Und wieso funktioniert mein Code nicht?

Einige dieser Fragen kann man mit den richtigen Werkzeugen beantworten. Mir haben die hier vorgestellten Tools in den letzten Monaten oft geholfen. Da ich nicht mehr auf diese Helfer verzichten möchte könnten diese auch für andere Entwickler interessant sein.

 

ULS Viewer


SharePoint schreibt viele Logmeldungen. So viele und vor allem so lange das man diese in einem Texteditor kaum vernünftig anschauen kann. Da auch Exceptions und deren Stacktrace in nur einer Zeile ausgegeben werden gilt es sich zudem an ein neues Ausgabenformat zu gewöhnen. Oder aber man nimmt ein dafür optimiertes Tool.

Der ULS Viewer hilft einem die Flut an Logmeldungen zu kontrollieren und bietet viele hilfreiche Funktionen:

  • Filtermöglichkeit nach Priorität
  • Tabellarische Darstellung mit der Möglichkeit die Spaltenbreite zu verändern
  • Anzeige von Exceptions und Stacktraces mit den bekannten Zeilenumbrüchen
  • Neue Meldungen werden ohne Unterbruch unten angefügt
  • Automatisches anzeigen der neusten Meldungen (AutoScroll)
  • Zusammengehörende Meldungen lassen sich gruppieren

ULS Viewer

Wichtig: Obwohl der ULS Viewer von Microsoft kommt gibt es dafür keinen Support.

 

CKS Plug-In für Visual Studio


Das Community Kit for SharePoint (oder kurz CKS) ist eine Sammlung von Best Practices, Vorlagen und Tools. Für Visual Studio gibt es mit CKSDev eine Erweiterung die dies alles installiert und an den richtigen Orten zur Verfügung stellt. Zur Installation genügt es über TOOLS / Extensions and Updates nach “CKSDev” zu suchen und das Paket zu installieren.

Neben den Vorlagen wird unter anderem auch eine Erweiterung für das Kontextmenü im Solution Explorer installiert. Klickt man nun auf ein SharePoint-Projekt erscheint der Punkt Quick Delploy (CKSDev):

CKSDev

Im obersten Teil dreht sich alles ums Installieren des Paketes. Mit einem Klick kann man nun sowohl ins SharePoint Root wie auch in den GAC deployen. Voraussetzung dafür ist das der SharePoint Server auf dem gleichen Gerät/VM läuft (für die Entwicklungsumgebung ist dies eh eine zwingende Voraussetzung).

Der mittlere Bereich liefert häufig verwendete Befehle rund um den IIS. Für ein iisreset muss man nicht mehr extra ein Konsolenfenster öffnen. Es genügt den entsprechenden Menüpunkt auszuwählen oder die Tastenkombination Alt+R, I zu verwenden.

Für mich war das Anhängen des Debuggers an die einzelnen Prozesse äusserst hilfreich. Diese Funktionen sind im untersten Teil untergebracht und fürs Aufspüren von Problemen Gold wert.

 

SharePoint Manager


Mit dem Deployment, den Möglichkeiten des Debuggers und dem anschauen der Logmeldungen kommt man weit. Hin und wieder genügt dies aber nicht. Wenn man wissen muss was im SharePoint für Objekte vorhanden sind muss man irgendwie hineinschauen können. Die Bordmittel helfen einem dabei leider nicht weiter.

Den Blick hinein ermöglicht der SharePoint Manager. In einem Baum werden alle Objekte die in einer SharePoint-Instanz vorhanden sind angezeigt. Beginnend bei der Farm kommt man über die Web-Applikation zu den Seiten und findet dort unter anderem die Listen, Felder und Content Types. Benötigt man eine GUID eines Feldes findet man diese neben allen anderen Angaben in den Eigenschaften.

SharePoint Manager 2010

Auch wenn ich eine Suchfunktion vermisse so liefert der SharePoint Manager doch eine Fülle von wichtigen Informationen.

 

Weitere Tools?


Soweit die Tools die mir schon oft geholfen haben. Wenn jemand weitere Werkzeuge empfehlen kann würde ich mich über einen entsprechenden Kommentar freuen.

 

Schlagworte: ,

Bessere Fehlermeldungen in Rails

20. Januar 2013 1 Kommentar

Log- und Fehlermeldungen können eine wichtige Quelle zum Erkennen von Problemen sein. Allerdings nur wenn die Meldungen aussagekräftig sind und man diese auch findet. Beim Entwickeln einer Rails-Anwendung stösst man häufig auf 2 Probleme:

  1. Die wichtigen Meldungen gehen in der Flut von Asset Pipeline Informationen unter.
  2. Die Fehlerseite zeigt einem nicht die gewünschten Informationen an.

Für beide Probleme gibt es einfache Lösungen, die einem mit geringem Aufwand viel Zeit sparen können.

 

Logmeldungen der Asset Pipeline abschalten


So lange man in der Development-Umgebung ist haben die vielen Meldungen der Asset Pipeline keinen grossen Nutzen. Sie sind einem viel mehr nur im Weg und verdecken die wichtigen Meldungen. Oder wer erkennt bei diesem einfachen Seitenaufruf das wirkliche Problem?

Started GET "/items" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Processing by ItemsController#index as HTML
  Item Load (0.1ms)  SELECT "items".* FROM "items" 
  Rendered items/index.html.erb within layouts/application (2.0ms)
Completed 200 OK in 83ms (Views: 36.7ms | ActiveRecord: 1.2ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /application.css - 304 Not Modified (10ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /jquery.js - 304 Not Modified (8ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /jquery_ujs.js - 304 Not Modified (2ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/items.css?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /items.css - 304 Not Modified (2ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /scaffolds.css - 304 Not Modified (2ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/items.js?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /items.js - 304 Not Modified (2ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true


Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-01-20 14:46:02 +0100
Served asset /application.js - 304 Not Modified (8ms)
[2013-01-20 14:46:02] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

 

Das Gem Quiet Assets stoppt diese Meldungsflut. Dazu genügt es das Gemfile um diesen Eintrag zu erweitern:

gem 'quiet_assets', :group => :development

Nach einem anschliessenden bundle und einem Neustart mittels rails s gibt der gleiche Seitenaufruf nur noch diese Meldungen aus:

Started GET "/items" for 127.0.0.1 at 2013-01-20 14:46:59 +0100
Connecting to database specified by database.yml
Processing by ItemsController#index as HTML
  Item Load (0.1ms)  SELECT "items".* FROM "items" 
  Rendered items/index.html.erb within layouts/application (1.9ms)
Completed 200 OK in 83ms (Views: 54.3ms | ActiveRecord: 1.2ms)
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
[2013-01-20 14:46:59] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

Nun sieht man auf den ersten Blick die Meldungen zu „content-length“ und kann dem nachgehen.

 

Bessere Fehlermeldungen


Beim Entwickeln passieren einem immer mal wieder Fehler. Leider hilft einem die mit Rails ausgelieferte Fehlerseite oft nicht wirklich weiter:

Rails Fehlerseite
 

Das Gem Better Errors ersetzt diese Seite und liefert einem viele hilfreiche Zusatzinformationen. Die Installation erfolgt wie immer über einen Eintrag ins Gemfile:

gem 'better_errors', :group => :development

Nach dem Speichern ist auch hier bundle auszuführen bevor man mit rails s wiederum den Webserver neu startet. Der Aufruf der gleichen Seite führt nun zu dieser Ausgabe:

 

Better Error Fehlermeldung

 

Die Fehlermeldung findet sich nun im schwarzen Balken am Seitenanfang. Zusätzlich wird die Stelle im Code angezeigt bei der das Problem aufgetreten ist. Fürs Auffinden von Problemen sind die aufgelisteten Request Parameter oft äusserst hilfreich – vor allem wenn die von einem Formular übermittelten Daten nicht gefunden werden können.

 

Aufräumen


Wenn man die beiden Gems oft zusammen braucht kann man diese in einer einzigen Gruppe zusammenfassen. Statt den beiden oben gezeigten Varianten sieht der Eintrag im Gemfile dann so aus:

group :development do
  gem 'quiet_assets'
  gem 'better_errors'
end

 

Fazit


Die beiden Gems Quiet Assets und Better Errors finde ich mittlerweile unverzichtbar für die Entwicklung von Rails-Anwendungen. Ohne lange zu suchen gleich den richtigen Code-Ausschnitt zu sehen hilft mir die Fehlersuche deutlich zu beschleunigen. Und kann man die Warnungen bereits in der Entwicklung erkennen muss man die Fehler nicht erst in der Produktionsumgebung suchen.

Schlagworte:

Rails aktualisieren

13. Januar 2013 Kommentare aus

Anfangs Januar 2013 gab es 2 kritische Sicherheitslücken die ein sofortiges Update auf die aktuellste Version von Rails verlangten. Wie aber geht man so etwas an und wie wird man überhaupt über eine neue Version informiert? Dier Eintrag liefert Antworten zu diesen und weiteren Fragen rund um die Aktualisierung einer Rails Anwendung.

 

Neue Version?


Informationen über neue Versionen findet man auf der offiziellen Webseite RubyOnRails.org. Wem es zu Aufwendig ist diese Seite regelmässig aufzurufen kann auch @Rails auf Twitter folgen oder Podcasts wie Ruby 5 hören. Durch die grosse Verbreitung informieren auch Newsportale wie Heise.de oder Golem.de jeweils sehr zeitnah über neue Versionen oder Probleme mit Rails.

 

Zu aktualisierende Pakete finden


Das Tool Bundler hilft einem nicht nur bei der Paketverwaltung und dem auflösen von Abhängigkeiten, sondern es bietet auch eine Möglichkeit um veraltete Pakete zu finden. Dazu wechselt man ins Verzeichnis seiner Rails-Anwendung und führt diesen Befehl aus:

 bundle outdated
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..

Outdated gems included in the bundle:
  * activesupport (3.2.11 > 3.2.8)
  * builder (3.1.4 > 3.0.4)
  * activemodel (3.2.11 > 3.2.8)
  * sprockets (2.8.2 > 2.1.3)
  * actionpack (3.2.11 > 3.2.8)
  * mail (2.5.3 > 2.4.4)
  * actionmailer (3.2.11 > 3.2.8)
  * activerecord (3.2.11 > 3.2.8)
  * activeresource (3.2.11 > 3.2.8)
  * railties (3.2.11 > 3.2.8)
  * rails (3.2.11 > 3.2.8)

 

Pakete aktualisieren


Sollte Bundler nur wenige Gems melden genügt es diese einzeln zu aktualisieren. Dazu ersetzt man [name] durch den entsprechende Paketnamen:

 sudo gem update [name]

Alternativ kann man auch gleich alle auf dem System installierten Gems aktualisieren. Dazu genügt es beim Befehlsaufruf keinen Paketnamen zu nennen:

 sudo gem update

Neue Versionen von Gems können inkompatible Änderungen enthalten. Wenn der Autor eines Gems einen entsprechenden Hinweis hinterlegt kann die Ausgabe des oberen Befehls so aussehen:

...
Fetching: paperclip-3.4.0.gem (100%)
##################################################
#  NOTE FOR UPGRADING FROM PRE-3.0 VERSION       #
##################################################

Paperclip 3.0 introduces a non-backward compatible change in your attachment
path. This will help to prevent attachment name clashes when you have
multiple attachments with the same name. If you didn't alter your
attachment's path and are using Paperclip's default, you'll have to add
`:path` and `:url` to your `has_attached_file` definition. For example:

    has_attached_file :avatar,
      :path => ":rails_root/public/system/:attachment/:id/:style/:filename",
      :url => "/system/:attachment/:id/:style/:filename"

Successfully installed cocaine-0.4.2
Successfully installed paperclip-3.4.0
...

Hier wird von Paperclip auf ein neues Verhalten beim Ablageort von Anhängen hingewiesen. Diese Informationen helfen einem abzuschätzen ob man die neue Version gleich verwenden will oder ob grössere Umbauten nötig sind.

Wird so ein Hinweis nicht hinterlegt bleibt einem nur das (automatisierte) testen der Anwendung nach dem Update um allfällige Probleme zu finden.

 

Rails aktualisieren


Nachdem die Pakete aktualisiert sind öffnet man das Gemfile und sucht die von Bundler als veraltet markierten Gems:

source 'https://rubygems.org'

gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

Um die neue Version von Rails zu nutzen ersetzt man die Version 3.2.8 durch 3.2.11:

gem 'rails', '3.2.11'

Nach dem gleichen Muster geht man bei den anderen Gems vor. Ist man damit durch empfiehlt sich nochmals mit Bundler die Pakete zu aktualisieren und nach veralteten Paketen zu suchen:

 bundle update
 bundle outdated
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..

Outdated gems included in the bundle:
  * builder (3.1.4 > 3.0.4)
  * sprockets (2.8.2 > 2.2.2)
  * mail (2.5.3 > 2.4.4)

Da diese Gems nicht im Gemfile aufgeführt sind handelt es sich um Abhängigkeiten anderer Pakete. Im Gemfile.lock kann man nachschauen welche Pakete nach dieser Version verlangen. So lange diese Pakete nicht auf die neue Version wechseln müssen die älteren Versionen auf dem System bleiben (und werden von Bundler entsprechend angezeigt).

Allfällige Konfigurationsänderungen an Rails werden über den Rake-Task rails:update durchgeführt. Dies ist vor allem bei grösseren Versionswechseln (wie 3.1 auf 3.2) nötig. Es schadet aber nicht diesen Task bei jeder Aktualisierung auszuführen:

 rake rails:update

Sollte es dabei zu Problemen kommen kann man mittels der Eingabe von h die Hilfe aufrufen und mit d einen Diff der Änderungen anzeigen.

 

Fazit


Ein Update von Rails lässt sich bei kleineren Versionswechseln recht schnell und ohne grosse Probleme durchführen. Ob noch alles wie gewünscht funktioniert kann aber nur ein eingehender Test zeigen. Eine automatisierte Testsuite kann einem auch in diesem Fall viel Arbeit abnehmen.

Schlagworte:

Speziellere Reiseziele in den USA

6. Januar 2013 1 Kommentar

Meine Reisen in die USA haben mir gezeigt wie vielseitig dieses Land ist. Es gibt weit mehr zu sehen als New York, Los Angeles oder den Grand Canyon. In diesem Blogeintrag möchte ich einige Regionen und Attraktionen vorstellen, die einem nicht als erstes einfallen wenn man an mögliche Reiseziele in den USA denkt.

 

Hawaii


Hawaii als 50. Bundesstaat ist ein Ziel das auf dieser Liste nicht fehlen darf. Die Inselgruppe in mitten des Pazifiks ist ideal für Badeferien und um sich zu erholen. Von Europa aus dauert die Anreise recht lange, die Landschaft ist es aber allemal wert.

Durch den vulkanischen Ursprung haben die Inseln teils recht hohe Berge. Der Mount Kaʻala auf O’ahu ist 1220m hoch, der Mauna Kea auf Big Island erreicht gar eine Höhe von über 4200m und beherbergt ein Observatorium. Wem Badeferien nichts sagen findet auf den einzelnen Inseln von Hawaii noch viele andere Freizeitmöglichkeiten.

Wer die Hauptinsel O’ahu besucht und sich für Geschichte interessiert sollte sich Pearl Harbor nicht entgehen lassen. Hat man ein eigenes Auto empfiehlt es sich vor 9 Uhr bereits dort zu sein. Ansonsten sind nicht nur die Tickets fürs Arizona Memorial weg sondern auch die Parkplätze.

USA_2012_01_Hawaii_14 USA_2012_01_Hawaii_08 USA_2012_01_Hawaii_10 USA_2012_02_Honolulu_21 USA_2012_03_PearlHarbor_01 USA_2012_02_Honolulu_22

 

Great Plains


Die Great Plains erstrecken sich von Texas bis weit in den Norden der USA. Wie es der Name vermuten lässt ist die Landschaft dort vor allem eines: Flach. Keine Berge, keine Hügel sondern nur ein nicht enden wollende flache Landschaft. Der Kontrast zur Schweiz könnte in diesem Teil der USA nicht grösser sein.
Um von Ost nach West (oder umgekehrt) zu kommen fährt man fast zwangsläufig durch die Great Plains. Man sollte sich dabei ruhig die Zeit nehmen um die Landschaft auf sich einwirken zu lassen.

USA_2011__35_GreatPlains_10 USA_2011__35_GreatPlains_14 USA_2011__35_GreatPlains_26 USA_2012_13_Amarillo_02

 

Dakotas


Die Daktoas (Nord- und Süd Dakota) sind 2 Bundesstaaten im mittleren Westen. Sie liegen am Ende der Great Plains und grenzen im Norden an Kanada. Die dünne Besiedelung lässt viel Platz für die Natur und ganz spezielle Landschaften.

Von Wounded Knee (Indianer) über Sturgis (Motorräder) bis zu Mount Rushmore oder dem Theodore Roosevelt National Park – für jeden gibt es hier etwas zu sehen. Und wem diese Orte zu touristisch sind findet in Richtung Osten (gegen Fargo) genügend leere Gegenden.

USA_2012_29_Dakota_05 USA_2012_29_Dakota_08 USA_2012_29_Dakota_16 USA_2012_29_Dakota_15 USA_2012_29_Dakota_10 USA_2011__11_MountRushmore_03

 

Cape Canaveral


Wer sich für die Raumfahrt interessiert sollte sich Cape Canaveral nicht entgehen lassen. Mitten im Naturschutzgebiet von Merit Island befindet sich der grosse NASA-Komplex mit einem hervorragenden Besucherzentrum. Neben IMAX-Kinos, einer Saturn-V Rakete und einem Raketenpark gibt es auch Touren zu den Launchpads. Von dort aus wurden alle grossen Raumfahrt-Missionen seit den 1960er gestartet.

Je nach Interesse kann man hier problemlos 1 bis 2 Tage verbringen. Im nahe gelegenen Orlando gibt es nicht nur viele günstige Hotels, sondern auch grosse Freizeitparks wie SeaWorld und Disney World.

USA_2010_02_NASA_02 USA_2010_02_NASA_08 USA_2010_02_NASA_26 USA_2010_02_NASA_16

 

Washington DC


Obwohl die Hauptstadt der USA jedem ein Begriff ist denkt man bei Reisezielen nicht unbedingt an Washington DC. Für Touristen bietet die National Mall vom Lincoln Memorial bis zum Kapitol eine schier endlose Zahl an Sehenswürdigkeiten. Neben Denkmälern und historischen Gebäuden gibt es vor allem Museen.

Das Smithsonian bietet zu verschiedensten Themen (von Flugzeugen über Dinosaurier bis zur amerikanischen Geschichte) eigene Museen mit hervorragenden Ausstellungen – die man meist sogar gratis besuchen kann. Dazu kommen all die Ausstellungen der Bundesbehörden, wie das Nationalarchiv mit der Declaration of Independence oder das Kapitol selbst. Washington DC ist somit nicht nur etwas für politikinteressierte, sondern bietet für jeden Geschmack eine Vielzahl von Beschäftigungsmöglichkeiten.

USA_2012_17_Washington_04 USA_2012_17_Washington_12 USA_2010_11_Washington_27_Mall USA_2010_11_Washington_35_Mall USA_2010_11_Washington_53_Capitol USA_2010_11_Washington_58_Capitol

 

Mehr?


Wer dieser Liste weitere spezielle Zeile hinzufügen möchte kann gerne einen Kommentar hinterlassen. Mich interessiert es auch ob solche Beiträge auf Interesse stossen und ob ich mir die Zeit fürs Aufschreiben von Reiserouten machen soll.

Schlagworte:
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 296 Followern an