Samstag, 8. Dezember 2012

Groovy Eclipse Maven

Immer Probleme mit Eclipse und der pom.xml gehabt
Es konnte das groovy-eclipse-compiler Plugin nicht gefunden werden.
Plugin nicht gefunden

Eclipse groovy mvn software nachinstallieren

http://groovy.codehaus.org/Eclipse+Plugin
Groovy-Eclipse M2E integration
Groovy Compiler 2.0
Groovy-Eclipse nachinstallieren

Erstellen des Projekt

Mit mvn archetype:generate das Projekt erstellen:

mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.groovy \ 
-DarchetypeArtifactId=groovy-eclipse-quickstart \ 
-DarchetypeVersion=2.5.2-SNAPSHOT \ 
-DgroupId=foo \ 
-DartifactId=bar \ 
-Dversion=1 \ 
-DinteractiveMode=false \   
-DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/

Auf der Webseite steht die groovy-eclipse-quickstart 2.5.2-01. Das hat nicht funktioniert. Ein kurzer Blick aufs codehaus Repo zeigte, dass die Version nicht aufgeführt ist. Die letzte ist die 2.5.2-SNAPSHOT

Importieren in Eclipse

Nach der Erstellung des Projektes Eclipse öffnen und: File -> import -> Existing Maven Project. Dann das Projekt auswählen und fertig.

pom.xml

Die pom.xml sieht wie folgt aus:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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>bar</groupid>
  <artifactid>foo</artifactid>
  <version>1</version>
  <name>foo Groovy Eclipse Maven Java App</name>
  <build>
    <plugins>
      <plugin>
        <groupid>org.apache.maven.plugins</groupid>
        <artifactid>maven-compiler-plugin</artifactid>
  <version>2.3.2</version>
        <configuration>
          <compilerid>groovy-eclipse-compiler</compilerid>
        </configuration>
        <dependencies>
          <dependency>
            <groupid>org.codehaus.groovy</groupid>
            <artifactid>groovy-eclipse-compiler</artifactid>
            <version>2.5.1-M3</version>
            <exclusions>
              <exclusion>
                <groupid>org.codehaus.groovy</groupid>
                <artifactid>groovy-eclipse-batch</artifactid>
              </exclusion>
            </exclusions>
          </dependency>
          <dependency>
            <groupid>org.codehaus.groovy</groupid>
            <artifactid>groovy-eclipse-batch</artifactid>
            <version>1.8.0-03</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupid>org.codehaus.mojo</groupid>
        <artifactid>build-helper-maven-plugin</artifactid>
        <version>1.5</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source></source>src/main/groovy
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-test-source</id>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source></source>src/test/groovy
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupid>org.codehaus.groovy</groupid>
      <artifactid>groovy-all</artifactid>
      <version>1.8.0</version>
    </dependency>
    <dependency>
      <groupid>junit</groupid>
      <artifactid>junit</artifactid>
      <version>4.8.2</version>
      <scope>test</scope>
</dependency>
</dependencies>
</project>

Um das Projekt noch auf Java 1.6 Kompilieren zu lassen
<source>1.6</source>
<target>1.6</target>
reicht es die beiden Zeilen zur maven-compiler-plugin konfiguration hinzufügen.

Es gab noch ein paar Fehler im Code. Ich hab die Groovy Version auf 2.0.4 geändert und Maven -> Update Project ausgeführt, dann hatten sich die Probleme erledigt und ich konnte das Hello World Projekt ausführen.

Sonntag, 2. Dezember 2012

debian erster Tag Montag

Als ersten Tag der Woche den Montag einstellen

locale in der Konsole eingeben

$ locale

locale: Cannot set LC_ALL to default locale: No such file or directory                                                                                                   
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_TIME=en_US
LC_MONETARY="en_US.UTF-8"  
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=  

Unter LC_TIME steht das ich für die Zeit das Layout "en_US" nutze. Also flux unter /usr/share/i18n/locales die en_US mit einem Editor und sudo Rechten geöffnet und dort den Eintrag first_weekday gesucht. Dort müsste eine 1 stehen. Die einfach durch eine 2 ersetzen und nach einem Neustart (geht bestimmt auch durch ein Kommando das habe ich aber im moment nich da) ist der erste Tag der Woche der Montag :)

Falls  LC_TIME nicht da stehen sollte so muss man die Datei die unter LC_ALL zu finden ist dementsprechend editieren.

Nachtrag:
locales lassen sich in /etc/default/locale editieren.

Debian Tastatur-Layout ändern


Zum Programmieren nutze ich gerne das us-Layout, da dort die häufig genutzten Tasten (bspw. [], {}, ;) einfach besser liegen. Da ich aber auch viel auf deutsch schreibe und ich nicht jedesmal "ae" statt "ä", "ue" statt "ü" usw. schreiben kann, benötige ich auch das deutsche Layout. 
Vor kurzem habe ich von einem Kollegen erfahren, dass es eine internationale Variante des us-Layouts gibt. Diese beinhaltet unter anderem auch die Umlaute. Deswegen möchte ich an dieser Stelle einen Methode zeigen mit der die beiden Layouts us-international und de verfügbar sind und man zwischen ihnen wechseln kann.

