Archive: ‘Allgemein’ Category

Automatisiertes Backup mit der Windows Powershell

No comments März 26th, 2011

Nachdem mein USB-Stick Anfang Februar den Dienst verweigert hat und somit alle Daten, darunter meine Web- und Windows-Projekte, unzugänglich wurden habe ich mir Gedanken über ein automatisiertes Backup für meinen Stick gemacht. Da kam mir die Windows Powershell in den Sinn.

Das Backup-Script war mit 5 Zeilen Code schnell geshrieben:

Set-Location "I:\"
$NowDate = Get-Date -UFormat %Y\%m\%d.%m.%Y
$BackupPath = "E:\Backup\UsbStick\$NowDate\"
New-Item -Path $BackupPath -ItemType "Directory"
Get-Childitem "I:\" | ForEach-Object -Process { Copy-Item $_ -Destination $BackupPath -Recurse }

Zur Erklärung:

  1. Der aktuelle Arbeitsort wird auf das zu sichernde Wechselmedium gesetzt.
  2. Die Backups werden nach Jahren, Monaten und zuletzt Sicherungsdatum angelegt. Daher ist das Datum $NowDate im  Format JJJJ\MM\DD.MM.JJJJ nötig.
  3. Auf die Variable $BackupPath wird der Speicherort der Backups geschrieben, wobei zum Schluss das bereits für den Ordnerpfad formatierte Datum angehängt wird.
  4. Entsprechend dem Inhalt von $BackupPath wird ein neuer Ordner angelegt.
  5. Die Elemente des zu sichernden Sticks werden ausgelesen und an den Zielort $BackupPath kopiert, wobei durch das Anfügen von -Recurse an die Anweisung die Ordner rekursiv kopiert werden.

Nachdem dieser Code als *.ps1-Datei gespeichert wurde, kann nun die Zeitgesteuerte Ausführung über die Windows Aufgabenplanung eingerichtet werden.

In dieser wird eine neue Aufgabe erstellt; die Trigger müssen nach eigenen Vorlieben eingestellt werden.
Als Aktion gibt man powershell ein. Im Feld Argumente wird folgendes eingegeben:

-noprofile -command Pfad\Datei.ps1

Pfad und Datei müssen natürlich noch durch den Pfad zur Datei und den Dateinamen ersetzt werden.

Nun muss man sich nicht mehr um das Sichern seines USB-Sticks kümmern.

 

Updates für meine Programme verfügbar

No comments Dezember 22nd, 2010

Die Server-Probleme sind behoben, sodass die Updates von RideLog und PhotoStackRenamer nun auch als Direkt-Download verfügbar sind.

Updates für meine Programme

No comments Dezember 4th, 2010

Information: Aufgrund von Server-Problemen stehen die Updates vorerst nur per Auto-Update zur Verfügung!

RideLog 1.0.0.1

Am 01. Dezember habe ich RideLog in der Version 1.0.0.1 veröffentlicht. Neu ist allerdings nur ein wenig Text auf der Datei- bzw. Druck-Ausgabe: Über “Daten für das Jahr XXXX” steht nun als Überschrift “FAHRTENBUCH”.

PhotoStackRenamer 1.1.0.3

Heute habe ich den PhotoStackRenamer 1.1.0.3 veröffentlicht. Neu ist die Möglichkeit, Drag-and-Drop für das Laden der Fotos in die Umbenennungsliste zu nutzen.

Auto-Update

Wer RideLog 1.0.0.0 bzw. PhotoStackRenamer 1.1.0.2 installiert hat, sollte in den nächsten zwei Wochen von der Software selbst, oder besser gesagt von Microsofts ClickOnce, das Update angeboten bekommen (vorausgesetzt, die Anwendungen werden hin und wieder mal geöffnet Smiley).

Tolles Tool: Rainmeter

No comments September 15th, 2010

Vor ein paar Tagen bin ich auf Rainmeter aufmerksam geworden und war auf Anhieb begeistert. Rainmeter ist so etwas Ähnliches wie die Minianwendungen von Windows 7. Der für mich entscheidende Vorteil liegt hier allerdings darin, dass der Editor reicht, um ein sogenanntes Skin für Rainmeter zu erstellen.

Diese Skins sind ini-Dateien, in denen Werte gemessen und anschließend nach Belieben ausgegeben werden. Dabei stehen eine Reihe von Messungsmöglichkeiten wie der PC-Laufzeit, der CPU-Auslastung uvm. zur Verfügung. Des weiteren sind bereits Plugins mitgeliefert, die beispielsweise das Parsen von Web-Dokumenten ermöglichen.

Natürlich habe ich sofort mit dem Schreiben von eigenen Skins losgelegt. Ein paar sind schon fertig.

Meine selbst geschriebenen Rainmeter Skins

Meine selbst geschriebenen Rainmeter Skins

Als kleines Beispiel hier mal der Code meines PC UpTime-Skins:

[Rainmeter]
Update=1000
Author=SeKliSys (Sebastian Kliem)

[Metadata]
Name=PC UpTime
Config=The Elegance Of Simplicity | PCUpTime
Description=Displays teh german date.
Instructions=
Version=1.0
Tags=basic | clean | Silmple | elegance | PC | UpTime
License=

[Variables]
_FontColor=255,255,255,220
_FontFace=Segoe UI

:-------Measures-------

