Technik

März 31, 2013

Programmiertechniken erklärt

Hier einige einfache Erklärungen für einige übliche Programmiertechniken und verwandte Begriffe:
Iterativ
  • Du gehst in ein Geschäft
  • Du suchst einen Artikel aus
  • Du gehst zur Kasse und bezahlst
  • Du bringst den Artikel nach Hause
  • Du wiederholst die ersten 4 Schritte, bis du alles gekauft hast, was du brauchst
Rekursiv
  • Du gehst einmal durch alle Geschäfte, ohne etwas zu kaufen.
  • Du gehst genau den gleichen Weg zurück und kaufst dabei alles ein.
Imperativ
  • Du schickst jemand anderen für dich einkaufen.
objektorientiert
  • Es geht dir um die Dinge, die du kaufst, nicht um das Einkaufserlebnis.
Logische Programmierung
  • Wenn sie frische Brötchen haben, kaufst du 10 Stück.
Lambda-Kalkül
  • Du gehst zur Fleischtheke, weil du denkst, dass sie Lamm da haben.
Design Patterns
Factory
Die Produkte kommen aus der Fabrik
Adapter
Ohne kannst du dein neues Gerät nicht anschließen.
Strategy
Du vermeidest es zur Stoßzeit einzukaufen
Singleton
Du kaufst alles im gleichem Laden
Visitor
Du verlässt den Laden ohne etwas zu kaufen
Observer
Kaufhausdetektiv
Code Smells
Feature Envy
Der neue PC im Laden kann mehr als Deiner
God Object
Das neue iPhone
Law of Demeter
Du darfst die Verkäufer fragen wie das Gerät funktioniert, aber du darfst es im Laden nicht selber aufschrauben um nachzusehen.

Kategorien: Fun
Tagged: Programmiertechniken programmieren Technik iterativ rekursiv imperativ objektorientiert logisch Lambda Patterns Factory Adapter Strategy Singleton Visitor Observer Code Smells Feature Envy God Object Law of Demeter iPhone

0 Kommentare

Sept. 10, 2008

Tolle Sachen mit SVG+Javascript

SVG + Javascript Spiral Clock

Wirklich nett, zumal die Daten alle dynamisch sind. Vielleicht wird das ja wirklich mal eine Flash-Alternative. Dazu wäre vermutlich aber erst einmal ein GUI-Editor der einfache Scripting-Aufgaben automatisch generiert nötig.

Kategorien:
Tagged: Technik JavaScript SVG

0 Kommentare

April 15, 2008

Usability: URL-Nummerierung

