SQL Server & ASP .NET Blog

Interessantes und Wissenswertes

Git–neue Remote Branches erscheinen nicht in Visual Studio

Szenario: Ein Kollege hat einen neuen Branch angelegt und publiziert
Problem: Der Branch erscheint nicht in Visual Studio

Lösung:

Schritt 1 – Drittanbietertools installieren

http://msdn.microsoft.com/de-de/library/dd286572.aspx#setup_open

Schritt 2 – Konsole öffnen

16_konsole

Schritt 3 – Fetch und checkout

In der Konsole das aktuelle Repository holen “git fetch” und danach den neuen Branch auschecken mit dem Befehl “git checkout –b <branchname> origin/<branchname>” .

Daraufhin erscheint dieser auch im Visual Studio.

Von SVN zu Git mit Visual Studio 2013–Teil 2

Im ersten Teil habe ich beschrieben, wie man seinen Code aus Subversion zu Bitbucket transferiert. Doch wie kommen nun andere Team-Mitglieder an diesen Code?

Schritt 1  - Visual Studio öffnen und Git wählen

Visual Studio öffnen und über Tools => Options => Source Control => Microsoft Git auswählen

05_SourcecontrolProvider

Schritt 2 – Team Explorer öffnen

Über View => Team Explorer den Team Explorer öffnen und dann “Connect to team project”.

13_Connect

Schritt 3 – Das Repository clonen und das Projekt öffnen

Im Team-Explorer Fenster auf Clone klicken und dort die URL des Repository angeben (bei Bitbucket findet sich diese auf der Overview-Seite des Repository). Dann auf Clone klicken und das Repository wird komplett geladen.

14_Clone

Danach kann das Repository in der Liste ausgewählt werden (Doppelklick) und eine Liste der darin enthaltenen Solution-Dateien wird angezeigt – die sich dann auch praktischerweise von dort direkt öffnen lassen.

15_solution

Es kann sein, dass beim ersten Laden der Solution nicht alle Dateien so “aussehen” als wären sie unter Source Control. Bei mir wurden die entsprechenden Icons erst angezeigt, als ich die Solution nochmal geöffnet habe.

Nun kann weiter gearbeitet werden, d.h. lokal commited, ge-branched, ge-merged etc. werden und wenn die Arbeit wieder mit dem Server-Repository geteilt werden soll, dann geht dies über die Seite unsynced commits und den Sync-Button.

12_multicommit

Von SVN zu Git mit Visual Studio 2013

Bisher habe ich für die Quellcodeverwaltung den VisualSVN Server und TortoiseSVN + AnkhSVN auf dem Client verwendet.

In Visual Studio 2013 kann nun auch Git als Quellcodeverwaltung verwendet werden. Für Details zu Git empfehle ich folgenden Link: https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md#git

Hier folgt jetzt ein Step-by-step Tutorial, wie man eine SVN kontrollierte Visual Studio Solution nach Git, genauer gesetzt bitbucket (https://bitbucket.org) umzieht. Bitbucket darum, da es dort kostenlos möglich ist private Repositories anzulegen (bis zu 5 User) – während man bei GitHub für den kleinsten Account mit privaten Repositories 7$ zahlen muss.

Schritt 1 – den Code aus SVN holen

Zuerst holen wir unseren Code aus dem Subversion Repository per “Export” – so, dass wir die SVN-Bindungen loswerden.

01_Export_thumb1

Dann einmal das Projekt bzw. die Solution öffnen und über File => Subversion => Change Source Control alle Bindungen löschen.

Da (in meinem Fall) trotzdem die Information in der *.sln-Datei übrig geblieben ist, lösche ich diese manuell aus der Datei.

02_Delete_thumb1

 

Schritt 2 – bei Bitbucket anmelden und ein Repository erstellen

Die Anmeldung bei Bitbucket und das Erstellen eines Repository sind selbsterklärend. Sobald das Repository erstellt ist kann man seinen vorhandenen Code hochladen. Dazu wird nur die URL aus dem zweiten Screenshot benötigt – wie genau folgt gleich.

03_Bitbucket1_thumb1

 

04_bitbucket2_thumb1

Schritt 3 – den Code in das Repository übertragen

Zuerst muss Git als Source Control Provider eingestellt werden. Also Tools => Options => Source Control und Microsoft Git Provider auswählen.

05_SourcecontrolProvider_thumb2

Dann ein Rechtsklick auf die Solution und “Add solution to source control”. Im folgenden Fenster Git auswählen.

07_gitaus_thumb1

Damit wird ein lokales Repository erzeugt, dass alle Dateien der Solution enthält, bis auf die in der standardmäßig dazu angelegten gitignore Datei enthaltenen Endungen.

Per Rechtsklick => Commit öffnet sich der Team Explorer und zeigt die Änderungen an, die commited werden sollen. Eine commit message wird dabei immer benötigt.

08_Commit_thumb1

Damit ist das lokale Repository gefüllt und für die Quellcodeverwaltung bereit. Es ist nun möglich lokal Änderungen durchzuführen, commits zu machen, branches zu erstellen, zu mergen etc. etc.

Um das Repository nun auch für andere Team-Mitglieder zur Verfügung zu haben müssen wir es mit einem Server synchronisieren.

09_synch_thumb1

Dazu im Fenster “unsynched commits” die Repository-URL des Bitbucket Repository angeben und auf Publish klicken.

10_synch2_thumb

Damit ist der Code nun auf Bitbucket vorhanden und kann von anderen Team-Mitgliedern verwendet werden.

11_commited_thumb1

Schritt 4 – Push und Pull

Nun kann ganz normal weiter gearbeitet werden. D.h. man macht seine commits lokal und sobald die Änderungen mit dem Serverrepository geteilt werden sollen können diese über Sync mit dem Server geteilt werden. Dabei muss nicht zwingend jeder einzelne commit sofort synchronisiert werden.

12_multicommit_thumb

Im zweiten Teil folgt die andere Seite – d.h. wie bekomme ich als Team-Mitglied den Code aus Bitbucket iun mein VisualStudio.

SpikeTime–online Zeiterfassung

Seit ein paar Tagen ist SpikeTime online. SpikeTime ist ein einfaches Online-Tool für die Erfassung, Auswertung und Analyse von Arbeitszeiten. Gedacht ist dieses Tool zur Zeiterfassung hauptsächlich für Freiberufler und andere Selbstständige, die ihre Arbeitszeiten erfassen müssen. Selbstverständlich darf es natürlich auch von allen anderen verwendet werden, bspw. um einen Überblick über die Überstunden zu erhalten.

spiketime

Ich möchte hier kurz die momentan vorhandenen Features vorstellen.

Die Navigation

Die Navigation ist möglichst einfach gehalten, um schnell zum gewünschten Bereich zu gelangen, ohne viel Platz auf der Seite wegzunehmen. Über eine “SideBar” kann jederzeit auf die wichtigsten Funktionen zugegriffen werden:

navigation

Die Zeiterfassung

Die Navigation im Kalender ist einerseits über die Kalenderwochen und andererseits über einen PopUp-Kalender möglich.

kalender

Die Erfassung der Arbeitszeit erfordert die Eingabe der Zeit, des Projektes und des Stundensatzes.

zeit_eintragen

Die Stoppuhr

Die Stoppuhr kann einfach über den Button gestartet werden.

stoppuhr_1

Sie läuft auf dem Server, was bedeutet, dass das Browserfenster auch während die Stoppuhr läuft geschlossen werden kann. Ein Wechsel des Arbeitsplatzes ist also kein Problem. Bemerkungen und Notizen, die eingegeben werden, während eine Stoppuhr läuft werden automatisch gespeichert.

Änderungen, die eingegeben werden…

…werden sofort gespeichert

stoppuhr_2 stoppuhr_3

Nach Arbeitszeitunterbrechungen kann die Stoppuhr für jeden Zeiteintrag neu gestartet werden:
stoppuhr_4

Der Projektbereich

Im Projektbereich können Projekte angelegt, bearbeitet und deren Stundensätze bestimmt werden.

projekt_1stundensaetze_bearbeiten

Der Statistikbereich

Der Statistikbereich zeigt momentan nach Auswahl des Zeitraums eine Übersicht über die erfassten Stunden, berechnet den Umsatz und zeigt die Verteilung der Arbeitszeit auf die einzelnen Tage oder Monate. Außerdem wird die Verteilung nach Kunden und Projekten in Tortendiagrammen angezeigt.

statistik

Der Filterbereich

Im Filterbereich können die erfassten Zeiten nach Zeit, Kunde, Projekt und Beschreibung gefiltert und gruppiert werden.

filter

 

Soweit zu den bisherigen Funktionen. Weitere Features, wie ein Windows-Client mit automatischer Abwesenheitserkennung, sowie erweiterte Statistik-, Filter- und Exportfunktionen sind in Arbeit und werden nach und nach hinzugefügt.

Wer SpikeTime zur Zeiterfassung einmal ausprobieren möchte, findet die Anmeldung hier: http://www.spiketime.de/Account/Register.
Mehr als einen gewünschten Account-Namen für die Adresse (http://deinaccount.spiketime.de) , die E-Mail Adresse für die Anmeldung und ein Passwort wird nicht benötigt um loszulegen.

Um die Zeiterfassung und Auswertung besser zu machen (und auch um Kritik zu empfangen :-)) bin ich auf euer Feedback angewiesen. Dazu gibt es nach der Anmeldung oben rechts in der Navigation den “Feedback”-Link.

feedback_link

Konfiguration von SSIS-Paketen in SQL Server “Denali”

Wie bereits berichtet gibt es für den SQL Server “Denali” eine neue Projektart für SSIS-Projekte. Bisher wurden Pakete immer einzeln bereitgestellt und es gab dabei die Möglichkeit diese im Dateisystem oder in der msdb zu speichern. Konfigurieren konnte man die Pakete über Variablen, die per XML-Datei aus einer Datenbank oder per Umgebungsvariablen gesetzt wurden.

SSIS in SQL Server “Denali” bringt mit dem Project Deployment die SSISDB, Environments und Parameter ins Spiel. Dazu kurze Stichpunkte:

SSISDB – Zentrale Datenbank zum Speichern, Konfigurieren und für das Logging von SSIS Projekten und Paketen
Environment – Container für eine oder mehrere Variablen, die bei der Ausführung von Paketen gesetzt werden können
Parameter – im Grund eine weitere “Variablenart” in SSIS-Paketen, die beim Aufruf eines Paketes oder eines Projektes gesetzt werden kann

Im Grund funktioniert das Zusammenspiel folgendermaßen:

  1. Ein SSIS-Projekt wird angelegt und Parameter werden definiert
  2. Ein Environment mit einigen Variablen wird angelegt
  3. Das SSIS-Projekt wird auf den Server bereitgestellt (direkt aus Visual Studio in die SSISDB)
  4. bei der Ausführung (Execution) wird für das auszuführende Paket die zu verwendete Environment angegeben, die im Paket hinterlegten Parameter werden konfiguriert und das Paket läuft

Die folgende Grafik zeigt dieses Verhalten noch einmal grob:

image

Damit ist es ein Leichtes mehrere Umgebungen mit unterschiedlichen Parameterwerten für bspw. Entwicklungs-, Test- und Produktivumgebungen zu erstellen und während der Ausführung zwischen diesen umzuschalten.

So viel zur Theorie. In der Praxis sieht dieses Vorgehen folgendermaßen aus: More...

Piwik–Alternative zu Google Analytics

Bereits lange bekannt ist, dass Google Analytics als Tool zum tracken von Website-Benutzerdaten aus datenschutzrechtlicher Sicht zumindest "bedenklich" ist (Beispiel). Grund dafür ist beispielsweise die Übertragung von Besucherdaten (IP-Adressen) ins Ausland. Daher habe auch ich mich nach einer Alternative umgesehen und Piwik gefunden (Piwik als Alternative). Es bietet ähnliche Auswertungen wie Analytics - hat aber den Vorteil auf dem "eigenen" Server zu laufen und somit keine Informationen weiter zu geben. Leider ist Piwik eine PHP-Anwendung und somit nicht so einfach auf einem IIS zu installieren, wie eine ASP .NET Anwendung. Daher hier kurz ein Link, mit dem die Installation ohne Probleme funktionierte => PHP mit FastCGI auf dem IIS

Piwik wird auch in der Microsoft Web App Gallery zur “OneClick” Installation angeboten (hier) – dabei wird auch automatisch MySQL und FastCGI mit installiert. Diese Methode hat bei mir allerdings nicht zum Erfolg geführt. 

Die Präsentation der Tracking-Ergebnisse in Piwik sieht auch ordentlich aus - für meine Zwecke auf jeden Fall ausreichend. Außerdem ist ein Plugin mitgeliefert, um die IP-Adressen der Benutzer direkt zu anonymisieren (d.H. die IPs werden gar nicht erst gespeichert).

image

image

Wer es selbst ausprobieren möchte findet den Download unter: http://piwik.org

Edit: Da war ich ja heute richtig aktuell :-) siehe http://www.golem.de/1103/82115.html

Export nach Excel aus eigenen Anwendungen

Für den Export von Excel-Dateien aus eigenen Anwendungen gibt es eine schöne OpenSource-Lösung unter http://epplus.codeplex.com/=> EPPlus

Mit dieser Bibliothek (unter Referenzen einbinden) lassen sich recht einfach – auch komplexe – Excel Sheets erstellen und exportieren.

Ein kleines Beispiel, welches nur ein paar Zellen mit Text füllt und eine Zeile auf unsichtbar schaltet ist unten zu sehen.

using OfficeOpenXml;
void ExportToExcel()
{
    using (var p = new ExcelPackage(new FileInfo("Data\\Template.xlsx"), true))
    {
        //ExcelWorksheet
        ExcelWorksheet ws = p.Workbook.Worksheets[1];
        
        //Fill
        ws.Cells["A4"].Value = "Dies";
        ws.Cells["A5"].Value = "ist";
        ws.Cells["A6"].Value = "eine";
        ws.Cells["A8"].Value = "Demo";

        //set row 10 invisible
        ExcelRow row = ws.Row(10);
        row.Hidden = true;

        //Save to Disk
        Byte[] bin = p.GetAsByteArray();

        const string file = "Data\\Export.xlsx";
        File.WriteAllBytes(file, bin);

        //Open
        System.Diagnostics.Process.Start("Data\\Export.xlsx");
}

Auf jeden Fall wesentlich einfacher zu bedienen als die “hauseigene” Integration mit Office.

SQL Server “Denali”–Neuheiten in SSIS

Ich habe heute mal testweise die CTP 1, SQL Server “Denali” installiert um ein wenig mit den neuen Features zu “spielen”. Vor allem angetan haben es mir dabei die neuen SSIS-Features – daher hier kurz das Berichtenswerte.

Die Optik

Zunächst einmal – ganz wichtig! Abgerundete Ecken :-) Die Elemente aus der Toolbox werden nun alle mit abgerundeten Ecken dargestellt und das aktuell gewählte Element bekommt einen schönen Schlagschatten. Sieht schick aus – mehr aber auch nicht :-)