[MeasureUpTime]
Measure=UpTime
Format=%4!i!d %3!i!h %2!i!m %1!i!s

;--------Meters--------
[MeterUpTimeHead]
Meter=STRING
X=0
Y=0
FontFace=#_FontFace#
FontSize=20
FontColor=#_FontColor#
StringAlign=LEFT
AntiAlias=1
Text="PC UpTime"

[MeterUpTime]
MeasureName=MeasureUpTime
Meter=STRING
X=5r
Y=35r
FontFace=#_FontFace#
FontSize=15
FontColor=#_FontColor#
StringAlign=LEFT
AntiAlias=1

UserControl, das sich selbst aus einem übergeordnetem Element löscht

No comments Juni 28th, 2010

In einem meiner aktuellen Projekte habe ich mehrere UserControls in einem StackPanel untergebracht. Der Nutzer soll selbst auswählen können, welche er davon angezeigt haben möchte und welche nicht. Und er soll diese Auswahl zur Laufzeit treffen können – ohne Restart des Programms.

Die Lösung: Einfach das übergeordnete Element in ein StackPanel konvertieren und das Control sich selbst löschen lassen:

// das Click-Event meines Close-Buttons im zu löschenden UserControl
private void _CloseButton_Click(object sender, RoutedEventArgs e)
{
    ((StackPanel)this.Parent).Children.Remove(this);
}

Einem BackgroundWorker mehrere Werte übergeben

No comments Juni 27th, 2010

In einem meiner aktuellen Projekte habe ich einen BackgroundWorker benötigt, dem ich mehr als einen Wert übergeben kann. Da das “von Haus aus” nicht möglich ist, habe ich natürlich das Internet befragt. Das war leider reine Zeitverschwendung …

Da kam mir eine Idee: Warum denn nicht eine Liste vom Typ object nehmen? Diese kann man dann mit seinen Variablen verschiedenen Typs füllen. und der RunWorkerAsync()-Methode übergeben.

Damit man damit dann in der DoWork()-Methode auch arbeiten kann, muss man das übergebene Argument wieder in eine List<object> konvertieren:

List<object> Arguments = (List<object>)e.Argument;

Danach kann man über den Index auf die Elemente zugreifen und sie verwenden:

int Var1 = (int)Arguments[0];
string Var2 = (string)Argument[1];

CeBIT 2010

No comments März 7th, 2010

Nachdem ich letztes Jahr nach meinem ersten CeBIT-Besuch begeistert zurück kam, hatte ich mich entschlossen auch die diesjährige CeBIT zu besuchen. Das haben mein Kumpel Martin Geßner und ich gestern auch getan. Allerdings waren An- und Abreise mit dem Zug eine “Abenteuerfahrt” …

Die Anreise

Um 05:10 Uhr sollte unser Zug von Wolfen nach Bitterfeld fahren – es hatte die Nacht geschneit und dies war der erste Zug. So gegen 05:15 Uhr kam dann die Durchsage, der Zug hätte unbestimmte Zeit Verspätung. Wenige Minuten später teilte uns die nächste Durchsage mit: 28 Minuten Verspätung. Dadurch hatten wir unseren Anschlusszug von Bitterfeld nach Halle verpasst und mussten also auf den nächsten warten. Der kam  – sogar pünktlich – 6:20 Uhr an. In Halle konnten wir durch die Verspätung des ersten Zuges erst den Zug 2 Stunden später nehmen, in den wir dann gegen 08:02 Uhr eingestiegen sind. Dieser kam aus Leipzig und war bereits gut gefüllt – wir mussten also stehen. Nachdem es von Station zu Station immer mehr Leute im Zug wurden, und man lauter Leuten fast nicht mehr umfallen konnte, wurde glücklicherweise die erste Klasse frei gegeben und wir hatten uns dort Sitzplätze ergattert – der Fahrtcomfort für die nächsten 2 Stunden war gerettet. Um 11:40 Uhr waren wir in Hannover angekommen und um 12:19 Uhr kamen wir endlich am Messebahnhof an.

Die CeBIT

Die Anfahrt hat sich aber dennoch gelohnt. Die CeBIT selbst war super. Die meiste Zeit haben wir uns natürlich bei Microsoft aufgehalten :) . Wir haben uns u. a. einen Vortrag über Microsoft Security Essentials im MSDN- / Technet-Vortragsraum angesehen, später dann noch Vorträge über Microsoft Visual Studio 2010 und Microsoft Silverlight, die nicht im Vortragsraum, sondern direkt “draußen” auf dem Gang statt fanden.
Hier mal ein paar Bilder.

CeBit 2010, Messegelände 03_web CeBit 2010, Messegelände 04_web CeBit 2010, Microsoft 01_web CeBit 2010, Microsoft 02_web CeBit 2010, Microsoft 04_web CeBit 2010, Microsoft 05_web

Die Rückreise

Rückzu hatten wir Glück, dass wir rechtzeitig im Zug saßen, denn das “Drama” vom Morgen setzte sich fort. Diesmal wurden es allerdings von Station zu Station weniger Leute im Zug. Als wir dann in Halle ankamen, schaute Martin mit seinem Handy nach aktuellen Streckeninformationen: Schienenersatzverkehr! Dadurch kamen wir nicht wie geplant 23:17 Uhr, sondern erst 00:42 Uhr in Wolfen an.