Viele Webseiten teilen zum Beispiel Diskussionforen in mehrere Seiten ein. Hierbei gibt es zwei Sorten von Nummerierung:
  • Kleine Zahlen für alte Seiten (http://url/page/1 ist die älteste Seite)
  • Kleine Zahlen für neue Seiten (http://url/page/1 ist die neueste Seite)
Die meisten Seiten verwenden kleine Zahlen für neue Seiten, was leider meistens nicht ideal ist. Hier eine Gegenüberstellung:

Kleine Zahlen für neue Seiten:

  • +: Die Hauptseite kann (sichtbar oder unsichtbar) auf Seite 1 weiterleiten.
  • +: Links sind aufsteigend nummeriert, was der intuitiven Darstellungsweise entspricht
  • -: Ein Link zu speziellen Seite wird sobald eine neue Seite vollgeschrieben ist auf eine andere Seite zeigen.
  • -: Wer lange an einer Seite liest, wird wenn er danach die nächste Seite aufruft die gleiche Seite nocheinmal(oder eine noch ältere) lesen.
  • 0: Es passiert nicht, dass man durch hinzugefügte Seiten beim Weiter-klicken eine Seite ausversehen überspringt.
Kleine Zahlen für alte Seiten:
  • -: Extrabehandlung für die erste Seite (kann nicht mehr statisch auf Seite 1 weiterleiten)
  • -: Von der Startseite kommt man auf eine Seite mit großer Zahl, Nummerierung Rückwärts verwirrt beim Blättern.
  • +: Nummerierung ist chronologisch, älteste Beiträge haben kleinere Nummern
  • +: Eine einmal vergebene Nummer für eine Seite ändert sich nicht mehr.
  • +: Links und Lesezeichen zeigen immer auf die gleiche Seite
andere Ideen:
  • Jede Seite bekommt eine (zufällige) ID, die sich nicht mehr ändert. Deutlicher Nachteil: Nummer nicht in der URL erkennbar(Übersichtlichkeit), außerdem ist die URL nicht so einfach merkbar.
Und ja, der Blog hier macht es auch "verkehrt", wie viele andere Softwares auch.

Kategorien:
Tagged: Technik Usability Nummerierung URL ID Webdesign

0 Kommentare

April 8, 2008

Schönere Blogtitel

Wie die Leser dieses Blog, welche die Webseite besuchen statt den Feed abboniert zu haben sicher schon gemerkt haben, habe ich Titel vereinfacht:

Von

laxu » Blog Archive » Titel
Zu
Titel [laxu]
Das hat gleich mehrere Vorteile:
  • Die wichtigste Information steht vorne
  • Bei viele Tabs bleibt das wesentliche lesbar
  • die "»" werden auf einigen (Such-)Seiten als unbekanntes Zeichen oder als & raquo; dargestellt
Die Änderung findet bei Wordpress in dem jeweiligem Theme statt und zwar im <title>-Tag in der Datei header.php:
<title><?php if (is_home()) { bloginfo('name'); } else { wp_title(''); echo " [";bloginfo('name');echo "]"; }?></title>
Andere Möglichkeiten wären noch:
  • "Titel" - am kürzesten, keine "Eigenwerbung", bestest Information/Länge Verhältnis
  • "Titel [laxu blog]"
  • "Titel [ein Artikel aus dem laxu blog]" - Beschreibend aber lang (es wird dann eben hinten meist abgeschnitten)
  • "Titel - laxu blog"
  • ...

Kategorien: Software
Tagged: wordpress Technik Php Titel Aufräumen schöner Theme

0 Kommentare

April 4, 2008

Tipp: Fenstermanager in Ubuntu austauschen

Ubuntu nutzt als Standard-Fenstermanager metacity, weil es der Gnome-Standard ist. Metacity ist jedoch für vieles nicht ideal.
  • Es ist unflexibel, und hat wenig Optionen
  • langsamer als einige der Alternativen
  • Normale Einrichtung anders als die meisten anderen WM (Beispiel: Alt+Rechtsklick+ziehen verändert die Größe des Fensters bei fast allen anderen Windowmanagern, bei Metacity kommt das Fenstermenu)
  • Die Unterstützung für mehrere Monitore (Xinerama) war beim letzten ausprobieren noch nicht fertig.
Wer 3D-Fenstermanager mag findet eine einfache Alternative darin Compiz zu aktivieren. Compiz bietet einige Funktionen die ein Fortschritt gegenüber Metacity sind.

Wer jedoch mit einem 3D-Windowmanager nicht so effektiv arbeiten kann, kann sich auch einige 2D Alternativen ansehen, wie zum Beispiel:

  • fluxbox - klein, schnell, ermöglicht Fenster mit mehreren Tabs(ein Fenster enthält verschiedene Programme in Tabs) (themes)
  • icewm - sehr konfigurierbar. Für Ubuntu sollte man in der icewm-config das icewm-panel deaktivieren. (themes)
  • xfwm4 - Dank Xubuntu mit Ubuntuähnlichem Theme per default
  • kwin - KDE Windowmanager, bekannt von Kubuntu. Eventuell unter Ubuntu nicht ideal wenn wenig RAM verfügbar ist.
Ersetzen von Metacity

Zunächst öffnet man ein Terminal. Einige der Windomanager können Metacity selber ersetzen, wie bei kwin:

kwin --replace&
bei anderen muss man metacity selber beenden:
killall metacity;xfwm4&
Dann läuft der neue Fenstermanager. Möchte man ihn dauerhaft nutzen startet man zunächst "gnome-session-properties" und ändert den Status des WMs von Normal auf "Restart" ("Anwenden" nicht vergessen). Danach speichert man die Änderung mit:
gnome-session-save
Achtung: Andere Fenster die Sitzungsmanagement beherrschen werden mit gespeichert. Eventuell sollte man später mit "gnome-session-properties" anpassen was man in der Sitzung haben möchte und was nicht.

Und so sieht es dann mit xfwm4 aus:

Kategorien:
Tagged: Tipps Technik Ubuntu Metacity Kwin Xfwm4 IceWM Fluxbox

0 Kommentare

März 31, 2008

EEE-PC mit Windows

Asus EEE-PCDer EEE-PC mit Windows wird genausoviel kosten wie mit Linux. Damit dürfte der Linux-Nutzer wohl den Windows-Nutzer mitfinanzieren. Und die Leute werden wieder einmal nicht bemerken, wieviel Geld sie bei neuen PCs für das enthaltene Windows ausgeben. Dabei wäre der EEE-PC ja die ideale Platform gewesen um zu demonstrieren, dass Linux nicht nur billiger ist, sondern auch für die meisten Leute Windows vollständig ersetzen kann.

Außerdem kann man damit rechnen, dass auf der Hardware Windows langsam laufen wird, was schlechte Testberichte für den EEE-PC bewirken könnte. Auch werden von den 4 GB Flashspeicher wohl nur noch 1,8 GB verfügbar sein auf dem Windows-Modell. Werden dann die nötigen Programme installiert, bleibt für Daten wirklich wenig übrig. Das Xandros-Linux hingegen, welches bisher Standard ist bringt bereits die wichtigsten Programme (wie Multi-Messanger) mit

Kategorien: Linux Windows
Tagged: Technik EEE-PC

0 Kommentare

März 31, 2008

Computer Support

Die meisten Leute meinen, man könnte ihre Computerprobleme übers Telefon oder über den Chat klären. Dann kommen völlig unzureichende Beschreibungen:
Q: Was  steht auf dem Bildschirm? A: Ein Blumentopf
oder sowas wie "Das Internet geht nicht". Wenn man fragt was sie gemacht haben ist die typische Antwort "nichts". Vielleicht sollte man dann fragen, warum der Computer denn an war ...

Wellington Gray hat die Situtation jetzt in einem Comic gezeichnet: The problem with tech support

Kategorien:
Tagged: Support Technik Comic

4 Kommentare

März 27, 2008

Stylish: neue Designs für alte Seiten

Wer sich an den Designs seiner Lieblingsseiten satt gesehen hat, kann sie mit der praktischen Firefox-Extension "Stylish" umbauen, oder fertige Styles, die andere Nutzer erstellt haben importieren. Je nachdem wie viel umgebaut wird, erkennt man die Seiten hinterher kaum wieder.

Ich habe selber mal ein wenig rumprobiert und einen linierten Stil für das Blog erstellt. Die Bilder sind mit Data-URLs in den CSS-Stil eingebettet. Sehr schön ist auch die Vorschau-Funktion beim Bearbeiten von Stilen, sowie dass ein neuer Stil sofort und ohne Neuladen der Seiten aktiv wird.

Tipp: Wer einen umfangreichen Stil bauen möchte, kann dazu den "Inspect"-Modus der Erweiterung Firebug nutzen, um zum Beispiel CSS-Klassen der Elemente die gestyled werden sollen herauszufinden.

Kategorien: Software
Tagged: Tipps Firefox Technik Extension Stylish Firebug

0 Kommentare

März 24, 2008

nilfs2: Ein log-structured file system für Linux

Achtung: Dies ist ein Artikel für technisch Interessierte, die bereits mit der Linux-Shell umgehen können und wissen was sie tun. Alle anderen sollten lieber eines der Standard-Dateisysteme wie ext3, xfs oder ReiserFS verwenden, die bereits im Linux-Kernel enthalten sind.

Nilfs2 ist ein log-structured file system. Das heißt, dass Daten bei bearbeitung nicht überschrieben werden, sondern an eine andere Stelle geschrieben werden, sodass das Original erhalten bleibt.

Ähnlich wie bei Journalling Dateisystemen führt dies dazu, dass im Falle eines Ausfalls keine Daten nur halb geschrieben sind. Aber auch nach der Schreiboperation bleibt der alte Zustand erhalten, und kann zum Beispiel genutzt werden um gelöschte Dateien wiederherzustellen. Dazu nutzt Nilfs2 Checkpoints und Snapshots. Bearbeitet man Dateien, erstellt Nilfs2 ca. alle 30 Sekunden einen Checkpoint, welcher in der Standardeinstellung nach einer Stunde gelöscht wird. Möchte man einen Checkpoint dauerhaft behalten, kann man ihn in einen Snapshot umwandeln, welcher nicht automatisch gelöscht wird.

Installation

Zur Installation lädt man den Quelltext des Kernel-Moduls und der nötigen Programme herunter und kompiliert diese. Für das Modul muss der Kernel selber nicht gepatcht werden, die Kernel-Header Dateien müssen jedoch beim kompilieren vorhanden sein. Danach muss das Modul geladen werden, und schon ist Nilfs2 einsatzbereit.

Einführung

Zunächst erstellen wir ein Testimage:
# dd if=/dev/zero of=nilfs2.image bs=1M count=200 #200MiB Datei erstellen
200+0 Datensätze ein
200+0 Datensätze aus
209715200 Bytes (210 MB) kopiert, 4,8456 Sekunden, 43,3 MB/s
# losetup /dev/loop0 nilfs2.image
# mkfs.nilfs2 /dev/loop0
mkfs.nilfs2 ver 2.0
Start writing file system initial data to the device
Blocksize:4096  Device:/dev/loop0  Device Size:209715200
File system initialization succeeded !!

Und hängen es ein:

# mount -t nilfs2 /dev/loop0 /media/loop
# cd /media/loop
# ls -a

.  ..  .nilfs  .sketch

Die Checkpoints zeigt "lscp" an:

# lscp
CNO        DATE     TIME  MODE  SKT   NBLKINC       ICNT
1  2008-03-24 21:43:46  cp     -         11          3
# touch test
# ls -a

.  ..  .nilfs  .sketch  test
# lscp
CNO        DATE     TIME  MODE  SKT   NBLKINC       ICNT
1  2008-03-24 21:43:46  cp     -         11          3
2  2008-03-24 21:45:58  cp     -         11          4

Wenn man möchte, kann man alte Checkpoints mit rmcp entfernen:

# rmcp 1
# lscp

CNO        DATE     TIME  MODE  SKT   NBLKINC       ICNT
2  2008-03-24 21:45:58  cp     -         11          4

möchte man einen Stand dauerhaft behalten, hilft "mkcp -s" einen neuen Snapshot zu erstellen.

# echo "test1" >test
# mkcp -s
# lscp

CNO        DATE     TIME  MODE  SKT   NBLKINC       ICNT
2  2008-03-24 21:45:58  cp     -         11          4
3  2008-03-24 21:47:04  cp     -          7          4
4  2008-03-24 21:47:59  ss     -         11          4
# echo "test2" >test
# lscp

CNO        DATE     TIME  MODE  SKT   NBLKINC       ICNT
2  2008-03-24 21:45:58  cp     -         11          4
3  2008-03-24 21:47:04  cp     -          7          4
4  2008-03-24 21:47:59  ss     -         11          4
5  2008-03-24 21:48:04  cp     -          8          4
6  2008-03-24 21:48:11  cp     -         11          4

Stattdessen hätte man auch mit "chcp ss #num" einen existierenden Checkpoint in einen Snapshot umwandeln können.

Snapshot 4 sollte also in der Datei test den Text "test1" enthalten, wohingegen die Datei momentan "test2" enthält. Probieren wir es aus, indem wir Checkpoint 4 in einen neuen Ordner mounten:

# mount -t nilfs2 -o ro,cp=4 /dev/loop0 /media/loop2
# cd /media/loop2/
# cat test

test1

Tatsächlich, unter "/media/loop2" kann man nun im nur-lesen Modus den alten Snapshot benutzen. Möchte man den Snapshot wieder entfernen, muss man ihn zunächst mit "chcp cp #num" wieder in einen Checkpoint umwandeln:

# lscp |grep "^[ ]*4" #das  grep filtert auf Checkpoints die mit 4 anfangen
4  2008-03-24 21:47:59  ss     -         11          4
# chcp cp 4
# lscp |grep "^[ ]*4"
4  2008-03-24 21:47:59  cp     -         11          4

Nun wird der Snapshot entweder automatisch gelöscht werden, oder man kann ihn wie jeden anderen Checkpoint mit rmcp entfernen.

Checkpoints löschen

Nilfs2 nutzt einen Daemon, der via /etc/nilfs_cleanerd.conf konfiguriert wird um alte Checkpoints zu löschen. In der Datei kann man einstellen, wie lange Checkpoints aufgehoben werden(1 Stunde als Default), und wieviele Chunks in welchem Zeitabstand wieder freigegeben werden sollen.

Vorteile

Nilfs2 spielt seine Vorteile vor allem im Backupbereich aus. So kann zum Beispiel rsync-Backup mit Nilfs2 ohne Hardlinks realisiert werden, wodurch das Löschen von alten Backups beschleunigt wird. Liegt nicht nur das Backup auf dem Nilfs2, sondern die ganzen Daten, können ausversehen gelöscht Dateien aus einem Checkpoint wiederhergestellt werden, und es sind höchstens die Änderungen der letzten 30 Sekunden verloren. Eine komplette Datensicherung wäre mit einer Kombination von RAID-1(Sicherheit gegen Festplattenausfall) und Nilfs2(Sicherheit gegen versehentliches Löschen) denkbar.

Nachteile

Nilfs2 ist nicht im offziellem Kernel, was garantieren würde, dass es auch in Zukunft noch verfügbar ist.[UPDATE Seit Linux 2.6.30 ist Nilfs2 Bestandteil des offiziellen Kernels] Außerdem fehlen noch einige Dateisystemfunktionen. Weiterhin ist die Stabilität und Performance noch nicht so gut untersucht wie bei den verbreiteten Dateisystemen. Nilfs 2.0.0 kann noch kein NFS, was in 2.0.1 jedoch inzwischen möglich ist. Außerdem ergibt sich ein Problem, wenn man das Dateisystem komplett füllt, dass selbst nach dem Löschen der Datei der Platz nicht freigegeben wird, da die Datei noch in diversen Checkpoints weiterexistiert. Auch wenn diese Checkpoints gelöscht werden wird der Platz erst freigegeben, wenn die protection_period aus der Konfiguration erreicht wird. Das führt unter Umständen schoneinmal dazu, dass man ca. 1 Stunde keine neuen Datei mehr erstellen kann.

Workaround: kurze protection_period (dann aber snapshots für jeden Stand den man noch braucht!) oder darauf achten, dass das Dateisystem nie komplett gefüllt wird.

Sicheres Löschen mit Tools wie shred funktioniert aufgrund der Wirkungsweise eines log-structured FS leider nicht. Umgekehrt werden gelöschte Daten, sobald sie in keinem Checkpoint mehr enthalten sind vermutlich recht häufig durch das anlegen neuer Checkpoints überschrieben, wenn das FS aktiv genutzt wird.

Vorsicht bei 2.0.1

Nilfs2 2.0.1 erkennt Dateisysteme von 2.0.0 nicht. Dies liegt wohl nicht an einer Disk-Layout Änderungen, sondern ist ein Fehler. 2.0.1 Images laufen mit 2.0.1 jedoch problemlos.

Fazit

Momentan teste ich Nilfs2 2.0.0, und warte auf den Bugfix für 2.0.1, damit es mein Dateisystem wieder erkennt. Die Performance ist bisher super, und während des Betriebs von 2.0.0 hatte ich keinerlei Probleme, außer dass NFS noch nicht implementiert war. Es bleibt zu hoffen, dass Regressionen wie bei 2.0.1 eine Ausnahme bleiben.

[UPDATE] Inzwischen ist nilfs2 bei 2.0.4 (utils 2.0.5) angekommen, und der 2.0.1 Bug ist beseitigt, NFS wurde nachgerüstet und im 2.0.4 Release wurde ein von mir gemeldeter Bug beim löschen von Dateien die mehrere Gigabyte groß sind beseitigt. Auf der Backup-Partition ist nilfs2 jetzt schon länger ohne Probleme im Einsatz. Mit Rsync werden die Dateien auf den aktuellen Stand gebracht, und dann wird ein Snapshot erstellt, welcher den Stand dauerhaft sichert.

Kategorien: Linux OpenSource Software
Tagged: Filesystem nilfs Technik nilfs2 Dateisystem

1 Kommentar

Feb. 19, 2008

neuer Mini-Laptop

Nach dem EEE-PC für 300 Eur soll in England ein ziemlich vergleichbares Gerät für umgerechnet rund 130 Eur Ende Februar auf den Markt kommen. Eine weitere interessante Funktion ist, dass die Tastatur abgekoppelt werden kann, und der Laptop dann über einen "Mausemulator" auf der Rückseite gesteuert werden kann.

Auch bei diesem Laptop kommt ein angepasstes Linux zum Einsatz, und wegen der relativ geringen Leistung der Hardware ist es ähnlich wie der EEE-PC zum Surfen, Chatten und E-Mail schreiben gedacht.

[UPDATE] Symlink vergleicht gleich mehrere "SubSubNotebooks"

Kategorien: Allgemeines
Tagged: Technik England EEE-PC Hardware Elonex

0 Kommentare