von Maximilian
Samstag, 26. Dezember 2009 18:39
Heute beginne ich mit meiner Serie der Weekend Coding Stunts. In diesen werde ich ab und zu an einem Wochenende eine voll Funktionsfähige Anwendung entwickeln.
Verbesserungen oder Fehlerbehebungen wird es für die jeweilige Anwendung natürlich dann auch über das Wochenende hinaus geben, Ziel ist nur das die Anwendung in dieser Zeit fertig und Lauffähig wird.
Anfangen möchte ich mit einer Anwendung, die mir schon seit einiger Zeit im Hinterkopf herumgeistert: Einen Desktopclient zum versenden von SMS Nachrichten über Gateways unterschiedlicher Anbieter.
Die abstrakte Logik auf welcher ich dann die unterschiedlichen Anbieter aufbaue ist schon fertig, sowie die Teilweise Implementierung von den zwei Anbietern die ich zum Start auserkoren habe: sms77.de und innosend.
Für morgen ist dann das eigentliche senden der Nachrichten, ein Adressbuch und noch ein paar weitere Gimmicks sowie der Release der Version 1.0 geplant.
von Maximilian
Dienstag, 22. Dezember 2009 17:28
Seit heute morgen bin ich Dank einem Blog Post von Timm Nutzer von Songbird. Ich muss sagen, dass der Erste Eindruck von dem Programm sehr gut ist. Es läuft auf meiner recht betagten Maschine ziemlich flüssig und lässt sich ziemlich einfach Bedienen und Einrichten.
Was aber negativ auffällt ist der hohe Speicherverbrauch. Mit ~120k liefert sich Songbird ein Kopf an Kopf Rennen mit dem Visual Studio, welches bei umfangreichen Projekten auch sehr viel Arbeitsspeicher beansprucht.
Ich werde Songbird nun eine Zeit lang testen und sehen wie gut oder schlecht ich damit zurecht komme bzw. ob es das sehr schlanke XMPlay ablösen kann.

Da der Songbird in der Lage ist den aktuell abgespielten Titel zu last.fm zu zwitschern habe ich mir gedacht, es wäre nicht schlecht wenn man die letzten von mir gehörten Titel hier im Blog in der Sidebar sehen könnte. Da diese Liste mit den Titeln von last.fm direkt als RSS-Feed zu haben ist, habe ich mir ein kleines Widget für die Sidebar geschrieben (C# sei Dank ^^) welches die 10 letzten Titel (mehr werden nicht übertragen) aus diesem Feed in einer Liste widergibt.
Funktioniert 1a wie man sehen kann wenn man mal einen Blick auf die rechte Seite unter den “Blogroll”-Block wirft :-) Wer Interesse an diesen Widget hat und selber die BlogEngine.NET benutzt, dann einfach bei mir melden (E-Mail und co. ist im Impressum zu finden).
Für Interessierte: DonMaxo@last.fm
von Maximilian
Donnerstag, 26. November 2009 14:05
Ich habe heute auf myCSharp eine Frage gelesen die sich um die zusätzliche Integration von einem “Build”-Command im Explorermenu bei Projektdateien drehte.
Da ich sowas selber für nützlich halte, habe ich ein wenig in der Registry herum geschraubt und eine einfache und funktionierende Lösung gefunden.
Dazu öffne man den Registry Editor (WIN+R –> “regedit” –> OK) und navigiere zu folgendem Pfad:
HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell
Dem Eintrag “Shell” fügt man dann einen neuen Schlüssel mit dem Namen “Build” hinzu. Dieser Name ist beliebig, man kann hier z.B. auch “Erstellen” oder etwas anderes nehmen. Dem neu erstellen Schlüssel fügt man erneut einen neuen Unterschlüssel mit dem Namen “Command” hinzu.
Bei dem Schlüssel Command editiert man nun den Default (bzw. Standard) Eintrag und setzt bei diesem den folgenden Wert:
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com" /build Release "%1"
Der Pfad zum Visual Studio muss eventuell noch angepasst werden (hängt von Betriebssystem und eingesetzter VS Version ab). Danach sollte das ganze so aussehen:

