Git: lokalen Stand zurücksetzen auf frisch ausgecheckten Zustand

Manchmal hat man ein lokal so fortgeschrittenes Projekt, dass man einfach mal auf den Stand zurückgehen will, den man hätte, wenn frisch ausgecheckt würde.
Das ist inbesondere sinnvoll, wenn man lokal viele Dateien – z.B. generierte Sachen oder Projekteinstellungen von IDEs – hat, die unter Umständen stören.

Ein:

$ git clean -fxd

putzt alles weg im Fall von Git.

SpringBoot – Controller erstellen mit JSON-Rückgabe und Standard-HTTP-code

Es ist einfach befreiend zu sehen wie einfach in einem SpringBoot-Umfeld die Webentwicklung ist:


@Controller
@RequestMapping("/foobar")
final class FooBarController {

@Inject
private FooBar fooBar;

/**
* @return the currently set {@link FooBar}.
*/
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity parseInvocationContext() {
return new ResponseEntity(fooBar.toString(), HttpStatus.OK);
}

}

Die Methode gibt mit einem 200er einfach ein Statusobjekt zurück und kann dieses ganz einfach als JSON anzeigen.

Schnelles Teilen von Dateien / lokaler Http-Server mit Python

Wenn man das Problem hat, dass Datenmengen geteilt werden sollen, die zu groß für FAT-formatierte USB-Sticks sind, braucht man einen kleinen HttpServer, damit man die Daten ganz einfach via
http://localhost:8000
herunterladen kann:

$ python -m SimpleHTTPServer 8000 (Python 2.x)
$ python -m http.server 8000 (Python 3.x)

Niemand will derlei Attachementbomben per Mail oder Onlinechat versenden 🙂

PHP7 – WOW-Effekt

Da mein Hoster nun final auf PHP7 umschwenkt, dachte ich mal für einige Domains testweise umzuschalten.

Erste kleinere Warnungen im selbstgeschriebenen PHP-Code fallen auf … im Netz findet man die gleichen „Problemchen“

  • Fatal error: 'break' not in the 'loop' or 'switch' context in /your/own/file.php on line 4711

aber krass ist der Performancevorteil.

Eine lokal auf PHP5.x laufende Seite – mit nur Datums/Zeitberechnung und sonst statischer Anzeige von Links – benötigt im Schnitt
Rendering took: 0.023338 s
auf PHP7 und im Webspace des Hosters läuft das Teil mit
Rendering took: 0.001340 s

Chapeau!

Netzwerkfähigkeiten und Eckdaten der Netzwerkkarte

Wenn man vor einer Entscheidung steht auf Gigabit-LAN umzusteigen, will man eigentlich wissen, welche Netzwerkkarte verbaut ist und ob sie das überhaupt kann. Zum Glück gibt’s da was auf der Konsole:

user@box:~$ sudo ethtool eth0
[sudo] password for user:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes

Einfach via

sudo aptitude get install ethtool

installiert und schon passt es.

Java SDK Mac finden und einrichten in IntelliJ

Java-Einrichtung

Um die neue IntelliJ-Version an den Start zu bringen, muss man ja wissen, wo auf dem Mac das installierte Java liegt – nach ein wenig Suchen findet IntelliJ ein JDK unter:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Das als globale Bibliothek / SDK einrichten und schon verschwinden die Syntaxfehler 🙂

Einstellungen in IntelliJ

  • Settings -> Editor -> Appearance: show line numbers
  • File -> Project Structure, dort: SDKs – Add – Java SDK (Werte siehe oben)
  • Settings -> File encodings: UTF-8 (IDE Encoding)

Basierend auf diesen Informationen müssen auch die Einstellungen im Terminal entsprechend vorgenommen werden – dazu einfach in der .profile-Datei:

export JAVA_HOME=`/usr/libexec/java_home`

und schon hat man stets den Verweis auf das System-Java.

Eclipse Indigo einrichten – SVN/Maven

Die Zwischenzeit konnte ich nutzen, um meine virtuelle Maschine und das Äpfelchen auf den aktuellsten Stand zu bringen.

Um ins SVN der Firma zu kommen, muss wieder ein wenig manuell nachgearbeitet werden.

Zuerst das aktuelle 4.4/Luna-Eclipse runterziehen:

  • Eclipse Luna 4.4 – Standard
  • Eclipse Luna 4.4 – JavaDevelopers

Dann noch Subversion installieren:

  • Mac: Collab.net-Gedöns installieren – man muss sich leider anmelden
  • Ubuntu: aptitude install subversion libsvn-java

Eclipse-Plugins installieren

Über den Eclipse-Marktplatz die folgenden Plugins nachinstallieren und dann jeweils Eclipse neu starten:

  • Subclipse (Tigris) – SVN-Provider (nicht: Subversion nehmen sonst kommt alles durcheinander)
  • M2 – Maven2Eclipse – Eclipse-Maven-Integration
  • Maven Development Tools
  • Moreunit
  • EclEmma
  • EGit
  • Gradle

Eclipse-Konfiguration nachziehen

Die JavaHL-Bibliothek liegt nicht an Standardpfaden, weshalb die Eclipse-Konfigurationsdatei eclipse.ini angepasst werden muss – die Zeile muss eingefügt werden:

  • Mac: -Djava.library.path=/opt/subversion/lib
  • Ubuntu: -Djava.library.path=/usr/lib/jni

Sobald die Konfig nachgezogen ist, sieht man bei einem Neustart im Einstellungsfenster zu Team/SVN, dass JavaHL zur Auswahl steht. Dann funzt alles.

Ansonsten nicht vergessen, dass das Repo mit svn+ssh in der URL eingebunden werden muss.

So – nun also mit der neuen Version am Start und ready 2 rumble 🙂

Die Alternative mittels MacPorts die Bindings sowie eine aktuelle SVN-Version auf dem Mac zu installieren haben nicht funktioniert, weil MacPorts mit Schmerzen abbrach.

Hilfereiche Links sind ebenfalls: