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





GST006 - Heute machen, morgen Legacy


Synopsis: Heute geht es um ArangoDB und wie man einen coolen low-level Client für eine Datenbank baut, Mutation Testing, Ruby/Rails Security und anderen geilen Scheiß.

Gast (00:00:40)
  • Lucas Dohmen (@moonbeamlabs)
  • Studiert an der RWTH Aachen
ArangoDB & Ashikawa (00:01:40)
  • Lucas arbeitet an diversen Open Source Projekten rund um ArangoDB
    • https://github.com/triAGENS/ashikawa-ar
    • https://github.com/triAGENS/ArangoDB
    • https://github.com/triAGENS/ashikawa-core
  • Zwei Pattern zur Anbindung von Datenbanken: ActiveRecord (http://www.martinfowler.com/eaaCatalog/activeRecord.html) und DataMapper (http://www.martinfowler.com/eaaCatalog/dataMapper.html)
  • Ziel von Ashikawa Core:
    • Sehr leichtgewichtige Abstraktion über der REST-API von ArangoDB
    • “Treiber” von anderen Dokumentendatenbanken liefern nicht nur einen Treiber sondern auch “Framework”
    • Aktuell lässt sich das HTTP-Backend noch nicht austauschen, wird aber in Zukunft auf Faraday (https://github.com/lostisland/faraday) aufbauen
    • Noch ist Ashikawa nicht Thread-safe
  • Was baut auf Ashikawa Core auf?
    • Implementierung des Active-Record-Patterns: https://github.com/triAGENS/ashikawa-ar
    • Lucas verwendet Teile des DataMapper2 Projekts:
      • https://github.com/solnic/virtus: Attributes on Steroids
      • https://github.com/mbj/aequitas: External Validations
      • Beide sind API-kompatibel zu ActiveModel, d.h. sie lassen sich einfach in Rails verwenden
  • Contributor sind gerne gesehen!
  • Lucas hat sich für die DataMapper2 Bibliotheken entschieden, weil DataMapper2 ArangoDB schon unterstützt (neben Postgres)
  • Lucas hat außerdem das Gefühl, dass die Code-Qualität bei DataMapper2 höher ist
Testing Ruby (00:19:50)
  • Seattle.rb (http://ruby.sadi.st/Ruby_Sadist.html NSFW)
    • Projekte wie flog, flay, heckle
  • Am Anfang war die Code-to-Test-Ratio das Maß aller Dinge
  • Dann kam die Code Coverage (http://en.wikipedia.org/wiki/Code_coverage)
  • Code Coverage ist seit Ruby 1.9 sehr einfach zu messen
  • Wir haben uns darauf geeinigt, dass 100% Code Coverage in Core-Bibliotheken erstrebenswert ist, in Anwendungen nicht mehr
  • Beide Metriken sagen aber nichts über die absolute Qualität von Tests aus
  • Wenn 100% Code Coverage erreichen sehr schwierig ist, dann ist das ein Code-Smell
  • Code Metrics as a Service: Code Climate (https://codeclimate.com/)
  • Enter Mutation Testing…
    • Nette Einführung in das Thema und in mutant: http://solnic.eu/2013/01/23/mutation-testing-with-mutant.html
    • mutant gem: https://github.com/mbj/mutant
    • Mutation-Testing ist langsam
    • Macht vor allem Sinn bei abgeschlossenen Bibliotheken
  • Lucas will auch Mutation Testing in ashikawa-core machen
  • mutant läuft am besten unter Rubinius
  • https://github.com/burke/zeus
    • pre-loaded Rails environment
    • ähnlich zu spork, aber intelligenter, wenn es um reloading geht
Ruby/Rails Security (00:39:00)
  • Aaron über YAML, YAML F7U12: http://tenderlovemaking.com/2013/02/06/yaml-f7u12.html
    • YAML nicht als User-Input!
    • JSON und XML sind für den Austausch besser geeignet
  • Padrino ist safe: http://www.padrinorb.com/blog/sleep-well-yaml-vulnerabilites-and-padrino
  • Rails Security Issues und Start Ups? http://www.kalzumeus.com/2013/01/31/what-the-rails-security-issue-means-for-your-startup/
    • We’re are doomed!1!1!elf
    • Sicherheitslücken gehören dazu (Höre http://geekstammtisch.de/#GST005)
    • Wichtig ist wie man damit umgeht (Entwickler wie Maintainer)
  • PHP-Code Injection via User-Agent String: http://blog.spiderlabs.com/2013/02/honeypot-alert-user-agent-field-php-injection-attacks.html
Ruby (00:48:50)
  • Ruby auf Python: Topaz (http://docs.topazruby.com/en/latest/blog/announcing-topaz/)
  • Basti erinnert ein Projekt für eine True-Ruby-Sandbox: Ruby -> Rubyracer (V8) -> emscripted-ruby -> Ruby (https://github.com/cantino/ruby_on_ruby)
  • Yanked Gems sind doof :-) (net-scp, net-ssh-gateway, newrelic)
Technical Dept (00:55:10)
  • Technical Dept: http://tech.groups.yahoo.com/group/scrumdevelopment/message/55626
    • Don't do it.
    • When we do it, figure out why and stop.
    • When we do it, leave it alone if it's not in the way.
    • If it is in the way, clean up the parts we pass through.
Erlang on XEN aka geiler Scheiß (01:08:35)
  • Erlang on XEN: http://zerg.erlangonxen.org/
  • Startet im Kontext eines Requests eine komplette Erlang VM inkl. Applikation
Tools (01:11:40)
  • Record your Terminal: http://ascii.io/
  • Boxen: http://boxen.github.com/
    • Für Chef: https://github.com/pivotal/pivotal_workstation
  • Vim Autocompletion (wenn Lucas schon da ist ^^)
    • Aktuell verwenden Lucas und Dirk “YouCompleteMe”: https://github.com/Valloric/YouCompleteMe. Gefällt uns nicht so gut, aber sehr zu empfehlen wenn man C-* programmiert
    • Alternative: https://github.com/Shougo/neocomplcache
    • Oder einfach ohne extra Plugin ;-)
Events (01:20:20)
  • Railsgirls Rheinland ist in knapp 2 Wochen (http://www.nerdhub.de/events/260-rails-girls-rheinland/dates/1756)
  • Railsgirls Followup am Donnerstag bei Intro (http://www.nerdhub.de/events/115-rails-girls-cologne/dates/1571)
  • cologne.rb am Mittwoch bei adcloud (http://www.nerdhub.de/events/40-cologne-rb/dates/843)
  • cologne.js in der neuen Bottfabrik! (http://www.nerdhub.de/events/3-cologne-js/dates/1597)
Offtopic (01:25:40)
  • Die Nifty Drives (http://theniftyminidrive.com/) von Basti und Dirk sind endlich da
    • Das von Dirk leider aber doch nur in Silber (statt Pink)
  • XKCD Style Comics in HTML: http://cmx.io/edit/


share







 2013-02-19  1h28m