Scala Profis

Der Podcast aus Berlin, rund um die Programmiersprache Scala. Mit Neuigkeiten, Know-How und allem was uns sonst noch so einfällt. Für alle Scala-Enthusiasten und solche die es werden wollen. Für Dich am Mikrofon: Benjamin Hagemeister und Sven Wiegand.

https://scalaprofis.de

subscribe
share






episode 8: SP10/16: Ich weiß was Du letzten Sommer getan hast


Wir suchen einen Scala-Entwickler

Willst Du Scala endlich auch beruflich einsetzen? Dann komm zu uns. Für unser Berliner Team bei der Beta System IAM Software AG suchen wir einen Scala-Entwickler bzw. eine Scala-Entwicklerin. In einem sechsköpfigen Scrum-Team entwickelst Du unsere neue Web-Basierte IAM-Suite, vollständig in Scala.

Auch als Quereinsteiger aus der Java-Welt bist Du herzlich willkommen.

Bewirb Dich jetzt (gib bei der Bewerbung mit an, dass Du über die Scala Profis auf die Stelle aufmerksam geworden bist).

Scala 2.12-RC1 verfügbar

Der gemäß ursprünglicher Planung für Ende Mai vorgesehene Release Candidate 1 wurde nun am 6. September 2016 released.

Im Zentrum von Scala 2.12 steht die bessere Integration mit Java 8. Das bedeutet auch, dass mit Scala 2.12 gebaute Anwendungen eine Java 8 VM voraussetzen.

Ein Release-Termin für 2.12.0 ist uns aktuell nicht bekannt.

Links
  • Scala 2.12-RC1 is now available
The Scala Center Advisory Board Über das Advisory Board
  • Spricht Empfehlungen an das Scala Center aus, woran es arbeiten soll.
  • Es ist die Aufgabe des Scala Centers, diese Empfehlungen zu bearbeiten.
  • Das Board hat sieben abstimmende Mitglieder:
    • Vertreter der sechs (wenn ich das richtig verstehe inzwischen 9) Sponsoren: Artima, 47 Degrees, IBM, Lightbend, Nitro, SAP, Tapad, Twitter, Verizone
    • Bill Venners als Vertreter der Community
  • Heather Mills als »Executive Director« des Scala Centers, um über die Aktivitäten des Scala Centers zu berichten
  • Martin Odersky als technischer Berater des Boards
  • Das Board trifft sich viermal im Jahr
Wie funktioniert das Board
  • Ziel jedes Meetings ist es Empfehlungen auszusprechen, woran das Scala Center in den nächsten drei Monaten arbeiten soll
  • Entscheidend ist, dass die Empfehlungen des Boards nicht bindend sind
  • Heather und Martin sitzen im Board, um das Board über die Machbarkeit/Sinnhaftigkeit von Empfehlungen vorab zu beraten
  • Jedes der sieben Board-Mitglieder kann Vorschläge einreichen
  • Die sieben Mitglieder können über die Vorschläge abstimmen um so daraus Empfehlungen für das Scala Center zu generieren.
  • Die Vorschläge und Protokolle der Meetings werden im Github repository veröffentlicht.
Erstes Meeting vom 9. Mai 2016

Dort wurden vier Empfehlungen ausgesprochen:

  1. Klärung des Scala-Führungs-Prozesses inklusive des SIP/SLIP-Prozesses
  2. Definition eines Migrationspfades von Scala 2.x nach Dotty
  3. Schaffung einer »new unpaid publicity chair role« für das Scala Center und
  4. Fortsetzung der Unterstützung für Scala.js

Protokoll des ersten Meetings

Zweites Meeting vom 9. August

Folgende Empfehlungen wurden beschlossen:

  1. Native Execution of Scala/Spark via LLVM
  2. Compile Time Check of Serializability

Protokoll des zweiten Meetings

Links
  • The Scala Center Advisory Board
  • Github Repository mit Meeting-Minutes
ScalaCenter Meetings Neuer SIP-Prozess

Im neuen Scala Improvement Process wird jeder SIP einem Reviewer zugeordnet, der diesen dem SIP-Komitee präsentiert.

Status aus Juli- und August-Meetings

