Freitag, April 21, 2017

Links der Woche (16. Woche 2017)

  • Eine DSL zur Formulierung von Datenbankabfragen mit Java: Query DSL
  • Ein Tool zur Überwachung von Servern: Prometheus
  • Falls ihr ab und an mal eine SD Karten bespielt. Hier gibt es ein hübsches, visuelles Tool dazu: Etcher.io
  • Google bietet eine Bibliothek für das Abfragen von Captchas im Web an: reCaptcha Der Algorithmus hinter reCaptcha versucht zu erkennen, dass das Gegenüber ein Mensch ist. In diesem Fall wird kein Captcha eingeblendet.
  • Ein Tool zur Verwaltung von Geheimnissen und Schlüsseln: Vaultproject.io
  • Für eure Mindstorm Roboter gibt es eine neue Firmware: ev3dev.org
  • Momentan bin ich auf der Suche nach einer neuen Blogger Software. Positiv aufgefallen ist mir jekyll. Das Tool findet ebenfalls auf Github Verwendung und generiert die Webseiten zu den Projekten. Siehe auch pages.github.com
  • Auf Heise gibt es ein Video mit ein paar Tipps für den Umgang mit Docker: 5 Docker Tipp
  • Von Mockito gibt es mittlerweile einen 2er Release Branch: Mockito 2.x.x In der 2er Linie wird kein mockito-all mehr angeboten. Also mockito-all durch mockito-core ersetzen und dann mal sehen was fehlt.
  • PhantomJS steht auf dem Abstellgleis. Siehe PhantomJS. Der Maintainer zieht sich zurück. Ursache sind die angekündigten, sogenannten Headless-Versionen, von Chrome und Mozilla, die PhantomJS somit obsolet erscheinen lassen. Nähere Informationen finden sich unter dem Link oben.
  • Zu guter letzt einen Blog: blog.Schauderhaft.de

Donnerstag, April 20, 2017

Oracle SQL | Group by Date

Das folgende Oracle-SQL gruppiert die fehlgeschlagenen Datensätze aus der Tabelle 'tabelle_mit_datum' nach Jahr, Monat und Tag:
SELECT
    COUNT(*) AnzahlFehler,
    TO_CHAR(cs.datum, 'YYYY') Jahr,
    TO_CHAR(cs.datum, 'MM') Monat,
    TO_CHAR(cs.datum, 'DD') Tag,
FROM
    tabelle_mit_datum tmd
WHERE
    tmd.status = 'Fehler'
    AND tmd.datum BETWEEN
        TO_DATE('01.01.2017', 'DD.MM.YYYY')
        AND TO_DATE('30.04.2017', 'DD.MM.YYYY')
GROUP BY
    TO_CHAR(cs.datum, 'YYYY') Jahr,
    TO_CHAR(cs.datum, 'MM') Monat,
    TO_CHAR(cs.datum, 'DD') Tag,
ORDER BY
    TO_CHAR(cs.datum, 'YYYY') Jahr DESC,
    TO_CHAR(cs.datum, 'MM') Monat DESC,
    TO_CHAR(cs.datum, 'DD') Tag DESC
;
Oracles TO_CHAR(date, dateformat) Funktion kann einige tolle Sachen. Der folgende Ausdruck liefert die Woche des Jahres zurück:
SELECT TO_CHAR(sysdate, 'IW') FROM dual;
Folgende Formate stehen als Parameter zur Verfügung:
YEARYear, spelled out
YYYY4-digit year
YYYLast 3 digits of year.
YYLast 2 digits of year.
YLast digit of year.
IYYLast 3 digits of ISO year.
IYLast 2 digits of ISO year.
ILast 1 digit of ISO year.
IYYY4-digit year based on the ISO standard
QQuarter of year (1, 2, 3, 4; JAN-MAR = 1).
MMMonth (01-12; JAN = 01).
MONAbbreviated name of month.
MONTHName of month, padded with blanks to length of 9 characters.
RMRoman numeral month (I-XII; JAN = I).
WWWeek of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
WWeek of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
IWWeek of year (1-52 or 1-53) based on the ISO standard.
DDay of week (1-7).
DAYName of day.
DDDay of month (1-31).
DDDDay of year (1-366).
DYAbbreviated name of day.
JJulian day; the number of days since January 1, 4712 BC.
HHHour of day (1-12).
HH12Hour of day (1-12).
HH24Hour of day (0-23).
MIMinute (0-59).
SSSecond (0-59).
SSSSSSeconds past midnight (0-86399).
FFFractional seconds.

