Flickr

www.flickr.com

Mittwoch, 16. März 2011

Umzug von Wordpress auf Blogger.com

Puh, der Umzug meines alten Wordpress Blogs auf Blogger.com war ziemlich aufwendig.


  • Export der SQL-Datenbank

  • Import in eine aktuelle Wordpress Version

  • Upgrade der Datenbank

  • Export der Blogartikel als XML (dies war erst in der neueren Wordpress-Version möglich)

  • Manuelles Reparieren der UTF-8-Fehlerchen

  • Import auf Blogger.com



Ich hoffe, die Arbeit (5h ?) hat sich gelohnt.

Dienstag, 15. März 2011

Lösung: Dolce Gusto baut keinen Druck mehr auf

Hoho. Ich habe meine Dolce Gusto reparieren können.

Sie baute plötzlich keinen Druck mehr auf.

Die Lösung: Den Dorn, der in die Kaffeepöttchen hineinsticht mit einem kleinen Draht reinigen. Danach lief mein Maschine wieder tadellos :)

Es ginge auch eine feine Nadel. In meinem Fall war es ein Transistorbeinchen.

Mittwoch, 25. August 2010

KBV Kriterien

Ich habe mir gerade eine schematische Darstellung über die zur Qualitätssicherung in der Mammografie eingeführten KBV Kriterien erstellt. Vielleicht ist diese ja auch für den ein oder anderen hilfreich. Danke an "Wissensverarbeitung" und Constraints.

Sonntag, 8. August 2010

MRT Artefakte

Im Rahmen meiner Vorbereitungen auf den Facharzt habe ich eine kleine Keynote Präsentation zu dem Thema erstellt. Diese gibt es hier auch als Download.

Montag, 5. Juli 2010

Exporting examination codes from Siemens Syngo RIS

View my short perl script to create a list of examinations codes from a Siemens Syngo RIS.

First create an export of the examination tree. Usually this file ends with .tre.

They you can apply this script to that file and you receive a list of all examination codes.

Use at your own risk!

Here you are:


get_exam_code.pl

#!/usr/bin/perl

open IN, "<$ARGV[0]" || die;

while ($data=){
while ($data=~s/[\w \d\xe4\xf6\xfc].\x00([\w \d\xe4\xf6\xfc]{1,})// ){
print "$1\n";
$hits++
}
}

close IN;

print "Hits: $hits\n";


Exporting examination codes from Siemens Syngo RIS


Samstag, 5. Juni 2010

Weinkrügeproblem

Hier meine Java Lösung für das Weinkrügeproblem aus dem Buch Wissensverarbeitung - Eine Einführung in die Künstliche Intelligenz für Informatiker und Ingenieure - I. Boersch, J. Heinsohn, R. Socher - 2. Auflage.

Die Frage ist, wie man den Wein aus 3 Weinkrügen

  • 9 Liter (voll)

  • 7 Liter (leer)

  • 4 Liter (leer)



so verteilt, dass sich im 9 Liter Krug 6 Liter und im 4 Liter Krug 3 Liter Wein befinden?

Ist mein erster Java Versuch und ich bin möchtig stolz darauf. Bin für konstruktive Kritik offen!


WeinkruegeproblemV2.java:


import java.util.*;

