voodoo4u/NET

Webentwicklung und Softwarequalität auf Basis von PHP, SEO, .NET in einem Blog

Archive for the ‘Projekte’ Category

PHP-Benchmarking: Strings anhand von Leerzeichen trennen

without comments

Ausgangssituation

Vor kurzem hatten wir in  der Firma das Problem, dass auf der Budgetmap unseres Portals ein String, bestehend aus Leerzeichen und einem Ampersand, einen AJAX-Request und die weiterführende Verarbeitung via PHP nicht überstand. Unsere Frontend-Entwickler saßen somit vor ihren Bildschirmen und überlegten, wie das Problem behoben werden kann. Die Lösung: im PHP-Controller wird einfach nur das erste übergebene Wort ausgewertet. Die Tür ging auf, ein Frontend’ler kam herein und warf eine Frage in den Raum: “Wie muss ich einen Regulären Ausdruck formulieren, damit ich die erste Zeichenkette vor einem Leerzeichen zurückbekomme?” - Total verwirrt und entsetzt warfen wir die Hände über den Kopf: “RegEx? Bloß nicht!”

Problemstellung

Wie die meisten von euch sicherlich wissen, sind Reguläre Ausdrück (vor allem unter PHP) eine der schlimmsten Programmierlösungen, die man einem (nach Performance ächzenden) Webserver nur antun kann – zumindest wenn implementierbare Alternativen existieren. Umgehend schossen mir natürlich unzählige Möglichkeiten durch den Kopf, welche das Problem genauso einfach und performanter lösen können. Zwei von diesen möchte ich euch einmal kurz Vorstellen.
Read the rest of this entry »

Written by voodoo44

Januar 26th, 2012 at 10:03 pm

Die neue alte INSPIRE-Richtlinie

without comments

Heute möchte ich einmal kurz auf einen (meiner Meinung nach sehr interessanten) Artikel hinweisen.
Der Artikel ist Teil meiner Bachelorthesis gewesen und ich habe mich dazu entschieden, ihn (leicht bearbeitet) zu veröffentlichen.

Es geht im Artikel um das Thema INSPIRE, oder für den, der es länger mag: “Infrastructure for Spatial Information in the European Community”

Für alle, die nicht wissen, was INSPIRE ist, zitiere ich einen kurzen Ausschnitt des Artikels:

Das Ziel dieser Richtlinie ist es, die grenzübergreifende Nutzung von Geodaten in Europa zu erleichtern. Zu diesem Verwendungszweck werden allgemeine Bestimmungen für die Schaffung einer Geodateninfrastruktur für die Zwecke der gemeinschaftlichen Umweltpolitik sowie anderer politischer Maßnahmen oder sonstigen Tätigkeiten, die Auswirkungen auf die Umwelt haben, erlassen. INSPIRE verlangt grundsätzlich nach webbasierten Online-Diensten, welche für die Suche, die Visualisierung und den Download der Daten benutzt werden.

Um es grob zusammenzufassen: es geht um viel XML-Content, welcher den Datenaustausch von Geo- und Metadaten ermöglichen soll. Die Ämter der Mitgliedsstaaten sollen ihre elektronischen Daten an andere Mitgliedsstaaten weitergehen – aber auch an die eigenen Bürger. Theoretisch könnte damit jeder deutsche Bürger Einblick in ein “Online-Grundbuch” erhalten und müsste hierfür nicht immer auf’s entsprechende Amt gehen.

Den Artikel findet ihr auf meinem GISBlog.

Lesen könnt ihr den Artikel durch das klicken auf den Link.

Viel Spaß beim Lesen!

Written by voodoo44

August 19th, 2011 at 9:40 am

Posted in Hobbies,IT,Projekte

Tagged with geoinformatik, GIS, Projekte

MantisBT-Issues aktualisieren mit C# und dem .NET Framework

without comments

Nachdem ich mich nun fast eine Woche mit dem Zugriff auf den Mantis Bugtracker via SOAP herumgeschlagen habe, habe ich endlich eine Lösung.

Nachdem die Webservice-URL im Visual Studio 2010 als sog. “Dienstverweis” eingerichtet wurde, konnte ein erster Zugriff auf die Methoden geschehen.
Dazu musste die Klasse MantisConnect instanziert werden um die Methode mc_issue_update() verwenden zu können.
Eine erste Anfrage an den Webservice erzeugte den Fehler

An element “faultstring” has namespace “”.

Dieser Fehler deutet darauf hin, dass die NuSOAP-Schnittstelle, welche MantisBT verwendet, nicht konform mit der aktuellen Version der WCF ist. In diesem Fall muss auf die erweiterten Optionen des Visual Studio zugegriffen werden um in den .NET-Framework 2.0 Kompatibilitätsmodus zu schalten. Ist dies erledigt, so kann die Webservice-Schnittstelle problemlos verwendet werden.
Ein entsprechendes Ticket zum Fehler wurde im Bugtracker der MantisBT-Webseite bereits hinterlegt.

Als Argumente für die mc_issue_update()-Methode sind zum einen ein Nutzername, ein Passwort und eine ID des zu aktualisierenden Bugs als String zu übergeben – zum anderen muss eine Instanz der Klasse IssueData übergeben werden.
Diese beinhaltet mindestens folgende Felder:

  • description
  • summary
  • category
  • ID und Name des Projektes

Nachdem ich diese Felder übergeben hatte, erschien folgende Fehlermeldung:

System.NullReferenceException wurde nicht behandelt.
Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Hier hat mich Visual Studio darauf hingewiesen, ich solle doch bitte ObjectRef() für das Projekt instanzieren (Quelltext Zeile 8).

