Unterschiedliche Assemblies je nach Konfiguration einbinden

Manchmal ist es nötig je nach Konfiguration ein anderes Assembly in ein .NET/Mono Projekt einzubauen. Direkt im Visual Studio funktioniert das leider nicht. Allerdings kann man die Einstellung mit einem Texteditor in der Projektdatei vornehmen:

<Reference Include="libInterval" Condition="'$(Configuration)'=='Debug'">
  <HintPath>libInterval\x32-debug\libInterval.dll</HintPath>
</Reference>
<Reference Include="libInterval" Condition="'$(Configuration)'=='Release'">
  <HintPath>libInterval\x32-release\libInterval.dll</HintPath>
</Reference>

Wichtig ist dabei der „Condition“-Teil welcher festlegt das die eine DLL nur bei der jeweiligen Konfiguration genutzt wird. Durch diesen landet das richtige Assembly später im entsprechenden Buildordner.

GPS getaggte Bilder auf einer Karte anzeigen

Über das Wochenende hatte ich einige GPS getagte Bilder geschossen und wollte diese auf einer Karte darstellen. Eine kurze Suche im Netz ergab, das so etwas in dieser Form nicht existierte (wobei hier natürlich ein Irrtum vorliegen kann). Also wurde das ganze auf Basis von Leaflet implementiert.

Die Webapplikation in Aktion

Die Webapplikation in Aktion

Leaflet ist ein Framework mit welchem man schnell Kartenapplikationen im Web realisieren kann. Um den „Gps Tagged Image Viewer“ zu benutzen, müssen die Dateien auf einem Webserver kopiert werden. Die Bilder werden dabei in den Ordner „images“ kopiert. Anschließend wird das PHP Skript „parseimages.php“ aus dem „utils“ Ordner ausgeführt. Dieses ließt die EXIF Daten aus den Bildern aus und erzeugt die entsprechenden Marker in einer Javascript Datei. Danach kann das ganze genutzt werden.

Die Karte ist dabei mit drei Kartenebenen versehen, einmal Bing Luftbilder (für welche ein API-Key registriert werden muss), sowie OpenStreetMap in zwei unterschiedlichen Renderings. Der Quelltext ist unter GPLv3 verfügbar und kann auf GitHub bezogen werden.

GPS EXIF Koordinaten in dezimale Gradkoordinaten umrechnen

Wenn man sich einmal die Mühe macht und in EXIF Daten hineinschaut um die GPS Daten zu ermitteln, so wird man feststellen, das die Daten nicht einfach in Dezimalgrad angegeben sind, sondern in Form von rationalen Zahlen, aufgeteilt in Grad, Minuten und Sekunden. Möchte man diese Angaben nun in Dezimalgrad umrechnen ist etwas Mathematik gefragt. Nehmen wir folgende Arrays für Latitude und Longitude an:

Latitude ( [0] => 53 [1] => 1 ) Array ( [0] => 29 [1] => 1 ) Array ( [0] => 5065 [1] => 100 )
Longitude ( [0] => 13 [1] => 1 ) Array ( [0] => 18 [1] => 1 ) Array ( [0] => 1928 [1] => 100 )

Daraus ergibt sich dann folgender Rechnenweg welcher hier exemplarisch für die Latitude gezeigt sei:

latitudeGrad=53/1
latitudeMinuten=29/1
latitudeSekunden=5065/100

Wenn die Werte der rationalen Zahlen korrekt sind kann die Umwandlung in Dezimalgrad nach folgender Formel beginnen:

Dezimalgrad=Grad+(Minuten*60+Sekunden)/3600

Im obigen Beispiel müssten hierbei in etwa (je nach Genauigkeit) die Koordinaten 53.497222 und 13.305278 in Dezimalgrad herauskommen.

Managed Assembly-Architektur unter .NET ermitteln

Manchmal ist es nötig zu ermitteln für welche Plattform ein Assembly konfiguriert wurde. Dies kann man dabei unkompliziert über die „GetAssemblyName“ Funktion welche sich im Namespace „System.Reflection“ befindet ermitteln:

System.Reflection.AssemblyName.GetAssemblyName(@"C:\Temp\CSCL.dll");

Aus der Ausgabe:

{CSCL, Version=1.4.1.3, Culture=neutral, PublicKeyToken=null}
    CodeBase: "file:///C:/Temp/CSCL.dll"
    ContentType: Default
    CultureInfo: {}
    CultureName: ""
    EscapedCodeBase: "file:///C:/Temp/CSCL.dll"
    Flags: PublicKey
    FullName: "CSCL, Version=1.4.1.3, Culture=neutral, PublicKeyToken=null"
    HashAlgorithm: SHA1
    KeyPair: null
    m_siInfo: null
    Name: "CSCL"
    ProcessorArchitecture: X86
    Version: {1.4.1.3}
    VersionCompatibility: SameMachine

ist dann unter „ProcessorArchitecture“ auch die entsprechende Architektur ersichtlich.

Magic Quotes in der .htaccess Datei abschalten

Magic Quotes sind seit PHP in der Version 5.3 als veraltet gekennzeichnet. In PHP 5.4 wurden sie komplett entfernt. Die Funktion sorgt dabei dafür das bestimmte Anführungszeichen automatisch mit einem Backslash maskiert werden. Nutzt man eine ältere PHP Version kann es passieren das bestimmte Anwendungen wie z.B. OwnCloud verlangen die „Magic Quotes“ zu deaktivieren. Wenn dies über die „php.ini“ nicht möglich ist, muss das mittels der „.htaccess“-Datei erledigt werden. Dazu trägt man in diese:

php_flag magic_quotes_gpc off

ein. Anschließend sind die Magic Quotes deaktiviert.

Weitere Informationen gibt es unter:
http://php.net/manual/en/security.magicquotes.disabling.php