Archiv für Oktober 2009

Kein Tray Icon von Empathy

Freitag, 30. Oktober 2009

Seit Ubuntu 9.10 wird für Instant Messaging das Programm Empathy vorinstalliert, davor was es Pidgin.
Pidgin legt sich automatisch ins Tray und ist somit immer sehr einfach Zugreiffbar, und man kann auch sehr schnell sehen ob man neue Nachrichten hat. Empathy macht das leider nicht. Es wird in einem anderen Icon angezeigt, dass eMail und Instant Messaging verbinden soll. Ich wickle aber meinen gesamten Mailverkehr über Google Mail ab, und brauche somit keinen lokalen eMailclient, deshalb brauche ich auch das Icon nicht.

Man kann Empathy auch so einstellen, dass es ein Tray Icon anzeigt und ähnlich wie Pidgin arbeitet. Dazu geht man im Empathy Hauptfenster auf Bearbeitungen -> Einstellungen -> Benachrichtigungen und deaktiviert “Benachrichtigungen verwenden” (ganz unten). Danach trägt sich Empathy ins Tray ein.

PDF    Sende Artikel als PDF an

Scheme Kurs – Teil 5: local

Freitag, 30. Oktober 2009

Mit dem Schlüsselwort local kann man in Scheme einen neuen Namesraum definieren, in dem man Variablen und Funktionen völlig normal erstellen und nutzen kann, mit dem Unterschied das diese Variablen und Funktionen nach Ende des local Bereiches nicht mehr existieren – der Name ist also wieder frei und kann erneut vergeben werden.

Beispiel:

> (define x 5)
> x
5
> (local ((define x 10)) x)
10
> x
5

Syntax:

(local (<expression1> <expression2> <...>) (<expression3>))

In der Klammer in der expression1 und expression2 stehen können beliebig viele variable Eigenschaften definiert werden. Danach (im den Klammern in denen expression3 steht) wird dann die eigentliche Logik geschrieben.

local ist wichtig wenn man eine temporäre Variable braucht, in einer rekursiv aufgerufenen Funktion.

PDF    Sende Artikel als PDF an

Gnome Panels mit mehreren Monitoren (TwinView)

Freitag, 30. Oktober 2009

Ein neues Gnome Panel wird dummerweise nur auf dem Hauptmonitor angezeigt, und es gibt keine Einstellung um es auf den Zweitmonitor zu verschieben. Dazu muss man den

gconf-editor

starten und unter apps -> panel -> toplevels sind alle existierenden Panels aufgelistet. Man muss das neue Panel erstellen bevor man den Editor startet, sonst wird es nicht angezeigt.
Jetzt muss man nur noch den Wert von monitor von 0 auf 1 (für den 2. Monitor) ändern und das Panel springt auf den 2. Monitor.

Praktischerweise kann man auf dem neuem Panel auch einen “Fensterwähler” (die Liste von aktuell laufenden Programmen) hinzufügen, der nur die Programme anzeigt, die auf dem entsprechenden Monitor sind – sehr praktisch.

PDF    Sende Artikel als PDF an

Auswertungsreihenfolge

Mittwoch, 28. Oktober 2009

Es gibt zwei verschiedene Reihenfolgen wie Ausdrücke ausgewertet – also abgearbeitet – werden können. Ich möchte die beiden Reihenfolgen an folgendem (nicht ganz sinnvollem) Beispiel erklären:

