14. Dezember 2014

ConfigSharp - Scripting Configuration in C#

ConfigSharp (github, nuget)

Config files are C# source files, managed by Visual Studio like any other code file: intellisensed, refactorable, resharpered, syntax checked, compiled, type safe.

Write real code with control structures and classes in config files. Include other local or remote (HTTP) config files.

No more key-value lists of string based app settings in XML. These settings are typed properties of CLR objects, even aggregated types. No more workarounds for complex settings, which do not fit properly in strings.

Devops friendly, because admins can program their config files. Developers can document settings with examples in their own code, which also is the admins's config file.

BTW: this is what everyone (PHP, Python, RoR) does. Configuration in your main language.

Example: 

Program.cs
static void Main(string[] args)
{
    var config = new MyConfig();
    config.Include("ConfigFile.cs");
    ...
    var prop1 = config.SomeProperty;
    // or
    var prop2 = Config.Global.SomeProperty;
    var prop3 = App.Settings.SomeProperty;
    var prop4 = AppSettings.Get("SomeProperty", "default");
}

public class MyConfig : ConfigSharp.Container
{
    public string SomeProperty { get; set; }
    public int OrAsMemberVariable = 41;
    public DateTime PlainOldCLRTypes;
    public NLog.Config ComplexAggregatedTypes;
}
ConfigFile.cs
namespace MyProgram.Configuration // any namespace
{
    class ConfigFile : MyProgram.MyConfig // Derived from your config class
    {
        public void Load()
        {
            SomeProperty = "42";
            Include("OtherConfigFile.cs");
        }
    }
}

More on github and nuget.

_happy_configuring();

Tags: Config, Roslyn, C#, Script, Scripting, CLR, Configuration, File, HTTP, Remote, C# Script, Devops

Rant: XML config files. Static, unreadable XML hell. What where they thinking? Anyone is configuring their app in the native project language. Only poor high level language coders use XML or ini files. Even worse: generating XML config files for different environments with XSLT transformations from master XML config files. Are they out of their mind? Web.config Transformation Syntax for Web Application Project Deployment. <add... xdt:Transform="Replace" xdt:Locator="Condition(@name='oldname' or @providerName='oldprovider')"> --- Condition(), or, @, What? There is already a proven syntax: it is called C#. There is already a good transformation: it is called compiler. This must end now, once and for all.

10. Dezember 2014

Quadcopter Entlaufen

Etwa einen Monat nach meinem Post "Quadcopter Erstflug" habe ich den Phantom 2 verloren.

Ich wollte die Baustelle neben unserem Haus von oben aufnehmen. Aufsteigen, Photo, weiter aufgestiegen, Kamerawinkel korrigieren, Photo, weiter vorsichtig aufsteigen, Photo, rumdrehen zum Rückflug, leichte Abdrift, korrigieren, starke Abdrift, über nächstes Haus, Adrenalin, nur noch klein am Himmel, Steuerung Not-Aus. Das sollte ihn wieder heimbringen, da er eine automatische Heimflug-Funktion hat, wenn er das Steuersignal verliert. Aber er kommt nicht zurück, verschwindet hinter einem Haus. Bei der Entfernung muss er schon die nächste Straße überquert haben. WLAN verliert Verbindung ... aus.

Suche in den anliegenden Straßen: kein Ergebnis. Keine Chance in der Stadt. Der größte Teil der Flächen ist von der Straße nicht einsehbar. Hat sich bestimmt mit 10 m/s entfernt. Hatte noch 10 Minuten Flugzeit auf dem Akku. Kann überall sein. Hoffentlich ist niemand zu Schaden gekommen.

Hier ein Phantombild des Flüchtigen:


Wahrscheinliche Flugroute:

Steckbrief:
Fun Fact:
Den Copter habe ich bei Conrad gekauft, nicht online, damit man Hilfe bekommt und mit jemandem reden kann, wenn man ein Problem hat. OK, ich hab ein Problem. Also zu Conrad und Fehler reklamiert. Mitarbeiter von Conrad ist sehr verständnisvoll und nimmt die Reklamation gerne entgegen. Ich müsste nur den Copter vorbei bringen. Keine Reklamation ohne Gerät. Thank you for Nothing.


_happy_reflying()

PS: Man kann natürlich immer sagen: das war ein Pilotenfehler. Das kann aber nicht sein im GPS Modus. wenn alle Hebel auf null stehen, dann bleibt der Copter still in der Luft, stabilisiert durch GPS.

Oder der Wind. Dann wäre auch der Pilot schuld. Am Boden und in den Bäumen war aber kaum Wind zu sehen war. Sonst wäre ich ja nicht aufgestiegen.

Aber schon komisch, dass trotz 7 GPS Satelliten plötzlich die Position instabil ist und ganz schnell weg fliegt. Es könnte auch das mysteriöse Flyaway Problem sein.

Jedenfalls kam das Ding irgendwo runter. Hoffentlich kam niemand zu Schaden. Angesichts der Tatsache, dass der Umsatz mit Drohnen exponentiell wächst, müssen wir damit rechnen, dass noch mehr Drohnen vom Himmel fallen.