Sharepoint – mit Windows XP WebParts programmieren

Um einen WebPart für Sharepoint mit Hilfe der Windows Sharepoint Services 3.0 Tools entwickeln zu können, braucht man mindestens einen Windows Server 2003 als Betriebssystem. Anders lassen sich diese Extensions fürs Visual Studio leider nicht installieren. Es ist aber trotzdem möglich, WebParts unter Windows XP zu entwickeln. Wie das geht, möchte ich hier erklären:

Um einen funktionierenden WebPart mit Visual Studio 2005 zu schreiben, braucht man lediglich die Microsoft.SharePoint.dll. Zu finden ist diese auf dem Server, auf dem MOSS oder WSS installiert ist. Diese referenziert man sich in seinem eigenen Projekt, in unserem Fall ein WebCustomControl. Da man später zur Installation unseres Webparts die Versionsnummer angeben muss, schauen wir kurz in der Assembly.info vorbei und schalten das automatische hochzählen der Versionierung aus. Wir sind also ab sofort immer auf Version 1.0.0.0.  Außerdem fügen wir bei den Usings folgendes hinzu:

using System.Security;

Nun fügen wir unter der Version noch ein [assembly: AllowPartiallyTrustedCallers] hinzu und fertig ist unsere Assembly.info.

Jetzt, da wir Zugriff auf die Klassen haben, die wir brauchen, können wir uns ein eigenes WebCustomControl erstellen. In den Usings fügen wir die WebPartPages hinzu.

using Microsoft.SharePoint.WebPartPages;

Unser WebCustomControl erbt von der Klasse WebPart.

public class MyWebPart :Microsoft.SharePoint.WebPartPages.WebPart

Im Control wird die Methode protected override void RenderContents(HtmlTextWriter output) gelöscht. Dann wird die RenderWebPart Methode überschrieben.
Jetzt noch etwas Logik, und fertig ist der WebPart. Ein Beispiel:

Button saveTitle;
TextBox newTitle;

public void saveTitle_click(object sender, EventArgs e)
{
     this.Title = newTitle.Text;
     try
     {
          this.SaveProperties = true;
     }
     catch (Exception ex)
     {
          this.Title = "Error: " + ex.Message;
     }
}

Wir überschreiben die CreateChildControls:

protected override void CreateChildControls()
{
     newTitle = new TextBox();
     newTitle.Text = "";
     Controls.Add(newTitle);

     saveTitle = new Button();
     saveTitle.Text = "Set Web Part Title";
     saveTitle.Click += new EventHandler(saveTitle_click);
     Controls.Add(saveTitle);
}

In der RenderWebPart Methode wird der bisherige Code gelöscht und folgender eingefügt:

RenderChildren(output);

Um den WebPart auf dem SharePoint Server zu deployen, braucht unsere Assembly einen Strong Name. Diesen unter den Eigenschaften des Projektes bei Signing hinzufügen und die Solution noch mal builden.

Unsere fertige dll legen wird nun auf den Sharepoint Server umgezogen und im Global Assembly Cache registriert (gacutil –i).
In der web.config des Sharepoint Servers (normalerweise zu finden unter C:\Inetpub\wwwroot\wss\VirtualDirectories\PortNummer\) fügt man bei <SafeControls> einen weiteren Eintrag hinzu:

<SafeControl Assembly="<Name der dll ohne Endung>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<PublicKeyToken aus GAC>" Namespace="<Namespace der Anwendung>" TypeName="<Name der Klasse>" Safe="True"/>

Jetzt braucht man nur noch eine XML-Datei mit folgendem Inhalt zur Installation:

<?xml version="1.0" encoding="utf-8" ?>
<webParts>
  <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="<namespace>.<Klassenname>, <dll ohne .dll>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<publickeytoken aus gac>" />
      <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
    </metaData>
  <data>
    <properties>
      <property name="Title" type="string">My Web Part</property>
      <property name="Description" type="string">A test web part.</property>
    </properties>
  </data>
</webPart>
</webParts>

Dieser Datei geben wir die Endung dwp.

