Quod licet Iovi, non licet bovi – Javascript ist nicht gleich logisch

In  vielen Programmiersprachen ist == ein eindeutiger Vergleich von 2 Werten. Jeder weiß das in z.B. Java Boolean.FALSE==false wahr ist, aber false == “false” nicht wahr ist. In Javascript gibt es nicht nur false, FALSE oder 0 zur Prüfung einer falschen Behauptung, es kann auch genauso gut ’0′ sein.

In Javascript gibt es neben == ebenfalls === und das entsprechende Pendants !== zu != existiert ebenfalls.

Hier ein kleiner Auszug aus einem O’Reilly Buch

Vergleich
Resultat
'' == '0'false
0 == ''true
0 == '0'true
falsche == 'false'false
false == '0'true
false == undefinedfalse
false == nullfalse
null == undefinedtrue
' \t\r\n ' == 0true

Wenn man also immer sicher sein möchte, das der Vergleich exakt stimmt und mit dem aus Java zu vergleichen ist, sollte man mit den === arbeiten. Somit ist false === 0 nicht wahr.

Eclipse und Maven – Unsupported IClasspathEntry

Eclipse hat ja immer wieder Probleme mit Maven. Der folgende Fehler taucht auch des öfteren auf wenn man Projekte aus dem CVS holt oder auch nur neu erstellt.

An internal error occurred during: “Enabling Maven Dependency Management”. Unsupported IClasspathEntry kind=4

Der Fehler

Die Entwickler von Eclipse kennen den Fehler schon:

Hier eine Anleitung wie man diesen Fehler einfach beheben kann:

  1. Kontrolliert euer Maven Eclipse plugin m2e(clipse), letzte Version ist 1.1.10. Vlt solltet ihr es mal hier updaten.
  2. maven-nature für das Projekt deaktivieren (via Rechtsklick Menü)
  3. Auf der Console folgendes eingeben (im Root des Projektes), Eclipse/STS nicht schließen, Projekt geöffnet lassen!
    mvn eclipse:clean
  4. Projekt aktualiseren
  5. maven-nature für das Projekt wieder aktiveren (ebenfalls via Rechtsklick Menü)
  6. Jetzt sollte es fertig sein

Falls diese Anleitung nicht zum erfolg geführt hat, hier noch eine weitere Lösungsmöglichkeit:

  1. Auf der Console erst
    mvn eclipse:clean

    eingeben. das räumt erstmal auf

  2. Danach
    mvn eclipse:eclipse -Dwtpversion=2.0

    eingeben

  3. Jetzt sollte es aber echt mal funktionieren

Eclipse und die deutsche Rechtschreibung

Unter findet man ein deutsches Wörterbuch. Man legt dieses einfach in den dropins Ordner der Eclipse Installation und sucht anschließend in den Einstellungen von Eclipse nach “Spelling”. Dort gibt man kurzerhand als benutzerdefiniertes Wörterbuch den Pfad zur Datei in Dropins an (kompletter Pfad, also z.B. C:\Programme\Eclipse\dropins\german.dict) und speichert. Anschließend muss man eventuell Eclipse neustarten, aber bei einigen hat dies bereits auch ohne Neustart funktioniert.

Ich hoffe geholfen zu haben

SSH und die Sicherheit

