Gabi und Sascha
Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Mobiltelefon

Das letzte Nokia Handy hat 6 Monate gehalten. Jetzt ist das Display zerbrochen. In der Hosentasche. Einfach so.

Habe mir gestern ein neues Handy zugelegt. Und den Preis mehr als halbiert. Das Samsung kostete 15€ beim Saturn am Alex.

Kohl und Pinkel

Grüzpinkel von Fleischerei Stehr in Bremerhaven schmeckt muffig. Uns zumindest. Gestern das zweite Mal damit Kohl und Pinkel gemacht und heute zum zweiten Mal komplett entsorgt. Schmeckt wie alte Schuhe. Beim ersten Mal dachten wir noch, dass der Schmalz das Problem ist. Heute wissen wir es besser.

Stehr-Pinkel: nicht noch einmal.
Wir bleiben bei Engel-Pinkel von Thormählen (Varel).

[WIESE UND DEICH]
 

Leckers Popcorn selbst machen ist kein Geheimnis, wenn ein paar Anfängerfehler vermieden werden. Zum Beispiel funktioniert es nicht Zucker über das fertige Popcorn zu streuen. Auch Puderzucker ist keine Lösung.

Ich beschreibe hier kurz wie wir leckeres, Popcorn mit karamelisierten Zucker machen.

Zutaten

  • Popcorn Mais
  • Sonnenblumenöl
  • 2 El Zucker

Zubereitung

  1. Den Boden eine Topfes dünn mit Sonnenblumenöl füllen.
  2. Das Sönnenblumenöl auf dem Herd sehr heiss werden lassen bis es dampft.
  3. Zwei Esslöfel Zucker in das Öl geben und auf dem gesamten Boden verteilen.
  4. Den Topf sofort mit einem Deckel verschliessen.
  5. Wenn der Popcorn Mais aufhört zu explodieren den Topf schnell in ein Gefäss ausleeren.
  6. Popcorn abkühlen lassen und servien.

Rezept download als DITA files.

Ein Bild, zwei unterschiedliche Bearbeitungen.

Es müssen nicht immer komplexe Photoshop-Bearbeitungen sein, um ein Bild unterschiedlich wirken zu lassen. Ich habe dieses Bild mit der Olympus E-P2 im RAW Modus aufgenommen. Danach wurde es mit Nik Silver Efex 2 bearbeitet. Das linke Bild wurde mit dem Preset "Hohe Struktur (hart)" bearbeitet. Das rechte Bild mit dem Preset "Voll dynamisch (weich)". Beide Presets wurden noch etwas verfeinert, dies aber nur unwesentlich.

Die Unterschiede sind dramatisch und beeinflussen die Aussage des Bildes ganz erheblich. Auf dem linken Bild verschmilzt der Mann und der Tarnanzug stark mit dem unruhigen Hintergrund des Bildes. Rechts ist der Mann besser freigestellt, er hebt such besser vom Hintergrund ab und wirkt dadurch auch weniger aggressiv.

Meiner Meinung nach passt die linke Bearbeitung besser zum Tarnanzug des Mannes.

[MANN IN TARNANZUG VOR HART BEARBEITETEM HINTERGRUND]
Silver Efex 2 Preset: Hohe Struktur (hart)
[MANN IN TARNANZUG VOR WEICH BEARBEITETEM HINTERGRUND]
Silver Efex 2 Preset: Voll dynamisch (weich)
 

Nachtrag zu Ladenfläche zu vermieten.

Die ausgestorbene ehemalige Einkaufsstraße in Nordenham, die Friedrich-Ebert-Straße, hat ein Luxusproblem: die Parkplatzsituation. Ich kann mich noch an Diskussionen in der Stadt erinnern, in der es darum ging die Parkplatzsituation um die Fußgängerzone und den Marktplatz zu verbessern. Und in der Tat ist es so, dass aus meiner Sicht sehr viel Parkraum zur Verfügung steht. Nördlich vom Marktplatz ein grosser Parkplatz, unter dem Marktplatz selbst eine ausreichende Tiefgarage. Westlich vom Marktplatz zwischen Jahnhalle und Gymnasium weitere Parkplätze. Dazu der neue Parkraum und das Rewe Einkaufszentrum.

Und trotzdem fühlte ich mich an die verbotene Stadt erinnert. Die Parkdauer ist auf 2 Stunden begrenzt. Warum auch immer? Für ein gemütliches schlendern durch die Geschäfte reicht eine Stunde vollkommen aus…

Im Ernst, wieso wird der Besucher hier wieder gegängelt? Wieso wird Druck aufgebaut, die Innenstadt so schnell wie möglich zu verlassen? Warum wird nicht versucht durch längere Parkdauer Besucher nicht abzuschrecken? In der aktuellen Situation würde es kaum Probleme bereiten, wenn die Parkdauer auf 4 Stunden verlängert wird.