Neben dem Parameter /Build welcher das Erstellen der Projektmappe bewirkt gibt es in der Kommandozeilenangabe noch den Eintrag “Release”. Dieser stellt die Projektmappenkonfiguration da, welche beim Erstellen verwendet werden soll.
Hat man diese Werte korrekt angegeben, so sollte nun bei allen VS Projektdateien (*.sln) unter dem Eintrag Open (bzw. Öffnen) ein neuer Eintrag mit dem Namen Build erscheinen welcher beim Klick das entsprechende Projekt erstellt.
von Maximilian
Samstag, 17. Oktober 2009 12:53
Ich habe heute mal mein Softwareportfolio auf meiner Seite aktualisiert und gleichzeitig die Plugins auf eine extra Seite platziert. Jetzt ist das ganze wieder ein Stück weit übersichtlicher.
Ansonsten noch ein schönes Wochendende an alle Leser :-)
von Maximilian
Dienstag, 29. September 2009 15:01
Wer wie ich die Silkicons von famfamfam.com nicht mehr sehen kann, für den habe ich einen Tipp:
Das Fugue Icon Paket von Yusuke Kamiyamane. Die darin enthaltenen Icons sehen sehr schön aus, und passen auch sehr gut in moderne Oberflächen, da einige an das Iconset von Windows Vista / 7 angelehnt sind.
Hier ein kleiner Überblick:

Übersicht über alle Icons: Klick
Das Iconpaket steht unter einer CreativeCommons Lizenz, welche auch den Einsatz in kommerziellen Anwendungen erlaubt. Allerdings besteht der Autor/die Autorin (das Geschlecht lässt sich aus dem Namen nicht so ganz entnehmen, sorry) auf einen Vermerk im Programm wo die Icons herkommen. Finde ich mehr als fair. Wer das anders sieht kann für 49,95$ (ca. 34,23€) eine royalty-free Lizenz erstehen, bei welcher der Vermerk nicht mehr gesetzt werden muss.
von Maximilian
Samstag, 19. September 2009 12:12
Bei so großen Projekten wie meinem Updatesystem ist es mit dem einfachen Erstellen des Projektes im Visual Studio nicht getan. Es sind danach noch einige Postbuild Schritte notwendig um das Produkt zum Schluss verteilen zu können. Deshalb habe ich mich vor einiger Zeit mal hingesetzt und mir einen doch recht umfangreichen Buildprozess mit einer Batchdatei und drei eigenen, kleinen Tools zusammengeschrieben. Voraussetzung für solch einen automatisieren Buildvorgang ist natürlich, dass alle Werkzeuge die dabei verwendet werden eine Unterstützung für die Ansteuerung über die Kommandozeile bieten.
Als ersten Schritt haben wir das kompilieren der Projektdatei mit dem Visual Studio. Dieses kann man recht einfach über die Kommandozeile steuern. Dies geht z.B. mit folgendem Command:
[Pfad zum Visual Studio]\devenv.com /Rebuild Release [Pfad zur Solution]
Nach dem Erstellen kommt mein erstes eigenes Tool zur Anwendung: incrementVersion. Damit wird automatisch die Build Versionsnummer Projektes um einen Punkt erhöht.
Mehr...
von Maximilian
Samstag, 22. August 2009 12:42
Im updateSystem.Net ist es nun möglich Parameter anzugeben, die an die aufrufende Anwendung beim Abschluss des Updatevorgangs übergeben werden:
Desweiteren habe ich die Kommandozeilendefinition für das Erstellen neuer Updatepakete aktualisiert. Es ist jetzt möglich bei dem Template für eine fileCopyAction einen kompletten Ordner anzugeben der, auf Wunsch auf Rekursiv, dem neuen Updatepaket hinzugefügt werden soll. Vorher war nur eine Angabe von einzelnen Dateien möglich. Die aktualisierte Updatedefinition wird dann mit der nächste Woche erscheinenden neuen Betaversion dem Setup beiliegen.
von Maximilian
Sonntag, 16. August 2009 21:31
Der updateInstaller zeigt den Fortschritt der Updateinstallation unter Windows 7 nun auch direkt in der Taskleiste an:
Momentan arbeite ich noch daran, dass sich die ProgressBar entsprechend einfärbt wenn eine Benutzerinteraktion erforderlich ist (gelbe Farbe) oder ein Fehler auftrat (rote Farbe).
Mal sehen was sich alles in dem von Microsoft veröffentlichtem API Code Pack für Windows 7 verbirgt was man noch in den updateInstaller bzw. den updateDesigner integrieren kann, um die Usability zu erhöhen. Aber keine Angst, es wird definitiv nichts mit Funktionen überladen, ich werde mich ganz strikt an den MS Style Guide halten.
von Maximilian
Montag, 10. August 2009 22:25
Ab der nächsten Version gibt es ein Grundlegend neues Statistiksystem. Ich möchte die Statistiken (außer meine eigenen) nicht mehr auf meinem Server hosten. Zum einen weil dann alle Nutzer von meinem Server abhängig sind, zum anderen weil es diesen doch gut auslastet.
Es wird zwei Varianten geben, eine welche auf Asp.Net und Microsoft Sql und eine welche auf Php und MySql basiert. Die Installation des Statistikservers erfolgt über einen Assistenten im updateDesigner:


