Skip to content

Software Übersetzungen

Ich habe immer ein sehr mulmiges Gefühl wenn ich Übersetzungen aus unserem Ost-Europäischen oder asiatischen Office bekomme - man kann diese so gar nicht kontrollieren. Dieses Problem haben wohl auch Chinesische Shop Besitzer, die sich ein englischsprachiges Ladenschild zulegen wollen. Allerdings ist es fraglich ob man dieser Art von automatisierter Übersetzung sehr weit trauen sollte: Via Mela via AdFreak via Dear Jane Sample from DrNo.de

Terminkonflikt

Heute finden an der Uni-Karlsruhe gleich zwei interessante Termine statt. Die Java User Group Karlsruhe musste deswegen in den Raum -102UG in der Informatik Fakultät ausweichen, dort gibt es um 19:15Uhr (-21:15) einen Vortrag von Dr. Patrick Schemitz (Netpioneer GmbH) zum Thema Grundladen [Web] Security Auditing. In -101UG spricht Dr. York Sure von SAP Research im Rahmen der GI/ACM Regionalgruppe Karlsruhe über Internet of Services. Dabei geht es um den Einsatz von Semantischen Technologien bei der Vermarktung von Internet Services. Beide Termine finden sich auf dem IT-Kalender des Stadtblog KA. Dort findet sich auch eine Ankündigung für Morgen: Gründung des "Verein der Karlsruher Software-Ingenieure" um 16:00-18:00 am FZI. Näheres dazu in der Presseerklärung von FZI, KIT, adrena objects, 1&1, SAP und HsK. Ich werde wohl bei der JUG-KA vorbeischauen heute Abend und mir Morgen die Info Veranstaltung ansehen.

Visual Virtualization

Gemeinhin wird die bessere Auslastung der Hardware Resourcen als Vorteile der Virtualisierung genannt. Um dazu aber größere Investitionen in Infrastruktur oder Lizenzen zu rechtfertigen muss man die Einsparungen und Kapazitäten auch visualisieren können.
Auszug aus dem Microsoft Guide zu Microsoft Office Visio 2007 Professional Add-In for Rack Server Virtualization
Zu diesem Zweck bietet Microsoft jetzt ein Visio Connector Plugin an, dass die Vorteile von Server Konsolidierung als Grafik (Virtual Rack) sichtbar machen können soll. Dabei greift Visio auf Excel Arbeitsblätter zu, die wiederum mit WMI und MOM Daten verknüpft sind. Das finde ich auch den besonders interessanten Teil an diesem Connector. Die Zugriffe auf WMI Live-Daten oder auf historische Auslastungszahlen des MOM Archivs erlaben es Server Auslastungen zu visualisieren. Via Infoworld Virtualization Report.

Optimierungen beim Java Threading

Dieses mal nur schnell einen Pointer zu einer Artikelserie von Jeroen Borgers auf InfoQ. Ich weise ausdrücklich darauf hin dass der erste Teil des Artikels nicht ohne den zweiten Teil genossen werden sollte. Zusätzlich möchte ich noch auf den Micro Benchmark Runner von Brent Boyer verweisen. Dieser spart ein wenig die manuelle Korrektur und Anpassung der Warmup-Phasen und liefert aussagekräftige statistische Auswertungen. Die developerWorks Artikelserie geht auf diese Verfahren auch noch etwas genauer ein:

Arbeitsplatz Schönheit bei der AxelSpringer AG

Bei Youtube findet sich eine Video Botschaft von Dr. Mathias Döpfner (CEO) an die Angestellten des AxelSpringer Verlags. Bei Timecode 1:30 findet sich dann auch diese Aussage hier:
Ich glaube jeder Arbeitsplatz sieht ein bisschen schöner aus, wenn ein Apple Gerät daraufsteht.
Ich bin mir nicht sicher, ob man IT mit Spass und Schönheit verkaufen muss, aber ich frage mich ob man wirklich Geld dabei sparen kann - besonders wenn man selbst erkannt hat dass es noch keine großen Anwender Unternehmen gibt (Axel Springer wird damit zum 2. größten Apple Firmenkunden nach Google weltweit). Wie gut eignen sich die Apples denn in großen Unternehmensnetzen? Gibt's da Dinge wie Group Policy, Directory und System Management Server?