Der SSH Zugang ist für Linux sehr sinnvoll. Er ermöglicht das aufschalten auf die jeweilige Serverkonsole. Zur Erhörhung der Sicherheit sollte man folgende Schritte durchführen:

  1. Der su-Befehl
    • Der su-Befehl erlaubt es einem User den Benutzer zu wechseln. Dies sollte man natürlich vermeiden, sonst könnte ja jeder mithilfe des Passwortes einen anderen User imitieren.
    • su erlauben wir also nur einer bestimmten Gruppe, z.B. den Admins.
      1. Admin-User erstellen
        1. User anlegen via:
          useradd admin
        2. Passwort vergeben via:
          passwd admin

          Wenn man dies nicht macht, bleibt der User gesperrt.

      2. Admin-Gruppe erstellen via:
        groupadd admin
      3. Admin-User der Admin-Gruppe hinzufügen via:
        usermod -a -G admin admin

        Hierbei ist anzumerken das der Befehl in der Reihenfolge <group name> <user name> augebaut ist

      4. su limitieren via:
        dpkg-statoverride --update --add root admin 4750 /bin/su
  2. SSH Port abänden
    • SSH hat normalerweise immer Port 22. Da dies ja jedem bekannt ist, bildet es eine einfache Angriffsmöglichkeit.
    1. Durch die Änderung in der Konfigrationsdatei kann man ganz einfach den Port von 22 auf einen beliebig anderen Port abändern. Zusätzlich schreiben wir noch PermitRootLogin no rein um den direkten Login von root zu verbieten. Die
      Konfigationsdatei findet man unter:

      /etc/ssh/sshd_config
    2. Nachdem dies erledigt wurde muss man den Dienst einmal neu laden lassen damit die geänderte Konfiguration ihre Wirkung zeigt. Dies erledigt man via:
    3. /etc/init.d/ssh reload
  3. Eine Firewall einrichten
    • Ich zeige das ganze mal mit der Firewall ufw (uncompilcated firewall) welche sich einfach administrieren lässt.
    1. Installieren
      • Ubuntu ist normalerweise nicht mit dieser Firewall ausgerüstet, daher muss man diese Nachinstallieren via:
      • sudo apt-get install ufw
    2. SSH erlauben
      • Ohne SSH sperren wir uns selber aus, dies ist alles andere als zuträglich oder? Also SSH aktivieren via:
      • sudo ufw allow ssh
      • Wie man sieht wird hier SSH definiert, nicht ein Port sondern ein Name. Dies hat zur Folge das Port 22 freigegeben wird, aber nicht der ausgewählte Port.
    3. HTTP erlauben
      • Ohne HTTP sperren wir den Webserver aus, dies ist alles andere als gewünscht im Normalfall? Also HTTP aktivieren via:
      • sudo ufw allow http
    4. Alles verbieten
      • Jetzt haben wir zwar HTTP und SSH erlaubt, aber grundsätzlich auch erstmal nichts verboten. Dies müssen wir ändern, sicherheitshalber. Erldigt wird dies via:
      • ufw default deny
    5. Firewall aktivieren
      • Die beste Firewall bringt einem nichts solange sie nicht aktiviert ist. Also scharf schalten mit:
      • sudo ufw enable
    6. Firewall Status abfragen
      • Ob die dann wirklich läuft sieht man mit dem Befehl hier:
      • sudo ufw status verbose
  4. IP Spoofing
    • IP Spoofing bezeichnet den Vorgang des faken einer IP-Adresse.
    1. Bearbeiten Sie die Hosts Konfiguration unter:
      /etc/host.conf
    2. Tragen Sie doch bitte folgende paramter zusätzlich ein, bzw. wenn vorhanden editieren Sie diese:
      order bind,hosts
      nospoof on
  5. fail2ban installieren
    1. fail2ban überwacht verschiedene Logs und sperrt dann besimmte IP’s oder Nutzer. So kann man eine BruteForce Attacke mit existierendem Nutzernamen vorbeugen.
      1. fail2ban installieren via:
        apt-get install fail2ban
      2. Die Filterregeln in
        /etc/fail2ban/jail.conf

        erstellen/editieren und SSH für den entsprechendne Port überwachen mit:

        [ssh]
        
        enabled  = true
        port     = <ENTER YOUR SSH PORT NUMBER HERE>
        filter   = sshd
        logpath  = /var/log/auth.log
        maxretry = 3
        destemail = braunermaximilian@googlemail.com
        action = %(action_mwl)s

        Nun haben wir fail2ban so eingestellt das es alles nach /var/log/auth.log loggt was passiert und ich Emails bekomme wenn etwas ungewolltes geschieht.

  6. Ports kontrollieren
    • Nach diversen Installationen und Fehlersuchen und und und … können sich schon einmal Fehler bei der Konfiguration einschleichen. Dies kann man dann ganz einfach mit einem PortScanner checken, hier bentuzen wir mal Nmap (“Network
      Mapper”).
    1. Nmap installieren via:
      apt-get install nmap
    2. Lokales System nach Ports scannen
      nmap -v -sT localhost
    3. Lokales System mit SYN scannen:
      nmap -v -sS localhost