Im Prozess sind:

  • SIP-20 Improved Lazy Val Initialization: Vermeidung von Deadlocks
  • SIP-23: Literal-based singleton types: ???
  • SIP-25 Trait Parameters: Im Prinzip »Konstruktorparameter« für Traits
  • SIP-26 Unsigned Integer Data Types: Einführung von UByte, UShort, UInt und ULong
  • SIP-27 Trailing Commas: Erlaubt Kommas nach dem letzten Parameter einer Funktion oder dem letzten Eintrag einer einer Liste (ähnliche JavaScript). Soll das Auskommentieren und austauschen von Elementen erleichtern.

Ein SIP wurde auf Wunsch des Autors zurückgestellt:

  • SIP-22 Async

Zwei weitere wurden abgelehnt:

  • SIP-12: Uncluttering Scala’s syntax for control structure: »Verschönerung von if- und for-Statements.
  • SIP-16: Self-cleaning macros
Links
  • Juli SIP-Meeting
  • August SIP-Meeting
Multiversal Equality for Scala Aktuelles Problem

Equality-Operator == ist nicht typsicher. So kann man versehentlich folgendes schreiben:

val a = "hello" val b = Some("hello") a == b

Das Ergebnis wird immer false sein, da die Typen nicht übereinstimmen.

Potentielle Lösung

Andere Sprachen bietet dazu den ===-Operator. Odersky möchte aber möglichst keinen neuen Operator einführen, sondern es bei dem ==-Operator belassen. Dabei ist allerdings das Problem der Abwärtskompatibilität zu berücksichtigen.

Martin Odersky hat dafür einen Language Enhancement Proposal erstellt, den er in einem Blog-Eintrag inklusive möglichem Lösungsweg beschreibt.

Links
  • Language Enhanceent Proposal
  • Blog-Eintrag von Martin Odersky
Statische Code-Analyse Compiler Option

Der Scala Compiler bietet selbst einige Optionen, die für zusätzliche Warnungen und sogar Fehler sorgen.

Die Optionen -Xlint -Ywarn-dead-code -Ywarn-numeric-widen -Yno-adapted-args -Ywarn-value-discard führen zu 323 Warnungen und 13 Fehlern!
Die Fehler entstehen, weil die Option -Yno-adapted-args die Konvertierung von a, b nach (a, b) unterbindet.

Externe Tools
  • Linter
    • Typ: Compiler Plugin (muss gegebenenfalls einzeln zu den Sub-Projekten hinzugefügt werden)
    • IDE-Integration: Keine
    • Konfiguration: scalacOptions
    • Ausnahmen:
      • Einzelne Zeilen über Kommentare (Komplett oder für einzelne Regeln)
    • Ausführen: Implizit bei compile
    • Ausgabe: Konsole
    • Warnungen: 106
  • WartRemover
    • Typ: SBT Plugin
    • IDE-Integration: Keine
    • Konfiguration: SBT
    • Ausnahmen:
      • Einzelne Dateien über SBT Einstellungen
      • Klassen oder Methoden über die Annotation java.lang.SuppressWarnings (Komplett oder für einzelne Regeln)
    • Ausführen: Implizit bei compile
    • Ausgabe: Konsole
    • Warnungen: 4332
  • Scapegoat
    Nur Scala 2.11!
    • Typ: SBT Plugin
    • IDE-Integration: Keine
    • Konfiguration: SBT
    • Ausnahmen:
      • Einzelne Dateien über SBT Einstellungen
      • Klassen oder Methoden über die Annotation java.lang.SuppressWarnings (Komplett oder für einzelne Regeln)
    • Ausführen: Explizit über scapegoat
    • Ausgabe: Konsole, HTML, XML
  • Scalastyle
    Wird im Coursera Kurs Functional Programming Principles in Scala für die Auswertung der Übungen mit verwendet.
    • Typ: SBT Plugin
    • IDE-Integration:
      • Eclipse Plugin
      • Inspection für IntelliJ IDEA
    • Konfiguration:XML Datei (kann über ein SBT Kommando generiert werden)
    • Ausnahmen:
      • Einzelne Zeilen und Code-Blöcke über Kommentare (Komplett oder für einzelne Regeln)
    • Ausführen: Explizit über scalastyle
    • Ausgabe: Konsole, XML im Checkstyle Format
    • Warnungen: 1097