In unserer Sharepoint Anwendung navigieren wir nun zu Site Actions -> Site Settings und wählen unter dem Punkt Galleries Web Parts aus. Hier klickt man auf Upload und navigiert zur eben erstellten dwp Datei. Nun sollte der Webpart nutzbar sein. Achtung: Bei der Vorschau funktioniert die Logik dahinter noch nicht.

Nützliche Links:
http://msdn.microsoft.com/en-us/library/ms452873.aspx
http://www.codeproject.com/KB/sharepoint/WebParticles.aspx

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Germanys next Topmodel – ein C# Entwickler ?

Alles wird gemessen, heutzutage. Performance von Aktien, der Ölpreis……. und mein Blutdruck ;)

Bleibt die Frage, wie messe ich einen Programmierer ? Nun, wie immer bei solchen Fragen, ist die Antwort nicht einfach. Viele Eigenschaften sind die Zutaten für einen guten Programmierer:

  • Fachwissen, welches sich stetig erweitern sollte.
  • Erfahrung – mit den Jahren hat man so die ein oder andere Klippe im Programmieren umschifft, das hilft in der Praxis. Fachwissen – zugegeben, nicht unbedingt notwendig, aber wenn es vorhanden ist, dann ist es ziemlich hilfreich.
  • Kreativität: wohl dem, der nicht von Morgens bis Abends Interfaces zwischen einem Legacy Programm und einen Upstream System programmieren muß.
  • Architekturverständnis. Yep, auch das ist sehr hilfreich. Klar gibt es Software Architekten, die auch wirklich sehr hilfreich sind, aber in kleinen Projekten fehlen die vielleicht, und das ‘Schludern’ im Code von heute, wird der Wochenend-Killer in einem oder zwei Jahren ;)
  • ‘PS-auf-die-Straße-bringen’ Eigenschaft, oder das GTD Gen :) , welches letztendlich ein Mix aus den oben genannten Eigenschaften darstellt (siehe gesonderten Blog Beitrag).

Und das GTD Gen kann man messen. Na ja, ‘Kind of’.

Top Coder

Competition ArenaUnter http://www.topcoder.com erreicht man eine Plattform die sozusagen Programmier-Wettbewerbe austrägt. Zugegeben, der Registrierungsprozeß ist etwas uncool, aber es lohnt sich. In der etwas unübersichtlichen Seite von TopCoder verbergen sich diverse Betätigungsfelder. Für Programmierer und auch für Firmen, die Programmierer suchen. TopCoder bietet Wettbewerbe an, in denen Programmierer in einer Art ‘SandBox’ Aufgaben gestellt bekommen, deren Lösung mit Punkten bewertet werden.

Top Coder für Programmierer

Für Programmierer bietet TopCoder eine Plattform um ihr Wissen neutral mit anderen zu messen. Aufgaben aus diversen Bereichen wie Algorithmen, Software Architektur, Design, Development, Assembly Programming aber auch Software Testing stehen zur Auswahl.
Hatte ich erwähnt, das man des Englischen mächtig sein sollte, um bei TopCoder mitzumachen ? Alle Aufgaben, sowie die ganze Plattform sind in der englischen Sprache verfaßt. Aber Hand aufs Herz. In diesem Geschäft, sollte man sowieso gut Englisch sprechen, oder ?Aufgabe und Lösung

Hat man sich einmal angemeldet und sich einen Bereich ausgesucht (z.B. Assembly Development), dann kann man sich Aufgaben aus vergangenen Wettbewerben anschauen. Folgende Programmiersprachen stehen dabei zur Verfügung: Java, C++, C#, VB.net (Python in Vorbereitung).
Es ist nicht notwendig, jedoch sehr empfehlenswert, die Programmiersprache auf dem heimischen Rechner installiert zu haben, um so in der eigenen Entwicklungsumgebung zu coden, und dann das Ergebnis in TopCoder zu kopieren. Man kann auch sofort im TopCoder Fenster coden.

Grundsätzlich gibt es hier 2 Kategorien: Wettbewerbe (Contests) und Trainings (Practise Rooms).

In den Practise Rooms kann man sozusagen abgelaufene Wettbewerbe nachprogrammieren. Dabei werden verschiedene Schwierigkeitsstufen zur Auswahl gestellt. Je nach Schwierigkeitsstufe, kann man unterschiedliche Punktzahlen erreichen. Tipp: erst mal mit einer kleinen Stufe anfangen ;) )

