Serveral links on how to integrate 3rd Party Libraries into Web DynPro Projects (e.g. Hibernate) and how to use a Java Bean Model:
Hibernate
complex Java Beans
Changing a Java Bean Model
Jar of a Java Bean Model
Including Rhino as Example of an external library
Exernal Jars in Web DynPro
Endlich ist es soweit, das iPhone ist in Deutschland angekommen und ich war der erste, der es in Friedrichshafen, der T-City gekauft hat. Da es heute extrem kalt und stürmisch in Friedrichshafen ist, haben mich die nette Angestellten im T-Punkt sogar schon um 8 Uhr in den Laden gelassen.
T-Punkt um 7:50 Uhr
Nach dem Einlass habe ich gleich den Vertrag Complete M abgeschlossen. Die ganze Prozedur hat vielleicht 20 Min gedauert und ich war um 400 Eur ärmer… Zumindest kann man heute die Anschlussgebühr von 25 Eur sparen!
Das erste iPhone in der T-City
Jetzt bin ich zuhause und werde das Gerät in Betrieb nehmen:
Hab die Sim-Karte ins iPhone eingesteckt, mit Hilfe dieser kleinen Nadel, die dabei ist:
Dann das iPhone ins Dock gesteckt, iTunes startet automatisch und man wird durch die Aktivierung geführt (hat nichtmal eine Minute gedauert):
Und Boom – das iPhone ist aktivert und synchronisiert mit allen Email Accounts, Adressen usw.
Mehr Bilder und Berichte heute abend, ich geh jetzt mal zur Arbeit.
Meine iTunes Bibliothek befindet sich aufgrund ihrer Größe auf einem externen Laufwerk.
Damit ich in iTunes nichts konfigurieren muss, richte ich mir nach einer Neuinstallation von MacOS X immer über das Terminal einen symbolischen Link ein, der folgendes Format hat.
ln -s [Order auf externem Laufwerk] iTunes
Bei mir sieht der Link dann so aus:
Open Terminal
enter pico ~/.profile
GRAILS_HOME=~/Library/grails
PATH=$PATH:$GRAILS_HOME/bin
Save with Ctrl+X, Y
Close and open new Terminal window
Kommt ziemlich selten vor.
Faithless – i Won’t Stop (iTunes muss installiert sein).
Ich habe bei meinem Samsung LCD Fernseher das Problem gehabt, dass er automatisch den Kontrast runterreguliert hat. Wenn das passiert, gibt der Fernseher ein relativ lautes Summen von sich.
Diese automatische Kontrastregelung kann man allerdings über das Service-Menü ausschalten, welches man folgendermaßen aufruft:
Achtung! Hier kann man sein Gerät ruinieren! Also mit bedacht die Werte ändern. Die eingestellten Werte vor dem Verändern notieren!
Gerät mit der Fernbedienung ausschalten
Info-Taste drücken
Menü-Taste drücken
Mute-Taste drücken
Gerät einschalten
Der Chef Editor der Technology Review erklärt es uns.
Warum sollte man Sckriptsprachen einsetzen?
7 Patterns
Alleskleber(superglue)
Gut geeignet für flexible Applikationslayer: View und Controller
Beispiel:
XML Parser, Java Networking, Swing Widget -> RSS Reader
Weiches Herz
Fachliche Modelle auslagern
Rules Engines groovyrules
GroovyShell in Java einbinden: GroovyShell shell = new GroovyShell(Binding);
Endoskopische Operation
Minimal-invasiv
Im laufenden System Änderungen machen oder nachvollziehen.
Skripte ausführen in der VM, in dem das Produkt läuft
Wertvoll für Produkt-Support, Fehleranalyse, Hot-Fixes, Notfälle
Alles was man hätte programmieren können, kann man auslösen.
Emergency-Fix!
Groovy-Console
Bsp.: Live-Groovy Servlet (ULC Admin Console)
DBConnection Wrapper
def ds = Config.dataSource
ds.connection = new DebugConnection(ds.connection)
users = servletContext.getAttribute(‚users‘)
bad = users.findAll{ user -> gpath}
servletContext.setAttribute(‚users‘, users-bad)
Kluge Anpassung (Smart Configuration)
Ausführungslogik in Konfiguration
erstaz für xml-konfigurationen
Referenzen zwischen den verschiedenen XML Files (FrontIntegrator)
Typischer Anwendungsfall für DSLs, Groovy Builder, Grails plugins
Grenzenlose Offenheit
Jede Zeile Code wird änderbar
groovyblogs.org
Heinzelmännchen
Repetitive Aufgaben automatisieren
Automatisierter Build unbedingt notwendig für o4b!!
Verbindung Groovy und Ant
AntBuilder
ant.mail() (Mailtask)
Grails (under the hood mvc)
www.svenhaiges.de
Actionality
von ROR inspiriert. Convention over configuration, DRY
Java/Groovy|J2EE
Spring MVC Framework
Eckpfeiler
Spring, Hibernate, SiteMesh(Layouting)
Eigene Hibernate Mappings für Legacy-Schema
Domainmodels
Dependency Injection
Model
Domain-Klassen (grails-app/domain)
class Podcast{
String title
String feedURL
}
Erzeugung grails creat-domain-class
1:n
def hasMan = [episodes:Episode]
Persistenz per GORM
u.a. Dynamic Finders
Podcast.findByTitle(„“) -> wird alles automatisch generiert
findAllByTitleLike
Auch direkte HQL Abfragen möglich
Constraints
static constraints = {
title(size:1..50)
feedURL(unique:true}
}
Definition per Closure
grails-app/conf
DB-Konfiguration
Grails Console
View
GSP, dynamic tag libraries
Groovy Server Pages
Dynamic Tag Libraries
Sitemash
<meta name=“layout“ content=“main“/>
Controller
generierung möglich grails generate-controller
einfacher Zugriff auf Parameter, Session, Flash
Nicht jede Seite braucht einen Controller. Ein Controller gilt für eine Domänen-Objekt!
render()-methode bietet die möglichkeit für ajax
Services: Businesslogik auslagen
Features:
Unit und Functional Testing
Funktionales Testing mit Webtest
grails run-webtest
Quartz Jobs
Auch komplett integriert
Grails Plugins
AJAX mit Grails
Scriptaculous, YahooUI, Dojo werden unterstützt und automatisch angepasst
Podcasts zu groovy und grails
hansamann.podspot.de/rss
infoq.com: getting started with grails
http://tinyurl.com/y3zmos
Für kleinere Teams ideal
Eclipse Plugin – Probleme mit Scaffolding und Locking
Zeichenkodierung -> wikipedia
iso-8859-1 -> Latin1 unter Linux
cp1252(iso8859+€)
Möglichkeiten für Umlaute in Java:
Unicode Escape ü -> \u00F6
Richtiges Source-Encoding verwenden
javac -encoding UTF-8
bei ant : encoding=“UTF-8″
bei maven: <compilerArguments> <encoding>
Ab unicode 3.1 mehr als 2 Byte, deshalb jetzt 3 Byte
unicode.org version 5.0
UTF-8 bildet Unicode ab, ist nicht Unicode!
Java 5 -> Unicode 4.0
FileReader liest die Datei im Encoding von der Maschine, auf der das Programm läuft
Character.toChars()-> wenn 2 char, also 4 bytes -> Java 5
Default Encoding mit file.encoding property. allerdings nicht zur laufzeit änderbar
!!!.property Dateien MÜSSEN in iso-8859-1 sein java.util.properties!!!
native2ascii
xml
in xml deklaration immer das encoding angeben und datei immer in utf-8 speicher
csv
cp1252
cmd chcp
Datenbank
Mozilla Plugin: Live HTTP Headers
Auf Serverseite wird beim Interpretieren einer Anfrage standardmäßig immer iso-8859-1 verwendet.
Man kann dem Server aber sagen, was das encoding sein soll.
request.setCharacterEncoding(„UTF-8“) (z.b. mit einem Filter machen) (haben wir das so?)
schoenitzer.de/encoding.html
JSR204
Es gibt eigentlich keine universelle Möglichkeit um herauszufinden, welches encoding eine Datei hat, weil 2 encodings genau die gleiche datei liefern können.
Character Escaping als Möglichkeit, zwischen verschiedenen Encodings zu konvertieren
Unterschied zw. UTF-8 und UTF-16
UTF-8: 1,2,3,4 Bytes überprüfung, ob es zu einem Byte auf wirklich ein Zeichen gibt.
UTF-16: 2 oder 4 Bytes (braucht deshalb mehr zeichen als utf-8)
UTF-32: 4 Bytes
Bei Schnittstellen sollte man dafür sorgen, dass auch nur die Sachen reinkommen, dieauch akzeptiert werden.