Geschützt: pickit3d Automatica

Dieser Beitrag ist passwortgeschützt. Um ihn anzusehen, trage das Passwort bitte hier ein:

Veröffentlicht unter Allgemein | Kommentare deaktiviert

Testing framework for multi armed bandits

A Python testing framework for multi armed bandits with implementations of several policies. Instead of the argmax function, they are using choice from the library random to get the required fair selection for the case that several arms have the same score.

Here, the link to pymaBandits on mloss.org: http://mloss.org
My own demo script with MAXMEAN policy: bandit-scripts

Veröffentlicht unter Allgemein | Kommentare deaktiviert

Contextual multi armed bandits

This is a octave demo for contextual multi armed bandits. A contextual multi armed bandit strategy learns to select the best performing model of a finite set of models given a context. In spite I use random generated context vectors, the learning process is already visible after a low number of iterations over the same context set. In practice, the context should contain reasonable input data, e.g. certain query words entered by a user in the input field of a search engine. My octave code is based on the linUCB pseudo code proposed in “A Contextual-Bandit Approach to Personalized News Article Recommendation”, Lihong Li, Wei Chu ,Yahoo! Labs.

You can find the code in my git repository.results

Veröffentlicht unter Allgemein | Kommentare deaktiviert

texthl (GWT)

texthl is a small code to html highlighting editor for JAVA code. You can also add individual text highlights via text selection. The application was made with GWT (Google Web Toolkit). So far, it only works with Google Chrome.
Click here for a demo
texthl

Veröffentlicht unter Allgemein | Kommentare deaktiviert

RDF (TDB/Jena): Anlegen neuer Ressourcen mit eindeutiger URI.

RDF ist darauf ausgelegt, bestehende Ressourcen eines Modells einfach zu erweitern. Mit der RDF API TDB für Java lassen sich neue Ressourcen einfach über die Methoden getResource(String URI) und createResource(String URI) der Klasse Model (com.hp.hpl.jena.rdf.model.Model) anlegen. Die erste Methode ist laut JavaDoc nur noch Altlast, da beide Methoden bei Bedarf eine neue Ressource im Modell anlegen. In einem aktuellen Projekt muss ich allerdings sicher stellen, dass garantiert keine bestehende Ressource des Modells versehentlich erweitert wird. Das heißt, ich benötige eine URI, die garantiert eindeutig ist und nicht im selben Moment ebenfalls von einem anderen Teilnehmer zum Erzeugen einer Ressource verwendet wird. Ich habe deshalb zuerst eine s.g. anonyme Ressource angelegt und von dieser dann mit getId() die anonyme ID aufgerufen. (Die Methode getId() der Klasse Resource liefert null wenn sie von einer nicht anonymen Ressource aufgerufen wird.) Für anonyme IDs gibt es in Jena eine extra Klasse: AnonId. Diese liefert mit hashCode() einen Hash in Form einer Integer zurück.

Model m = TDBFactory.createModel("RDFDB");
Resource rNew = m.createResource();

System.out.println("New anonymous resource:"+rNew.getId().hashCode());

Den so erhaltenen Hashcode verwende ich dann als Substring für die URI einer neuen (nicht anonymen) Ressource.

Resource myRes = m.createResource("my"+rNew.getId());
myRes.addProperty(m.createProperty(
m.getNsPrefixURI("mydb"),"key"), "1323");

Auf diese Weise soll sichergestellt werden, dass kein Benutzer in der selben Zeit eine Ressource mit der gleichen URI im Modell einträgt.

Hinweis:Eine Ressource definiert sich in RDF über die Menge ihrer Prädikat-Objekt-Paare. Werden einer Ressource also keine Prädikate hinzugefügt, dann existiert sie nicht im Modell und kann später auch nicht mit SPARQL Ausdrücken abgefragt werden.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , | 1 Kommentar

GWT-Hacks: Pretty-Print von Code mit RichTextArea während der Eingabe

Problem: Das Widget RichTextArea erlaubt mit der Methode setHTML() das Anzeigen von Text, welcher mit HTML Tags formatiert wurde. Dieses Vorgehen würde theoretisch das Hervorheben von Text während der Eingabe des Benutzer ermöglichen. Allerdings verliert die RhichTextArea mit dem Aufruf der Methode
setHTML()
ihren Focus. Außerdem erlaubt das RichTextArea Widget, im Gegensatz zum TextArea Widget, nicht das Setzen der Curserposition.

Lösung: Von einem RichTextArea Objekt muss als erstes die Methode getFormatter() aufgerufen werden. Auf dem zurückgelieferten Formatter Objekt wird dann die Methode selectAll() aufgerufen und direkt danach die polymorphe Methode insertHTML(). Dieses Vorgehen gewährt beim GWT 2.2, dass die RichTextArea während der Benutzereingabe nicht den Focus verliert, wenn der Inhalt neu gesetzt wird.


