Hilfe! Die Ätzmitteldämpfe in der Werkstatt haben das Werkzeug angegriffen. Zum Glück steht die Abhilfe im Regal: Tiger Rost-K.O. Die Gebrauchsanleitung verrät: "Das beste Ergebnis wird im Tauchverfahren erzielt". Also flugs eine Plastikschale gefüllt und das Werkzeug rein. Nach einem Tag war dann das volle Ausmaß des "besten Ergebnisses" zu sehen:

Jetzt muss ich mich doch schon sehr anstrengen, um keine Fäkal-Kraftausdrücke zu verwenden, die diese stinkende Sauerei am besten beschreiben würden. Aber dass eine Prozedur, die sowas als Ergebnis bringt, als Anleitung auf einem Rostlöser steht, ist schon etwas skurril.

Ich habe nach einem Reinigungsversuch mit einer Küchenrolle und Handschuhen ziemlich schnell aufgegeben. Ich werde mir halt ein neues Set kaufen müssen.
0 Kommentare. Kommentare anzeigen/schreibenAls Schulprojekt mit 6 Leuten haben wir heuer eine erweiterbare Datenmodellierungssoftware entwickelt. Dinjam kann mit QtScript-Plugins erweitert werden - QtScript ist ECMAScript-kompatibel, was einfach gesagt JavaScript entspricht. Quellcode (und hoffentlich bald auch ausführbare Dateien) gibt's auf http://gitorious.org/dinjam (Dinjam Hauptrepository) und http://sourceforge.net/projects/dinjam (Bugtracker und Source-Mirror).
0 Kommentare. Kommentare anzeigen/schreiben
Die Menschen redeten immer noch von Wahrheit und Schönheit wie von den höchsten Gütern. Bis zum Neunjährigen Krieg. Der ließ sie einen anderen Ton anschlagen. Was nützen Wahrheit oder Schönheit oder Wissen, wenn es ringsumher Milzbrandbomben hagelt? Damals, nach dem Neunjährigen Krieg, wurde die Wissenschaft zum ersten Mal unter Kontrolle gestellt. Die Menschen waren zu jener Zeit sogar bereit, ihre Triebe kontrollieren zu lassen. Alles für ein ruhiges Leben! Seit damals haben wir die Kontrolle auf immer weitere Gebiete ausgedehnt. Natürlich nicht gerade zum Vorteil der Wahrheit, wohl aber zum Vorteil des Glücks.0 Kommentare. Kommentare anzeigen/schreiben— Aldous Huxley - Schöne neue Welt
Die Maus verkörpert doch echt mal die Usability (deutsch: Benutzbarkeit) von OpenOffice.
0 Kommentare. Kommentare anzeigen/schreiben
Gut, endlich hat's jemand in Worte gefasst: Das Projekt Wikipedia muss überdacht werden, wenn die Enzyklopädie nicht ein halbfertiges Online-Nachschlagewerk mit Getrolle hinter den Kulissen bleiben möchte.
Zuletzt geändert: 21. Oktober 20090 Kommentare. Kommentare anzeigen/schreiben99 % aller Deutschen sind irrelevant. Und werden es auch immer bleiben. Jedenfalls nach den Relevanzkriterien der deutschen Wikipedia.
In der deutschen Wikipedia ist nur das relevant, wovon nachgewiesen werden kann, dass es auch außerhalb des Internets irgendwie berühmt oder wichtig ist oder irgendwann einmal bedeutend war, alles andere muss damit rechnen, jederzeit gelöscht zu werden, unabhängig von der Qualität des Artikels, oder ob es Millionen Menschen außerhalb der Wikipedia für relevant halten...
... Ein gut gemeinter, aber ziemlich armseliger Versuch, Regeln aufzustellen, mit denen die Menschen und die Welt in relevant und irrelevant aufgeteilt werden sollen.
Naja, ich habe bei der IOI 2009 zwar keine Medaille gewonnen, aber eine Menge Erfahrung gesammelt - und viel Spaß gehabt! Das Event war komplett und kompetent durchorganisiert und beinhaltete u.a. die Anwesenheit des bulgarischen Bundespräsidenten, Herrn Parvanov, bei der Eröffnung, und Polizeieskorte zum Schwarzen Meer ;-)
Vielleicht wird's ja nächstes Jahr in Kanada was. Ich gratuliere Henadzi Karatkevich aus Weißrussland, der den Wettbewerb mit nur 14 Jahren gewonnen hat!
0 Kommentare. Kommentare anzeigen/schreibenIch habe ein minimalistisches "proof-of-concept" AJAX Chat in PHP geschrieben. Wenn jemand an einer Basis für eine Weiterentwicklung interessiert ist, kann er sich das anschauen.
Das einzig Interessante beim Programmieren war nur, herauszufinden, dass PHP-Sessions exklusiv sind (und dadurch die Session für andere Scripts gesperrt wird, wenn ein Client auf ein PHP-Script "AJAX"-wartet, welches absichtlich die Zeit verzögert. Man muss im verzögernden PHP-Script die Session schließen).
Download: ajaxchat01.zip
0 Kommentare. Kommentare anzeigen/schreibenVor kurzem brauchte mein Vater einen Bildverkleinerungs-Algorithmus für eine Anwendung (ja, er ist Softwareentwickler). Man würde annehmen, dass es eine große Auswahl an Resize-Bibliotheken zum Ändern der Bildgröße gibt, da es ja auch eine Menge Algorithmen wie Bilinear, Bikubisch etc. gibt. Jede Menge Googeln führt jedoch zu einem anderen Bild. Es gibt durchaus einige Bibliotheken, jedoch mit enormen Abhängigkeiten, eine braucht sogar die komplette GTK+ Bibliothek als Abhängigkeit!
Das Projekt meines Vaters wird in Borland C++ Builder entwickelt (iiek!). Das Borland-Toolkit selbst bietet außer dem "nearest neighbor" (nächster Nachbar)-Algorithmus keine weiteren Algorithmen zur Bildverkleinerung, und dieser sieht sehr schlecht aus (pixelig). Nachdem mir das Googeln zu blöd wurde, habe ich daher eine kleine Funktion zum Bildverkleinern geschrieben, welcher nichts außer einen C++ Compiler braucht. Ich habe mir eigene Überlegungen bezüglich des Algorithmus gemacht, am nächsten kommt er jedoch an die Bilineare Filterung heran (ich mag übrigens keine mathematischen Beschreibungen auf Wikipedia. Ich bin eher ein Programmierer als ein Mathematiker!)
Die Verkleinerung wird selbsterklärend von der Funktion scale() gemacht. Dieser Code ist bereits eine optimierte Version, die leider auch Makros beinhaltet und nicht besonders gut zu lesen ist. Ich schlage vor, die Funktion einfach zu benutzen ;-) Man könnte mich ja auch nerven, eine schönere Version zu schreiben.
readpng() und die PNG Library werden nur benutzt, um ein Beispielbild einzulesen, was sowieso durch eine andere Art der Pixelbeschaffung ersetzt wird. Update: Eine Version mit BMP als Inputfile ist nun im Archiv vorhanden.
Derzeit wird nur die Verkleinerung von Bildern unterstützt. Eine Vergrößerung um einige % scheint allerdings auch kein Problem zu sein.
Update: Scheinbar benötigt man ab libpng 1.4 folgendes:
#define png_infopp_NULL (png_infopp)NULL
#define png_voidp_NULL (png_voidp)NULL
Update 2: Bei manchen komprimierten PNGs wurden die Pixeldaten nicht korrekt berechnet - dieser Fehler ist nun ausgebessert.
Download: scaledown.zip
Zuletzt geändert: 18. Juni 20104 Kommentare. Kommentare anzeigen/schreibendump ist ein etwas älteres, aber sehr nützliches Unix-Tool zum Backupen (Anfertigen von Sicherheitskopien, schlagt mich wegen dem Anglizismus) von ext2 und ext3-Dateisystemen. Ich verwende es für das Backupen meiner Home-Partition, was nützlich ist, wenn man sie nachher mal komplett wiederherstellen will (Gründe: Festplattencrash, gestohlener Laptop etc.).
Für Leute, die nicht die gesamte Manpage lesen wollen, um zu verstehen, wie man dump aufruft, hier eine kurze Erklärung:
dump -3u -h 0 -f - /home | gzip > /pfad/zum/backup/verzeichnis/backupfile.dump.gz
Die erste Zahl, hier 3, ist der dump level, welcher für inkrementelle Backups benutzt wird - die Zahl wird jedes Mal erhöht, um nur inkrementelle Backups zu erstellen (welche ich täglich mache); das angehängte -u heißt "aktualisiere die Liste der Backups". Die -h 0 Option sagt dump, dass der nodump flag berücksichtigt werden soll; das heißt, dass Dateien, die mit dem
Das -f - sagt dump, wo die Ausgabedatei zu speichern ist, was hier mit - als die Standardausgabe angegeben ist. Der letzte Parameter ist das Dateisystem (Device-Datei oder Mountpoint), welches gesichert werden soll.
Ich lasse dump auf die Standardausgabe ausgeben, welche ich dann in gzip pipe, um die Dateien etwas zu komprimieren. Ich verwende einen NFS Mountpoint für die Zieldatei, was im Endeffekt heißt, dass die Datei auf meinem Server abgespeichert wird. Man könnte natürlich auch einen Dateinamen nach -f angeben und sich die ganze Piperei zu gzip sparen.
Dies ist ein Attribut der ext2/3-Dateisysteme, welches von dump benutzt wird (wenn man es explizit angibt), um zu bestimmen, ob eine Datei oder ein Ordner überhaupt gebackupt werden muss. Ich benutze dieses Flag für Dateien und Ordner, welche ich nicht unbedingt dringend brauche, aber die viel Speicherplatz brauchen, wie z.B. Videos oder Ordner mit Bildern. Das Attribut setzt man mit:
chattr +d <Datei oder Verzeichnis>
Man kann das Attribut auch mit dem gleichen Befehl wieder löschen, wenn man -d benutzt. Man kann sich auch die ext2/3 Attribute ansehen mit:
lsattr
Die Syntax des lsattr-Befehls erinnert an die Syntax des allseits bekannten ls-Befehls.
Man sollte immer wieder mal ein volles Backup machen, damit man nicht ALLE Backup-Dateien braucht, um eine Partition vollständig wiederherzustellen. Man muss auch ein volles Backup machen, bevor man inkrementell backupen kann. Man kann ein volles Backup mit der Option -0u (oder dem Argument full beim Skript) machen.
Hier präsentiere ich ein kleines Shellskript, welches ich für tägliches, inkrementelles Sichern verwende. Die Grundidee ist, die Backup-Nummer hochzuzählen und den Backup-Dateinamen ein Datum anzuhängen. Verwendung des Skripts auf eigenes Risiko:
#!/bin/bash
#
LAST_BACKUP="/etc/last_backup"
BACKUP_PATH="/mnt/public/David/_bak/laptop"
BACKUP_MOUNTPOINT="/home"
sudo smbmount //LINUX/PUBLIC /mnt/public
sudo umount "$BACKUP_MOUNTPOINT"
if [ "$1" = "full" ]; then
if sudo dump -0 -u -h 0 -f - /home | gzip > "$BACKUP_PATH/home-full-`date +%Y-%m-%d`.dump.gz"; then
echo 0 | sudo tee "$LAST_BACKUP" > /dev/null
exit 0
fi
exit 1
fi
lb=`cat "$LAST_BACKUP"`
nb=`expr $lb + 1`
if sudo dump -$nb -u -h 0 -f - /home | gzip > "$BACKUP_PATH/home-`date +%Y-%m-%d`.dump.gz"; then
echo $nb | sudo tee "$LAST_BACKUP" > /dev/null
fi
sudo mount "$BACKUP_MOUNTPOINT"
Zuletzt geändert: 07. September 20094 Kommentare. Kommentare anzeigen/schreiben Wie man festgestellt haben könnte, ist der Support für Ubuntu 7.10 Gutsy ausgelaufen. Ich hatte diese Distro auf meinem Server installiert und wunderte mich kürzlich darüber, dass ich keine neuen Pakete mehr installieren konnte (überall 404-Fehler). Daher sah ich mich gezwungen, einen Upgrade zu machen:
do-release-upgrade
... hat sehr schön in 45 Minuten (auf einer 1 GHz Maschine...) auf 8.04 Hardy aktualisiert. Es gab überhaupt keine Probleme, nur einige Konflikte in Konfigurationsdateien, die recht nett als diff angezeigt werden. Hierbei besteht dann die Möglichkeit, händisch etwas zu machen. Jöö! (ich hatte schon die Backups vorbereitet)
0 Kommentare. Kommentare anzeigen/schreibenCredit: Dieses kurze How-To basiert auf einer Mail von Shawn Rutledge an die Mailing-Liste org.openmoko.lists.device-owners.
Der ganze Haufen an Zeugs (Paketen) passt nicht in den Flash des FreeRunners, sodass man eine Partition auf einer microSD-Karte erstellen und auf /usr mounten muss.
/usr-Verzeichnis mit cp -a /usr/* /media/card auf die Karte kopieren
Die Karte händisch nach /usr mounten oder die /etc/fstab ändern:/dev/mmcblk0p1 /usr ext3 defaults,noatime 0 0
Mit der nach /usr gemounteten Karte nun folgende Pakete installieren:opkg install task-base-dev binutils binutils-symlinks gcc cpp
(Ich weiß nicht, ob gcc und cpp schon in dem task-base-dev-Paket sind, also habe ich sie hier einfach dazugeschrieben)
Verbesserungsvorschläge und Kritik bitte hier an mich senden.
0 Kommentare. Kommentare anzeigen/schreiben

Frage: Was macht man, wenn bei einem Unfall jemand auf den Lautstärke-Drehknopf eines Ford-Radios geflogen ist und dieser nicht mehr funktioniert?
Antwort:

Mir reicht's mit pythm, also habe ich mir mal einen ordentlichen, fingerfreundlichen Musikplayer für meinen Freerunner geschrieben. Yaomp basiert auf Qt und GStreamer und wird zum Download verfügbar sein, sobald ich noch ein paar Features hinzugefügt und den Code aufgeräumt habe.
Edit: Schaut so aus, als wäre die Entwicklung dieses Programms gestorben! Das ist schade, weil es einige gute Ideen eingebaut hatte (gewichtete Zufalls-Playlist, Abschaltung des Bildschirms bei Wiedergabe und Pause/Weiterspielen bei einem Anruf). Ich sollte diese Features wenigstens in Intone einbauen.
Zuletzt geändert: 30. August 20090 Kommentare. Kommentare anzeigen/schreibenHehe: Google hat am Samstag ein Update der Liste von Malware-URLs eingespielt, die alle Ergebnis-URLs beinhaltete (z.B. auch Googles eigene Seiten). Details siehe z.B. bei Golem.
0 Kommentare. Kommentare anzeigen/schreiben
Nachdem ich aus unerklärlichen Gründen eine Tüte blauer LEDs gekauft hatte, und danach (nach einer Bestellung von grünem Platinen-Basismaterial) eine blaue Platine bekommen hatte, beschloss ich, eine Binäruhr zu bauen (inspiriert von ThinkGeek). Wie üblich habe ich einen Atmel ATmega8 Mikrocontroller verwendet, diesmal in einer SMD-Ausführung (TQFP-Gehäuse) hinten auf der Platine. Die anderen Teile hätten wohl auch SMD sein können, die hatte ich aber gerade nicht in SMD da (ätsch). Trotzdem habe ich versucht, sie "schön" anzuordnen.
In Wirklichkeit ist es keine richtige Binäruhr, denn sie zeigt die Uhrzeit in BCD (binary coded decimal) an, damit man sie leichter lesen kann.
Die Software ist unspektakulär: Ein Timerinterrupt zählt die Uhrzeit, während ein anderer Interrupt die Zeilen multiplext, damit man am Chip weniger Ausgänge braucht (eine Zeile wird mit jeweils einem Transistor ausgewählt). Die EAGLE-Files für die Platine habe ich verschmissen, den Assembler-Quellcode gibts bei mir auf Anfrage.
Zuletzt geändert: 20. Oktober 20090 Kommentare. Kommentare anzeigen/schreiben© 2009 by David Madl. Impressum | Home (English) | Home (Deutsch) | Processing time: 0.384 s | IPv4