Ingress Invitation

Hui, mein Aktivierungscode ist eingetroffen …

Die Wartezeit betrug nur 2-3 Wochen … Ich hatte schon mit einem halben Jahr oder sowas in der Art gerechnet.

Für den Fall, dass jemand Ingress nicht kennt:

Also ehrlich gesagt, hat der Trailer kaum etwas mit dem Spiel zu tun. Ich finde ihn trotzdem sehr gut gemacht und wenn es da mal einen Film geben würde, würde ich ihn anschauen.

Ingress ist eine Art von VR-Game … Man spielt in der Realität, läuft mit seinem GPS-Handy rum und muss irgendwelche Aufgaben lösen … Mehr weiß ich leider selbst noch nicht 🙂

Advertisements

Bitcoin Hype und ASICs

Na, das ist ja mal überraschend … Ich kann meinen einen Bitcoin, den ich vor fast 1,5 Jahren für 15EUR gekauft habe, momentan für 80EUR verkaufen …

Noch krasser: 1BTC kostete im August nur 5EUR … Es gab damals einen sehr starken Kurseinbruch, als ein Pyramiden-System, das Bitcoins verwendete, zusammen brach. Zu dieser Zeit hab ich den leider nicht mehr beobachtet, obwohl ich mir 100BTC kaufen wollte, sobald sie unter 10EUR fallen … Naja, hab ich wohl verpasst, die Gelegenheit 🙂

Bitcoins sind aber so eine Sache …

Man kann Bitcoins produzieren, indem man eine Mining-Software installiert, die Bitcoins errechnet. Hört sich so einfach an … Hat aber Haken:

Bitcoins errechnen ist ein reines Glücksspiel

Der Algorithmus hinter Bitcoin ist ein simpler SHA256(SHA256(B)) … Es ist wirklich so … Um einen Bitcoin zu berechnen, braucht man nur den SHA256 Algorithmus.

Wenn die Software gestartet wird, wird erstmal ein Block generiert. Dieser enthält alle möglichen Informationen wie vorheriger Block, irgendeinen Hash aller Blocks vor ihm, … und einen Zähler.

Der Block wird zweimal mit dem SHA256 gehasht und dann mit einem vom P2P-Netzwerk gestellten Problem verglichen. Dabei werden berechneter Hash und Problem als 256Bit Integer betrachtet und sie einfach verglichen. Ist der Integer-Wert des Hashs kleiner als der Integer-Wert des Problems, hat man einen Block gelöst und (derzeit) 25BTC errechnet.

Ist der Int-Wert des Hashs kleiner als der Int-Wert des Problems, wird der Counter im Block erhöht und erneut gehasht. Das passiert so oft, bis der 32Bit Zähler überläuft. Dann fängt man mit einem neuen Block an.

Selbstregulation

Das Netzwerk reguliert die Schwierigkeit des Problems so, dass pro Stunde ein Block gelöst werden (soll).

Wird die Rechengeschwindigkeit des Bitcoins Netzwerks höher, wird das Problem angepasst. Beispielsweise ist es einfach ein X zu finden, dessen SHA256(X)-Integer-Wert nicht nur eine „0“ am Anfang besitzt, sondern „0000“.

Genau das macht das P2P-Netzwerk … Der Integer-Wert des Problems wird kleiner und damit wird die Schwierigkeit höher.

ASICs

Es gibt mehrere Technologien, mit denen man das Problem lösen kann. Zum einen kann man auf CPUs oder GPUs ein Programm schreiben, dass das mehr oder weniger effizient bewerkstelligen kann. Mit High-End-Grafikkarten schafft man wohl bis zu 1GH/s. Normale CPUs versagen da fast vollständig. Auf einem normalen Rechner würde das wohl 1 Jahr dauern, einen Block zu lösen.

Mit FPGAs lässt sich eine digitale Architektur bauen, die nichts anderes macht, als möglichst effizient SHA256 zu berechnen. Mit FPGAs programmiert man nicht, sondern man beschreibt die Hardware, die dann das eigentliche Problem löst. Beispielsweise kann man in VHDL/Verilog eine CPU definieren, die dann Programme ausführt. Und dabei handelt es sich nicht um eine CPU-Emulation sondern um eine richtige CPU.

Mit FPGAs ist man keinerlei Einschränkung unterworfen (im Rahmen der Verfügbaren Logikresourcen), was Parallelität, Breite der Register, … betrifft. Benötigt man einen Addierer, der zwei 2048Bit Zahlen addiert? Kein Problem … Möchte man einen Algorithmus Pipelinen? Man kann sich eine Pipeline bauen, die Teilschritte vollständig Parallel abarbeitet. Möchte man die 64 Iterationen des SHA256 aufrollen und in einer Pipeline 64 SHA256 gleichzeitig bearbeiten? Dann würde man 64 Takte benötigen, bis die Pipeline gefüllt ist und dann pro Takt einen SHA256 berechnen … Wenn man das ganze nochmals 10fach parallelisiert, hätte man mit 100MHz schon 1GH/s … Wenn der FPGA genug Logikresourcen hat, kann man das machen …