SafeHtmlBuilder htmlBuilder = new SafeHtmlBuilder();
htmlBuilder.appendHtmlConstant("Das ist < b >formatiert< / b >!");
textarea.getFormatter().selectAll();
textarea.getFormatter().insertHTML(htmlBuilder.toSafeHtml ().asString());
htmlBuilder=new SafeHtmlBuilder()

Für einen Pretty-Print von XML oder JavaScript während der Eingabe muss dem SafeHtmlBuilder natürlich der eingegebene und mit entsprechenden Html-Tags zur Hervorhebung ergänzte Text des RhichTextArea Widgets übergeben werden. Das „Scannen“ nach XML/JavaScript Befehlen erledigt man am besten mit JavaScript Code den man mittels JSNI direkt in den JavaCode einbindet.

Nachteil: Der Curser wird bei jedem Aktualisierungsvorgang ans Ende des Textes gesetzt. Ein Ändern des Textes an einer beliebigen Position ist damit nicht wirklich möglich.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | Kommentare deaktiviert

Events als QR Code für iPhone und Android

Bei Terminankündigungen auf Plakaten und Handzetteln ist es sinnvoll, den jeweiligen Termin auch als QR Bild zur Verfügung zu stellen, um die Termineintragung zu vereinfachen. Bisher wurde dazu ein Link auf eine *.ics Datei QR codiert. Dieses Verfahren funktioniert auf dem iPhone, macht aber bei den gängigen Android Apps Probleme. Außerdem benötigt man eine Verbindung ins Internet, was in größeren Gebäuden nicht immer der Fall ist. Das Open Source Projekt ZXing ermöglicht die Erstellung von QR Codes in beliebigen Clients für Java und Android. Es definiert auch ein Format, mit dem sich Termine direkt als QR Code angeben lassen und welches sich an dem VEVENT aus *.ics Dateien orientiert. Dieses Format ist für QR Codes bislang noch kein Standard.

Für folgende Lösung, die beide Varianten vereinen soll, gab es bisher unterschiedliche Rückmeldung:

Auf http://goqr.me/ lässt sich jeder beliebige Text als QR Code darstellen. Es soll nun der Termin „event“ mit einer Anfangszeit (12.3.2011, 19:28 Uhr,MEZ), einem Ende und einer Beschreibung als QR Code dargestellt werden. Die *.ics Datei, welche einen Kalender mit diesem Termin enthält, befindet sich unter http://malteahl.de/test.ics . Diesen Link stellt man nun als QR Code dar, gefolgt von einem ‘?Code=BEGIN:VEVENT’, einem Zeilenumbruch und der Angabe des Termins im VEVENT Format:

http://malteahl.de/test.ics?Code=BEGIN:VEVENT
SUMMARY:event
DTSTART:20110312T182800Z
DTEND:20110312T192800Z
DESCRIPTION: irgendwas
END:VEVENT

Die Zeitangabe folgt dabei dem Format YYYYMMDDTHHMMSSZ . Wird die Zeitangabe in mittlerer Greenwich-Zeit mit abschließendem Z angegeben, rechnet XZing das Format in die korrekte Zeit um, die auf dem Gerät eingestellt ist, mit dem der QR Code gescannt wird (auf einem Handy mit MEZ also plus eine Stunde). Andernfalls wird die Zeitangabe unverändert übernommen. Dieses Verfahren wird im RFC5545 genau beschrieben.

Entweder erkennt die App einen Link auf eine *.ics Datei (der Wert der Variable ‘?Code’ wird vom Server ignoriert) oder einen Termin im VEVENT Format (Barcode Scanner App von XZing).

Danke für Testberichte und  andere Lösungsvorschläge!

Quellen:
Beliebigen Text als QR: goqr.me
Die ZXing App für Android:  Barcode Scanner
Online QR Generator von ZXing: http://zxing.appspot.com/generator/
Das ZXing Projekt auf Google Code: ZXing Projekt
Beschreibung weiterer QR Formate (z.B. Visitenkarten,Android Apps): Barcode Contents
Beschreibung des iCalendar Formats für *.ics Dateien: RFC5545

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | 1 Kommentar

Mathematische Notationen mit Neo2

Sei es um den elektronischen Vokabeltrainer mit Definitionen zu füttern oder um Mails zu schreiben, ohne merkwürdige Kürzel von mathematischen Symbolen verwenden zu müssen: Neo2 unterstützt die gängigsten Symbole als Tastenkombination.
Das Neo2 Layout verwendet 3 Shift-Tasten. Ein Wechsel in die Ebene mit den mathematischen Symbolen gelingt, indem man mit dem kleinen Finger der linken Hand die „große Shift-Taste“ (Mod3) und mit dem kleinen Finger der rechten Hand die Mod4 Taste gleichzeitig gedrückt hält. Verwendet man das Windows-Skript für Neo2, befindet sich Mod4 u.a. auf der AltGr-Taste.

