Ubuntu Apache Webserver im lokalen Netzwerk verfügbar machen

Seit die Ubuntu Firewall (ufw) standardmäßig an ist, fiel auf, dass der Webserver im lokalen Netzwerk nicht mehr aufrufbar ist, sondern nur via localhost seine Schätze preisgibt.

Der Versuch in der Konfiguration des DocumentRoot Änderungen zu machen fruchtete auch nicht.

Es liegt einzig und allein an der Firewall, die man wie folgt öffnen kann, um die Einstellungen anzupassen:

$ sudo ufw app list

Verfügbare Anwendungen:
  Apache
  Apache Full
  Apache Secure
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission


$ sudo ufw allow 'Apache'

Regel hinzugefügt
Regel hinzugefügt (v6)


$ sudo ufw status
Status: Aktiv

Zu                         Aktion      Von
--                         ------      ---
22/tcp                     ALLOW       Anywhere
Apache                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Apache (v6)                ALLOW       Anywhere (v6)

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!

Maven Versionen in pom.xml verändern

Wer bisher manuell durch alle poms eines größeren Projekts gegangen ist, den könnte folgender Aufruf interessieren:

mvn versions:set -DnewVersion=1.2.3-SNAPSHOT -DgenerateBackupPoms=false

Somit werden einfach die Versionen in allen poms umgesetzt und man muss dann nur noch einchecken.

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.