Garmin BaseCamp Routen vereinfachen

Wenn man in Garmin BaseCamp eine Route erstellt und im GPX-Format exportiert, dann wird neben den eigentlichen Wegpunkten zusätzlich diverse “Hilfspunkte” in einer Garmin-Dateiformatserweiterung gespeichert.

Da diese bei mir schonmal Probleme gemacht haben, insbesondere wenn die verwendete Karte auch nur leicht abweicht, bei der Routen(neu)berechnung auf meinen Oregon 450, habe ich diese bisher entfernt, indem ich die Route in QLandkarte GT importiert habe und danach exportiert habe. Dabei gehen aber leider einige Informationen verloren:

  • Name des Wegpunkts (werden nur noch durchnummeriert)
  • Ob der Wegpunkt ein “vollwertiger” ist oder nur zur Routenberechnung genutzter
  • Informationen über das Icon

Da dies etwas nervig war und das zusätzlich aufwendig ist immer ein zweites Programm öffnen zu müssen, habe ich mir angesehen wie die Erweiterung aussehen, und ein “sed” Kommando geschrieben, welches diese entfernt:

sed -n '1h 
1!{
        # if the sought-after regex is not found, append the pattern space to hold space
        /        <gpxx:RoutePointExtension>.*<\/gpxx:RoutePointExtension>/ !H
        # copy hold space into pattern space
        g
        # if the regex is found, then...
        /        <gpxx:RoutePointExtension>.*<\/gpxx:RoutePointExtension>/ {
                # the regular expression
                s/        <gpxx:RoutePointExtension>.*<\/gpxx:RoutePointExtension>//g
                # print 
                p
                # read the next line into the pattern space
                n
                # copy the pattern space into the hold space
                h
        }
        # copy pattern buffer into hold buffer
        h
}
# if the last line then print
$p
' input.GPX > output.GPX 

Für mehr Komfort das ganze noch in einem Automator-Programm verpackt, so dass es per Drag&Drop funktioniert. Das kann hier heruntergeladen werden.

Tanita BC-601 Konverter für rubiTrack

Um die Daten eine Tanita BC-601 automatisch in rubiTrack importieren zu können habe ich das Skript von trinitor etwas überarbeitet. Es erzeugt eine Datei mit allen Werten und eine mit den für rubiTrack relevanten Werten.

#!/bin/bash

file=$1
output_all="${file%/*}/tanita_out.csv"
output_rubi="${file%/*}/tanita_rubitrack.csv"

echo "date; age; size; work; weight; bmi; visc_fat; fatmass; fatmass_percent; musclemass; bonemass; calories; metabolic_age; bodywater; arm_l; arm_r; leg_l; leg_r; trunk"
echo "date; age; size; work; weight; bmi; visc_fat; fatmass; fatmass_percent; musclemass; bonemass; calories; metabolic_age; bodywater; arm_l; arm_r; leg_l; leg_r; trunk" &gt; $output_all
echo "date;weight;fatmass;fatmass_percent;musclemass;bonemass;amr;metabolic_age;bodywater;visceralfat_percent" &gt; $output_rubi

while read line; do
 line2=$(echo $line | sed -e 's/,/;/g')
 #line2=$(echo $line | sed -e 's/,/;/g' -e 's/\./,/g')

 date=$(echo $line2 | cut -d ";" -f14 | tr -d "\"")
 date_year=$(echo $date | cut -d / -f 3)
 date_month=$(echo $date | cut -d / -f 2)
 date_day=$(echo $date | cut -d / -f 1)
 time=$(echo $line2 | cut -d ";" -f16 | tr -d "\"")
 age=$(echo $line2 | cut -d ";" -f22)
 size=$(echo $line2 | cut -d ";" -f24)
 work=$(echo $line2 | cut -d ";" -f26)
 weight=$(echo $line2 | cut -d ";" -f28)
 bmi=$(echo $line2 | cut -d ";" -f30)
 visc_relative=$(echo $line2 | cut -d ";" -f58)
 fat_sum=$(echo $line2 | cut -d ";" -f32)
 fat_total=$(echo "scale=4; $weight/100*$fat_sum" | bc)
 muscle=$(echo $line2 | cut -d ";" -f44)
 bones=$(echo $line2 | cut -d ";" -f56)
 calories=$(echo $line2 | cut -d ";" -f60)
 meta_age=$(echo $line2 | cut -d ";" -f62)
 water=$(echo $line2 | cut -d ";" -f64)
 arm_l=$(echo $line2 | cut -d ";" -f34)
 arm_r=$(echo $line2 | cut -d ";" -f36)
 leg_l=$(echo $line2 | cut -d ";" -f40)
 leg_r=$(echo $line2 | cut -d ";" -f38)
 trunk=$(echo $line2 | cut -d ";" -f42)

 echo "$date_year-$date_month-$date_day $time; $age; $size; $work; $weight; $bmi; $visc_relative; $fat_total; $fat_sum; $muscle; $bones; $calories; $meta_age; $water; $arm_l; $arm_r; $leg_l; $leg_r; $trunk" 
 echo "$date_year-$date_month-$date_day $time; $age; $size; $work; $weight; $bmi; $visc_relative; $fat_total; $fat_sum; $muscle; $bones; $calories; $meta_age; $water; $arm_l; $arm_r; $leg_l; $leg_r; $trunk" &gt;&gt; $output_all
 echo "$date_year-$date_month-$date_day $time;$weight;$fat_total;$fat_sum;$muscle;$bones;$calories;$meta_age;$water;$visc_relative" &gt;&gt; $output_rubi