Viele Symbole liegen, leicht zu merken, auf ihrem lateinischen Äquivalent. Z.B. ∀ auf der A-Taste, usw. Folgende Tabelle zeigt, welche alphanumerischen Zeichen welches Symbol in der mathematischen Ebene erzeugt und richtet sich nach der Neo2-Version, die auf dem aktuellen Ubuntu 10.10 (maverick) zur Verfügung steht.

Symbol Buchstabe Symbol Buchstabe
Ü U
Ä I
Π P A
Z E
B O
M Σ S
N
Θ R
J T
Δ D
Y
Symbol Buchstabe Symbol Ziffern des Alpha-
numerischen Blocks
Ξ X ¬ 1
V 2
Λ L 3
C 4
Ω W 5
K 6
Ψ H 7
Γ G 8
Φ F 9
Q 0

Numerischer Block (auf einer Laptop-Tastatur muss zu den zwei Mod-Tasten noch die „Fn-Taste“ gedrückt werden):

Symbol Ziffer Symbol Ziffer
% 0 5
1 ⋅ (mal) 6
2 8
3
4

Folgende mathematische Symbole findet man nicht in der „Mathe-Ebene“ sondern durch einfaches gedrückthalten der großen Shift-Taste (Mod3) (und evtl. der Fn-Taste) auf dem numerischen Block:

Symbol Ziffer/Operator Symbol Ziffer
÷ / -
± + 4
1 ¦ 5
2 6
3 8

Um eine Aussage als korrekt oder widerlegt zu kennzeichnen, bieten sich die Zeichen ✔ und ✘ an. Man findet sie im numerischen Block durch Drücken der normalen Shift-Taste (und evtl. der Fn-Taste).

‹λ₅,λ₂,λ₉›,♀,†,♂

Die Kleinbuchstaben des griechischen Alphabets erhält man, indem man die beiden Shift-Tasten der linken Hand (also Shift und Mod3) gedrückt hält. Mit der Ziffernleiste des Alphanumerischen Blocks lassen sich so die tief gestellten Ziffern 1,2 und 3, sowie andere nette Symbole schreiben. Benötigt man Indizes größer als 3, so verwendet man den Ziffernblock der 4. Ebene (mit Mod4 oder AltGr) und drückt vor der Wahl einer Ziffer kurz die ^ Taste.

Leerzeichen ohne Zeilenumbruch

Möchte man zwischen zwei Wörtern ein Leerzeichen einfügen, jedoch verhindern, dass  ein Zeilenumbruch zwischen beiden Wörter eingefügt wird, verwendet man die Tastenkombination Mod3+Shift und Leertaste.

DAUERHAFT GROẞSCHREIBEN