Es wird Mitte dieser Woche eine neue Version geben, welche die neuen Statistikdienst (zumindest teilweise) beinhaltet. Weitere Informationen zum neuen System folgen demnächst.
Versionsnummerndowngrade
Im übrigen setze ich mit der nächsten Betabuild die Versionsnummer des updateSystem.Net von 4.x auf 1.x herunter. Es handelt sich ja nun doch um ein komplett neues System, was quasi einen Neustart darstellt.
von Maximilian
Donnerstag, 30. Juli 2009 13:47
Y.A.D.T. – Yet Another Developer Tool hätte die Überschrift auch heißen können, aber ich lass es mal dabei.
Was ist der assemblyCompressor?
Der assemblyCompressor ist eine Anwendung die es Entwicklern ermöglicht die Referenzen von Ihren Programmen mit in die Anwendung zu packen. Dabei wird die eigentliche Anwendung mitsamt ihren Verweisen in ein neues Assembly kompiliert welches die Anwendung startet und bei Bedarf die Referenzen aus den Programressourcen nachlädt. Momentan funktioniert das nur mit managed Referenzassemblies da diese direkt geladen werden.

Wichtig: Manche Hersteller von Drittkomponenten erlauben es nicht, dass Ihre Assemblies auf diese Art in das Program eingebettet werden (z.B. das kostenlose Krypton-Toolkit von ComponentFactory). Deshalb bitte vor dem integrieren den Lizenzvertrag der jeweiligen Komponente sorgsam durchlesen oder im Zweifelsfall direkt beim Hersteller nachfragen.
Das Program befindet sich momentan noch im Betastadium, läuft aber schon relativ stabil Das subSystem welches die Anwendung startet und die Referenzen nachlädt beinhaltet auch einen Exceptionhandler der unbehandelte Ausnahmen in der Zielanwendung abfängt. Eventuell baue ich diesen später noch aus, so dass Exceptionreports z.B. direkt an den Entwickler gesendet werden können.
Bei Problemen oder Featurewünschen betreffend assemblyCompressor bitte an mich wenden. Kontaktmöglichkeiten stehen im Impressum.
Download: assemblyCompressor
P.S.:
Der assemblyCompressor benutzt zum erstellen des SubSystems mein codeCompiler-Library, dessen Quellcode ich auf CodePlex veröffentlicht habe (link).