DoD über CC

In einem Report (PDF) des U.S. DoD findet man folgende - doch recht amüsante - Anmerkung:
The primary process relied upon by the DoD for evaluation of the assurance of commercial products today is the Common Criteria (CC) evaluation process. The task force believes that Common Criteria is presently inadequate to raise sufficiently the trustworthiness of software products for the DoD. This is particularly true at Evaluation Assurance Level-4 (EAL4) and below, where penetration testing is not performed. Nonetheless, Common Criteria evaluation is an international program, well established, and not easy to change.
Es ist interessant zu sehen, dass einer der Haupt-Initiatoren der Common Criteria nun erkennt, dass diese nicht sehr nützlich ist - und was noch viel interessanter ist - nicht so einfach geändert werden kann, da diese nun im Standardisierung-Morast festsitzt. Auf den Report hat übrigen's Oracle's CSO Mary Ann Davidson hingewiesen.

Null returns in Java

Das Thema der null Referenzen in Java, insbesondere als Rückgabewert von Methoden ist umstritten. Generell führt es zu einer erhöhten Gefahr von (aussagelosen) NullPointerExceptions. An manchen stellen kann man diese einfach vermeiden: finder die eine Liste von Objekten zurückliefern sollten eine leere Ergebnismenge (die ohne Fehler zustande gekommen ist) nicht mit einem null; Rückgabewert signalisieren, sondern mit einer leeren Collection: "return List.EMPTY_LIST;". An anderen Stellen ist die Vermeidung von null nicht immer unumstritten. Auf die Diskussion will ich mich hier jetzt garnicht einlassen. Deswegen habe ich hier eine einfache Policy - falls null Rückgabe Werte doch zulässig sein sollten: Wenn schon null als Rückgabe Wert einer Methode, so darf dies nur passieren wenn:
  1. im Javadoc erwähnt wird "@returns the Object requested or null"
  2. der null Wert im Code durch ein explizites "return null;" angegeben wird.
Ein Negativbeispiel ist dies hier (der Code mit der Entscheidungsfindung ist hier deutlich übersichtlicher als bei größeren Methoden mit state variablen in der Praxis:
public IThing getCarOrBike(int distance, Person p) {
  IThing ret = null;

  if (distance > 1000) {
    ret = new Car();
    ret.add(p);
  }

  if (distance > 100) {
    ret = new Bike();
    ret.add(p);
  }

  return ret; // BAD
}
Mit einem expliziten return wird dies klarer, entweder (die von mir oftmals bevorzugte Early-Out Variante):
public IThing getCarOrBike(int distance, Person p) {

  if (distance < 0 || p == null)
    throw new IllegalArgumentException("You must specify a person and positive distance");

  if (distance <= 100)
    return null; // pedestrian

  IThing ret;

  if (distance > 1000) {
    ret = new Car();
  } else {
    ret = new Bike();
  }
 
  ret.add(p);

  return ret;
}
Oder eine if/else Cascade:
/**
 * Return Transportation for given distance.
 * <P>
 * This will return instances of Car or Bike. If the distance
 * is short enough, null will be returned.
 *
 * @return null or new instance of Car or Bike with person added
 */
public IThing getCarOrBike(int distance, Person p) {
  IThing ret = null;

  if (distance > 1000) {
    ret = new Car();
  } else if (distance > 100) {
    ret = new Bike();
  } else {
    return null; // pedestrian
  }

  ret.add(p);
  return ret;
}
Wichtig ist dabei immer, dass im Code klar wird, was die Intention ist - also: soll null wirklich zurückgegeben werden oder wurde nur eine Fallunterscheidung vergessen. Wenn man sich dazu überwindet "return null;" zu schreiben, so ist es zugegebenermaßen manchmal etwas langatmiger, aber dafür eindeutig. Eine Code Policy wie "jede Methode darf nur einen return punkt haben" ist übrigens nicht nur weil es dieses Idiom verbietet unsinnig. Das führt nur zu extremen Verschachtelungen. Dank Java finally gibt es dazu auch sehr selten Grund. Übrigens versuche ich auch die returns innerhalb eines entsprechenden try/finally Blocks zu haben und vermeide "Alibi" returns am ende der Methode - die beschwichtigen nur erwünschte Warnings.