Es ist so, als würde man mit 74xx Logik-Gattern die Funktionalität bauen. Mit Hilfe (teils kostenloser) Synthese-Werkzeuge (von z.B. Xilinx, Altera, Latice) macht man das nicht mehr Gatter-weise, sondern beschreibt in VHDL oder Verilog und lässt die Hardware-Beschreibung in Logik-Funktionen synthetisieren. Diese Logik-Funktionen werden dann auf die Logik-Resourcen der FPGAs gemappt.

FPGAs sind aber ziemlich teuer, wenn sie groß und schnell sein sollen … Es gibt da ein paar Implementierungen des SHA256 auf FPGA, aber so ultraschnell scheint das nicht zu sein. Einen Vorteil haben sie aber … Sie benötigen weniger Strom als eine GPU.

Die Königsklasse sind ASICs. Im Prinzip lässt sich eine in VHDL/Verilog definierte Hardware mit wenig Aufwand in ein ASIC-design konvertieren, das dann in Silizium geätzt werden kann. Der Herstellungsprozess von ASICs ist aufwändig und sehr teuer. Es lohnt sich wirklich nur, wenn die ASCIs viel verkauft werden (oder entsprechend mehr verlangt wird).

Nahezu alle käuflichen ICs sind ASICs. Sie sind extrem schnell und brauchen sehr wenig Energie …

Es gibt einen Hersteller, der hat solche ASICs zum Bitcoin minen produziert und ist kurz vor der Auslieferung …

Eine Box, die 30GH/s berechnen kann, benötigt nur 30W. D.h. 1GH/s etwa 1W. Das ist schon unglaublich effizient!

Lohnt sich der Bitcoin-miner auf ASIC-Basis?

Die Antwort lautet Jein … Für den Hersteller auf jeden Fall … Der Bedarf an ASIC-miner wird steigen, wenn mehr ASIC-miner verkauft wurden.

Das Netzwerk wird viel viel schneller durch die ASIC-miner, was dazu führt, dass das zu berechnende Problem viel viel schwieriger wird. GPUs werden da in kurzer Zeit nicht mehr mithalten können und unprofitabel werden. Wenn jemand wirklich noch minen möchte, wird er wohl auf ASICs umsteigen müssen, um möglicherweise gleich erfolgreich zu bleiben, wie bisher.

Zum Minen würde es sich nur lohnen, wenn man einer der ersten ist, der einen ASIC-miner hat …

Hier noch eine kleine Grafik, die zeigt, wie sich die Schwierigkeit und die Rechneleistung in der letzten Zeit entwickelt hat:

speed-small-lin

Quelle: http://bitcoindifficulty.com/

Man sieht, dass sich insbesondere seite dem letzten Hype, die Rechenleistung und die Schwierigkeit deutlich gestiegen ist … Ein Grund mehr, keine Bitcoins zu errechnen 🙂

Lehrbuch zieht sich …

Gerade eben die Lösungen der Übungsaufgaben zu Lektion 12 in lang-8 reingestellt.

Und 10min später gabs auch schon eine Korrektur … Schon einige Sachen falsch gemacht. Manchmal weiß ich auch gar nicht, wo ein zusätzliches Partikel herkommt, aber im großen und ganzen immer eine große Hilfe 🙂

Es gibt da so psychologisch wichtige Meilensteine … Bis man diese erreicht hat, kommt es einem vor, als würde man auf der Stelle treten und es würde nichts vorwärts gehen. Dieses Buch ist einer von ihnen … Motivation kommt dann bestimmt wieder auf, wenn ich das Buch los bin und zum nächsten wechseln kann 🙂

Noch 3 Lektionen, dann hab ich das Buch endlich hinter mir … Für diese 15 Lektionen hab ich dann exakt ein Jahr gebraucht.

Für das zweite bleibt dann noch ca. April bis Dezember Zeit … Garnicht mal soviel … da muss ich wirklich mal strukturierter arbeiten, damit ich bis Dezember noch fertig werde.

Alle zwei Wochen eine Lektion und ~80 Wörter Wortschatz ist eigentlich durchaus realistisch … Ich muss nur diesem Zeitplan treu bleiben und dann sollte ich auch nicht in allzu großen Stress verfallen 🙂

 

Kanji nach Reading konvertieren

Auf der Suche nach einem Tool, das japanischen Text mit Kanji in Readings konvertiert, hab ich mittlerweile drei gefunden.