Ich vermute fast, die Stadt will gar nichts an der aktuellen Situation in der Friedrich-Ebert-Straße verändern.

[ALTER MANN IN DER LEEREN NORDENHAMER FUßGÄNGERZONE. HINTER IHM EINE PLASTIKKUH MITTEN AUF DER STRAßE]
Nordenham - Friedrich Ebert Straße
 

Ich war am Wochenende in Nordenham, meiner Heimatstadt. Zum ersten Mal seit langer Zeit bin ich auch mal wieder in die Innenstadt, die Fußgängerzone, gegangen. Am Samstag gegen Mittag. Es war entsetzlich. Dieser ehemalige Kern der Stadt kommt herüber wie eine Geisterstadt im Wilden Westen. Die Friedrich-Ebert-Straße nördlich der Jakobstraße bis zum Peterlee-Platz ist halbtot. Solche herausragende Geschäfte wie KiK und T€di zwischen leerstehenden Schaufenstern, zwei langweiligen Klamottenläden und der Friesen-Apotheke. Die Friesen-Apotheke wird sich in den nächsten Monaten in die Phalanx der leerstehenden Schaufenster einreihen.

[FASSADE EINES LEERSTEHENDEN GESCHÄFTSHAUSES IN DER NORDENHAMMER INNENSTADT. DAVOR ZWEI FAHRRÄDER]

Nördlich der Lloydstraße wird es dann ganz bitter. Bis zur Hafenstraße gibt es fast gar nichts mehr. Ein Geschäft für Sportartikel, ein SB-Bäcker und eine Spielhölle. Und der SB-Bäcker wird im April nach nur 3 Monaten wieder schliessen. Wie bitter steht es um eine Geschäftsstraße stehen, wenn nicht einmal mehr ein SB-Bäcker überleben kann. Herr Duwe, Inhaber des Sportgeschäfts, erzählt mir, dass es ohne das Rewe Einkaufscenter an der Deichgräfenstraße noch bitterer aussehen würde. Das Einkaufscenter bringt wenigstens noch ein paar Kunden in die Fußgängerzone.

[FRAU VOR EINEM PLAKAT MIT DER AUFSCHRIFT "LADENFLÄCHE ZU VERMIETEN"]

Nicht nur in der Fußgängerzone sieht es traurig aus. Auch die Geschäfte in der Marktstraße auf dem Grundstück der ehemaligen Post ist nichts mehr. Das gleiche Bild auf der Bahnhofstraße Richtung Bahnhof. Überwiegend leere, mit Plakaten vollgeklebte Schaufenster.

Zum letzten Mal habe ich vor 8 Jahren über Nordenham berichtet. Damals habe ich mich über die ganzen Verbotsschilder gewundert. Es kam ein sehr negatives Feeling herüber. Dieses Feeling hat sich jetzt wohl auf die ganze Stadt übertragen.

Ich werde nicht mehr sehr oft nach Nordenham kommen. Dort hin zieht mich nur noch die Familie. Sonst nichts.

[LEERSTEHENDES SCHAUFENSTER EINES ORIENT-TEPPICH GESCHÄFTS IN DEM SICH DIE GEGENÜBERLIEGENDEN FASSADEN SPIEGELN]
 

Der Oleanderschwärmer hat heute die 5 Millionen Views Grenze überschritten. Ich hatte schon im Juni 2012 damit gerechnet. Doch dann brachen die Zahlen unvermittelt ein. Von über 10.000 - 38.000 Views pro Tag auf knapp 1.000. Und dann, Ende November, Anfang Dezember 2012 fehlten plötzlich 236.021 Views. Keine Ahnung warum, aber stolz auf das jetzt erreichte Ziel bin ich trotzdem.

Spannend ist zu sehen, wo sich das Bild überall verbreitet hat - selbstverständliche ohne Credits und Beachtung der Creative Common Attribution ShareALike (CC BY-SA) Lizenz :-) Die Google Bildersuche leistet da ganz hervorragende Arbeit.

[OLEANDERSCHWÄRMER - SCHMETTERLING ALS CLOSE-UP, FORMATFÜLLEND]
 

Angesichts der zunehmenden Verdrohnung der westlichen Welt werden wir noch vor 2020 die Diskussion und Umsetzung von Kfz-Kennzeichen auf Fahrzeugdächern haben. Diese können dann von Drohnen wunderbar erkannt und getrackt werden.

Ich habe mich in den letzten Tagen mit der Entwicklung eines Java Annotation Processors befasst. So ein Prozessor hängt sich seit Java 6 transparent in den Compiler ein und kann Java Annotationen verarbeiten. Um dies zu erreichen muss die Implementierung des Processors für das Service API vorbereitet werden. Und damit bekam ich das erste Problem, welches zu lösen war.

