Scala Profis

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


Listen Later

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
          5. 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
            3. 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 ›

                                                        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)
                                                                  13. 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).

                                                                    ...more
                                                                    View all episodesView all episodes
                                                                    Download on the App Store

                                                                    Scala ProfisBy Benjamin Hagemeister, Sven Wiegand