Benny's Blog
12. Mai 2012

Mit dem Befehl \date{\today} kann in LaTeX das aktuelle Datum angezeigt werden. Standardmäßig wird dabei etwas wie May 5, 2012 generiert. Möchte man aber das deutsche Datumsformat haben, so muss man in seinem LaTeX-Dokument das deutsche Sprachpaket mit folgender Deklaration verwenden:

\usepackage[ngerman]{babel}

Das Wort ngerman steht für die neue Rechtschreibung. Mit german bekommt man die alte Rechtschreibung.

11. Mai 2012

Wer deutsche Umlaute in seinen LaTeX-Dokumenten korrekt dargestellt haben möchte, sollte darauf achten, dass die TeX-Datei mit UTF-8 kodiert ist. Um mit LaTeX den UTF-8-Zeichensatz (und somit auch die deutschen Umlaute und weitere Sonderzeichen) zu benutzen, muss das Input Encoding mit folgender Deklaration auf UTF-8 gestellt werden:

\usepackage[utf8]{inputenc}
10. Mai 2012

Die Benutzung von socket.io mit node.js ist einfach aber wird oft unverständlich erklärt. Deshalb schreibe ich kurz das Wichtigste in wenigen Schritten nieder:

  1. node.js v0.6.16 für Windows herunterladen und installieren
  2. C:\Windows\System32\cmd.exe aufrufen
  3. Ins Projektverzeichnis wechseln, z.B.: cd C:\my_project
  4. npm install socket.io eingeben, wodurch socket.io im Ordner “C:\my_project\node_modules\socket.io” installiert wird
  5. Die Datei C:\my_project\server.js mit diesem Inhalt anlegen:
    var io = require('socket.io').listen(72);
     
    io.sockets.on('connection', function (socket) {
      socket.emit('news', {
        hello: 'world'
      });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });
  6. Die Datei C:\my_project\client.html mit diesem Inhalt anlegen:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>Test</title>
        <style type="text/css">
          * { margin: 0; padding: 0; border: 0; }
        </style>
      </head>
      <body>  
        <script src="http://localhost:72/socket.io/socket.io.js"></script>
        <script>
          var socket = io.connect('http://localhost:72');
          socket.on('news', function (data) {
            console.log(data);
            socket.emit('my other event', { my: 'data' });
          });
        </script>
      </body>
    </html>
  7. Folgende Befehle in der cmd ausführen:
    cd C:\my_project
    node server.js
  8. C:\my_project\client.html im Browser öffnen und das Ergebnis in der JavaScript-Konsole bewundern
10. Mai 2012

Zwei Monate lang habe ich täglich Blogposts auf Englisch verfasst um zu schauen, ob sich die Reichweite meiner Posts vergrößert (immerhin sprechen/schreiben mehr Menschen auf der Welt Englisch anstatt Deutsch). Die Auswirkung war eher mäßig (Steigerung der englischen Leserschaft um +1,04%), was mit Sicherheit auch daran liegt, dass über 600 andere deutsche Posts auf diesem Blog mit den englischen Posts konkurrieren und man mit einer .de Domain im englischen Sprachraum auch nicht weit kommt. Deshalb werden die nächsten Posts wieder von mir auf Deutsch verfasst. Vielleicht gebe ich aber englische Tags hinzu, um die Einträge besser auffindbar zu machen.

9. Mai 2012

If you have installed node.js v0.6.16 for Windows and you want to install socket.io with the following command:

npm install socket.io

Then it could happen that you will get this error message on Windows 7 (64-Bit):

> node install.js
 
npm ERR! Error: spawn ENOTSUP
npm ERR!     at errnoException (child_process.js:483:11)
npm ERR!     at ChildProcess.spawn (child_process.js:446:11)
npm ERR!     at Object.spawn (child_process.js:342:9)
npm ERR!     at spawn (C:\Program Files (x86)\nodejs\node_mod
npm ERR!     at exec (C:\Program Files (x86)\nodejs\node_modu
npm ERR!     at Array.0 (C:\Program Files (x86)\nodejs\node_m
npm ERR!     at EventEmitter._tickCallback (node.js:192:40)

Fortunately, there is a solution! Open this file:

C:\Program Files (x86)\nodejs\node_modules\npm\lib\utils\exec.js

Replace these two lines (around line 109 & 110):

  if (!isNaN(uid)) opts.uid = uid
  if (!isNaN(gid)) opts.gid = gid

That’s all. For more information see: Error on socket.io installing on Windows 7.

With these ones:

  if (uid && !isNaN(uid)) opts.uid = +uid
  if (gid && !isNaN(gid)) opts.gid = +gid
8. Mai 2012

Code

import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
 
public class NewMain {
 
  public static void main(String[] args) throws Exception {
    String text = "<person number=\"72\"><name>Benny</name></person>";
 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new InputSource(new StringReader(text)));
    NodeList elementsByTagName = document.getElementsByTagName("person");
    for (int i = 0; i < elementsByTagName.getLength(); i++) {
      Node node = elementsByTagName.item(i);
      Element element = (Element) node;
      String attribute = element.getAttribute("number");
      System.out.println(attribute);
    }
  }
}

Output

72