Ich verwende Maven für die Umsetzung des Projektes. Wenn in einem Maven Projekt die entsprechenden Ressourcen angelegt werden, dann sind diese bereits beim Compilerlauf erreichbar. Da die Implementierung aber noch nicht vorhanden ist, kommt es zu einem Fehler und Abbruch des Compilerlaufs.


    MAVEN_PROJECT
         ├─ pom.xml
         └─┬─ src
           └─┬─ main
             └─┬─ resources
               └─┬─ META-INF
                 └─┬─ services
                   └── javax.annotation.processing.Processor

Um dies zu vermeiden, musste ich die META-INF/services/ javax.annotation.processing.Processor nachträglich in das erzeugte JAR einbringen. Dies wird zur Zeit mit dem Maven TrueZIP Plugin erledigt. Dabei sieht das Project Layout wie folgt aus:


    MAVEN_PROJECT
         ├─ pom.xml
         └─┬─ src
           └─┬─ main
             ├─── resources
             └─┬─ service-data
               └─┬─ META-INF
                 └─┬─ services
                   └── javax.annotation.processing.Processor

Der Nachteil dieser Lösung: der Processor kann nicht im gleichen Projekt getestet werden. Deswegen habe ich für de Tests auf das Maven Invoker Plugin zurückgegriffen. Dabei wird innerhalb des Maven Projektes in der src-Hierarchie ein it-Hierarchie eingerichtet. it steht für Integration Test. Innerhalb dieser it-Hierarchie werden dann weiter Integrationstest Projekte angelegt. Diese Projekte sind ganz normale Maven Projekte. Innerhalb ihres <dependencies> Elements wird auf das Basisprojekt des Annotation Processors referenziert. Als >scope> wird dabei compile verwendet, da der Processor nicht für die Runtimeumgebung benötigt wird, sondern nur für die Erstellung von Artefakten.


    MAVEN_PROJECT
         ├─ pom.xml
         └─┬─ src
           ├─┬─ main
           │ ├─── resources
           │ └─┬─ service-data
           │   └─┬─ META-INF
           │     └─┬─ services
           │       └── javax.annotation.processing.Processor
           └─┬─ it
             ├── test-project-1
             ├── test-project-2
             └── …

Die POM Datei des Basisprojektes sieht dann ungefähr wie folgt aus (unwichtige Teile wurden der besseren Lesbarkeit weggelassen):


    <project>

        <modelVersion>4.0.0</modelVersion>

        <groupId>processor-project</groupId>
        <artifactId>simple-annotation-processor</artifactId>
        <version>0.1.0-SNAPSHOT</version>

        <properties>
            <archive>${project.build.directory}/${project.build.finalName}.jar</archive>
        </properties>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>truezip-maven-plugin</artifactId>
                    <version>1.1</version>
                    <executions>
                        <execution>
                            <id>copy-into</id>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                            <phase>package</phase>
                            <configuration>
                                <fileset>
                                    <directory>${basedir}/src/main/service-data/</directory>
                                    <includes>
                                        <include>**/*</include>
                                    </includes>
                                    <outputDirectory>${archive}</outputDirectory>
                                </fileset>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

        <profiles>
            <profile>
                <id>run-its</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-invoker-plugin</artifactId>
                            <version>1.8</version>
                            <configuration>
                                <projectsDirectory>src/it</projectsDirectory>
                                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                                <pomIncludes>
                                    <pomInclude>test-project-1/pom.xml</pomInclude>
                                    <pomInclude>test-project-2/pom.xml</pomInclude>
                                </pomIncludes>
                                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                                <goals>
    	                            <goal>clean</goal>
                                    <goal>test</goal>
                                </goals>
                            </configuration>
                            <executions>
	                        <execution>
                	            <id>integration-test</id>
	                            <goals>
                                        <goal>install</goal>
                                        <goal>integration-test</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>
    </project>

Die Integrationstest Projekte POMs sehen ungefähr wie folgt aus:


    <project>

        <modelVersion>4.0.0</modelVersion>

        <groupId>processor-project</groupId>
        <artifactId>simple-annotation-processor-integration-test-1</artifactId>
        <version>0.1.0-SNAPSHOT</version>

        <dependencies>
            <dependency>
                <groupId>processor-project</groupId>
                <artifactId>simple-annotation-processor</artifactId>
                <version>0.1.0-SNAPSHOT</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </project>

Fazit

Die Maven Projekt Konfiguration für Java Annotation Processor Implementierung ist komplexer als für normale Projekte. Am Ende lohnt sich der Aufwand. Durch die Prozessorimplementierung für Annotationen muß weniger Code manuell implementiert werden. Der Prozessor übernimmt diese fehleranfällige Arbeit der Codeerzeugung.