sinatra-browserid: can't convert nil into string
Zu Dokumentationszwecken: Um ein funktionierendes browserid-gem für Sinatra unter ruby 1.9.x zu haben, muss man es mit einer gefixten Version ersetzen:
git clone https://github.com/passcod/sinatra-browserid.git cd sinatra-browserid gem1.9.x build sinatra-browserid.gemspec sudo gem1.9.x install sinatra-browserid-0.3.1.gem
Man vermeidet so die Fehlermeldung:
TypeError at /_browserid_assert can't convert nil into String
(Quelle)
X-Standby deaktivieren wenn Flash läuft
Unter Windows geht der Bildschirm nicht aus, wenn ein Video - auch ein Flashvideo - im Vollbild läuft. Unter Linux schon, der Flashplayer deaktiviert den Energiesparmodus von X nicht. Alle 10 Minuten muss also die Maus bewegt werden. Das wurde mir jetzt zu doof.
Dieses Skript (basierend auf diesem) sorgt dafür, dass der Bildschirm an bleibt wenn Flash läuft. X-Ebene, Gnome und andere DEs können nochmal ihren eigenen Bildschirmschoner haben der deaktiviert werden müsste. Für einfache Fenstermanager reicht das hier.
#!/bin/bash while true; do sleep 60 flash_on=0 if grep -q libflashplayer /proc/*/maps 2> /dev/null ; then flash_on=1 fi if [ "$flash_on" = "1" ]; then xset dpms 0 0 0 else xset dpms 600 600 600 fi done
Retroshare auf dem Pogoplug installieren
Serverdienste zu hosten, die vorher auf dem normalen Desktop liefen, ist ja typischerweise die Hauptaufgabe für einen Heimserver. Bei mir ist der wichtigste Dienst in der Hinsicht RetroShare, denn das Programm ist doch wesentlich weniger praktisch, wenn die Netzwerkmitglieder nur sporadisch online sind. Doch stellt RetroShare sträflicherweise keine Serverversion zur Verfügung - zumindest keine, die funktioniert, die nogui-Version wird derzeit nicht gepflegt. Daher wird in der folgenden Anleitung (die auf dieser Quelle basiert) RetroShare in xvfb gestartet, einem virtuellen XServer.
Vorbereitung
Ich gehe davon aus, dass Arch installiert wurde und läuft.
Retroshare liegt leider nicht in den Quellen. Damit die Kompilierung durchläuft, muss genug Swap vorhanden sein, die 256 MB Ram reichen nicht aus. Bei der Installation wurde die Swappartition nicht eingebunden. Das kann man nachholen mit einem
swapon /dev/sda2
Um das dauerhaft zu machen, muss diese Zeile in die /etc/fstab eingetragen werden:
/dev/sda2 none swap 0 0
Kompilieren
Die Kompilierung sollte problemlos nach der Anleitung ablaufen:
Die benötigten Pakete installieren:
pacman -S make qconf polarssl libupnp libgpg-error gpgme gcc libgnome-keyring libxss svn
Quellcode holen und kompilieren:
cd ~ svn co svn://svn.code.sf.net/p/retroshare/code/trunk retroshare cd ~/retroshare/libbitdht/src && qmake && make clean && make cd ~/retroshare/openpgpsdk/src && qmake && make clean && make cd ~/retroshare/libretroshare/src && qmake && make clean && make cd ~/retroshare/retroshare-gui/src && qmake && make clean && make
Wenn RetroShare einfach nur umziehen soll, kann man jetzt ~/.retroshare und ~/.gnupg auf den Pogo kopieren. Vom Client aus mit sftp:
sftp root@IP_VOM_POGO mkdir .retroshare mkdir .gnupg put -r .retroshare put -r .gnupg
X starten
Nun muss noch X und der VNC-Server gestartet werden. Zuerst die nötigen Pakete installieren, statt icewm genügt natürlich auch jeder andere kleine Fenstermanager:
pacman -S xorg-server-xvfb icewm x11vnc xterm
Dann muss X und der VNC-Server gestartet werden, ich habe mir dafür ein Skript startvncX.sh angelegt:
#!/bin/sh /usr/bin/Xvfb :1 -extension GLX -extension RANDR -fp /usr/share/fonts/misc -screen 0 1024x768x16 & export DISPLAY=:1 /usr/bin/icewm-session & /usr/bin/x11vnc -display :1 -bg -many -nopw -xkb -forever -passwd PASSWORD &
Per VNC verbinden
Jetzt läuft X im Hintergrund. Von dem Desktoprechner aus kann ein VNC-Client sich verbinden und den XServer anzeigen. Das einzige Programm, welches das bei mir hinbekommen hat, ist Reminna und sollte in den Quellen liegen.
Auf dem Server sollte nun noch ein passender Nutzer angelegt werden, damit RetroShare nicht als root läuft:
useradd -m retroshare passwd retroshare cp -R ~./retroshare /home/retroshare/ cp -R ~./gnupg/home/retroshare/
Daraufhin kann RetroShare gestartet und im Hintergrund laufen gelassen werden:
su retroshare ~/retroshare/retroshare-gui/src/RetroShare
Ich werde beobachten, ob es wirklich nötig ist, das Programm täglich neuzustarten damit es den Speicher nicht zumüllt.
HTML2Canvas Bookmarklet
HTML2Canvas kann einen Screenshot einer kompletten Webseite machen. Es gibt mehrere Bookmarklets, die das Skript einbinden. Standardmäßig zeigen die das entstandene Bild in einem Overlay an, das bei mir aber nicht immer funktionierte. Deshalb hier meine Version (basierend auf diesem Original), die das Canvas unter die Seite hängt:
Pogoplug: Erster Eindruck
Ein Pogoplug ist ein Steckdosencomputer, der als private Cloud beworben wird, ein kleiner Heimserver. Chris hatte über die alten Versionen geschrieben, die für 10€ plus Versand verkauft werden, dabei hatte ich mir einen bestellt der inzwischen angekommen ist.
Eckdaten
Anders als ich anfangs dachte ist es ein Pogo-E02 geworden, zum Glück in schwarz und nicht in pink. Vier USB-2.0 Anschlüsse, einmal Gigabit-Ethernet, kein Sata.
cpuinfo:
Processor : Feroceon 88FR131 rev 1 (v5l) BogoMIPS : 1191.11 Features : swp half thumb fastmult edsp CPU implementer : 0x56 CPU architecture: 5TE CPU variant : 0x2 CPU part : 0x131 CPU revision : 1 Hardware : Marvell SheevaPlug Reference Board Revision : 0000 Serial : 0000000000000000
Also ein 1.2 GHz Single-Core. Mini-Benchmark:
[root@alarm ~]: time echo "scale=5000; a(1)*4" | bc -l real 2m23.623s user 2m22.080s sys 0m0.020s
Stromverbrauch:
idle
4 Watt
Last
5 Watt
Allerdings kommt da der Stromverbrauch der Festplatte hinzu.
Foto:
Passende Platte
Da stand ich erstmal etwas ratlos da, der Pogo lag nutzlos in der Ecke und ich musste überlegen, was für eine Festplatte für ihn geeignet ist.
USB 2.0 hat eine Maximalgeschwindigkeit von 480 Mbit/s, das sind 60 MB/s. Sata in der ersten Version wird auch als Sata 150 bezeichnet für die Höchstgeschwindigkeit von 150 MB/s. Also wäre jede Sata-Festplatte zu schnell. Daher ist eine alte IDE-Platte eigentlich völlig ausreichend, selbst mit Ultra ATA 4 erreicht sie 66 MB/s (und 167 mit 7). Und natürlich hatte ich eine alte IDE-Platte mit erstmal ausreichenden 250GB noch hier rumfliegen, sowie lustigerweise einen passenden IDE/Sata->USB-Adapter, den ich damals sicherheitshalber mit meinem neuen Computer gekauft habe. Hatten die hohen Festplattenpreise damals doch noch etwas gutes.
Geschwindigkeit:
hdparm -t --direct /dev/sda /dev/sda: Timing O_DIRECT disk reads: 96 MB in 3.05 seconds = 31.52 MB/sec
Kein toller Wert, aber wohl an der Leistungsgrenze für USB 2.0. Die Platte selbst kann mehr. Oder hat hier jemand bessere Ergebnisse erreicht?
Linuxinstallation
Auf dem Pogo läuft bereits ein Linux, aber es ist eine ältere Version und der Bootloader ist gesperrt. Um das zu umgehen kann man problemlos ein anderes Linux installieren (verzichtet dafür dann wohl auf eingebaute Dienste, damit kann ich leben). Es gib einige Alternativen für diese ARM-Rechner, insbesondere Arch und Debian. Bei Debian lief ich in eine "Kernel too old"-Fehlermeldung, was wohl umgehbar ist, ich hab dann einfach Arch genommen. Da lief die Installation auch problemlos getreu der Anleitung ab. Mit zwei Ausnahmen: Uplay war schon von dem Debian-Installationsskript aktualisiert und die Festplatte habe ich am Desktoprechner mit Gparted formatiert. Erste Partition 10GB ext2 mit boot-flag, zweite 2GB swap, dritte mit dem restlichen Platz als ext3 für Daten.
Edit 16.01.2015: Die Platte ist kaputtgegangen, und als ich heute neuinstallierte funktionierte es mit der obigen Partitionierung nicht. Stattdessen musste ich nun nur zwei Partitionen anlegen: Die erste für das System, ext3 mit bootflag, die zweite als swap.
Danach:
- Festplatte anstecken
- Einloggen:
ssh root@IP-VOM-POGO
- Installieren und rebooten:
killall hbwd cd /tmp wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh chmod +x install_uboot_mtd0.sh ./install_uboot_mtd0.sh mkdir /tmp/usb mount /dev/sda1 /tmp/usb cd /tmp/usb wget http://archlinuxarm.org/os/ArchLinuxARM-armv5te-latest.tar.gz tar -xzvf ArchLinuxARM-armv5te-*.tar.gz rm ArchLinuxARM-armv5te-*.tar.gz sync cd .. umount usb /sbin/reboot/
In der Anleitung steht, dass das Entpacken des Archivs eine Weile dauern würde, dem war nicht so. Ist bei einem USB-Stick statt einer echten Festplatte wahrscheinlich etwas anderes.
Lief bei mir einwandfrei und schon startete ein aktuelles Arch Linux, das ganz ordentlich wirkt. Jetzt versuche ich mich an der Einrichtung der Serverdienste, die darauf laufen sollen.
Bis jetzt macht das Ding einen guten Eindruck. Derzeit wird wohl wieder eine Version verkauft (via), wenn die Bezeichnung stimmt wäre das sogar die Version mit Wlan. Darauf würde ich mich allerdings nicht verlassen, bei mir passte die Bezeichnung auf dem Geräte nicht zu der auf der Verpackung (Pogo P24, das wäre ein Dual-Core und mit Sata gewesen), und in den Kommentaren bei Chris wird auch deutlich, dass unterschiedliche Versionen verschickt wurden.
Rhythmbox Remember the Rhythm ohne Autoplay
Dass Rhythmbox standardmäßig vergisst, was für Musik ausgewählt war, ist nervig. Abhilfe schafft das Plugin "Remember the Rhythm". Das aber erinnert sich nicht nur an die Musik, sondern setzt diese auch automatisch fort, sobald man den Player startet. Auch nicht gerade angenehm.
Um Remember the Rhythm das automatische Starten der Musik abzugewöhnen, editiert man die Datei /usr/lib/rhythmbox/plugins/remember-the-rhythm/remember-the-rhythm.py fügt in Zeile 77 self.shell_player.pause()
ein. Also so:
try: self.shell_player.pause() self.shell_player.set_playing_time(self.playback_time) except: pass
Reparieren: Mausrad stockt bei Logitech MX 500
Als das Mausrad nur noch ab und zu die Seiten scrollen ließ dachte ich schon, die Maus wäre kaputt. Nach gut 9 Jahren wäre das vielleicht auch ok gewesen, aber schade dann doch, immerhin hat sie schon einen Kabelbruch überstanden und funktioniert sie sonst einwandfrei. Tatsächlich ließ sie sich auch diesmal wieder reparieren, es war schlicht etwas Dreck zwischen Mausrad und Sensor gekommen.
Wenn also bei einer Logitech MX 500 das Mausrad nur noch manchmal geht, einfach mal aufschrauben und mit einem Q-Tip den Staub und Dreck darin entfernen. Viel sollte da auch gar nicht drin sein, sie hat außer dem Mausrad ja keinen Öffnung, durch die Staub hereinkommen könnte, der Staub darin bekommt aber eine eklige Konsistenz.
Die erneut mögliche Reparatur - eigentlich ja nur eine Reinigung - der Maus ist damit für mich wieder einmal ein Beispiel, wie toll es sein kann, wenn Hardware einfach aufmachbar ist. Was völlig anderes als die Philosophie hinter einem eingeklebten Akku. Die Maus hat nichtmal spezielle Schrauben, das sind einfache Kreutschlitzschrauben, wie es selbstverständlich sein sollte.
Inzwischen ist von mir einmal ein Kabelbruch repariert, nach der oben verlinkten Anleitung ein ursprünglich vorhandenes Gewicht entfernt und das einrastende Mausrad durch Entfernen eines Drahtes in ein lautloses durchgängiges verwandelt worden. Nach 10 Jahren besser als am ersten Tag. Tolles Ding.
Rechter Terror
Die Terrorserie der NSU und das Versagen des Staates dabei und danach ist eines dieser Geschehnisse, die später in der historischen Betrachtung höchstwahrscheinlich als ungeheuer wichtig empfunden werden, heute aber nicht in vollem Umfang die Aufmerksamkeitsschwelle durchbrechen. Das ist bedenklich. Ich will festhalten, was man bisher meint zu wissen (und breche dafür meine Regel, nicht auf normale Verlagsprodukte zu verlinken).
Der Terror der Nazis
Der Terrororganisation gehörten Beate Zschäpe, Uwe Mundlos und Uwe Böhnhardt an, vermutet werden bis zu 20 Unterstützer. Die drei waren bekannte Neonazis, die schon in den 90ern an Naziaktionen im Umfeld der NPD wie dem Gedenken an den Tod von Rudolf Hess teilnahmen und Mitglied neonazistischer Organisationen wie dem Thüringer Heimatschutz waren.
1998 durchsuchte die Polizei eine Garage in Jena und fand dabei eine Bombenwerkstatt. Daraufhin tauchten Zschäpe, Mundlos und Böhnhardt ab. Sprengstoff spielt auch später noch eine Rolle, die Bombenwerkstatt im Hinterkopf behalten. Es ist zu vermuten, dass der Verfassungsschutz wusste, wo mindestens Zschäpe sich aufhielt, dieses Untertauchen war also eigentlich nur bedingt effektiv.
Wann genau die Mordserie anfing ist unklar. Möglicherweise schon 1999 mit einer Granatenexplosion. Die eigentliche Mordserie war das Erschießen von mindestens neun "Kleinunternehmern mit türkischem Migrationshintergrund", wie Wikipedia schreibt, in einem Zeitraum von 2000 bis 2006. Wegen diesem Opferprofil wurden die Morde in der deutschen Presse als "Döner-Morde" euphemisiert - nicht nur von Bild, auch vom Spiegel und anderen vermeintlich respektablen Zeitungen.
Am 4. November 2011 überfielen Mundlos und Böhnhardt eine Bank und flüchteten in einem Wohnmobil, das von Zeugen gesehen wurde. In der folgenden Polizeifahndung wurde das Wohnmobil gefunden. Mundlos und Böhnhardt töteten sich vor dem Zugriff und zündeten gleichzeitig das Wohnmobil an. In dem Fahrzeug fand man unter anderem die Dienstwaffe einer 2007 in Heilbronn getöteten Polizisten. Diese Verbindung ist unklar. Wurde sie von den Terroristen erschossen, kannte sie sie? Bekannt ist auf jeden Fall, dass Kollegen von ihr Mitglied im Ku-Klux-Klan waren. Diese Polizisten sind natürlich noch heute beschäftigt.
Kurz darauf explodiert in Zwickau ein Wohnhaus, das die Terroristen drei bis vier Jahre als Unterschlupf genutzt hatten. Zschäpe wird kurz vorher noch dort gesehen, sie stellt sich die Woche darauf der Polizei.
Das Versagen der Behörden
Dass die Behörden versagt haben ist unbestreitbar. Jahrelang ziehen Terroristen durch das Land und ermorden Menschen ohne auch nur ansatzweise erwischt zu werden. Doch erwischt werden die Terroristen nur durch einen zufälligen Fahndungserfolg nach einem Fehler der Nazis, dem hoch-riskanten Banküberfall. Absolut erschreckend ist jedoch, wie und in welchem Ausmaß die Polizeibehörden während der Terrorserie versagt haben, und mit welcher Staat-im-Staate-Mentalität der Verfassungsschutz nachträglich die Ermittlungen torpediert.
Während der Mordserie wurden mehrere Sonderkommissionen gebildet, die vermeintlich die Morde untersuchten, in Wirklichkeit aber blind am tatsächlichen Geschehen vorbeischauten. Da wäre zuerst die Sonderkommission Halbmond der Kripo Nürnberg, die mit LKA und Polizeipräsidium München zusammenarbeitete. Ihre den Medien vermittelte Fahndungsrichtung waren Drogengeschäfte, weil einer der Opfer 1996 - also zehn Jahre vorher - Drogen von Holland nach Deutschland geschmuggelt habe. Die Sonderkommission hieß übrigens Halbmond, weil die Presse von einer Türken- oder Halbmond-Mafia berichtete, in die die Opfer verwickelt seien. Aus Opfern wurde Tätern.
Der offensichtliche rechtsextreme Hintergrund der Morde wurde zuerst nicht erkannt. Ab 2005 verstärkte die nächste Sonderkommission, SoKo Bosporus, diese Ermittlungsrichtung noch hin zu vermeintlichen Verbindungen in die organisierte Kriminalität. Natürlich wurde dazu nie belastbares gefunden, diese Verbindung existierte ja nicht.
2006 wurde dann erstmals zusammen mit einem Profiler eine rassistisches Mordmotiv angenommen. Die Soko wurde angeblich aber nie über die drei untergetauchten Neonazis - die gut in dieses Profil gepasst hätten - informiert, es kamen keine Hinweise aus Thüringen.
Zusätzlich zu diesem Polizeiversagen kommt das Versagen des Verfassungschutzes. Mehrfach wurden Akten vernichtet, die bei der Aufklärung hätten helfen könnte. Der bekannteste Vorfall ist die Aktenvernichtung des Thüringer Verfassungsschutzes. Edathy, der Untersuchungsausschussleiter, fasste den Vorfall so zusammen:
Sie sind aufgefordert worden, Akten zu suchen, sie haben Akten gefunden, und sie haben die Akten vernichtet
Weitere Akten wurden auf Anordnung des Bundesinnenminiseriums Tage nach dem Auffliegen der Terrororganisation vernichtet. Beruhigend der Hinweis, dass dabei keine Informationen über die drei Terroristen vernichtet worden seien.
Dazu kommt die Aktenvernichtung des Militärgeheimdienstes, der in den 90ern Mundlos anwerben wollte, die Akten darüber aber vernichtete. Von ihnen sind jedoch Kopien aufgetaucht, von denen der MAD angeblich nichts wusste. Das ist glaubhaft, denn eine teilweise Aktenvernichtung wäre sinnlos, die Akten wären entweder auch oder gar nicht vernichtet worden.
Die Aktenvernichtungen passt zu der Blindheit, die der NSU das Weitermorden ermöglichte. Und sie passt zu dem Verdacht, dass ein Verfassungsschützer in die Morde verwickelt sei. Generell bleibt unerklärlich, wie eine rechten Szene, die so stark vom Verfassungsschutz unterwandert ist, dass ein Verbotsantrag der NPD an dieser Unterwanderung und der dadurch unmöglichen Trennung zwischen originären Aktionen und Aktionen des Verfassungsschutzes scheitert, im geheimen eine Terrorzelle bilden und unterstützen kann. Und das jahrelang. Und richtig: Der Verfassungsschutz wusste ja auch, wie oben erwähnt und verlinkt, zumindest zeitweise, wo die Terroristen sich aufhielten.
Jüngste Entwicklung
Derzeit läuft ein Untersuchungsausschuss. Viele der Erkenntnisse über die Terrororganisation NSU sind in diesem Ausschuss zu verdanken und auch viele Einblicke, wie Beamten und Behörden gegen eine aufklärende Untersuchung mauern. Und was passiert? Sebastian Edathy, Leiter des Untersuchungssauschusse, wird Ziel eines Sprengstoffanschlages über den kaum berichtet wird:
Edathy schrieb auf seiner Facebook-Seite, die Polizei gehe von einem Sprengsatz aus. Dies bestätigte der Polizeisprecher nicht. Noch sei völlig unklar, wodurch die Explosion ausgelöst wurde. Der Vorfall ereignete sich im Kreis Schaumburg, der in Niedersachsen als eine der Hochburgen der rechtsextremen Szene gilt. Auch der mutmaßlichen Terrorhelfer Holger G. lebte dort bis zu seiner Festnahme.
Diesen erneuten Anschlag nicht als Zeichen einer gefährlichen militanten rechtsextremen Terrorszene zu werten ist zynisch ähnlich zu der Blindheit, mit der die Morde vorher nicht mit Rechtsextremismus in Verbindung gebracht wurden.
Fraglich bleibt, warum die Terroristen mit Explosionen und Feuer ihre Spuren verwischten, sich jedoch gleichzeitig selbst umbrachten und der Polizei stellten. Zusammen mit dem Verhalten des Verfassungsschutzes ergibt das nur zu leicht den Eindruck, dass noch weitere und höhere Stellen noch tiefer in diese Terrorserie verwickelt waren.
Hardwareempfehler verbessert: Empfehlung ändern
Mein Hardwareempfehler pc-kombo hat ein kleines Update bekommen: Man kann jetzt durch die empfohlene Hardware durchbrowsen. Ist beispielsweise die vorgeschlagene Grafikkarte zu schwach und doch noch Geld übrig, kann sie mit dem Pfeil nach rechts durch die billigste bessere Grafikkarte ausgewechselt werden. Alternativ durch die beste billigere, wenn sie zu teuer ist.
Die Buttons sind natürlich die skalierten Canvase, über die ich geschrieben habe.
Im Hintergrund ist das eine komplett neue Software. Statt Java mit handgeschriebenem Server ist es Ruby mit Sinatra. Anfangs nur ein Klon der alten Seite, ermöglichte es mir der Wechsel überhaupt erst, diese Ajax-Erweiterungen einzubauen, vorher wäre das viel zu kompliziert gewesen. Und so hielt ich die Hardwareerkennung auch das erste mal für solide genug, automatisch die Datenbank zu updaten. Wöchentlich wird jetzt Amazon nach neuer Hardware und Google nach neuen Preisen gefragt (die Beispiele sind immer aktuell).
Zuerst wollte ich die Oberfläche komplett über den Haufen werfen. Ich dachte erst an Punkte auf dem Performance-Balken, welche die verschiedenen Prozessoren/Grafikkarten anzeigen und auf die man klicken kann, um sie zu wechseln. Oder ein Slider auf einem Preis-Balken mit der Leistung als Säulendiagramm. Daraus wurde dann ein Karussell-artiges Widget, auf dem die Punkte platziert werden, da ich nicht wusste, wieviel Hardware er jeweils empfiehlt und ob der Platz auf einem normalen Balken ausreichen würde. Dazu sollte dann tooltipp-artig die gewählte Hardware angezeigt und im Hintergrund noch ein Balken die Leistung anzeigen. Auf Papier sah das ganz gut aus. Mitten im Bauen davon wurde mir bewusst, dass die wirklich wichtige Funktion davon ist, bessere und billigere Hardware zu wählen, was recht simpel in die alte Oberfläche zu integrieren sein müsste. Stimmte dann auch. Zum Glück, denn das Karussell-Widget in schön zu bauen hätte mich sehr viel Zeit gekostet.
Das gute an den ganzen Überlegungen ist, dass der Kernalgorithmus davon profitiert hat. Das war ein ziemlich wilder Optimierungsversuch aus allen möglichen Kombinationen. Durch ein Diagramm mit Leistung als y-Achse und Preis als x-Achse wurde mir klar, dass im Grunde nur die beste Hardware im Preisbereich ausgewählt werden muss. Dadurch wurde der ganze Algorithmus wesentlich weniger komplex (auch im Sinne der O-Notation) und so schneller. Überhaupt wurde das "wähle die nächstbessere Grafikkarte" durch diese Grundüberlegung erst wirklich möglich.
Wieder viele Änderungen im Hintergrund, wovon man die wenigsten direkt sieht. Aber die Ändern-Pfeile bemerkt man vermutlich schon direkt. Mich würde interessieren: Funktioniert die Seite mit den Pfeile so für dich?
Javascript Canvas skalieren
Ein per Javascript gezeichnetes Canvas soll neben ein Element gesetzt werden und die gleiche Höhe bekommen. Dafür wird das Canvas mit beliebigen Werten (hier in einem Koordinatensystem von 0 bis 100) gezeichnet, aber vorher die y-Skalierung mit context.scale(x,y) angepasst:
var neighbour = document.querySelector('#neighbour'); var canvas = document.createElement("canvas"); var context = canvas.getContext('2d'); canvas.height = clientHeight; canvas.width = 25; var yScale = neighbour.clientHeight / 100; context.scale(1, yScale); context.beginPath(); context.moveTo(25, 0); context.lineTo(0, 50); context.lineTo(25, 100); context.closePath(); context.fillStyle = "rgb(78, 193, 243)"; context.fill();
Geht leider nicht nachträglich.