Samstag, 9. Januar 2010
Wie in den letzten Jahren auch, habe ich mir auch dieses Jahr wieder "das kritische Jahrbuch" von Gerhard Wisnewski gegönnt. Mit 6,95 EUR ja auch durchaus im Rahmen. Die Bücher sind generell zwar nicht für bare Münze zu nehmen, sinnvolle Denkanstöße geben sie aber durchaus. Dennoch ist diese Version anders. Es wirkt, als wäre es nur nebenbei geschrieben worden - hektisch zusammengestellt. Vor allem aber wirkt es als Werbung für die anderen Bücher von Wisnewski, was man den letzten beiden Jahresrückschauen nicht anmerken konnte. Einige Beispiele - Bereits im letzten Jahr wurde der Band die Bandbreite ein paar Seiten eingeräumt. Dieses Jahr wurde direkt im Vorwort nochmal auf die Band hingewiesen, dass viele Songtexte Futter von Wisnewskis Büchern bekommen haben. Gut und schön, aber da hätte auch ein Satz gereicht.
- Neues über Haider: Anstatt von seinen Theorien aus dem Buch von letztem Jahr zurückzutreten, spricht er kurz über Haider, dann über die Gefährlichkeit von Airbags und schreibt als letzten Satz etwas wie "Was den Faill Haider betrifft, das steht in meinem anderen Buch".
- Bilderberger Konferenz: Kaum Fakten außer ein paar Details über die hermetische Abriegelung (ein paar Infos über die Besucher diesen Jahres zum Beispiel?). Dafür aber ein weiterer Verweis auf ein im Jahr 2010 erscheinendes Buch von ihm.
- Bibel: Jetzt kommt es nochmal unerwartet. Wisnewski nimmt den Besuch vom Papst in der Moses-Gedenkstätte zum Anlass mal in der Bibel zu blättern und das gesagte des Papstes mit geschriebenen in der Bibel zu vergleichen. Zwischen Schweinegrippe und Bilderbergertreffen Bibelstunde? Fehlte eine echte Story?
- Werbung für andere Bücher: Quellenangaben sind gut und wichtig. Aber wenn man sich auf ein Buch bezieht wie "Obama - der falsche Messias" vom Kopp Verlag ist es irgendwie auch angebracht, darauf hinzuweisen, dass man selber bei diesem Verlag ebenfalls Bücher veröffentlicht. Sonst entsteht da ein Geschmäckle.
- Mondlandung: Hier hat Wisnewski bereits ein Buch drüber geschrieben und wird hier nicht müde zu erwähnen, dass die Mondlandung gefaked ist. Als Anlass nahm er, dass sich Peter Hintze eine deutsche Mondmission erträumt hat. Insgesamt drehten sich gleich drei Artikel in dem Buch über dieses Thema.
Insgesamt lässt das Buch wegen dieser Punkte einen sehr zwiespältigen Eindruck, obwohl durchaus interessante Themen wie Bundestagswahl, Tanklastbombardierung, Schweinegrippe, Iran und IT-Zensur (hier offenbart der Autor allerdings doch durchaus technische Verständnisprobleme) mit dabei waren.
Freitag, 8. Januar 2010
Es fällt schwer, dieses Buch zu kategorisieren. Es ist außerdem eines dieser Bücher, nach denen man nie sucht, die man nur zufällig im Regal findet. Günter Dück ist promovierter Mathematiker und einer der Chefforscher bei IBM. Und trotzdem schreibt er über kein technisches Thema, sondern nur wie Technik uns helfen kann, unterschiedliche Menschen in ihre perfekte Arbeitsumgebung einzugliedern. Dazu fängt er ganz weit unten an (und das war schon sehr interessant). Bei der Einstufung von Persönlichkeiten mit Hilfe von Keirsey bzw dem Meyers-Briggs-Typindikator (interessant auch hier die Kritik an diesem System in dem Artikel). Das Buch ist garniert mit Beispielen, wieso viele Meßsysteme (sei dies in der Wirtschaft oder in der Schule) das falsche Messen, weil sie lediglich auf einen bestimmten Typus von Person optimiert sind oder gar nur auf Erhaltung des Systems anstatt auf Erweiterung. Dass unsere Arbeitswelt inzwischen aber sehr viel komplexer ist, weiß eigentlich jeder, nur in die Art und Weise der unterschiedlichen Behandlung der Mitarbeiter hat dies noch keinen Einzug gehalten (zum Beispiel wird dies noch kompliziert bei Autisten, die vielleicht die Arbeit eines Dutzend anderer Mitarbeiter in einem Bruchteil der Zeit erledigen könnten, aber dennoch auch zwischendurch nicht berechenbar unproduktiv sind und noch einen Pädagogen im Team benötigen würden - aber in der Summe immer noch produktiver wären). Insgesamt also eine absolute Leseempfehlung, allerdings sollte man sich für die 500 Seiten durchaus etwas Zeit nehmen, um auch noch drüber räsonieren zu können. Zusätzlich hat der Autor eine eigene Homepage (ok, das ist jetzt noch nichts schwer spezielles tolles) mitsamt regelmäßig erscheinender Kolumne. Sollte man mal abonnieren.
Donnerstag, 7. Januar 2010
Das nächste Buch von Michael Jürgs, nachdem ich gestern schon so über Seichtgebiete frohlockte. In diesem Fall bin ich dann auch leicht positiver überrascht. Da ich 1989 noch jung und klein war, ist diese ganze Sache mit der Wende für mich eigentlich immer so unter "ferner liefen" gelaufen. Hier immerhin ist der erste Teil eine ganz interessante Zusammenfassung der Ereignisse, und der zweite Teil des Buches die Begegnung mit einigen Menschen aus dem Osten, die über die Zeit damals erzählen. Das Buch ist zwar hier und da ganz nett zu lesen, erweckt aber immer wieder den Eindruck, als sei es nur dazu geschrieben, unbedingt zu zeigen, dass Unterschiede zwischen Ost und West existieren (welch Wunder nach einer derart kurzen Zeitspanne) - irgendwie, um auf der Jubiläumswelle mitzureiten. Daher ist der Autor erstmal wieder von der Bücherliste gestrichen.
Mittwoch, 6. Januar 2010
Das Buch lag eigentlich so in der Buchhandlung rum, und da ich bereits "Wie gehts Deutschland" vom gleichen Autor in der Hand hielt, habe ich das hier auch gleich mitgenommen. Ja, und das soll eigentlich auch schon die Ausrede sein - es gibt nämlich keinen anderen Grund, es mitgenommen zu haben.Da ich Michael Jürgs ein paar Mal in Interviews in Zapp bewundern konnte, dachte ich mir, vielleicht schreibt der ja auch ganz interessant. Seichtgebiete ist vieles, interessant allerdings nicht. Das erste Kapitel, eine absichtlich vor Polemik und Ironie triefende Einleitung auf das Fernsehen als Intelligenzabsauger könnte man noch als witzig gemeinten Einstieg verstehen. Allerdings erholt er sich nicht mehr von dieser Polemik und setzt von da an nur noch seinen eigenen Maßstab für Bildung, Weltsicht und kulturelles Fernsehprogramm an. Aber nochmal kurz zum Inhalt: Das Buch soll zeigen, "warum wir hemmungslos verblöden". Genau das tut es aber nicht. Natürlich kann man die Schwachsinnssendungen des deutschen Fernsehens aufzählen. Kann man ein Buch mit füllen. Aber dann muss man keine Erklärungen abliefern, warum das so ist. Und genau die fehlt. Aber sowas wäre wahrscheinlich auch nicht im Bertelsmann Verlag erschienen. Empfehlung: Perfekt für den Kamin.
Dienstag, 5. Januar 2010
Nachdem ich in den letzten drei Jahren so gut wie nur in Java entwickelt habe (einige private Gehversuche mit Grails mal abgesehen), war es für mich einfach mal an der Zeit, sich eine weitere Programmiersprache anzusehen. Da ich mit Ruby nie richtig warm geworden bin, ist es für mich natürlich am einfachsten, etwas Java sehr nahestehendes zu testen. So kam ich zu Scala. Ist natürlich reiner Zufall, dass Play in der Version 1.1 Scala Support haben wird...
Venkat Subramaniam gibt in Programming Scala: Tackle Multicore Complexity on the Java Virtual Machine (immerhin ist der Name des Titels so länger als der des Autors) eine ca. 250 lange Einführung in Scala. Unterschiede zu Java, Actors, Exceptions, Traits, Unit Tests... das komplette Paket wird abgearbeitet. So weit, so informativ. Allerdings fand ich das Buch jetzt nicht spezifisch zum Thema Multicore Complexity - was allerdings auch an mir liegen kann. Ich hatte durchaus Probleme, mich in die Andersartigkeit von Scala reinzudenken. Vielleicht sollte man sich viel öfter mal wieder eine andere Programmiersprache anschauen. Irgendwie kommt man doch aus der Übung. Ansonsten kann man das Buch für einen schnellen Überblick aber durchaus weiterempfehlen.
Montag, 4. Januar 2010
Da ich hier noch eine ganze Elle an Büchern habe, werde ich diese in den nächsten Tage sukzessive aufarbeiten. Fangen wir an mit einem nicht-technischen Buch, Blackwater von Jeremy Scahill. Das Buch soll die Thematik um das Unternehmen Blackwater, neuerdings XE, beleuchten. Dass Blackwater inzwischen als Ersatz für Armeen verwendet wird, ist nichts neues. Dass diese Soldaten im Endeffekt Söldner aus aller Herren Länder sind, ebenso wenig. Das diese Soldaten unter anderem im Irak kein Verhalten wie übliche Zivilisten an den Tag legen, hat man in der Presse auch schon gelesen. Einzig die Ausmaße - ein Drittel der Ausgaben des US-Militärs gehen an private Unternehmen - sind ganz interessant, wobei diese auch nur als Randnotiz gehandhabt werden. Einer der fehlenden Erklärungen sind Grundlagen. Wieso kann eine Firma wie Blackwater so groß werden? Ist hier nicht ein Versagen des Staates zu monieren? Verteidiung und Angriff sollte doch den Ländern und nicht Privatarmeen überbleiben. Leider steigt das Buch an der Stelle später ein. Insgesamt ganz nett für zwischendurch, aber wenn öfter News abseits der gedruckten Presse liest, steht auch hier wenig neues oder interessantes.
Mittwoch, 23. Dezember 2009
In the last article I used maven to resolve dependencies for play modules. This article does the same, but uses ivy. I chose ivy, because it seems the best suited tool for play (also check the discussion on the mailing list). In order to understand it, it is not needed but easier to have read the maven based article before. The main disadvantage of Maven (from the play perspective) is its core feature: Maven comes with a full life cycle package (testing, packaing) including dependencies, where as ivy's only right to exist is dependency resolution.
As I could not get ivy to work in standalone mode (the jar files were not copied into the lib directory), we will have to stick with using ivy as an addition to ant - this how it is supposed to be used anyway. 1. Create the build.xml file
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="play-module-foo" default="run"> <target name="retrieve" description="--> retrieve dependencies with ivy"> <ivy:retrieve /> </target>
</project> The build file is also available here.
2. Create the ivy.xml file
Like in the maven file, it is important to exclude certain dependencies, which already ship with play and to include the dependencies. Before I do a lot of useless copy & paste, check the file here. If you take a closer look, you will also note, that I removed the javadoc and sources from the dependency resolution. <?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0"> <info organisation="org.playground" module="play-module-foo" /> <dependencies defaultconf="*->*,!sources,!javadoc"> <dependency org="org.freemarker" name="freemarker" rev="2.3.16" /> <exclude module="activation" /> <exclude module="antlr" /> <exclude module="backport-util-concurrent" /> <exclude module="bcprov-jdk15" /> <exclude module="c3p0" /> <exclude module="cglib-nodep" /> <exclude module="commons-beanutils" /> <exclude module="commons-codec" /> <exclude module="commons-fileupload" /> <exclude module="commons-httpclient" /> <exclude module="commons-lang" /> <exclude module="commons-logging" /> <exclude module="core" /> <exclude module="dom4j" /> <exclude module="ehcache" /> <exclude module="ejb3-persistence" /> <exclude module="ezmorph" /> <exclude module="filters" /> <exclude module="geronimo-servlet_2.5_spec" /> <exclude module="groovy-all" /> <exclude module="gson" /> <exclude module="hibernate" /> <exclude module="hibernate-core" /> <exclude module="hibernate-commons-annotations" /> <exclude module="hibernate-entitymanager" /> <exclude module="hsqldb" /> <exclude module="jamon" /> <exclude module="jaxen" /> <exclude module="jsr107cache" /> <exclude module="jta" /> <exclude module="junit" /> <exclude module="log4j" /> <exclude module="lucene-analyzers" /> <exclude module="lucene-core" /> <exclude module="mail" /> <exclude module="oval"/> <exclude module="snakeyaml" /> <exclude module="slf4j-api" /> <exclude module="slf4j-log4j12" /> </dependencies> </ivy-module> Go here for the ivy.xml file. 3. Run the ant taskant -lib /usr/share/java/ivy.jar retrieve
This ant task automatically copies the files into the lib/ directory no config needed. You might need to adapt your ivy path. Varies per operating system. That's it, you're done. Next step could be publishing, but I did not dig that far yet.
Mittwoch, 23. Dezember 2009
Die ersten Links diesen Monat. Man könnte denken, ich hätte genug anderes zu tun. Ist auch irgendwie so. Daher wird es dieses Mal weniger Tagesnews geben (die sind ja eh schon veraltet), sondern mehr generelles:
Dienstag, 22. Dezember 2009
Play does not ship with any dependency resolution - at least I am not aware of. However, especially when developing webapps needing a lot of external libraries it could be quite handy to take at least this part away from maven and combine it with play. Short disclaimer: I am not the opinion that maven is the perfect tool for this task, but currently it works. Someone with a little bit more ivy know how might be able to build something far better.
Every module you are shipping, should ship with all depedencies resolved. This post should not change anything in this regard. But how you collect the depedencies can be done better, than just copying them together for the module. This is what this post is about.
1. Creating the pom.xml and add your dependencies.Creating the pom.xml is quite easy. Lets assume for the moment, one of my customers wants freemarker as a template language. So adding the dependency is pretty straightforward.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.playframework</groupId> <artifactId>someapp</artifactId> <version>0.0.1-SNAPSHOT</version>
<dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.16</version> </dependency>
</dependencies>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <outputDirectory>lib/</outputDirectory> </configuration> </plugin> </plugins> </build>
</project>
2. Copy all dependencies over the lib/ directory
Adding the dependency is nice, but does not help play to find the needed jar files, when starting up the module. Therefore they must be copied over into the lib/ directory. Cheerfully maven comes with a "dependency" plugin, which can be easily adapted for this task. All you need to call is
mvn dependency:copy-dependencies That's it. As you do not perform any maven lifecycle operations, you should not have a target/ directory. If so, just do a "mvn clean". Please be aware, that not needed dependencies are not removed from the lib/ directory. The simple solution is always to remove the lib/ directory and then copy the dependencies over again. It is very important not to put the configuration part of the plugin inside an execution block, as this would bind you to the maven lifecycle.
3. Exclude the libraries already included in play
If you want to be sure, not to get in some confusing class loader trouble, because one of your dependencies had a transitive dependency to a library already included in play, we should exclude the libraries used internally by play. All we need to do is do add one line removing the play specific dependencies as done above in the configuration section. I hope this catches all. If not, feel free to add whatever you want. Be aware: This does not save you from double checking, that all your modules use the same library versions.
<excludeArtifactIds>activation,antlr,backport-util-concurrent,bcprov-jdk15,c3p0,cglib-nodep,commons-beanutils,commons-codec,commons-fileupload,commons-httpclient, commons-lang,commons-logging,core,dom4j,ehcache,ejb3-persistence,ezmorph,filters,geronimo-servlet_2.5_spec,groovy-all,gson,hibernate,hibernate-core,hibernate-commons-annotations, hibernate-entitymanager,hsqldb,jamon,jaxen,jsr107cache,jta,junit,log4j,lucene-analyzers,lucene-core,mail,oval,snakeyaml,slf4j-api,slf4j-log4j12</excludeArtifactIds>
4. Optionally add play modules in the repository
This step helps you only, when develop inside of a IDE like eclipse, and want to make sure, you've always your jar files available. Even your modules. Why not just adding them to your local repository and feel fine.
mvn install:install-file -Dfile=modules/lib/play-bespin.jar -DartifactId="play-module-bespin" -DgroupId="org.playframework.modules" -Dversion=1.0.0 -Dpackaging=jar
Don't forget to add them to your excludeArtifacts as well in order to not have clashes.
5. Finished
Now that's it for today. I have put the pom.xml into pastebin. Have fun and feel free to comment.
Sonntag, 6. Dezember 2009
Da ich hier aktuell nicht wirklich zum Schreiben komme, gibt es halt ein wenig Lesestoff für zwischendurch. Zum einen ist diese Woche das neue Hintergrund Magazin herausgekommen - eines der wenigen Magazine, das es sich noch zu lesen lohnt. Zum anderen gibt es im aktuellen PDF Magazin "Kaffeeklatsch" einen kleinen Artikel über das Play Webframework von mir. Leider ist das PDF noch nicht ins Archiv gerutscht, so dass man das ganze abonnieren muss. Kann aber sowieso nicht schaden, wenn man sich für Softwareentwicklung interessiert. Und jetzt wieder Nikoläuse essen oder so...
Sonntag, 22. November 2009
Endlich wieder richtig viel Weihnachtsschmuck überall. Das vermisse ich ja die restlichen 10,5 Monate im Jahr so.
- Beim Köhntopp gibt es einen netten Artikel, dass Google immer als Suchmaschine verstanden wird, aber eigentlich etwas ganz anderes ist. Und daher auch noch viel interessantes Zeug kommen wird. Erst seit der Attacke auf die Navihersteller - die ja auch noch damit beschäftigt sind, sich selber zu zerfleischen - wird das vielleicht in Öffentlichkeit wahrgenommen.
- Es gibt einen primitivien Polizeifragebogen "Gewalt gegen Polizeibeamte" mit Fragen, ob man als Kind geschlagen wurde, um zu erklären, wieso das eventuell passiert. So motiviert man die Jungs natürlich tierisch.
- Überraschung! Peer Streinbrück im Aufsichtsrat von Thyssen-Krupp.
- Überraschun 2! Falls sich noch jemand an die Steuerfahnder aus Frankfurt erinnert, die Millionen in den Banken gefunden haben und daraufhin als berufsunfähig gebrandmarkt wurden: Der Psychiater, der das Gutachten erstellt hat, muss 12000 EUR Strafe zahlen und Hessens Finanzminister bekommt eine Anzeige. Die Leute sind trotzdem am Ende.
- Eine sehr interessante Rede von Tom Schimmeck über feste und freie Journalisten und der politische Einflluss, wo er mal richtig abrechnet. Absolut lesenswert.
- Bei Weissgarnix gibt es einen sehr interessanten Artikel: Vergesst die Staatsschulden... ich weiss noch nicht, was ich davon halten soll.
- Bei SpOn gibt es einen interessanten Artikel zu den Edelweißpiraten, einer Widerstandgruppe im dritten Reich.
- Einfach und effektiv Telefonüberwachung jammen.
- Java News: GWT 2.0 RC ist raus. Terracotta kauft gerade alle Infrastruktur Software im Java Bereich die noch frei ist. Nach EhCache jetzt Quartz. Entweder will sich da jemand selbst für einen Kauf aufhübschen oder einfach mit den großen wie Jboss und SpringSource spielen. Anscheinend wird Terracotta auch noch ein wenig als Mysterium wahrgenommen. Wenn man mit Hilfe von Libraries zeigen kann, was man tut, ist das natürlich auch eine Lösung.
Sonntag, 8. November 2009
Long time no links. Aber meine Zeit ist irgendwie in letzter Zeit nicht vorhanden. Und ich kann nicht mal genau sagen, wieso. Prokasdingsbums bestimmt. - Im Moment liest man aufgrund des Jahrestages überall über den missglückten Anschlag auf Hitler. Irgendwie hatten wir das auch nie in der Schule. Alternativ auch beim NPD Blog.
- Eines der heißeren Themen aktuell ist eindeutig die Schweinegrippe. Die Nachdenkseiten und duckhome haben dazu etwas interessantes. Tote gab es in Schweden nach der Impfung, und auch in München, hier aber das erste Opfer der Schweinegrippe.
- Ein interessanter Vergleich zwischen dem Untergang der Sovietunion und dem jetzigen Niedergang der USA - auch wenn man das alles sehr vorsichtig genießen sollte.
- Datenschutzdings: Die Post verrät (natürlich ganz legal) Kontostände und -bewegungen an externe Berater. Netzpolitik deckt außerdem Probleme beim Sparkassenhop und bei Libri (Buchdienstleister für fast alle großen in Deutschland) auf - mit zweitem Teil. Gern mehr davon.
- Interessante Karriere des Chefs der Grünen in Saarland. Da will man doch glatt noch mehr erfahren.
- Neues Level: Auf der A81 kann man jetzt übers Internet Webcams anschauen. Für 900000 EUR. WTF? Immerhin war wohl noch das Terrorismus Argument zu lächerlich, man soll sich lediglich "ein Bild der Verkehrslage" machen können.
- Das hier ist ganz interessant: Bertelsmann will aus Scoyo raus. Ich hatte Scoyo eigentlich als eines der strategischen Projekte gedacht. Indem man die Kinder der Klassen 1-7 an diese Lernplattform bindet, kann man gleichzeitig die eigenen Bücher zuerst an die Kinder verkaufen, und sich dann auch eher in den Schulbuchmarkt pushen, der ja immer noch stark von Cornelsen et al geprägt ist. Mal schauen wie das Problem jetzt angegangen wird.
- Oh man: Wenn man bei Daimler Bluttests für Einstellungen anprangert und selber dasselbe macht weiss man doch, dass die Story auch nur gekauft wurde. Hilft nicht gerade zur Authentizität des Berichts bzw. wie stark ein Sender dahinersteht. Wobei es ja vielleicht heute auch nur noch wichtig ist, andere Nachrichten zu haben als die Konkurrenz. Das Kriterium war ja erfüllt.
- 50 Polos zu gewinnen: Genau diese SMS habe ich neulich auch von O2 bekommen und musste da spontan an diesen Beitrag von Stefan Niggemeier denken.
- Beim Autofahren dran denken: Ein Festnetzmobilteil ist kein Handy... deutsches Recht
- Eine meiner Tagesshow Lieblingstitel in der letzten Woche: Rezession hilft dem Klimaschutz. Jetzt hat man wenigstens einen Grund, die Effizienz nicht zu steigern.
- Oha, die edle Privatbank Sal Oppenheim ist glanzlos von der deutschen Bank geschluckt worden. Für eine Milliarde Euro. Wenn man bedankt, dass die Bank angeblich erst Kunden ab 3 Mio. Konogröße betreut, müssen die ja unglaublich in der Kreide stehen oder haben keine Kunden mehr.
- Ferner liefen: Xtra3 hat die neuen Bücher von Günter Wallraff, passend dazu Wege in die Depression. Hier noch eine interessante "Rettet die Haie" Doku (ist vielleicht etwas übertrieben, man merkt Hannes Jaenicke an, dass er mit Leib und Seele Schauspieler ist). Ich finde Haie ja cool.
- Java Special: Ein paar Worte zum Thema MVC in JSF, und einfacher Enterprise Architektur. Hier noch ein super Tip: Das Ersetzen aller diakritischer Zeichen (Umlaute, Accenirgendwas, etc).
- Nettes Tool für Mockups: Mockingbird, ohne Flash nur mit der Cappucino JavaScript Bibliothek.
- Und zum Abschluss noch ein cooler Bericht über Jason Fried von 37 Signals und wie er arbeitet. Mal allen Chefs vorlegen..
Dienstag, 3. November 2009
I am currently evaluating the play framework. So far it seems to me, that it is a very pragmatical framework with really nice ideas apart from any specifications but just to get the job done. I like that approach very much. The mailinglist is quite alive and the developers are very responsive. If you need to have a quick development process, check it out. In the next few paragraphs I will describe howto to add basic search capability to the yabe sample (by using lucene in the backend, but you wont get any contact with the lucene API), which features yet another blog engine. This example assumes that you have taken a look at the yabe example and that you are familiar with the structure of a play project. Everything else is quite understandable from the code I will paste. Of course this code is rough, but it is only here to show how quick you can get out some already nice featured prototypes. Furthermore you should read the small text about the search module, which needs to be activated as well. - The first step is to annotate your Post class with the @Indexed annotation and to annotate the content and title property with the @Field annotation (you need to import the search.jar from your play/modules/search installation in eclipse in order to use the import feature).
- The second step is to add a search controller to our Application (in Application.java):
public static void search(String search) { Query query; String highlight; if (search.contains(":")) { query = Search.search(search, Post.class); highlight = search.split(":", 2)[1]; } else { query = Search.search("content:"+search, Post.class); highlight = search; } List results = query.fetch(); render(results, search, highlight); }
- Third step: Add the search form to main.html (for example between header and main divs)
<div style="margin-bottom: 20px;">
#{form @Application.search()} <p> <input type="text" name="search" id="search" /> <input type="submit" value="Search" /> </p> #{/form}
</div> - Forth step: Create search query result page, search.html
#{extends 'main.html' /} #{set title:'Search results' /}
<p> <div>Your query for <b>${search}</b> returned ${results.size()} result(s)</div> </p> <p> #{list items:results, as:'result'} <div><a style="color : white" href="@{Application.show(result.id)}?highlight=${highlight}">${result.title}</a></div> #{/list} </p> - In theory, we are finished now. But that would be boring. What about highlighting the results in the text? Using a little jquery magic (from here) and the highlight parameter from above can do the trick. The first part is to adapt the show.html file for this, where I put the javascript code into. The code search for the class "real-content" and highlights inside that class the specified word, in this case the highlight parameter (from the request). So all the rendering is done client side.
<script type="text/javascript">
jQuery.fn.highlight = function (str, className)
{
var regex = new RegExp(str, "g");
return this.each(function ()
{
if (str.length > 0) {
this.innerHTML = this.innerHTML.replace(regex, "<span class=\"" + className + "\">" + str + "</span>");
}
});
};
$(document).ready(function() {
$(".real-content").highlight("${params.highlight}", "highlight");
})
</script>
- The second part is needed in display.html, where we need to change some classes, especially to mark our blog content with the real-content class. So I just wrapped the content rendering:
<div class="post-content">
<div class="about">Detail: </div>
<div class="real-content">${_post.content.nl2br()}</div>
</div> - Last but not least, you need to add a new highlight class to main.css, for example .highlight { background : red; }
Now, try it. Reload your app, and check by searching for "fowler" or for "model" (returning two matches with the default data) and watch the highlighting. You can also search for "title:MVC", if you want to search only in titles. Of course, some glitches are included. You cannot search for "Play!" what will be interpreted as special lucene parameter, words shorter than three letters are not possible either. But you can work that out I guess. What else can I say about play? I think it should get some more attention. There are really nice ideas (like the "we dont need no real session" approach for rest and scalability, the caching aspect, the scalability ground works. I also like the templating and the strict conventions which should help you organize yourself. Next steps for me and play: I'll hope to find the time to add dojo widgets to the crud module, so you would have a much nicer client validation as well as things like NumberTextBoxes and calendar widgets (but that's just me being more a dojo fan than a jquery one).
Mittwoch, 28. Oktober 2009
Irgendwie hat dieses Buch schon seit mehreren Monaten bei mir ein Schattendasein gefristet - ich glaube ich hatte nur Angst, zu merken, wie langsam ich eigentlich lese...Jetzt hatte ich mal Zeit das Buch durchzuarbeiten. Länger als ein Wochenende braucht man allerdings nicht. Viel von dem, was in diesem Buch als Tip gepriesen wird, beherzigt man sowieso schon, wenn man viel liest. Andererseits ist man natürlich auch weit von den mehreren hundert Wörtern pro Minute entfernt, an die man sich heran tasten können soll. Einer der interessantesten Punkte - weil ich damit auch oft Probleme habe - ist der Tip, dass man prinzipiell schneller lesen soll, weil sich das Gehirn sonst aus Langeweile auf andere Dinge konzentriert. Ansonsten gibt es halt so Dinge, wie die Menge der Fixpunkte pro Zeile zu reduzieren, in dem man Wortgruppen und Symbole (auch Bedeutungen) zusammenfasst. Das sind aber alles Dinge, die man nur mit viel Übung hinkriegt. Ich werde also demnächst mal probieren, "bewusster" zu lesen. Mal schauen ob es klappt. Für 9 EUR kann man sich das Buch zwar kaufen, aber ich denke man sollte ähnliche Informationen mit ein wenig Googlen ebenfalls finden.
Dienstag, 27. Oktober 2009
Nachdem das Buch raus war, musste ich es natürlich auch kaufen und zu den Restlichen stellen, nicht ohne es vorher zu lesen natürlich. Diesmal berichtet Günter Wallraff nicht nur ein besonderes Thema sondern mehrere. Er tarnt sich als Schwarzer (jetzt auch als "Schwarz auf weiß" im Kino), als Obdachloser, als Callcenteragent (wurde bereits in der Zeit berichtet), als Mitarbeiter in einer Brotbackfabrik, die Lidl beliefert (wurde ebenfalls schon in der Zeit berichtet). Dies ist der wie immer etwas plakative Teil des Buches, in dem man merkt, dass vieles was er schreibt alleine von den Formulierungen schon sehr suggestiv ist, und wenig Platz für eine eigene Interpretation der Dinge lässt - besonders auffällig fand ich dies im ersten Kapitel, in dem er sich als schwarzer tarnt (witzigerweise ist er in dieser Rolle erkannt worden).
Sehr viel interessanter ist in meinen Augen der zweite Teil des Buches, obwohl er dafür nicht einmal in irgendwelche Rollen schlüpfen musste, sondern einfach von anderen Teilen "der schönen neuen Welt" berichtet, namentlich der Ausbeutung von Auszubildenen in der Edelgastronomie, dem Starbucks Imperium, dem System der Mitarbeiterbespitzelung bei der Bahn sowie einem Anwalt, der es sich zur Aufgabe gemacht hat, unliebsame Betriebsräte aus Unternehmen zu entfernen. Dieser Teil lebt sehr viel mehr von Auflistung von Fakten und ist richtig interessant, gerade das Kapitel mit der Bahn und dem Anwalt sind wirklich harter Tobak. Ansonsten bleibt zu sagen, dass 14 EUR für ein Taschenbuch zwar Geld sind, aber investigative Recherchen auch eine kostspielige Sache. Ergo: Empfehlung!
|