Interessante Warnungen
  • case classes must be final siehe stackoverflow
  • Inferred type containing Any
  • Descendants of a sealed type must be final or sealed
  • Merge these two map operations
  • Verwendung von
    • var
    • null
    • Option.get
Links
  • How to make the Scala compiler to review your code (2016)
  • Review of Scala Static Analysis Tools (2015)
  • Linter
  • WartRemover
  • WartRemover & quasiquotes
  • Scapegoat
  • Scalastyle
ScalaTest 3.0: What’s new

Kürzlich wurde ScalaTest 3.0.0 freigegeben. In dem Artikel What’s new in ScalaTest 3.0 werden Hauptneuerungen der Version aufgeführt:

  • Vollständige Unterstützung für Scala.js
  • Asynchrone Varianten zum Testen von Future (siehe auch Episode SP06/16 zu den ScalaDays)
  • Erweiterte Matchers mit zusätzlichen Match-Words um Container zu testen: Einleitung durch z.B. must contain oneElementOf, noElementOf, atLeastOneElementOf, atMostOneElementOf, allElementsOf and inOrderElementsOf.
  • Assertions und Macher liefern als Ergebnis jetzt ein Objekt vom Typ Assertion an Stelle von Unit.
Link
  • What’s new in ScalaTest 3.0
ScalaFiddle

ScalaFiddle ist ein Seite zum testen und teilen von Scala Code, also JsFiddle nur für Scala. Ein ScalaFiddle kann per ›

<iframe height="300" frameborder="0" style="width: 100%; overflow: hidden;" src="https://embed.scalafiddle.io/embed?sfid=UbLKYAK/1&theme=dark"> </iframe> Links
  • ScalaFiddle
play-swagger

Swagger ist eine Sprache zur Spezifikation von REST-Schnittstellen. play-swagger kann aus dieser Spezifikation folgende Play-Artefakte generieren:

  • Routes file
  • Generators of random test data
  • Wrappers for Play route files to convert semantics from http-related to domain-related (controller_base)
  • Skeletons for the domain-driven controller implementation
  • Model classes and validation rules
  • Unit tests for invalid and valid parameter sets
  • Security extractors (if needed)
  • Skeletons for custom deserializers (if needed)
Links
  • play-swagger
Scala Exercises

Scala Exercises ist ein Open-Source Projekt von 47 Degrees. Auf der Web-Seite gibt es Einführungen mit Übungen zu verschiedenen Scala Bibliotheken.
Der Code für die verschiedenen Übungen liegt auf GitHub.

Momentan gibt es Übungen zu den folgenden Themen:

  • STD LIB
  • Cats
  • Shapeless
  • Doobie
  • Scalacheck
  • FP in Scala

Es gibt eine Anleitung zum Hinzufügen von neuen Themen, wenn die Episode online ist sind es also unter Umständen noch mehr.

Links
  • Scala Exercises

Gib uns Dein Feedback als Kommentar auf unserer Web-Site, via Twitter oder Google+.

Kapitel
  1. Intro (00:00:00.000)
  2. Wir suchen einen Scala-Entwickler (00:02:19.309)
  3. Scala 2.12-RC1 released (00:03:56.024)
  4. The Scala Center Advisory Board (00:07:40.696)
  5. ScalaCenter Meetings (00:18:49.080)
  6. Multiversal Equality for Scala (00:30:54.765)
  7. Statische Code-Analyse (00:35:57.251)
  8. ScalaTest 3.0: What’s new (01:04:16.003)
  9. ScalaFiddle (01:06:57.624)
  10. play-swagger (01:09:31.907)
  11. Scala Excercises (01:13:09.411)
  12. Outro (01:14:52.408)
Lizenz


Scala Profis von Benjamin Hagemeister & Sven Wiegand ist lizenziert unter einer Creative Commons Namensnennung — Keine Bearbeitungen 4.0 International Lizenz.

Über diese Lizenz hinausgehende Erlaubnisse kannst Du unter http://scalaprofis.de erhalten.

Titelsong basierend auf Wish You Were Here von THE.MADPIX.PROJECT lizensiert unter Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0).


fyyd: Podcast Search Engine
share








 October 18, 2016  1h16m