Mittwoch, Februar 22, 2017

GIT Aliase für das Stashing

Git´s stash Befehl ist immer dann hilfreich, wenn die aktuellen Arbeiten am Sourcecode kurzfristig unterbrochen werden müssen. Oder wenn die eingeschlagene Codeänderung (wieder?) auf einen Holzweg führt und man die Änderungen verwerfen möchte (wo ein wegwerfen vielleicht angebrachter wäre?). In der aktuellen GIT Version (2.11.1) gibt es einige neue Parameter für das Stashen.

git config --global alias.stsh 'stash --keep-index'
git stsh
Stash'd nur die geänderten, nicht ge-stage'ten und dem Repository bekannten Dateien. D.h. geänderte und mit 'git add' der Staging-Area hinzugefügte Dateien, werden nicht auf den Stash geschoben.
git stash
Das Default-Stash. Wie gehabt. (Siehe GIT Doku).
git config --global alias.staash 'stash --include-untracked'
git staash
Stash'd alle dem Repository bekannten und nicht bekannten Dateien. Inklusive der Dateien in der Staging-Area.
git config --global alias.staaash 'stash --all'
git staaash
Stash'd alle dem Repository bekannten und nicht bekannten Dateien. Inklusive der Dateien in der Staging-Area. Zusätzlich werden alle Dateien aus der Ignore-List ebenfalls in den Stash mit aufgenommen.

Zusammenfassung

git config --global alias.stsh 'stash --keep-index'
git config --global alias.staash 'stash --include-untracked'
git config --global alias.staaash 'stash --all'
git config --global alias.shorty 'status --short --branch'

Gefunden auf dzone- lesser known git commands.

Mittwoch, Januar 18, 2017

Eclipse Shortcuts

Meine Eclipse Shortcuts. Eine kurze Aufzählung. Und an und ab gibt es mal eine Ergänzung.
F12               Wechselt in den Editor
Ctrl F6           Next View (Ich verlege den Key auf Alt-Q)
Ctrl F7           Schnellauswahl für den Wechsel der View
Ctrl Q            Wechselt zu der letzten editierten Stelle
Ctrl Alt H        Anzeige der Aufruf-Hierarchie einer Methode
Ctrl T            Zeigt die Vererbungshierarchie
Ctrl L            Springt zur Zeilennummer n
Ctrl E            Öffnet ein Popup für die Schnellauswahl eines Editors
Ctrl O            Öffnet ein Popup für die Schnellauswahl einer Methode
Ctrl 1            Quick Fix
Ctrl 3            Quick Access (Suche für Eclipse Aktionen)
Ctrl <Space>      Code-Vorschläge/-Assistent
Ctrl Shift F      Formatiert den Source Code
Ctrl Shift O      Organisiert die Import Statements
Ctrl Shift G      Findet alle Referenzen zu einer Klasse

Alt <crsr up>     Verschiebt die aktuelle Code-Zeile nach oben
Alt <crsr down>   Verschiebt die aktuelle Code-Zeile nach unten
Alt <crsr left>   Wechselt das Tab innerhalb des Editors nach links
Alt <crsr right>  Wechselt das Tab innerhalb des Editors nach rechts
Ctrl <page up>    Wechselt in den zuvor geöffneten Editor
Ctrl <page down>  Wechselt in den nächsten Editor

Alt Shift X       Ausführen einer Aufgabe
Alt Shift X T     Ausführen der JUnit Tests der aktuell ausgewaehlten Klasse
Alt Shift Q       Auswählen einer View
Alt Shift Q S     Öffnet das Suchen Fenster

Samstag, Oktober 08, 2016

git remove unused remote branch

Alte, nicht mehr benötigten GIT Branche entfernen? Dann probier das mal hier:
git branch -r -d origin/devel
git remote prune origin
git fetch origin --prune
Copy and paste solution from stackoverflow

Montag, August 01, 2016

Spring Source Tool 3.8.0, Maven und die Bash

STS 3.8.0, m2Eclipse und das Konfigurationsproblem