public void UpdateData(List<String> data)
{
    IssueData newIssue = new IssueData();
    newIssue.description = data[0];
    newIssue.summary = data[1];
    newIssue.category = data[2];

    /* set project */
    newIssue.project = new MantisConnectReference.ObjectRef();
    newIssue.project.id = "1";
    newIssue.project.name = "MyProject";

    String bugId = data[3];

    try
    {
        MantisConnect myCon = new MantisConnectReference.MantisConnect();
        myCon.mc_issue_update("administrator", "_myPassword_, bugId, newIssue);
    }
    catch(Exception ex)
    {
        System.Console.Write("Error: " + ex);
    }
}

Der Quelltext beschreibt das Aktualisieren eines Bugs mit Hilfe der NuSOAP-Schnittstelle von MantisBT. Da sie sich ähnlich leicht wie die C#-Bibliothek “MantisConnect” verwenden, beherrscht jedoch im Gegensatz zu der, seit Juni 2005 nicht mehr weiterentwickelten, MantisConnect-DLL auch das aktualisieren von Bugs.

Auf eine ähnliche Art und Weise ermöglicht diese API auch das hinzufügen und löschen von Bugs – ebenso können Projekte angelegt und aktualisiert werden. Im Gegensatz zur völlig veralteten MantisConnect-DLL bietet die WebAPI umfangreiche Möglichkeiten, die Projekte mit Hilfe von .NET zu verwalten.

Weiterhin interessant ist die Möglichkeit, die sog. “Custom Fields” anzusprechen.

IssueData newIssue = new IssueData();

newIssue.custom_fields = new MantisConnectReference.CustomFieldValueForIssueData[1];
newIssue.custom_fields[0] = new MantisConnectReference.CustomFieldValueForIssueData();
newIssue.custom_fields[0].field = new MantisConnectReference.ObjectRef();
newIssue.custom_fields[0].field.id = "1";
newIssue.custom_fields[0].field.name = "CustomFieldname";
newIssue.custom_fields[0].value = "Text";

Zuerst muss – wie immer – die entsprechende Klasse instanziert werden. Zuvor muss in diesem Fall noch ein Array der Größe 1 erstellt werden, um die dazugehörigen Objekte darin anzulegen. Ist dies geschehen, können den CustomFieldValueForIssueData-Objekten ihre Eigenschaften zugewiesen werden. Dazu gehören unter anderem der Feldname sowie die ID des Benutzerdefinierten Feldes. Außerdem sollte der gewünschte Inhalt des Feldes hinterlegt werden.

Danach können die zugewiesenen Eigenschaften an das IssueData-Objekt angehängt und mit einem Update oder Add an die SOAP-Schnittstelle geschickt werden.

Written by voodoo44

August 10th, 2011 at 6:05 pm

Posted in Hobbies,IT,Projekte,Studium

Tagged with .NET, C#, Mantis, SOAP

Serverumzug

without comments

So, vor wenigen Minuten habe ich alle Domains von Strato umgezogen und bei EUServ implementiert.

Der Server, welchen ich seit einigen Jahren bei Strato habe, wird in den kommenden Tagen abgeschaltet und als eine Art “Testsystem” die letzten paar Wochen genutzt. Alle Webseiten sind mittlerweile auf den neuen Server von S4Y umgezogen. Warum ich das gemacht habe? Der alte Server von Strato war einfach nur extrem langsam. Selbst die SSH-Zugriffe waren extrem langsam. Auf dem neuen Server läuft alles einfach viel schneller – sogar die Traffic-Anzeige im Plesk funktioniert problemlos, bei Strato ging das irgendwie nicht. Allgemein war bei Strato irgendwie alles etwas verhauen, wenn man sogar Ubuntu als Server-Image anbot, Debian z.B. aber nicht.

Highlight: Schnelle Anbindung, 1 GByte garantierter Ram (im Gegensatz zu vorher 256 MByte) und mehr als das doppelte an Festplattenspeicherplatz. Was will man mehr? Die Webseiten laufen wirklich Prima – der Plesk Migration-Wizard ist auch eine echte Hilfe gewesen, mit wenigen Klicks konnte ich alle Daten hier rüberspielen und es lief alles auf Anhieb. Ein kleines Problem mit dem Zeichensatz einer PHP-Webseite existierten, aber die konnten innerhalb von 5 Minuten behoben werden (einfach alle Dateien auf UTF-8 umstellen und neu hochladen).

Die letzte Domain (voodoo4u.net) sollte dann morgen bei EUServ verfügbar sein (aktuell läuft sie über die DNS-Einstellungen bei Strato).

Mehr Informationen über das eigentliche System werde ich demnächst mal veröffentlichen.

Bis da hin allerdings gibt es noch ein paar Dinge zu erledigen. Unter anderem meinen 27er Barde leveln.

Written by voodoo44

Februar 25th, 2010 at 12:28 am

Posted in Internet,Projekte

Tagged with Homepage, Plesk, Projekte, Server

Neues altes Projekt – GISBlog

without comments

Hallo Leser,

ich habe ein altes Projekt meinerseits reaktiviert – den GISBlog.

Hierbei handelt es sich um ein WordPress-Blog, welches von mir gepflegt und administriert wird. Die Themen sind hierbei natürlich die Geoinformatik, bzw. die Geoinformationssysteme (“GIS”). Es werden Informationen zu aktuellen GIS-Projekten, Standards (OGC, INSPIRE) und vieles mehr zur Verfügung gestellt.

Leider habe ich kein aktuelles Backup mehr, sodass ich mit dem Gesamten Content wieder von vorn beginnen muss. Sehr schade ist das natürlich – aber ich kann es leider nicht ändern.

Schaut doch einfach mal vorbei!

Written by voodoo44

Januar 12th, 2010 at 10:25 pm

Posted in Projekte

Tagged with GIS, Hobbies, Projekte