metrische Zeit
Dezember 3rd, 2009Zeitangaben haben ein grosses Problem: Sie entsprechen so ganz und gar nicht den SI-Einheiten.
- Ein Jahr hat 365(.25) Tage
- Ein Monat hat mal 28, mal 30, mal 31 Tage
- Ein Tag hat 24 Stunden
- Eine Stunde hat 60 Minuten, eine Minute hat 60 Sekunden
- Immerhin alles unter Sekunde wird in SI-Einheiten zu Sekunde (Milli-, Nan-o, Pico-, etc.) gerechnet.
Für den Zeitraum eines Tages gibt es schon eine gute Alterantive: Beats. Nach der Swatch-Internetzeit hat ein Tag 1000 Beats. Da ein Tag 1440 Minuten hat, ist ein Beat also 1,4 Minuten, also 86 Sekunden lang. Damit ist ein Millibeat 0,0014 Minuten oder 0.0864 Sekunden lang, also etwas weniger als eine Zehntelsekunde.
Damit kann man rechnen, das Problem scheint geloest.
Schwieriger wird es bei den Tagen die ein Jahr hat. Die Länge eines Tages ist festgelegt durch eine Umdrehung der Erde, und die Anzahl der Tage eines Jahres durch einen Umlauf der Erde um die Sonne. Wuerde man die Länge eines Tages anders definieren, dann wären Tag- und Nachtzeiten nicht mehr konstant, sondern würden wandern, sodass es an manchen Tagen um Mitternacht hell ist und dafür Mittags der Mond scheint.
Das klingt nach keiner so guten Idee. Mehr dazu gleich.
Erst einmal die nächste verbesserbare Einheit: Monate. Das Monatssystem ist total unsinnig mit den verschieden vielen Tagen und wandernden Wochentagen (in zwei aufeinanderfolgenden Jahren hat der gleiche Tag einen anderen Wochentag, aber auch in zwei aufeinanderfolgenden Monaten (ausser Februar/März in nicht-Schaltjahren)).
Eine Idee die naheliegt ist Mond-Monate zu verwenden. Wenn man sagt ein Mond-Monat hat 28 Tage, dann fallen die Wochentage auf die gleichen Tage in unterschiedlichen Monaten. Allerdings ist ein Mond-Monat tatsächlich nur 27,3217 Tage lang, weswegen mit dieser Einheit dann die Mondphase jeden Monat um einen Tag ungenau geht und somit “wandert”. Und 13 Monate sind auch keine gute Zahl um damit zu rechnen.
Ein alternatives System ist der Diskordische Kalender. Dieser definiert 5 Jahreszeiten mit jeweils 73 Tagen. Dadurch dass gleichzeitig nur 5 Wochentage verwendet werden, fällt auch hier immer der gleiche Wochentag auf den gleichene Tag. Da der Schalttag alle 4 Jahre keinen Wochentag hat, passt das sogar in Schaltjahren. Mit 5 Monaten kann man schon besser rechnen, aber 73 Tage sind doch eine etwas ungünstige Zahl, zudem es auch noch eine Primzahl ist, also nicht gleichmässig aufgeteilt werden kann.
Da liegt nahe, die Zahl der Umdrehungstage pro Umlaufjahr zu aendern. Schön wäre eine Zahl wie 100 oder 1000 Tage pro Jahr.
Dazu ist es noetig, die Erde auf eine nähere byw. fernere Bahn zu bringen um diese Werte zu ändern. Dabei darf man jedoch nicht nur an Datumsfragen denken, da durch die veränderte Entfernung sich auch das Klima ändern wird.
Beide Zahlen sind leider utopisch, da es dann hier empfindlich zu kalt bzw. zu warm würde. Da wir allerdings etwas Klimaerwaermung haben, ist die sinnvollere Richtung etwas Abkühlung, damit könnte man die Erde in eine sonnenfernere Bahn bringen, in der sie dann eine Umlaufzeit von 500 Tagen hat. Das würde das rechnen erleichtern (mit 1000 rechnen und durch 2 teilen), und die Klimaerwärmung wäre endlich besiegt.
Mit dieser schönen Zahl kann man dann Mond-unabhängig z.B. 10 50-Tage Monate verwenden, oder aber 20 25-Tage Monate.
5 100-Tage Jahreszeiten sind auch praktisch zum rechnen, damit lassen sich Gehaltsabrechnungen und Ähnliches auch mit weniger Mathematik bewältigen.
Um das zu schaffen, sollte man also in Erwägung ziehen einen erneuten World-Jump-Day zu veranstalten. Um von einer Umlaufzeit von 365 Tagen auf eine von 500 Tagen zu kommen, müssen diesmal dann aber auch wirklich alle Menschen mitmachen.
Bash-Prompt
November 19th, 2009Mal ein neuer Post zu praktischen Bash-Prompts, nachdem ich den alten doch wieder um einiges überarbeitet habe.
Ziele:
- Übersichtlichkeit
- Möglichst lange Eingabezeilen ohne Umbruch
- Prompt soll auf verschiedenen Hosts unterscheidbar sein
- Der Prompt soll möglichst informativ sein.
Lösung:
- Zweizeiliger Prompt, eine Zeile mit vielen Informationen, eine mit nur einem > und der Eingabe dahinter.
- Username und Hostname Farbkodiert, geschieht automatisch ueber eine Hashing-Funktion
- Zeitausgabe ermöglicht es einfach zu sehen wann der Befehl beendet wurde, und damit auch wie lange er gebraucht hat.
- Smiley in der Ausgabe zeigt ob der Befehl korrekt gelaufen ist (Return Code 0 = kein Fehler)
Um Farben aus hostname/username zu generieren, kann man einfach md5sum als hash-Funktion nutzen, und dann das erste Byte der md5summe ansehen. Das tut die Funktion hashcolor in meiner .bashrc. Dabei habe ich mir noch die Freiheit genommen, die Farben so zu sortieren, dass der Text “root” eine Rote Farbe bekommt.
die Umgebungsvariable PROMPT_COMMAND darf einen Befehl enthalten, der ist in dem Falle die Funktion Prompt, welche auf der Linux-Konsole nur setps1 aufruft um den Prompt zu ändern, und in X-Terminals aber auch settitle und mittels Escape-Code den Titel des Fensters auf das letzte genutzte Kommando zu setyen.
Der Prompt sieht bei mir jetzt so aus:
>
Die .bashrc dazu:
# If running interactively, then:
if [ "$PS1" ]; then
## aendert den xterm-Titel in das zuletzt benutzte Kommando usw.
xtitle() {
echo -ne "\033]0;[$(history 1 | cut -b 8-30)] $USER@$HOSTNAME:$PWD\007";
}
setps1() {
if [ $? -eq 0 ];then smiley=":-)"; else smiley=":-(";fi
export PS1="\t $smiley \[`hashcolor $USER`\]\u\[$grey\]@\[`hashcolor $HOSTNAME`\]\H\[$grey\]:\[$yellow\]\w\n\[$normal\]> "
}
if [ "${TERM}" != "linux" ]; then
prompt() {
setps1
xtitle
}
else
prompt() {
setps1
}
fi
PROMPT_COMMAND='prompt'
fi
normal='\e[0m'
black='\e[0;30m'
bblack='\e[1;30m'
red='\e[0;31m'
bred='\e[1;31m'
green='\e[0;32m'
bgreen='\e[1;32m'
yellow='\e[0;33m'
byellow='\e[1;33m'
blue='\e[0;34m'
bblue='\e[1;34m'
purple='\e[0;35m'
bpurple='\e[1;35m'
blue2='\e[0;36m'
bblue2='\e[1;36m'
white='\e[0;37m'
bwhite='\e[1;37m'
grey='\e[0;39m'
bgrey='\e[1;39m'
bgnorm='\e[0;0m'
bgblack='\e[0;40m'
bgred='\e[0;41m'
bggreen='\e[0;42m'
bgyellow='\e[0;43m'
bgblue='\e[0;44m'
bgpurple='\e[0;45m'
bgblue2='\e[0;46m'
bggrey='\e[0;47m'
function hashcolor {
case $(echo $1|md5sum|cut -b 1) in
0)echo -en $red;;
1)echo -en $bblue;;
2)echo -en $green;;
3)echo -en $bgrey;;
4)echo -en $yellow;;
5)echo -en $byellow;;
6)echo -en $blue;;
7)echo -en $bred;;
8)echo -en $purple;;
9)echo -en $bpurple;;
a)echo -en $blue2;;
b)echo -en $bblue2;;
c)echo -en $grey;;
d)echo -en $bgreen;;
e)echo -en $white;;
f)echo -en $bwhite;;
esac
}
Die interessanten Manpages zu dem Thema sind:
- man console_codes erklärt die Escape Codes z.B. für Farben oder auch um den Titel eines X-Terminals zu ändern.
- man bash erklärt, dass man Farbcodes in \[...\] einschliessen sollte, damit sie den Zeilenumbruch im Prompt nicht kaputt machen.
Halloween Google
November 1st, 2009Die robots.txt von Google sieht gerade interessant aus:
User-agent: Kids
Disallow: /tricks
Allow: /treats
Finger weg von Ubuntu One?
Oktober 30th, 2009Dass es gefährlich ist private Daten unverschlüsselt auf fremden Servern zu lagern, sollte einem zwar klar sein, aber für manche Daten reicht diese Sicherheit ja vielleicht. Aber Ubuntu One hat eine ähnliche Klausel wie ICQ in ihren “Terms and Conditions”:
9. Collection and use of your data. We may collect certain non-personally-identifiable information, which is located on your computer. The information collected may include statistics relating to how often data is transferred, and performance metrics in relation to software and configuration. You agree this information may be retained and used by Canonical.
Ähnlich wie im Falle ICQ kann man argumentieren “ja die meinen ja nur Statistiken …”, rechtlich jedoch akzeptiert man dass alle Daten die einen nicht persönlich identifizieren von Canoncial gesammelt und benutzt werden dürfen.
Also Rat für alle die ihre Daten nicht Canoncial schenken möchten: Finger weg von Ubuntu One!
Ach ja, nur damit es erwähnt ist, sie lassen sich natürlich auch zusichern, dass sie die Nutzerdaten an die Polizei weitergeben dürfen, wenn sie gesetzlich dazu verpflichtet sind. Da wird man aber kaum einen Anbieter finden, der keine solche Klausel hat.
Ganz komischer Xorg Fehler
Oktober 18th, 2009Vielleicht weiß ja jemand die Antwort, der Fehler ist sehr seltsam. Also ich kann in Browsern (Firefox, Opera nicht aber Konqueror) keine Zeichen mit AltGr eingeben, in anderen Programmen als den Beiden aber schon.
Das wäre ja halb so komisch, und vielleicht ein Fehler in der xorg.conf bzw. der Tastaturconfig von KDE(4), aber ich habe zusätzlich noch einen Effekt:
Ich nutze Fokus-folgt-der-Maus. Wenn ich ein Fenster im Vordergrund vor dem Browser habe, welches den Fokus momentan hat, und der Mauszeiger befindet sich über dem Browser, kann ich in dem Fenster tippen, aber keine Zeichen die AltGr als Taste benötigen. befindet sich der Mauszeiger über dem Fenster mit Fokus, kann ich ganz normal alle Zeichen tippen.
Weiß irgendwer, was das für ein komischer Fehler sein kann?
Aktion gegen Internetausdrucker
Mai 3rd, 2009Unter www.politiker-stopp.de findet sich Code um seine Seite gegen Internet-Ausdrucker zu schützen.
Einfach mal die Druck-Vorschau auf der politiker-stoppseite ansehen
.
Hier im Blog wird der Code sicher nie integriert, da einige der Artikel es vielleicht wert sind ausgedruckt zu werden. Aber trotzdem eine lustige Aktion.
Allerdings könnte es sein, dass einige der Politiker mit alten Rechnern surfen, deren Browser noch kein (print-)CSS können. Das wäre natürlich eine (illegale?) Umgehung des Druck-Schutzes!
Paxle Suchframework released
April 16th, 2009Paxle ist ein komplettes, modulares Suchframework auf OSGi-Basis, bei dem alle funktionalen Komponenten sauber voneinander getrennt sind und deshalb einzeln ersetzt werden können. Metasuchfähigkeit ist über die Definition mehrerer Suchprovider möglich.
Zusätzlich zur Anbindung externer Quellen enthält Paxle auch einen Suchprovider der eine durch Crawling des Internets erzeugte lokale Datenbank auf dem Computer des Nutzers abfragt. Die Datenbankerstellung ist ebenfalls von Paxle abgedeckt, allerdings lassen sich auch andere DBs mit Paxle betreiben.
Paxle hat eine wenig restriktive Lizenz und ist Open-Source-Software im Sinne der OSI und FSF.
exceptions.TypeError: Error when calling the metaclass bases
Februar 25th, 2009Wenn Python diesen komischen Fehler anzeigt, heißt das oft dass man versucht ein Modul (statt einer Klasse) zu instanziieren.
.ape / .cue Dateien konvertieren
Februar 24th, 2009APE ist das Monkey’s Audio Format, ein verlustfreier Audiocodec. Abgesehen davon kennt natürlich kaum ein Player das Format. Man kann die Dateien aber unter Linux mit den Programmen mplayer, bchunk, lame relativ einfach konvertieren:
mplayer -vo null -vc null -ao pcm:fast *ape;bchunk -w audiodump.wav *.cue track;rm audiodump.wav;for i in *.wav;do lame --preset extreme $i;done;rm *.wav
Im Detail:
mplayer -vo null -vc null -ao pcm:fast *.ape
Spielt die .ape Datei quasi ab und speichert das Ergebnis in audiodump.wav.
bchunk -w audiodump.wav *.cue track
trennt audiodump.wav an den Stellen die in der .cue Datei stehen, und nennt die Ergebnisse trackXY.wav. Mit -w schreibt es zusätzlich Wave-Header.
rm audiodump.wav
Entfernt audiodump.wav damit es nicht auch (als Ganzes) nochmal kodiert wird.
for i in *.wav;do lame --preset extreme $i;done
Kodiert die .wav in .mp3 mit sehr guter Qualität.
rm *.wav
Entfernt die übrig gebliebenen .wav Dateien.
Die Commandline geht davon aus, dass sich im Verzeichnis nur eine .ape und eine .cue Datei befinden, und dann funktioniert der Befehl ohne die Namen zu kennen. Befinden sich mehrere im aktuellem Ordner, funktionieren die Anweisungen nicht, weil zum Beispiel der erste audiodump.wav durch den zweiten direkt überschrieben wird.

![[Logo]](http://images.laxu.de/layout/schrift_blog.png)

Feed abbonieren