public class WeinkruegeproblemV2 {

public static int [] init(){
int [] startstatus = {9,0,0,};
// int [] startstatus = {6,0,3,};

return startstatus;
}

public static boolean zielerreicht(Knoten k){
int [] zielstatus = {6,0,3,};
return Arrays.equals(k.getStatus(), zielstatus);
}

public static int [] umschuetten (int i, int j, Knoten k){
int umfuellmenge = 0;
int [] status = k.getStatus().clone();
int [] maxinhalt = {9,7,4,};
umfuellmenge = Math.min(k.getStatus()[i],maxinhalt[j]-k.getStatus()[j]);
status[i]=k.getStatus()[i] - umfuellmenge;
status[j]=k.getStatus()[j] + umfuellmenge;
return status;
}

public static boolean doublette(Knoten k){
int i;
// System.out.println("Checke Pfad mit "+k.getPfad().size()+ " Knoten auf Doublette.");
for (i=0;i if (Arrays.equals(k.getStatus(),k.getPfad().get(i).getStatus())){
// System.out.println("Doublette: "+i+Arrays.toString(k.getStatus())+" "+Arrays.toString(k.getPfad().get(i).getStatus()));
return true;
}
// System.out.println("Keine Doublette: "+i+Arrays.toString(k.getStatus())+" "+Arrays.toString(k.getPfad().get(i).getStatus()));
}
return false;
}

public static ArrayList expand(Knoten k){
ArrayList kinder = new ArrayList();
int i,j;
Knoten kind = new Knoten();


for (i=0;i<=2;i++){
for (j=0;j<=2;j++){
if (j!=i){
kind.setStatus(umschuetten(i,j,k));
kind.setPfad((ArrayList)k.getPfad());
// zeigeKnotenliste(k.getPfad());
// System.out.println(Arrays.toString(kind.getStatus()));

if (!Arrays.equals(kind.getStatus(),k.getStatus())){

if (!doublette(kind)){
// System.out.println("Neues Kind: "+Arrays.toString(kind.getStatus()));
// kind.addPfad(kind);
kinder.add(new Knoten( kind.getStatus(), kind.getPfad() ));
}
}
}
}

}

System.out.println("Kinder:");
zeigeKnotenliste(kinder);
return kinder;
}

public static void zeigeKnotenliste(ArrayList liste){
int i;

for (i=0;i System.out.println(i+" "+Arrays.toString(liste.get(i).getStatus()));
// System.out.println("Path:");
// zeigeKnotenliste(liste.get(i).getPfad());
// System.out.println();
}
System.out.println("==> "+ liste.size() + " Elemente");

}

public static void main(String[] args){
int dummy;
ArrayList agenda = new ArrayList();

Knoten z = new Knoten();
// zeigeKnotenliste(z.getPfad());
z.setStatus(init());
// zeigeKnotenliste(z.getPfad());

agenda.add(z);

while(!zielerreicht(z)){
// for (dummy=0;dummy<2;dummy++){
z.addPfad(z);
System.out.println("\nExpandiere "+Arrays.toString(z.getStatus()));
// System.out.println("Pfad :");
// zeigeKnotenliste(z.getPfad());
agenda.addAll(expand(z)); // Breitensuche
// System.out.println("Agenda nach Zufügung der Kinder:");
// zeigeKnotenliste(agenda);
agenda.remove(0);
System.out.println("Agenda:");
zeigeKnotenliste(agenda);
z = agenda.get(0);
}

// DEBUGGING
// System.out.println(Arrays.toString( z.getStatus() ));
// z.setStatus(init());
// System.out.println(Arrays.toString( z.getStatus() ));
// Knoten z1 = new Knoten();
// z1.setStatus(umschuetten(0,1,z));
// z1.addPfad(z);
// System.out.println(Arrays.toString( z.getStatus() ));
// System.out.println(Arrays.toString( z1.getStatus() ));
// System.out.println(zielerreicht(z));

System.out.println("\nLösung gefunden");
zeigeKnotenliste(z.getPfad());
}
}






Knoten.java:


import java.util.*;

public class Knoten {
private int[] status = {-1,-1,-1, };
private ArrayList pfad = new ArrayList();

Knoten(){ // Ueberladen
}

Knoten(int [] ueb_status){ // Ueberladen
status = ueb_status.clone();
}


Knoten(int [] ueb_status, ArrayList ueb_pfad){ // Ueberladen
status = ueb_status.clone();
pfad = (ArrayList)ueb_pfad.clone();
}

public void setStatus(int[] status){
this.status = status.clone();
}

public void setPfad(ArrayList ueb_pfad){
pfad=(ArrayList)ueb_pfad.clone();
}

public void addPfad(Knoten ueb_pfad){
pfad.add(ueb_pfad);
}

public int[] getStatus(){
return this.status;
}

public ArrayList getPfad(){
return this.pfad;
}


}