Geekstammtisch

Mehr oder weniger regelmäßiger Stammtisch rund um Geektum, (Web)development und was immer unsere Gäste an interessanten Dingen zu erzählen haben

https://geekstammtisch.de/

subscribe
share






GST004 - Ich dachte C ist fertig


Unser Gast ist heute: Frank Celler (@fceller, http://triagens.com)

Synopsis: Heute geht es um mruby, C-Hacking und Bytecode-Compiler

Errata
  • Neue RubyWiki Seite zum Open RPG Maker: http://devel.pegasus-alpha.eu/projects/openrubyrmk/boards (danke @qquintilianus, https://twitter.com/qquintilianus/status/298385311761842176)
Unser Gast
  • Als Errata zu GST001, mruby ;-)
  • Frank ist kein Rubyist, sondern C-Hacker
(M)Ruby
  • Steht für Matz Minimal Embedded Ruby
  • Um irgendwo embedded zu werden
    • Hardware (zB.: Roboter)
    • iOS (http://mobiruby.org/)
    • Andere Programme (zB: Datenbanken)
  • Redis (http://redis.io/) embedded zum Beispiel Lua (http://www.lua.org/)
    • Da Lua irgendwie nicht so richtig für Programmierer ist, könnte mruby hier eine Lücke schließen
  • Ruby 1.8 ist nicht dafür entworfen irgendwo eingebettet zu werden
  • mruby in a Nutshell
    • Bytecode-Compiler (ähnlich wie YARV in Ruby 1.9)
    • Soll eine sehr, sehr kleine, überall lauffähige VM bieten (Rite-VM)
    • Ein sehr kleiner Satz von Libraries
      • Es gibt kein require
      • Es gibt mgem (https://github.com/bovi/mgem)
      • Einschub: http://mruby.sh/ -> Englische Übersetzung der japanischen News von Daniel Bovensiepen (http://www.bovensiepen.net/)
      • mgems sind quasi C-Libs
      • Stdlib ist quasi nicht existent
      • Core ist auch stark eingeschränkt (kein Bignum, keine Regexp, keine Threads)
      • Es gibt als mgem eine cURL-Lib (was für eine Datenbank die HTTP spricht ganz sinnvoll ist)
      • mruby ohne Threads macht vor allem für Datenbanken Sinn
      • Ruby ist ein Standard: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579
      • Inzwischen gehen auch attr_accessor und andere Introspection Features
      • mruby wird magischer ;-)
  • Wo hat der Frank mruby überhaupt eingebettet?
    • ArangoDB - http://www.arangodb.org/
    • Eine Open-Source Dokumentendatenbank
  • Wofür bettet man eine Scriptsprache in eine Datenbank ein?
    • Filtern von Ausgaben
    • Implementierung von Triggern (statt PL/SQL - http://en.wikipedia.org/wiki/PL/SQL)
    • Anreichern von Ausgaben
    • Welche Scriptsprache nimmt man da:
      • PHP trauen wir uns nicht
      • JavaScript funktioniert mit V8 (https://code.google.com/p/v8/), wurde dann auch integriert
      • Dokumentation ist grausam
      • Sehr schnell, in C++
      • wenn man einen Fehler sucht, kann man nur aufgeben ;-)
  • Arango ist in C/C++ geschrieben
    • Haben sehr früh Zugang zum mruby Repo bekommen
  • mruby lässt sich sehr leicht einbetten
  • Dokumentation ist genauso schlecht wie die von V8
    • Man kommt aber noch zu Fuß durch den Code
  • Probleme bei V8 war JavaScript-Prototypen in C++ Objekte abzubilden
  • mruby wurde mit dem Gedanke entwickelt eingebettet zu werden, daher sind entsprechende Hooks vorgesehen C-Strukturen in Ruby abzubilden
  • V8 verwendet UTF-16, Arango verwendet UTF-8
  • mruby verwendet auch UTF-8 -> Overhead fällt weg
  • Frank hat mit LLVM rum gespielt und hat aus mruby den Faktor 2-3 raus geholt
  • Was noch viel für die Performance tun kann ist Method-Caching
  • Momentan ist mruby noch Alpha-Status
    • In der homebrew Version ist mruby drin
    • Für Linux muss es per Hand gebaut werden
  • Bei ArangoDB ist eine Shell für mruby dabei (siehe auch: http://qiezi.me/projects/mruby-web-irb/mruby.html)
  • emscripten.org
  • Die mruby Shell in ArangoDB ist analog zu der JavaScript Shell in ArangoDB
  • mruby hatte bis vor kurzem keine richtiges Makefile
    • Daniel Bovensiepen hat dann ein CMake-File erstellt (http://cmake.org)
    • Seit Dezember 2012 gibt es auch ein Rakefile
    • War unter Windows vor der totale Krampf
  • ArangoDB gibt es seit kurzem auch für Windows
    • Probleme mit libev und ICU
  • UTF-8 hat zwei Darstellung für Umlaute: den Umlaut und zwei Punkte + Buchstabe
  • Basti hatte einmal sehr viel Freude mit case-insensitive und case-sensitive Systemen
  • Macht auch Probleme bei Collation
  • ICU macht das einfach für einen (http://site.icu-project.org/)
  • Die Windows-Version von ArangoDB hat keinen mruby Support
  • mruby targeted aber Windows
  • Anekdote: Die C-Standards entwickeln sich im Jahrzehnt-Rhytmus
  • VisualStudio ist bei ANSI-C Version '89 stehengeblieben
  • Frank macht C schon seit 30 Jahren
    • Hat für den TRS-80 ein Arcade-Spiel nachprogrammiert (http://en.wikipedia.org/wiki/TRS-80)
    • Frank hat das Spiel auf einem TRS-80 Emulator für Linux widergefunden :-)
    • "Magic Worm for Model I" (http://fosdem.graph-database.org/news/8, http://www.retrocomputing.net/parts/r/radio/TRS80_4/docs/on2002.htm)
  • Frank erinnert einen C Interpreter
  • Wenn C dann lieber Objective-C, meint Frank
  • Ist für Rubyisten noch eingängiger, vom mentalen Modell
  • Basti hat auf dem letzten DevHouseFriday 'Ruby is Magic - Reflections' gezeigt (https://speakerdeck.com/railsbros_dirk/colognerb-reflections)
  • Cocoa ist von oben bis unten voll mit Magic
  • ArangoDB im MacApp-Store: https://itunes.apple.com/de/app/arangodb/id564723448?l=en&mt=12
    • War letztes Jahr unter den Top-10 für Dev-Tools
    • Ohne mruby
    • Ähnlich wie damals CouchDBX: http://janl.github.com/couchdbx/
  • Die JavaScript-Shell von ArangoDB läuft im Browser
  • Die ArangoDB-Shell ist ein eigener Client und spricht mit dem Server über HTTP
    • JavaScript-Console für den Browser: http://replit.github.com/jq-console/
  • http://stedolan.github.com/jq/
  • The JSON Query Language: http://www.jsoniq.org/
    • Ähnlich wie das was ArangoDB verwendet (unabhängig)
Events
  • NoSQL Matters: 25. - 27.4.2013 (http://2013.nosql-matters.org/cgn/)
    • Early Bird Tickets schon verfügbar
    • 25.4. ist Training Day
    • Keynote: Martin Fowler
    • Im KOMED in Köln
    • Mit Hadoop-Track
    • Und der Rest der bisher veröffentlichen Speaker ist nicht weniger hochkarätig

BTW: Jan Lehnardt ist jetzt bei 'The Couch Firm' - http://thecouchfirm.com/


fyyd: Podcast Search Engine
share








 February 5, 2013  1h12m