done &lt; $file

Transparenzbericht von Posteo

Der E-Mailanbieter Posteo hat einen Transpaenzbericht für das vergangene Jahr veröffentlicht.

Ich persönlich finde den Transparenzbericht als solchen vorbildlich, leider jedoch den Inhalt erschreckend.
5 von 7 Behördenanfragen bezüglich Bestandsdaten genügten nichtmals den formalen Anforderungen. Aber schlimmer noch, in einem Fall wurde der Anbieter wohl von der Polizei unter Druck gesetzt rechtswidrig Daten zu beschaffen.

Ich finde solche Berichte erschreckend, da man in meinen Augen von der Executive erwarten können muss, dass sie sich an Recht und Gesetz hält. Darauf baut ja auch das Gewaltmonopol.
Dazu finde ich ist dieser Transparenzbericht ein weiteres Indiz gegen die Vorratsdatenspeicherung, Daten die einmal vorhanden sind werden am Ende auch genutzt, egal ob sie dazu vorgesehen waren oder nicht.

Radkarte: Update 28.04.2014

Seit dem letzten Update gibt es ein paar Änderungen:

  • Der Name des Landes sollte bei allen neu generierten Karten von BaseCamp angezeigt werden und damit den Umgang mit mehreren Ländern vereinfachen. Die Karten werden im Laufe der Woche neu generiert.
  • Die Overview-Maps wurden korrigiert.
  • Bei den Radrouten werden nun auch Relationen vom Typ “network” ausgewertet.

Hilfe für bessere Dokumentation oder Patches für die Karte sind jederzeit willkommen.

Radkarte: Kleine FAQ

Da ich in letzter Zeit ein paar Fragen vermehrt erhalten habe, hier ein paar Antworten für alle.

Wird die Karte noch aktualisiert? Der letzte Blogeintrag ist ja bereits länger her

Ja, die Karten werden wöchentlich (Deutschland sogar zweimal pro Woche) automatisch neu erstellt. Blogposts erstelle ich nur, wenn sich Änderungen an der Art wie die Karte erstellt wird ergeben.

Die ganzen möglichen Optionen für die Vermeidungen durchschaue ich nicht ganz. Was soll ich als “ganz normaler” Radler wählen?

  • Als Verkehrsmittel Auto
  • Bei den Optionen was man vermeiden soll nur “Fahrgemeinschaftsspuren” wählen. (NICHT “Autobahnen vermeiden” und auch NICHT “Kehrtwenden vermeiden”). Wer sich unwohl auf “größeren” Straßen fühlt kann auch noch “Mautstraßen vermeiden” wählen, das kann allerdings sehr große Umwege zur Folge haben. Normalerweise werden die auch so weitgehend vermieden.

Warum soll ich als Verkehrsmittel Auto wählen wenn ich radle?

Der Grund liegt darin, dass es (bisher) nur für Autos möglich ist, Straßen unterschiedliche “Gewichte” zu geben. Anhand derer versucht dann der Algorithmus nicht nur die kürzeste sondern die beste Strecke zu finden.

Wie kann ich die Karte unterstützen?

  • Die Karte nutzt die Daten der Openstreetmap. Wer also sich dort engagiert (Wege erfassen, Qualität der Wege dokumentieren über die “Tags” surface, smoothness, Straßennamen ergänzen usw.) verbessert auch die Radkarte.
  • Wer sich bei mir bedanken möchte, dass ich daraus die Radkarte mache, es gibt eine kleine “Wunschliste” bei Amazon.

Tolerierung von Angreifern in sicherheitsrelevanten Systemen

Ich habe im Rahmen der Konferenz Sicherheit 2014 ein Paper vorgestellt, welches einen Ansatz skizziert in wie weit die für einige Systeme bereits vorhandene Fehlertoleranz mit geringen zusätzlichen Aufwand genutzt werden kann um auch gegen Angreifer Schutz zu bieten.

Abstract: Malicious attackers can cause severe damage (financially or to the environment) if they gain control of safety-relevant systems. This paper shows why the traditional disjoint treatment of security and fault tolerance has weaknesses if the attacker gains access to the fault tolerant system and how an integrated approach that utilize existing fault tolerance techniques could be an effective security mechanism. An efficient integrated safety and security approach is presented for fault tolerant systems, which achieves protection against attacks via the network by forming a logically isolated (sub-) network which is resilient against a bug in the codebase. Isolation is obtained by diverse design of a general reusable (software and/or hardware) compo- nent that prevents any unauthorized message transfer towards the secured application program. Messages from other compromised nodes are tolerated utilizing existing majority voting mechanism.

Das Paper ist in den Proceedings der Konferenz veröffentlicht worden und auch separate hier zu lesen.