(define (quadrat-negativ zahl) (- (* zahl zahl)))
(define (quadrat-positiv zahl) (* zahl zahl))
  • Applikative Auswertungsreihenfolge
    Bei derApplikative Auswertungsreihenfolge werden zuerst die höchstwertigen Klammern ausgewertet, bis man zur Hauptklammer gelangt.

    ((quadrat-negativ (quadrat-positiv (+ 2 3)))
    (quadrat-negativ (quadrat-positiv 5))
    (quadrat-negativ (* 5 5))
    (quadrat-negativ 25)
    (- (* 25 25))
    (- 625)

    Wie man sehen kann, werden die Zahlen erst ausgerechnet, wenn sie wirklich an der Reihe sind. Genau so wird auch mit Funktionen verfahren. Sie werden erst “eingesetzt”, wenn es nötig wird.

  • Normale Auswertungsreihenfolge
    Bei der Normale Auswertungsreihenfolge ist es genau umgedreht. Es wird der Gesamtausdruck einfach von Anfang an abgegangen, und sobald ein gerade gelesener Ausdruck ausführbar ist, wird er ausgeführt. Genau so wird auch mit Funktionen verfahren:

    ((quadrat-negativ (quadrat-positiv (+ 2 3)))
    (- (* (quadrat-positiv (+ 2 3)) (quadrat-positiv (+ 2 3))))
    (- (* (* (+ 2 3) (+ 2 3)) (quadrat-positiv (+ 2 3))))
    (- (* (* 5 (+ 2 3)) (quadrat-positiv (+ 2 3))))
    (- (* (* 5 5) (quadrat-positiv (+ 2 3))))
    (- (* 25 (quadrat-positiv (+ 2 3))))
    (- (* 25 (* (+ 2 3) (+ 2 3))))
    (- (* 25 (* 5 (+ 2 3))))
    (- (* 25 (* 5 5)))
    (- (* 25 25))
    (- 625)

    Natürlich liefert auch diese Auswertungsreihenfolge das gleiche Ergebnis wie die Normale, aber es ist in diesem Beispiel viel aufwendiger und unübersichtlicher.

In Scheme und vielen anderen Programmiersprachen wird die applikative Auswertungsreihenfolge verwendet – mit der Ausnahme von ifs, conds, ands, … Der Vorteil ist, das wenn man z.B. eine if-Bedingung hat:

(if
   (AND
      (= 4 9)
      (sehr-aufwendige-funktion params)
   )
   ...
)

und man bemerkt schon bei der ersten Bedingung (= 4 9) dass die Aussage falsch ist, dann kann die gesamte Bedingung nicht mehr true werden, da sie mit einem AND Verknüpft ist. Deshalb kann man sich das Ausführen der Funktion (sehr-aufwendige-funktion params) sparen und direkt ins else springen.

Bemerk für mich: Foliensatz T4, Folien 2-5 und Übung 1, Aufgabe 5.

PDF erstellen    Sende Artikel als PDF an

CakePHP: Startseite ändern

Dienstag, 27. Oktober 2009

Normalerweise startet eine CakePHP Installation in der View pages/home.ctp. Man kann die Startseite oder auch Einstiegsseite ändern in dem man folgende Zeile in der Datei app/config/routes.php ändert:

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

Ich möchte zum Beispiel als Startseite die News anzeigen, d.h. ich muss den News-Controller aufrufen:

Router::connect('/', array('controller' => 'news'));
PDF Download    Sende Artikel als PDF an

Abgeschlossenheit

Dienstag, 27. Oktober 2009

Eine Operation ist abgeschlossen (in Englisch sagt man auch closure), wenn man sie erneut auf das Ergebnis anwenden kann (beliebig oft), ohne das ein Fehler auftritt, die Zahlen ihren aus ihrem Zahlenbereich wachsen, etc.

Beispiel: Abgeschlossene Operationen mit natürlichen Zahlen \mathbb{N} sind nur + und *, denn es ist nicht möglich den Zahlenbereich von natürlichen Zahlen verlassen. Mit den Operationen – oder / kann man den Zahlenbereich aber verlassen, d.h. sie sind nicht abgeschlossen.

Weitere Informationen:
http://de.wikipedia.org/wiki/Abgeschlossenheit

PDF Drucker    Sende Artikel als PDF an

Internationalisierung (I18n) mit CakePHP

Montag, 26. Oktober 2009

CakePHP nutzt zum Internationalisieren pot bzw. po Dateien. Die pot Datei enthält alle Texte die übersetzt werden müssen. Diese Datei wird (fast) automatisch von dem Framework erstellt. Dazu werden alle Ausgaben eingelesen und dann zusammengefasst. Es empfiehlt sich dabei, von Anfang an, alle Texte mit der eingebauten Funktion

__(string text)

auszugeben. Alle Ausgaben mit dieser Funktion werden problemlos vom Framework erkannt, soweit habe ich es schon getestet. ;)

Eine Ausgabe im Template sieht also so aus:

<?php __('Please enter your name') ?>

Dabei empfiehlt es sich alle Texte im Template in Englisch zu halten, denn wenn CakePHP keine Übersetzung findet, verwendet es den Wert der ursprünglich übergeben wurde. Wird zum Beispiel eine deutsche Übersetzung gefunden, wird der Text natürlich in Deutsch ausgegeben – vorausgesetzt im Browser ist als Hauptsprache Deutsch eingestellt oder man hat es explizit im Code gesetzt. Das kann man mit folgender Code-Zeile erreichen:

Configure::write('Config.language', 'deu');

Also, wir geben also alle Ausgaben in Englisch und mit der oben beschriebenen Funktion aus, und können dann mit der CakePHP Console die pot Datei erstellen. Dazu ruft man das Programm unter

[CakePHP-ROOT]/cake/console/cake

auf, mit dem Parameter i18n. Mehr Infos findet man auf der Dokumentationsseite von CakePHP (siehe unten).

Nachdem man mit der CakePHP Console die pot Datei erstellt hat, kann man diese mit z.B. mit dem Programm Poedit öffnen, übersetzen und als po speichern. Die po Datei muss default heißen und in den Ordner

[CakePHP-ROOT]/app/locale/deu/LC_MESSAGES

gespeichert werden. deu steht natürlich für die jeweilige Sprache. Ein Link zu einer Seite mit allen andern Sprachcodes ist in der Linkliste am Seitenende.

Weitere Informationen:

PDF erstellen    Sende Artikel als PDF an

Die reellen Zahlen

Sonntag, 25. Oktober 2009

Körperaxiome

  • Kommutativgesetz für die Addition
    a+b=b+a
  • Assoziativgesetz für die Addition
    (a+b)+c=a+(b+c)
  • es gibt ein 0 \in \mathbb{R}, sodass a+0=a gilt, für alle a \in \mathbb{R}
  • zu jedem a \in \mathbb{R} gibt es genau ein -a \in \mathbb{R}, und es gilt a + (-a) = 0
  • Kommutativgesetz für die Multiplikation
    ab=ba
  • Assoziativgesetz für die Multiplikation
    (ab)c=a(bc)
  • es gibt ein 1 \in \mathbb{R}, sodass a1 = 1a = a gilt, für alle a \in \mathbb{R}
  • zu jedem a \in \mathbb{R} mit a \neq 0 gibt es genau ein \frac{1}{a} \in \mathbb{R} mit a \frac{1}{a} = 1
  • Distributivgesetz
    (a+b)c=ac+bc

Anordnungsaxiome

  • es gibt genau eine der Beziehungen: a<b; a=b; b<a
  • aus a<b und b<c folgt a<c
  • aus a<b folgt a+c<b+c
  • aus a<b und 0<c folgt ac<bc

Die Vollständigkeit der reellen Zahlen

Man kann eine obere und untere Grenze einer Menge definieren. Diese Grenzen werden auch als Supremum (obere Grenze) und Infimum (untere Grenze) bezeichnet. Dabei existiert nicht in jeder Menge ein Supremum bzw. Infimum. Ist eine Menge z.B. definiert als [0;\infty[ so besitzt sie ein Inf. (= 0) aber kein Sup.

Beispiel:
A=\{a+\frac{1}{n}|n \in \mathbb{N}\}
Sup A ist 2
Inf A ist 1

Vollständigkeitsaxiom

“Jede nichtleere beschränkte Teilmenge von \mathbb{R} besitzt in \mathbb{R} ein Supremum.”

Eine Konsequenz dieses Axioms ist das Archimedische Prinzip:
\forall x \in \mathbb{R} (x > 0 \implies \exists n \in \mathbb{N} x < n)

PDF Drucker    Sende Artikel als PDF an

Finsdorf, die neue Stromberg Staffel

Samstag, 24. Oktober 2009

Dieses Bild ist ein Screenshot von der Website des Dorfes Finsdorf, in dem die neue Stromberg Staffel spielt. Bitte achtet besonders auf die letzten Zeilen im Screenshot! :D

Website von Finsdorf

Website von Finsdorf

Edit: Habe noch eine weitere Seite zum Thema gefunden: http://www.capitol-finsdorf.de/

PDF Drucker    Sende Artikel als PDF an

Grundlegende Mengenaxiome

Samstag, 24. Oktober 2009

“Ein Axiom ist ein unmittelbar einleuchtender Grundsatz der als Grundlage für Beweise in einem bestimmten Teilgebiet benutzt wird.” Oder er sollte zumindest unmittelbar Einleuchtend sein…

Ein Beispiel wie ein Axiom aussieht und was es definieren könnte ist folgender Ausdruck:
\mathbb{A} \subseteq \mathbb{B} ist eine Abkürzung für:
\forall x(x \in \mathbb{A} \implies x \in \mathbb{B})

  • Extensionalitätsaxiom
    A = B \iff \forall x(x \in A \iff x\in B)

    Wenn die Menge A gleich der Menge B ist, dann gilt für jede Zahl x die in A enthalten ist dass sie auch gleichzeitig in B enthalten ist, und anders herum.

  • Aussonderungsaxiom
    \forall y \exists z \forall x(x \in z \iff (x \in y \wedge A(x))

    Man kann aus jeder Menge y die Menge z aussondern, deren Werte x eine bestimmte Eigenschaft (A(x)) haben.

    A(x) ist eine formulierbare Aussage, in der y und z nicht erwähnt werden.

  • Paarmengenaxiom
    \forall x, y \exists z \forall u (u \in z \iff (u = x \vee u = y))

    Man kann aus zwei beliebigen Mengen x, y eine Teilmenge z bilden, deren Elemente u Element von x oder/und y ist.

  • Vereinigungsaxiom
    \forall x \exists y \forall u (u \in y \iff \exists z(u \in z \wedge z \in x))

    Für jede Menge x gibt es eine Menge y, deren Elemente genau die Elemente der Elemente von x sind.

    Für eine eindeutig definierte Menge y kann man auch \cup x schreiben.

  • Potenzmengenaxiom
    \forall x \exists y \forall z (z \in y \iff \forall u(u \in z \implies u \in x))

    Wenn z ein Element von y ist, und y eine Teilmenge von x, dann gilt für alle Zahlen u die ein Element von z sind, das sie gleichzeitig auch ein Element von x sind.

  • Unendlichkeitsaxiom
    \exists x(\emptyset \in x \wedge \forall y \in x(Sc(y) \in x))

    Das Unendlichkeitsaxiom behauptet das es eine Menge gibt, die \emptyset als Teilmenge hat und unter der Operation Sc abgeschlossen ist.

    Sc steht für Successor, also Nachfolger.


Quellen:
http://de.wikipedia.org/w/index.php?title=Axiom&oldid=65196186
http://www.phillex.de/axiom.htm

PDF    Sende Artikel als PDF an