Um längeren Text in Großbuchstaben zu schreiben, werden beide Mod3 Tasten (i.R. die große Shift-Taste der linken Hand und die QWERTZ-#-Taste der rechten Hand) gedrückt.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | 1 Kommentar

Neo2 Erfahrungsbericht

Einstellungen von Neo2 unter Ubuntu 10.04 (Lucid)

Einstellungen von Neo2 unter Ubuntu 10.04 (Lucid)

Ich verwende das deutsche Tastaturlayout Neo2 nun schon ein gutes halbes Jahr und schaffe gut 200 Anschl./Min. bei normalem Text (mit ktouch). Neo2 bietet die Möglichkeit, mit einer zusätzlichen Shift Taste die Tasten unter der rechten Hand in einen Nummernblock zu verwandeln. Dabei liegen die Ziffern 4,5,6 genau auf der Hauptlinie (N,R,T), lassen sich also mit Zeige-, Mittel- und Ringfinger schreiben, ohne dass diese ihre Ausgangsstellung verändern. Dies ist etwas praktischer als die „Fn“-Taste auf gängigen Laptop Tastaturen und auch auf externen PC-Tastaturen sehr nützlich. Auf gleiche Weise verwandeln sich die Tasten unter der linken Hand in einen Steuerblock, mit dem Zeige-, Mittel- und Ringfinger sehr schnell zwischen den einzelnen Zeilen und Buchstaben einer Zeile navigieren, löschen und Tabulatoren einfügen können. Diese beiden Eigenschaften machen Neo2 beim Programmieren mit IDEs wie Eclipse unersetzlich, da so die Auto-Vervollständigung erst sinnvoll und schnell genutzt werden kann, denn beim Schreiben muss die rechte Hand ihre Ausgangsstellung nicht verlassen, um den Steuerblock zu erreichen. Statt dessen hält man mit dem rechten Daumen die AltGr-Taste gedrückt, um so die Tasten unter der linken Hand in einen Steuerblock umzuwandeln, mit dem dann in der Popup-Liste der Auto-Vervollständigung navigiert werden kann. Dies bringt auch einen Vorteil beim Texen mit KDEs Kile: Das Programm schlägt während des Schreibens ebenfalls längere Wörter in einer Popup-Liste vor.

Kritik

Trotz des Lobs gibt es gerade unter Ubuntu kleine nervige Nachteile, die vermutlich mit dem Treiber zusammenhängen. Möchte man Neo2 schnell mal unter Windows testen,  reicht ein Klick auf das Skript welches sich unter wiki.neo-layout.org finden lässt. Möchte man in die „4. Ebene“ mit dem oben benannten Nummern- und Steuerblock wechseln, geht das problemlos, indem man die AltGr Taste gedrückt hält. Unter Ubuntu lässt sich zwar das Neo2 Layout bequem über Systeme/Einstellungen/Tastatur/Belegung hinzufügen. Die 4. Ebene erreicht man aber nicht. Ich habe Ubuntu (10.04 lucid) nun komplett neu installiert und Neo2 gleich bei der Installation als alleiniges Tastaturlayout ausgewählt. Trotzdem musste ich im Systeme/Einstellungen/Tastatur/Belegungen/Optionen erst einige Einstellungen, wie die „Position der Compose-Taste“ aktivieren und anschließend wieder zurücksetzen. Wird AltGr als „Compose-Taste“ für die 4. Ebene ausgewählt, werden die Zahlen in Bruch Notation angegeben. Wird also AltGr+N und AltGr+R gedrückt, erscheinen nicht etwa die Zahlen 4 und 5 sonder beim Drücken von AltGr+N erfolgt keine Reaktion und nach AltGr+R erscheint der Bruch 4/5. Dieses Verhalten ist extrem nervig und lässt sich nur durch wahlloses aktivieren/deaktivieren von verschiedenen Einstellungen und anschließendem zurücksetzen in den Griff bekommen. Hier wäre es schön, wenn die Entwickler einfach das Verhalten des Windows-Skriptes auch für Ubuntu anbieten würden. Ein Weitere Nachteil ist, dass sich die Zeichen + und – nur in Kombination mit unterschiedlichen Shift-Tasten erzeugen lassen. Das Minuszeichen scheint im Nummernblock der 4. Ebene unter Ubuntu auch nicht dort zu sein, wo es hingehört.

Fazit

Die Tatsache, das Ubuntu Neo2 neben zahlreichen anderen Layouts bereits während der Installation unterstützt, macht den Einsatz von Neo2 und auch den Wechsel zwischen verschiedenen Layouts sehr einfach. Der Vorteil, dass die Verschiedenen Klammerzeichen wie (),{},[],<> direkt paarweise  nebeneinander liegen, und der Nummern- und Steuerblock der 4. Ebene machen Neo2 beim Programmieren und Texen zu einer echten Hilfe, auf die ich nicht mehr verzichten möchte. Mit dem KDE Programm KTouch habe ich mir Neo2 innerhalb von 2 Monaten angeeignet. Dabei musste/konnte ich, entgegen aller Empfehlungen, nicht auf meinen „Hacker-Klaue“ auf dem normalen QWERTZ Layout verzichten. Zusätzliche UTF8 Zeichen wie •, echte deutsche Anführungsstriche „“ oder die Zeichen ✔ und ✘ ermöglichen das Erstellen von nett formatierten Listen/Texten in nahezu jedem Text/Mail/Chat Programm, ohne auf dessen Formatierungsfunktionen angewiesen zu sein. Trotzdem kann es, leider gerade unter Ubuntu, zu kleinen Startschwierigkeiten komme.

Ergänzung

Um das Problem mit der 4. Ebene unter Ubuntu 10.04 (lucid) in den Griff zu bekommen, wählt man Neo2 im Tastatureinstellungsdialog (Systeme/Einstellung/Tastatur/Belegungen, siehe Abb.) und entfernt unter Optionen->„Taste(n) zum Wechseln der Belegung“ alle Häkchen. (Es darf auf keinen Fall eine Alt-Taste ausgewählt werden…). Anschließend setzt man unter „Position der Compose-Taste“ ein Häkchen bei „Rechte Alt-Taste“. Nun wird zwar die 4. Ebene aktiviert, allerdings mit oben Beschriebenen Problem (Brüche statt Zahlen, keine Reaktion beim ersten Tastendruck…). Wenn das eben gesetzte Häkchen von „Rechte Alt-Taste“ wieder entfernt wird, kann die 4. Ebene immer noch über die Taste AltGr erreicht werden, nun funktionieren aber der Zahlenblock und der Steuerblock für die rechte und linke Hand wie gewünscht über die AltGr-Taste.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , | 3 Kommentare