image

Veränderungen in der Toolbox

Besonders viel Neues ist mir hier auf den ersten Blick nicht aufgefallen. Es gibt zwei neue “Favoriten”. Einen Destination Assistant und einen Source Assistant.

image

Wählt man einen der beiden aus kann in einem neuen Popup aus bereits vorhandenen Verbindungen ausgewählt werden oder man kann weitere Verbindungen hinzufügen.

image

Neuer Projekttyp und SSISDB

Standardmäßig werden neue Projekte nun in einem neuen SSIS-Projekttyp angelegt. Dieser neue Projekttyp erlaubt eine vollkommen neue Art der Paketkonfiguration und der Bereitstellung auf einem SQL-Server.

Zunächst einmal fällt im Management Studio ein neuer Zweig auf – “Integration Services”. Dort kann mit Create Catalog… eine neue Integration Services Datenbank (“SSISDB”) angelegt werden. Diese Datenbank kümmert sich um die Verwaltung der SSIS-Projekte und um deren Konfiguration.

image

Im Knoten Integration Services können nach Installation der Datenbank alle dort enthaltenen Projekte, Pakete und Konfigurationen bearbeitet werden. Für die Installation muss die Option ‘clr_enable’ aktiviert sein. Ansonsten gilt es nur ein Passwort zu vergeben und einmal OK zu klicken. Die Datenbank erscheint dann mit den neuen GUI Funktionen unterhalb von Integration Services und als “normale” Datenbank unterhalb Databases.

image

Im Screenshot sieht man ein bereitgestelltes SSIS-Projekt mit einem Paket und zwei erstellte Environments – also Ausführungsumgebungen.

Wie die “neue” Konfiguration funktioniert, was genau “Environments” sind und was man sonst so alles tolles mit dem neuen Projekttyp machen kann steht im nächsten Beitrag :-)

XML Dateien mit Visual Studio formatieren

In Visual Studio ist es ein Kinderspiel “hässliche” automatisch generierte einzeilige XML-Dateien in der Form:

<root><element>text</element><element>text2</element></root>

mit einem Hotkey in ein lesbares Format zu bringen.

[STRG] + [K] – [D] – also Steuerung halten und dann [K], dann [D]

Ergebnis ist:

<root>
    <element>text</element>
    <element>text2</element>
</root>