Pünktlich zu dem neu erschienen Eclipse NEON hat Pivotal seine Spring-Tool-Suite auf die Version 3.8.0 aktualisiert. Falls ihr Maven für eure Projekte verwendet, stoßt ihr schnell auf den folgenden Fehler:
Description Resource Path Location Type
org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
pom.xml /rpc-server line 1 Maven Configuration Problem
Einen Fix für dieses Problem gibt es bereits. Die folgenden Software müsst ihr euch per 'Install new software' installieren.
https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/

Kommandozeile aus Eclipse heraus aufrufen

Wer Maven verwendet, wechselt vermutlich oft auf die Kommandozeile. Damit das aus Eclipse heraus bequem funktioniert, gibt es das Plugin StartExplorer. Im Eclipse Marketplace sucht ihr nach dem 'StartExplorer'. Um z.B. eine cygwin Shell zu öffnen, verwende ich die folgende Konfiguration.
cmd.exe /c start E:\devtools\cygwin\eclipseshell.bat ${resource_path}
Und die eclipseshell.bat hat den folgenden Inhalt (Der Pfad zur bash.exe muss entsprechend angepasst werden):
@echo off
set current_path=%1
set current_path=%current_path:\=/%
E:\devtools\cygwin\bin\bash.exe --login -c \\"cd '%current_path%' ;
    exec /bin/bash -rcfile ~/.bashrc\\

UPDATE

Das m2Eclipse Problem ist mit der Version 3.8.3 nicht reproduzierbar.

Samstag, Mai 28, 2016

Git und Windows

Bei Neueinrichtung einer GIT Umgebung unter Windows empfehlen sich die zwei folgenden Einstellungen:
git config core.autocrlf true
Konvertiert automatisch das Unix/Linux Zeilenende nach Windows und umgekehrt.
git config core.fileMode false
Ignoriert alle Änderungen an den Sicherheitseinstellungen einer Datei. Und jetzt kann es losgehen.

Sonntag, März 15, 2015

Links der Woche

Das Internet war diese Woche wieder voll. Hier mein Merkzettel:

Java | Template | Thymeleaft

TemplateEngine für Java: Thymeleaft. Die Alternative für das alte Velocity? Mit dem Eclipse-Plugin für Velocity habe ich so meine Probleme. In den aktuellen Eclipse Versionen (z.B. Luna oder das STS von Springsource) habe ich es nicht zum Fliegen bekommen. Was mir besonders gut gefällt, ist die eingebaute Vorschaufunktion von Thymeleaft. Hier ein Beispiel:
<p th:text="#{msg.welcome}">Welcome everyone!</p>
Die Anweisung th:text enfernt den Body aus dem Tag und ersetzt diesen durch das Ergebnis des Ausdrucks msg.welcome. D.h. der HTML Entwickler kann Pseudodaten im HTML Dokument hinterlegen. Die Ersetzungsanweisungen finden sich in den frei definierten Attributen der HTML Elemente wieder. Großer Vorteil: Das HTML Dokument kann jederzeit im Browser betrachtet werden.

Javascript | Seitenübergänge

Javascript, Seitenübergänge oder -fluß nett dargestellt: SmoothState

Javascript | Tabellen in Bootstrap

Javascript, Tabellen für Bootstrap: Bootgrid

Javascript | Swipe Gesten

Javascript, Swipe-Gesten: Brutaldesign

Javascript | Graphics

Javascript Bibliothek für das Zeichnen von Diagrammen (Punktdiagramm, Linendiagramm, Säulendiagramm,...): Metricsgraphic

Javascript | NodeJS

Understanding NodeJS und NodeJS für Anfänger.

Javascript | Build-Tools

NPM als Build-Tool und Grunt ist Mist. Letztere These kann ich unterstützen. Grunts-Konfiguration ist aus meiner Sicht nicht sehr intuitiv. Vielleicht bin ich aber zu sehr ANT-infiziert.

JSF Bashing