Wettbewerbe starten weltweit zur gleichen Uhrzeit. Dem Teilnehmer wird dann die Problemstellung geschildert und los gehts. In der eigenen Programmierumgebung starten und kompilieren und wenns ohne Fehler läuft, den Source Code per copy & paste ins Top Coder Fenster pasten :) Achtung, jeder fehlerhafte Lauf im Top Coder Fenster kostet am Ende wertvolle Punkte … Am Ende des Wettbewerbs kann man sich so mit anderen Teilnehmern aus der ganzen Welt vergleichen. Da es bekanntlich viele Wege nach Rom gibt, gibt es auch verschiedene Lösungsansätze und selbst Super-Programmierer habe ich ob der Einfachheit und Kürze der anderen Lösungen schon erstaunt und ehrfürchtig gesehen ;)

Top Coder für Firmen

System TestFür Firmen bietet diese Plattform ungeahnte Möglichkeiten. So ist es durchaus denkbar im Rahmen eines Vorstellungsgesprächs einen Bewerber bzw. eine Bewerberin ein Problemfall live in TopCoder programmieren zu lassen. Es ist somit ein neutrales Medium mit neutralen Fällen in einer neutralen Umgebung. So eine Übung dauert vielleicht 20-30 Minuten, aber es zeigt oft, ob neben den sehr guten Zeugnissen auch die Praxis vorhanden ist.

Natürlich sollte solch ein Test nur ein Mosaikstein im Bewerberprofil sein. Aber man kann doch einiges feststellen, da es sich im Allgemeinen in solch einem Gespräch dann um eine Streßsituation handelt. Also, liebe Arbeitgeber, bitte auch berücksichtigen dass in solch einem Umfeld auch Top Programmierer manchmal einen Black-Out haben können ;)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Das GTD Gen bei Programmierern

Das ‘GTD’ Gen

Software Entwickler gibt es in allen Ausprägungen. Ich kann das beurteilen, weil ich selber jahrelang Software geschrieben habe, und ja, ich gestehe, es auch heute noch leidenschaftlich gerne tue. Es ist so ein bisschen wie mit dem Fahrradfahren. Man verlernt es nie ganz, und an einem sonnigen Tag holt man den Drahtesel dann ans Tageslicht, Reifen aufpumpen und los geht’s ;)

Gute Software-Entwickler von heute sind jedoch eher mit Profi Radfahrern zu vergleichen. Nein, ich meine nicht, dass sie sich mit Eigenblut dopen dopen ;) . Ich meine, dass sie ständig auf dem neuesten Stand bleiben müssen, um auch alle Möglichkeiten einer modernen Programmiersprache auszunutzen. Schaut man zum Beispiel auf das Microsoft .net Framework, so reden wir von ca. 30.000 mitgelieferten Klassen (Schätzungen gehen bis zu 35.000 !!!). Offensichtlich kann man die nicht alle kennen. Dies passt also bestimmt nicht mehr in meine Hobby-Liga der Software Programmierung.

Aber ich weiche vom Thema ab. Es geht ums GTD Gen.

GTD = Get Things Done

Ich gestehe, ich habe mir den Namen des Gens selber ausgedacht und es ist auch noch nicht wissenschaftlich nachgewiesen worden. Aber es ist vorhanden. Bei einigen mehr bei anderen weniger ;) .

Worum geht’s dabei? Programmieren ist für viele Programmierer eine Funktion aus effizientem Code und Skalierbarkeit des Ergebnisses. Es ist eine (nicht leichte) Aufgabe, diese beiden Parameter optimal für ein neues Projekt auszubalancieren. Ein Software Architekt sollte einem das Skalierbarkeitsproblem abnehmen. Aber die sind teuer und nicht in jedem kleinen Projekt vorhanden.

Also selbst ist der Mann/Frau.  Es gibt allerdings noch einen dritten Parameter in der Softwareprogrammierung. Ein statischer, leider.  Die Zeit.  Sozusagen

public static DateTime time;

Also, die Zeit, die für ein Projekt vorgesehen wurde.


  → Continue reading "Das GTD Gen bei Programmierern" »

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News