Als erstes hatte ich Chasen gefunden, das nach einem Test mit einem einfachen Text gleich schonmal merkwürdiges produzierte:

私は日本に一人でいます。

wurde zu:

私      ワタシ                                                                                                                                    
は      ハ                                                                                                                                                    
日本    ニッポン                                                                                                                                              
に      ニ                                                                                                                                                    
一      イチ                                                                                                                                                                
人      ニン                                                                                                                                                                
で      デ                                                                                                                                                                                    
い      イ                                                                                                                                                                                    
ます    マス                                                                                                                                                                                  
。      。                                                                                                                                                                                    
EOS

Es fällt auf, dass aus dem 一人 [ひとり] ein 一 [いち] + 人 [にん] wurde …

Nach diesen Tests – und anhand unterschwelliger Erinnerungen, die ich an andere Tools hatte, deren Name mir aber nicht mehr einfallen wollten, hab ich mir das Japanese-Support-Plugin von Anki genauer angeschaut. Schließlich generiert das Furigana und da ist die gleiche Funktionalität gefragt.

Nach kurzem Analysieren viel es mir dann wieder ein, woher meine Kenntnisse bzgl der anderen Tools kamen. Ich hatte mir das Plugin schonmal irgendwann letztes Jahr angeschaut und mir nur gemerkt, solche Tools zur morphologischen Analyse von japanischen Texten schonmal gesehen zu haben.

Es werden zwei Tools  unterstützt … Kakasi und MeCab … Kakasi wurde wohl seit 2004 nicht mehr weiterentwickelt, während es von MeCab ein 2013er Update gibt.

Das Python-File zum Generieren der Readings hatte ich dann mit ein paar wenigen Handgriffen zur Standalone-Variante umgebaut und den Output getestet:

Kakasi:

私[わたし]は日本[にっぽん]に一人[ひとり]でいます。

MeCab:

私[わたし]は 日本[にっぽん]に一[いち] 人[にん]でいます。

Chasen (zum Vergleich formatiert):

私[わたし] は 日本[にっぽん] に 一[いち] 人[にん] でいます。

Netterweise gibt es auch gleich eine Internetseite, bei der man einen japanischen Text eingeben und gleichzeitig von allen drei Tools analysieren kann:

Link zur Webseite

Was ich jetzt schade finde ist, dass gerade MeCab das nicht richtig gemacht hat, wobei es immer noch weiterentwickelt wird … Vielleicht gibt es irgendein Flag, was man noch setzen kann? Mal  kucken …

Grammatik auf Karteikarten

Das beschäftigt mich ja schon länger … Wie schafft man es, Grammatik zu behalten, wenn man es noch nicht mal passiv großartig anwenden kann?

Stur auswendiglernen und immer und immer wieder wiederholen?

Naja, ich glaub, das werde ich jetzt ausprobieren … Hab mein Anki-Deck so angepasst, dass ich mit meiner bisherigen Karteikarten-Erstellungs-Methode auch Karten mit Grammatik erstellen kann.

grammar1

Ich bin mir noch nicht sicher, ob die schon perfekt sind, so wie sie sind … Aber ich werd’s mal testen 🙂

Anki verwende ich mittlerweile nur noch, um meine Daten zu verwalten. Zum Suchen, zum Stylen der Karten, zum Archivieren, als Plugin-Framework für den Audio-Downloader, den QR-Code oder den KanjiABC-Generator ist es perfekt 🙂

Zum Lernen verwende ich es garnicht mehr … Möglicherweise werde ich es zum Passiv Listening lernen nochmal verwenden …

 

Karteikarten lernen ist einfacher

Es fällt mir leichter, mit gedruckten Karteikarten zu lernen.

Dies liegt wohl hauptsächlich daran, dass ich mir aus einem Stapel von 30 Karten täglich die einfachen Karten herauspicken und die anderen für den nächsten Tag wieder auf 30 Karten mit neuen Karten auffülle.

Das Mitziehen der schweren Karten von Tag zu Tag macht diese mit der Zeit dann auch einfacher, weil sie mir dann bekannt vorkommen und ich sie schon öfters gesehen habe.

Im Gesamten wird dadurch das Lernen einfacher …

Was ich auch gut finde ist, dass ich Karten, die ich kannte in einem letzten Durchlauf nochmal wiederholen kann, bevor sie wieder in meinen 5-Fächer-Kasten zurück kommen. Das ging bei Anki ja auch wieder nicht, weil die Karten dann einfach weg waren …

Ich hätte es erst nicht geglaubt, aber ich bleib bei den gedruckten Karten … Ich find sie viel besser als Anki und die praktische Umsetzung des 5-Fächer-Algorithmus für richtige Karteikarten mit richtigen Karteikästen funktioniert mittlerweile auch recht gut 🙂