skip to main |
skip to sidebar
Wie funktioniert eine Tabellenkalkulation?
Wie werden Spalten und Zeilen gehandhabt?
Welcher Berechnungsalgorithmus wird verwendet?
Falls jemand sich seine eigene Tabellenkalkulation programmieren will steht er vor obigen Fragen. Dazu einige Überlegungen:
Die einzelnen Zellen einer Tabellenkalkulation werden nicht nach Zeilen- und Spalten angesprochen, sondern nach Zellen-Nummern. Man kann sich vorstellen, dass die Zellen zeilenweise durchnummeriert sind. Die Zelle A1 hat die Nummer 1, B1 die Nummer 2 und so weiter. Hat also ein Tabellenkalkulationsblatt 4 Spalten, so beginnt A2 mit der Zellennummer 5.
Die Umrechnung von Zellennummer und Zeile bzw. Spalte (wobei S die Anzahl der Spalten pro Zeile ist) funktioniert dann so:
- Zellennummeri = (Zeilennummeri -1) * S + Spaltennummeri
- Zeilennummeri = integer [ ( Zellennummeri -1) / S + 1 ]
- Spaltennummeri = Zellennummeri modulo S
In einer Tabelle (indiziertes Feld) sind die Zellen der Reihe nach mit ihrer Zellennummer und der mathematischen Funktion (formelle Abhängigkeit von anderen Zellennummern) aufgelistet:
- Zellennummer1 Funktion1
- Zellennummer2 Funktion2
- Zellennummer3 Funktion3
- usw.
Durch Anlyse aller Funktionen kann eine Tabelle von gerichteten Graphen konstruiert werden (Beispiel):
Graph vonZellennummer nachZellennummer:
1 2
2 3
2 4
3 4
Man sieht an dem Beispiel, dass Zelle (Knoten) 1 einen numerischen Wert enthält, da sie nur in der Spalte vonZellennummer einmal vorkommt und nicht in der nachZellennummer (kein Input aus bzw. Abhängigkeit von einer anderen Zelle).
Zelle 2 ist wiederum nur von Zelle 1 abhängig und Zelle 3 nur von Zelle 2.
Am Ende des Graphen ist die Zelle 4 die mit der höchsten Abhängigkeit von anderen Zellen (hängt von den Werten der Zelle 2 und 3 ab).
Erstellt man daraus eine Häufigkeitstabelle, indem man die Anfänge und Enden der jeweiligen Zellen zählt, erhält man:
Häufigkeit - Zellennummer Anfänge Enden:
1 1 0
2 2 1
3 1 1
4 0 2
Zelle 1 hat einen Anfang und kein Ende, Zelle 2 hat zwei Anfänge und ein Ende, Zelle 3 hat einen Anfang und ein Ende und Zelle 4 hat keinen Anfang und zwei Enden.
Will man nun diesen "topologischen Baum" berechnen, so scheint eine Berechnungsreihenfolge der Zellwerte nach folgenden Kriterien optimal:
- Zellen ohne Ende (Zelle 1) brauchen nicht berechnet werden (enthalten ohnehin nur numerische Werte).
- Zellen mit vielen Anfängen müssen zuerst berechnet werden (Zelle 2).
- Bei Zellen mit gleich vielen Anfängen müssen diejenigen Zellen zuerst berechnet werden, die weniger Enden aufweisen.
Zuletzt muss noch gewährleistet werden, wie oft diese Berechnungsreihenfolge abgearbeitet werden soll. Hier bietet sich das Prinzip der "minimalen Fehlerquadrate" an:
Dazu wird vor der Berechnung jeder Zelle der alte Zellwert gespeichert, von dem dann nach der Berechnung der Zelle der neue Zellwert abgezogen wird. Diese Differenz (Fehler) wird quadriert (Fehlerquadrat) und einer Gesamtfehlersumme hinzuaddiert. Die letztendlich resultierende Gesamtfehlersumme wird dann mit einer vorgegebenen Genauigkeit verglichen. Ist sie größer, muss noch ein Berechnungsdurchlauf gestartet werden.
ENABLE_DIAGS
Schreibt man in das Root-Verzeichnis des Kindles eine leere Datei namens ENABLE_DIAGS, so bootet der Kindle nach einem Reset in ein Diagnostic-Programm (Tequila System Diags) das nun folgende Optionen bietet:
Tequila System Diags
A) Device Setting
S) Set Serial Number
E) Set PCB ID
U) Set Mac address
I) Set Manufactoring Code
T) Display Serial Number Barcode
O) Operator test suite
Q) for PASS - FW LEFT
P) for FAIL - FW RIGHT
R) Run in Test
A) Movi Nand ENABLED
B) Gas Gauge Test ENABLED
C) LED 1 and 2 Blink Test ENABLED
D) Video Flip Page Test ENABLED
E) Video Gray Scale Test ENABLED
F) Video Ghosting Test ENABLED
G) Video Pattern Test ENABLED
H) Video All Ghosting Test ENABLED
I) WIFI ON ENABLED
J) WIFI OFF ENABLED
G) Gas Gauge
E) 511
T) Power Test
M) Power Suspend mode
T) Shipping power mode
H) Adjust battery
M) MoviNand
N) Misc individual diagnostics
C) Certificatio Test Mode
I) Wifi Test
L) LED Test
K) Key test
B) Five Ways Test
V) Video Test
F) FCT Test
A) Accessory Port
U) Utilities
E) 511 with device info
Z) Enable USBnet
M) Mount nfs
S) Stress Tests
Y) ART 11g factory test
U) USB device mode
D) Exit, Reboot or Disable Diags
F) Fastboot Bundle Install
U) USB Bundle Install
C) Check Pass/Fail Status
R) Reboot System
D) Disable Diagnostics
L) Exit to login prompt
M) ReportToXml
Exit
Mit "D) Exit, Reboot or Disable Diags" und "D) Disable Diagnostics" beendet man den Diagnostic-Modus (ENABLE_DIAGS wird gelöscht) und der Kindle startet nach dem nächsten Reset wieder wie gewohnt ins User-Menü.
Möglich ist auch, dass man mit "U) USB device mode" den USB-Speichermodus aktiviert und die Datei ENABLE_DIAGS vom PC aus "per Hand" löscht.
SSH
Neben vielen Tests ist der "USBnet-Modus" (U Utilities - Z Enable USBnet) eine Möglichkeit, um eine SSH-Verbindung vom PC (ifconfig usb0 192.168.15.201) mit dem Kindle (ssh root@192.168.15.244) einzugehen (password: mario, fiona6b2 oder bei mir funktionierte fiona6b25).
Sleep TimeOut Zeit ändern
Mit SSH kann man im Kindle System beispielsweise den Systemspeicher mit "mount /dev/mmcblk0p1 /mnt/base-mmc/" mounten und nach "cd /mnt/base-mmc" mit "find . -name t1_timeout" die Datei t1_timeout suchen.
Editiert man t1_timeout (mit "vi t1_timeout") kann man in der letzten Zeile die Timeout-Zeit in Sekunden (default 600) ändern.
Jailbreak, Screensaver, Fonts
Weitere "sinnvolle" Hacks sind nur nach einem Jailbreak (kindle-jailbreak-k4-1.4.N.zip) möglich. Beispielsweise können dann eigene Screensaver (kindle-ss-0.29.N.zip) oder besser lesbarere, eigene Fonts (kindle-fonts-5.4.N-k4.zip) installiert werden. Will man diese Hacks wieder entfernen (z. B. bei Problemen mit den offiziellen Firmware-Updates), geht man am Besten in umgekehrter Installations-Reihenfolge vor und wendet die "Uninstaller" in den ZIP-Dateien an.
Der Raspberry PI
Ein geniales Gerät, das man mit einem Raspberry PI (nach einiger Wartezeit) um 42 EUR (inkl. Versand) bekommt. Rechnet man Zubehör (SD-Karte, Keyboard, Maus, Netzgerät, WLAN-Dongle, Kabel) dazu, verdreifacht sich der Preis locker. Deshalb sollte man (im Sinne der "RASPI-Niedrigpreis-Philosophie") zusätzliche Kosten vermeiden und "bestehende" Hardware verwenden - eine SD-Karte, Keyboard und Maus liegen schnell irgendwo herum.
Internetverbindung (über eth0) mit einem anderen Linux-PC
Der RASPI hat kein WLAN. Falls man sich den USB-WIFI-Dongle sparen will, kann man den RASPI mit einem Ethernet-Kabel über einen Linux-PC mit dem Internet verbinden.
Internet]-----[wlan0-PC-eth0]-----[eth0-PI
Ist beispielsweise der PC über das wlan0-Interface mit dem Internet verbunden (dhcp), so kann man an dessen eth0-Schnittstelle den RASPI (mit einem Ethernet-Kabel) anschließen und über den PC als Gateway das Internet nutzen.
PC-Commands:
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ifconfig eth0 up
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
Damit gibt man dem PC die Netzwerksadresse 192.168.0.1 und funktioniert ihn (mit iptables) zum Gateway um.
RASPI-Commands:
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
ifconfig eth0 up
route add default gw 192.168.0.1 eth0
Ähnlicherweise bekommt der RASPI die Adresse 192.168.0.2 und erhält eine route zum PC-Gateway.
Mit den Befehlen ifconfig und route kann man sich die Einstellungen noch ansehen, ein gegenseitiges anpingen (ping 192.168.0.1 am RASPI) und auch ein Ping zu Google (ping google.com am RASPI) sollte nun möglich sein.
Damit steht dem Surfen oder einer Softwareinstallation am RASPI nichts mehr im Weg.
Von einem Linux-PC zum RASPI mit ssh verbinden
Am RASPI ist (bei Verwendung des raspian-Betriebssystemes) ein Shellserver (openssh-server, sshd) installiert. Befindet sich am Linux-PC ein Shellclient (openssh-client), kann man (vorausgesetzt, es besteht eine Netzwerksverbindung - siehe oben) den RASPI vom PC aus nutzen. Damit spart man sich Keyboard, Maus und Monitor für den RASPI!
RASPI-Commands:
/usr/bin/sshd
Zudem sollte noch in der /etc/ssh/sshd_config der Punkt X11Forwarding yes gesetzt sein.
PC-Commands:
Installiere den ssh-client mit apt-get install openssh-client
Zudem sollten noch in der /etc/ssh/ssh_config die Punkte ForwardX11 yes und ForwardX11Trusted yes gesetzt sein.
Um letztendlich am PC zum RASPI zu verbinden gibt man in einer X-Shell ssh -X pi@192.168.0.2 ein. Nach einem Confirm- und Password-Vorgang kann man jede PI-Applikation starten (z.B. dillo).
File-Transfer zwischen Linux-PC und RASPI
Was noch fehlt ist das Kopieren von Dateien zwischen RASPI und Linux-PC, das mit ftp (oder einem "sichereren" Pendant) möglich ist.
RASPI-Command:
apt-get install ftp
PC-Commands:
Ich verwende dazu den komfortablen Midnight-Commander (mc). Mit F9-L-P kann man den FTP-Verbindungsbefehl eingeben (pi:pwd@192.168.0.2).
Die ZBOX von ZOTAC ist ein preisgünstiger Nettop, der durchaus als Desktop-Light oder als Multimedia-PC im Wohnzimmer verwendbar ist. Mit einem (grafikunterstützten) Atom Prozessor (D525) ist er relativ energieverbrauchsschonend (um die 20 W) und dementsprechend leise.
Ich habe meine ZBOX mit 2x2 GB RAM (Kingston ValueRAM SO-DIMM 2GB PC3-6400S CL6 (DDR3-800)) sowie einer 64 GB SSD-Harddisk (Samsung MZ-7PC064B/WW 64GB SSD (6,4 cm (2,5 Zoll), 256MB Cache, SATA SATA 6.0Gbps)) bestückt.
Betriebssystem
Als Betriebssystem kam für mich nur Debian Linux (64bit, squeeze) in Frage. Das Booten und Installieren der "64-Bit-PC Netinst-ISO" mittels USB-Stick klappte auf Anhieb (über obere USB2.0-Schnittstelle oder mittels F11 bzw. ENTF (während des ZBOX-Splash-Logos) in das BIOS oder Startmenü). Vor allem die rasche eigentliche Installation der heruntergeladenen Software auf die schnelle SSD imponierte mir sehr - und letztendlich weniger, als 40 Sekunden beim Booten bis zur grafischen Oberfläche habe ich noch nirgends gesehen.
Beim ersten Booten allerdings blieb nach GRUB und einigen Konsolen-Zeilen der Bildschirm schwarz. Dass die ZBOX regulär startete erkannt ich daran, dass ich (blind) als root einloggen und das System halt(en) konnte. Damit schien etwas mit dem Bildschirmmodus nicht zu funktionieren. Abhilfe schafft die Kernel-Ergänzung "nomodeset" in GRUB (während dem Grub-Menü mit "e" die Startsequenz editieren und in der Kernelzeile (beginnt mit linux) am Ende "nomodeset" hinzufügen. Danach bootete die ZBOX "sichtbar" zum Login. Nach einem root-Login korrigierte ich GRUB, um automatisch mit "nomodeset" zu booten.
Grafische Oberfläche
Eine der schnellsten (und trotzdem komfortablen) grafischen Oberflächen ist das "fluxbox"-Desktop auf X11, das mit "apt-get install fluxbox xorg" rasch installiert war. Optischer und praktischer Aufputz für fluxbox waren wbar, wmdrawer und conky - klein und schnell, aber doch etwas Konfigurations(Zeit)Aufwand.
Um beim Booten automatisch mit dem zusätzlich angelegten User X11 zu starten habe ich einen direkten Weg gewählt. In /etc/inittab logge ich in die erste Konsole mit "1:2345:respawn:/bin/login -f username tty1 /dev/tty1 2>&1" ein. Zudem starte ich X11 automatisch, indem ich auf /home/user in der Datei .bash_profile den Befehl "startx" eingebe.
Software
Minimum für einen Multimedia-PC ist ein Webbrowser (links2 -g ... für schnelles einfaches browsen und iceweasel für "gehobenere" Zwecke) und Mediaplayer (da schwöre ich auf den vielfältigen mplayer und das GUI smplayer, aber auch vlc ist sehr ansprechend und komfortabel).
Interessant ist auch die Installation des Office-Paketes "libreoffice", das nur für ältere Debian-Versionen als "Backport" vorliegt. Dazu muss man in /etc/apt/sources.list die Ressource "deb http://backports.debian.org/debian-backports squeeze-backports main" hinzufügen und libreoffice nach "apt-get update" mit "aptitude -t squeeze-backports install libreoffice" installieren.
Bildschirmtreiber
Dann kam der nächste Tiefschlag. Videos anschauen funktionierte nur in "Zeitlupe" und sogar beim Fensterverschieben gab es einige Sekunden Verzögerung. Zudem hatte ich eine maximale Auflösung von (nur) 800x600 - einfach untragbar.
Bildschirmtreiber und Grafikbeschleunigung zählen leider zu den Linux-Dingen, mit denen ich keine Erfahrung habe (... es hat ja immer automatisch funktioniert). Ich konnte das Thema zwar durch Probieren lösen, bin mir aber nicht sicher, was letztendlich zum Erfolg geführt hat.
Mit "lspci" habe ich gesehen, dass ich eine Nvidia GT218 ION Grafikeinheit besitze. Nachdem ich einiges zu vdpau installiert habe (was vielleicht umsonst war) kam ich zum Nvidia-Treiber: Ich installierte nvidia-glx, nvidia-kernel-2.6.32-5-amd64 und nvidia-xconfig. Nachdem ich mit dem Befehl "nvidia-xconfig" eine /etc/X11/xorg.conf erstellt und neu gestartet hatte, war beim Laden der grafischen Oberfläche plötzlich für Sekundenbruchteile ein riesiges NVIDIA-Logo zu sehen. Danach war alles wunschgemäß: Auflösungen, soweit der Fernseher reicht, Videos in beliebiger Größe schnell und scharf und Fensterverschieben ohne Verzögerung. Das alles bei einer CPU-Auslastung (conky) im einstelligen Prozentbereich - herrlich.
Audio über HDMI
Das Problem, dass über HDMI kein Ton übertragen wird, konnte ich noch nicht lösen, obwohl es einige Anleitungen im Internet gibt. Derzeit verwende ich den DVI-VGA-Adapter und eine eigene Audioverbindung. Blöderweise waren einige Fonts in X11 winzig klein. Ein Umstand, den ich mit der Einstellung in der Section "Monitor" mit "Option "DPI" "96 x 96"" in /etc/X11/xorg.conf beheben konnte.
Wer "postgradual" einen MBA machen will, dem kann ich den MBA "Executive Management" sehr empfehlen. Dieser wird beispielsweise von der FH-Kufstein (http://www.fh-kufstein.ac.at/) in Wien angeboten und lokal durch das Unternehmen Sanconsult (http://www.sanconsult.at/) organisiert.Als positiv anzumerken ist, dass die Lehreinheiten über Wochenenden geblockt sind (für Berufstätige) sowie der Lehrgang mit rund 8.000 Euro relativ günstig ist und innerhalb eines Jahres abgeschlossen werden kann.Der Arbeitsaufwand und die Belastung sind aber enorm (Vorlesungen, Übungen, viele Projektarbeiten, eine Master-Thesis, schriftliche und mündliche Prüfungen), was neben Beruf, Familie und Hobbies nur aufgrund der hervorragenden organisatorischen Unterstützung von Sanconsult (Frau Dr. Jutta Pfisterer-Pollhammer) möglich ist.