Einen interessanten Beitrag zu JSF: Why you should avoid JSF. In vielen Punkten gebe ich dem Autor Recht. Allerdings kann ich mit JSF trotzdem wunderbare Webseiten erstellen, ohne z.B. tief in Javascript einsteigen zu müssen oder zu wissen wie eine Single-Page Applikation funktioniert. Im Gegenzug muss ich verstehen, wie JSF funktioniert. Ebenfalls nicht trivial. Ein Vorteil von JSF gegenüber einer S(ingle)P(age)A(pplication) ist die Behäbigkeit der JSF Spezifikation gegenüber den ziemlich umtriebigen Javascript Frameworks. Was gleichfalls als Nachteil aufgefasst werden kann. Am Ende zählen dann die verschiedenen äußeren Faktoren wie Lebenszyklus, Entwicklungszyklus, Entwicklerteam, Sofware-Plattform, Kunde, etc.

Online | Browser Editor

Artikel verfassen: Hackpad

Java | Versionen...

Eine Übersicht über die verschiedenen Java Versionen: Baeldung Java 8.

Jenkins, Maven und das Deploy-Target

Vor kurzem habe ich einen meiner älteren Rechner reaktiviert und dort das aktuelle 64-Bit Ubuntu aktualisiert. In dem Zuge wurde das alte 32-Bit Vista entfernt und es standen zum ersten mal nach vielen Jahren die vollen 4 GB Hauptspeicher zur Verfügung. Aber das nur am Rande. Im Anschluss habe ich Jenkins installiert und meine Projekte konfiguriert. Jenkins soll alle meine Build-Artefakte bauen, das Ergebnis in einem Maven Remote-Repository zur Verfügung stellen und im Anschluss die Projekt Homepage per site-deploy aktualisieren. Der Zugriff auf den Remote-Server schlug aber regelmäßig mit der folgenden Fehlermeldung fehl:
The host was not known and was not accepted by the configuration
bzw.
Caused by: com.jcraft.jsch.JSchException: reject HostKey
Was habe ich alles versucht: Ich habe die SSH Schlüssel in Jenkins hinterlegt, ich habe das SSH Passwort in Jenkins hinterlegt, ich habe mich in die Maven-Konfiguration eingelesen (z.B. http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html). Das hat aber zunächst alles nicht geholfen. Hier die Lösung: Man loggt sich als Jenkins User auf dem Build-Rechner ein und baut das Projekt per Kommandozeile:
sudo su jenkins
cd ~jenkins/jobs/[PROJEKT_NAME]/workspace
~jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3/bin/mvn clean deploy
Jetzt den neuen SSH-Server akzeptieren, und wenn die SSH-Konfiguration korrekt ist, kann der Build über die Web-Oberfläche von Jenkins gestartet werden. Fazit: Bei SSH-Build Fehlern der Jenkins-GUI nicht vertrauen und zunächst das Problem per Kommandozeile lösen.

Donnerstag, Januar 08, 2015

Maven Problem

Die aktuelle Maven Version 3.2.5 hat ein Problem mit dem Download von Artefakten aus Remote-Repositories. Genauer: In der Deployment-Phase, wenn die Datei maven-metadata.xml zu dem entsprechendem Artefakt geladen wird. Die dafür verantwortliche Bibliothek Wagon erwartet zu viele Bytes und hängt in einer Warteposition fest. Hier ein Beispiel:

[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ master-pom ---
Uploading: scp://maven.gluehloch.de/var/www/maven.gluehloch/repository/de/awtools/master-pom/2/master-pom-2.pom
Uploaded: scp://maven.gluehloch.de/var/www/maven.gluehloch/repository/de/awtools/master-pom/2/master-pom-2.pom (16 KB at 13.1 KB/sec)
Downloading: scp://maven.gluehloch.de/var/www/maven.gluehloch/repository/de/awtools/master-pom/maven-metadata.xml
293/292 B
Wagon erwartet 293 Bytes. Die Datei ist aber nur 292 Bytes groß. Die Lösung sieht so aus, dass man die JARs wagon-*-2.8 aus dem LIB Verzeichnis der Maven Installation entfernt und diese durch die Version 2.4 ersetzt. Diese sind z.B. Bestandteil von Maven-3.1.1 und können von dort kopiert werden. Ein Test in dieser Konstellation war auf meinem System erfolgreich (Maven 3.1.5).

Zu diesem Thema gibt es bereits ein Issue: MDEPLOY-177

Links der Woche (16. Woche 2017)

Eine DSL zur Formulierung von Datenbankabfragen mit Java: Query DSL Ein Tool zur Überwachung von Servern: Prometheus Falls ihr ab u...