Linux im Vergleich zu Windows – Shell vs Cmd

Bevor wir Anfangen zu vergleichen, nein dies wird keine Eintrag über die Bedienerfreundlichkeit oder was besser ist. Es geht mir nur um den Vergleich der Konsolen beider Systeme.

Es gibt diverse interessante Befehle für die Shell die ein Windows Pendant haben. Hier ein paar mir bekannte Beispiele:

Tux
Win
Kurze Erklärung
grepfindstrDurchsuche die Ausgabe in der Console nach dem Suchbegriff
pstasklistListe aller Prozesse anzeigen
netstatnetstatListe aller offenen Ports anzeigen
cattypeZeige die Datei sofort ganz an
lessmoreZeige die Datei zum durchscrollen an
tail?Zeigt das Ende der Datei an
head?Zeigt den Anfang der Datei an
watch?Führt den übergebenen Befehl alle 2 Sekunden erneut aus
du?Zeigt die Dateigröße an
sort?Sortiert die Ausgabe
wc?Zählt durch

grep

ist ein mächtiges Werkzeug auf der Shell. Hilfreich wird es aber erst durch seine Parameter

  • -v <Suchbegriff> » zeige alles außer den Suchbegriff
  • -e ‘word1|word2′ » zeige nur die Zeilen in denen einer der Suchbegriffe (word1 bzw. word2) vorkommen. Dies kann natürlich unendlich mit der Pipe erweitert werden
  • -i » macht das ganze case insensitive

ps

  • a » Alle Prozesse, auch die anderer User
  • u » User Format (Mit User und Startzeit)
  • x » Auch Daemon-Prozesse (Ohne eigene TTY-Leitung)

Der Standardbefehl für mich ist immer ps aux, dieser liefert direkt User, PID, CPU, MEM, Startdatum, CPU-Laufzeit und den Befehl aus.

netstat

  • e » Zeige erweiterte Informationen an. Ohne diese Option wird bspw. der Benutzer, dem ein Socket gehört, nicht angezeigt
  • l » Zeige nur “offene Ports” an
  • n » Übersetze keine Nummern in Namen, sondern zeige die Nummern unverändert an
  • p » Zeige die Prozess-ID und den Programmnamen des Prozesses an, dem der Socket gehört. Diese Information ist privilegiert. Ohne Root-Rechte erfährt man diese Informationen nur über die eigenen Prozesse
  • t » Zeige nur TCP-Sockets an
  • u » Zeige nur UDP-Sockets an

Der Standardbefehl für mich ist immer netstat -tulpen, die Optionen lassen sich super merken dank dem bekannten Wort Tulpen und liefert die Spalten Protokoll (Proto), Recv-Q, Send-Q, Lokal gebundene Adresse (Local Address), extern gebundende Adresse (Foreign Address – Die jeweilige Universal-Adresse [0.0.0.0 bzw. ::] bedeutet, dass hier ein Dienst auf Verbindungen von außen wartet), (State), ausführender User (User), Inode, ProzessID und zugehöriges Programm (PID/Program name) zurück.

cat

Benutze ich eigentlich nur um Dateien komplett anzeigen zu lassen oder um mehrere Dateien miteinander zu verketten, zu concadieren.