Um mehrere Tastatur-Layouts unter Debian verwenden zu können gibt es verschiedene Möglichkeiten. Ich möchte hier drei vorstellen. Für die erste werden super user Rechte benötigt. Die zweite Variante ist temporär und muss nach einem Neustart wieder aktiviert werden. Die letzte Variante ist abhängig vom Nutzer der gerade angemeldet ist. Zum Schluss wird noch das Problem mit den deadkeys im us-international Layout beseitigt.

Erste Variante (su)

Eine Möglichkeit besteht darin die Datei /etc/default/keyboard zu verändern.
Dazu einfach mit sudo rechten in einem Editor öffnen. Die Datei sieht ungefähr so aus:

# Check /usr/share/doc/keyboard-configuration/README.Debian for # documentation on what to do after having modified this file. # The following variables describe your keyboard and can have the same # values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options # in /etc/X11/xorg.conf. XKBMODEL="pc105" XKBLAYOUT="us,de" XKBVARIANT="intl," XKBOPTIONS="grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll" # If you don't want to use the XKB layout on the console, you can # specify an alternative keymap. Make sure it will be accessible # before /usr is mounted. # KMAP=/etc/console-setup/defkeymap.kmap.gz

XKBMODEL Das Tastaturmodell. Mit sudo dpkg-reconfigure keyboard-configuration kann man das Modell auswählen. Meine Tastatur ist leider nicht dabei weshalb ich wohl bei mir pc105 zu stehen hab.
XKBLAYOUT Einstellen des Layouts. Dabei sind mehrere Einstellungen möglich. Diese müssen lediglich durch ein Komma getrennt werden. Bei sind sind die us und die de Layouts.
XKBVARIANT hier sind verschiedene Varianten möglich. das intl steht für das internationale Layout. Dem deutschen Layout hätte ich auch noch eine spezielle Variante geben können. Dadurch dass das intl an erster Stelle steht ist es aber für die us Version gedacht.

XKBOPTIONS extra Optionen. In dem Fall kann man mittels Caps-Lock zwischen den beiden Layouts hin und her wechseln. Sobald ein Layout ausgewählt ist leuchtet die Scroll led auf der Tastatur (bei mir ist es das deutsche Layout). terminate beendet alles und loggt einen aus. Es ist daher mit Vorsicht zu genießen, da nicht gespeichert wird.

Um die Einstellungen so zu übernehmen, einfach folgendes in der Konsole eingeben: 
udevadm trigger --subsystem-match=input --action=change


Die zweite Variante (temporär)

Die zweite ist temporär. In der Konsole einfach folgenden Befehl eingeben:
setxkbmap -layout us,de -variant intl, -option grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll
Nach einem Neustart muss man diese Zeile wieder in der Konsole eingeben.

Die dritte Variante (Nutzer)

Diese Variante ist vom Nutzer abhängig. Ich habe momentan crunchbang drauf deshalb werde ich es nur an der Openbox zeigen können. 
~/.config/openbox/autostart
dort einfach am ende folgende Zeile eingeben.
setxkbmap -layout us,de -variant intl, -option grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll

(sleep 1s && fbxkb) & in der selben Datei emgölicht das automatische starten des layout-switchers im systray rechts oben.


Probleme

Ein Problem beim internationalen Layout ist, dass einige Zeichen nur als deadkeys erreichbar sind oder durch drücken von [alt-gr]. So ist es, gegenüber des us Layouts, nicht mehr möglich " durch [shift]+' zu erreichen. Es muss zusätzlich noch [alt-gr] gedrückt werden. Was mir beim programmieren wieder zu umständlich ist.
Eine Liste der deadkeys und das generelle Layout ist unter us international keyboard explained zu finden.
Eine  des Problems habe ich hier gefunden. Mikel schreibt dort, dass die Unterschiede zwischen us und us-international unter /usr/share/X11/xkb/symbols/us zu finden sind. 
Die Tasten die mich stören sind schnell gefunden:
key { [dead_grave, dead_tilde,         grave,       asciitilde ] };
key { [    6, dead_circumflex,    onequarter,      asciicircum ] };
key { [dead_acute, dead_diaeresis, apostrophe,        quotedbl ] };

Es sind jeweil 4 Tastenkombinationen belegt: Einfach, [shift], [alt-gr], [alt-gr]+[shift]
Man kann erkennen das sie in der ersten Belegung nur deadkeys sind. bzw. bei der 6 der deadkey durch [shift] erreicht wird. Es ist das ^.
Also vorher ein Backup erstellen:
sudo cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us.bpk
und zum Beispiel mit sudo vim /usr/share/X11/xkb/symbols/us editieren.

key { [grave, asciitilde,         dead_grave,       dead_asciitilde ] };
key { [    6, circumflex,    onequarter,      asciicircum ] };
key { [apostrophe,        quotedbl, dead_acute, dead_diaeresis ] };


Somit sind die deadkeys nach hinten gerutscht und die Tasten sind dort wo sie beim normalen us-Layout zu finden auch sind.

Hier ein paar Referenzen die mir geholfen haben es so einzustellen wie ich es brauche:
crunchbang forum zum Thema