Heute habe ich nach längerer Zeit mal wieder mein Scala REPL gestartet. Die Aufgabe die ich mir gestellt hatte, war eigentlich einfach:
Gegeben sei eine Map[String, String], z.B.

val m = Map("key1" -> "value1", "key2" -> "value2")

Daraus soll nun ein Key-Value-String der Form "key1=value1&key2=value2" werden. Das ganze soll natürlich rein funktional geschehen.
Dazu verwenden wird die Funktion foldLeft:

def foldLeft[B](akkumulator: B)(op: (B, A) => B): B 

Sie nimmt einen Startwert von Typ B für den Akkumulator entgegen. Der Akkumulator ist eine Art Speicher für das Zwischenergebnis der Berechnung.
Zudem müssen wir noch eine Funktion übergeben, welche als Parameter den Akkumulator sowie etwas vom Typ des Objekts auf das foldLeft angewendet wird. Wir können diese Funktion also verwenden, um den Wert des Akkumulators zu verändern. Weiterlesen

Heute kam es mal wieder. Jemand hat bei einem Projekt für die Uni versehentlich den target-Ordner eingecheckt.

Für das Problem gibt es jedoch schnelle Abhilfe:

  1. Eclipse oder andere IDE's schließen
  2. In der Shell im Projektordner:
    svn remove target && svn propset svn:ignore target .
  3. Als letztes muss das ganze noch committed werden:
    svn commit -m "Ignore target folder"

Jetzt sollten alle noch ein

svn update

machen - das geht auch aus Eclipse heraus, via TeamUpdate.

Ubuntu ist ja eigentlich eine ziemlich tolle Distribution und auch recht stabil, solange man die halbjährlichen Releases geduldig abwartet und keine KDE SC-Versionen mittendrin installiert.

Gestern und heute stieß ich jedoch auf ein total merkwürdiges Problem: Maus und Tastatur reagierten immer für eine Weile nicht, dannn wieder und dann wieder nicht. Zudem leuchteten beim Ethernet-Port vom Boot an beide Lampen dauerhaft und der Network Manager meldete, dass kein Kabel eingesteckt sei. Die Ursache war mit htop schnell gefunden: Der KWorker brauchte, abwechselnd mit dem Watchdog-Prozess,  sekundenweise bis zu 100% auf einem CPU-Kern. KWorker hängt übrigens nicht mit KDE zusammen, sondern steht für Kernel-Worker. Die Threads für die das Teil ein Platzhalter ist, erledigen Kernel-typische Aufgabe.

Google brachte mich nicht wirklich zum Erfolg, auch wenn das Problem bekannt zu sein scheint (in einem Bug tummeln sich dabei vermutlich mehrere Ursachen zusammen). Meinen ersten Erkenntnissen nach handelt es sich wohl um einen Kernel-Fehler, allerdings hatte auch ein Upgrade auf Ubuntu 12.04 keine Besserung gebracht.

Zudem fiel mir auf, dass der Ethernet-Treiber e1000e für mein T61 nicht geladen war. Das habe ich dann mal nachgeholt, immer noch kein Effekt. Nach einem Neustart fror mir auch noch der PC ein.

Folglich hab ich das Laptop einfach mal auf die harte Weise neu gestartet(Nein, nicht mit dem Hammer.  Nein, auch nicht mit Wasser, das läuft bei den ThinkPads eh schadlos durch die Tastatur und macht einem die Hose nass...). Also einfach lange den "An/Aus"-Knopf gedrückt und danach wieder an gemacht. Funktioniert!

Ich finde das Verhalten merkwürdig. Vermutlich gab es ein Problem mit dem Ethernet-Treiber, so dass der Kernel immer wieder versucht hat, I/O-Anfragen daran zu stellen, was die Aktivität des KWorkers erklären würde. Zudem wurde der Zustand beim normalen Neustart immer wieder persistiert und beim booten wieder (fehlerhaft) hergestellt. So jedenfalls meine These.

Ob mir das mit Debian auch passiert wäre?