less

Zeigt die ausgewählte Datei, bzw. den ausgewählten Console Output Seitenweise an und kann zum durchscrollen der kompletten Datei genutzt werden.

tail

  • n » gibt an wie viele Zeilen angezeigt werden sollen vom Ende
  • f » gibt an das der Ausgabe gefolgt werden soll, sprich wenn etwas hinten angefügt wird, wird dies auch direkt angezeigt.

Zeigt die ausgewählte Datei, bzw. den ausgewählten Console Output vom Ende der Ausgabe betrachtet an.

head

  • n » gibt an wie viele Zeilen angezeigt werden sollen vom Anfang

Zeigt die ausgewählte Datei, bzw. den ausgewählten Console Output vom Anfang der Ausgabe betrachtet an.

watch

führt den übergebenen Befehl periodisch erneut aus und zeigt dir im Fullscreen den Befehl,  den Refreshtime und die Ausgabe des Befehls an.

du

sagt dir wie groß ein File oder Ordner auf der Platte ist. diskusage halt ;-)

sort

  • b » ignoriert vornanstehende Leerzeichen
  • d » schließt alles aus dem Vergleich aus was nicht alphanumerisch ist
  • f » macht das ganze case insensitive

sortiert die zeilenweise Ausgabe des Befehls, aber standardmäßig case sensitive!!

wc

  • l » zählt nur die Zeilen der Ausgabe und gibt das Ergebnis aus

Standardmäßig gibt es die Anzahl de Bytes, der Wörter und der Zeilen an

Langzeitbelichtung – Was ist das, wie funktioniert das, warum mache ich das überhaupt?

Die Langzeitbelichtung ist keine hohe Kunst des Fotografierens, aber man brauch passende Übungsobjekte die sich bewegen. Meine Carrera Bahn hat Autos mit Licht vorne und hinten, was zu ganz geilen Effekten verhilft finde ich ;-) Wie auch immer hier meine Fotos und weiter unten die technische Seite.


Durch lange Belichtungen wird mehr Licht auf dem Sensor “gefangen” und wenn dieses sich halt bewegt kommt es zu Verläufen des Lichtes. Durch die klare Streckenführung erreiche ich einen kontinuierlichen Effekt des Lichtflusses. Aufgenommen wurden Sie mit verschiedenen Einstellungen, hier mal exemplarisch die Einstellungen für das Bild 282 (flacher Winkel):

Blende: 18.0
Brennweite: 18mm
ISO: 100
Belichtungszeit: 30 Sekunden
Objektiv: EF-S18-55mm f/3.5-5.6 III

Am besten finde ich das Bild 287. Der Hintergrund ist jetzt nicht gerade der Hit, aber ich finde es ist am besten gelungen.

Blende: 3.5
Brennweite: 18mm
ISO: 100
Belichtungszeit: 30 Sekunden
Objektiv: EF-S18-55mm f/3.5-5.6 III

Schreiben lernen, aber mit Licht

Schreiben mit Licht ist schwer finde ich. Man muss gespiegelt schreiben ein d ist also ein b und umgekehrt. Ich habe es einmal probiert und wenn man sowieso gut Spiegelschrift schreiben kann erleichtert es das auf jeden Fall.

Ich habe die Kamera auf einem Stativ im Auto platziert. Es fing leider an zu Regnen und ich wollte es aber unbedingt ausprobieren. Geholfen habe ich mir dann mit vielen Tests für die Entfernung damit ich die komplette Breite nutzen konnte für Worte. Die Zeit habe ich manuell mit einem Fernauslöser eingestellt so das alle nach Aufwand belichtet wurden.

Speed of Light Ruhr

“Speed of Light” war zugast an der Ruhr vom 3. bis 10. Oktober. Am 4. Oktober waren Sie in Essen und ich war mit Freunden und meiner Kamera an der Zeche Zollverein.