FreshRSS

🔒
✇ c't-Blog ff.org

Sekiro: Shadows Die Twice – heute, 21 Uhr bei c't zockt im Twitch-Livestream

Von Julius Beineke — 25. März 2019 um 16:36

zurück zum Artikel

"Sekiro: Shadows Die Twice" entsendet Spieler*innen ins feudale Japan zu Schwertkämpfen, Mystik und Meucheleien. Der knackige Schwierigkeitsgrad treibt auch und besonders Veteranen der Vorgänger in den Wahnsinn – und wir wollen mit! Um 21 Uhr gehts auf unserem Twitch-Channel live ins Getümmel.

Der spirituelle Nachfolger der Dark-Souls- und Bloodborne-Spiele "Sekiro: Shadows Die Twice" ist frisch am 22. März erschienen. Mit Schwert, Heimlichkeit, Wurfsternen, Akrobatik und allerlei Shinobi-Spielereien tritt man gegen Samurai, Kami, Oger, Riesenschlangen und diverse weitere Feinde an – alles vor der fast immer idyllischen Kulisse einer fiktiven japanischen Provinz während der Sengoku-Ära im späten 16. Jahrhundert.

Live-Video von ctzockt auf www.twitch.tv ansehen [1]

Unser c't-zockt-Kollege Julius Beineke nimmt euch live mit in die ersten Stunden des Action-Epos – heute Abend ab 21 Uhr auf unserem offiziellen c't-zockt-Twitch-Channel [2]. Wir wünschen viel Spaß beim Zusehen und Mitfiebern – und hoffen auf eure Unterstützung live im Twitch-Chat.

Sekiro: Shadows Die Twice angespielt (0 Bilder) [3]

[4]

Die Verbindung aus rasanter Action, Schleicheinlagen, Plattforming und ein paar Rollenspielelementen zusammen mit der mystischen, tragischen Story und dem verträumten Setting funktioniert wunderbar, macht Spaß und fordert – und das mit nur ein paar wenigen Mankos. Mehr darüber ist im Sekiro-Review [5] bei Heise Online nachzulesen. ()


URL dieses Artikels:
http://www.heise.de/-4347829

Links in diesem Artikel:
[1] https://www.twitch.tv/ctzockt?tt_content=text_link&tt_medium=live_embed
[2] https://www.twitch.tv/ctzockt
[3] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4347150.html?back=4347829
[4] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4347150.html?back=4347829
[5] https://www.heise.de/meldung/Sekiro-Shadows-Die-Twice-angespielt-Meisterhaftes-Schwertspektakel-4347147.html
[6] mailto:jube@heise.de

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Continuous Architecture

Keine Silver Bullets – außer Continuous Delivery?

Von heise online — 21. März 2019 um 07:42

zurück zum Artikel

Eigentlich gibt es keine "Silver Bullets". Aber Continuous Delivery verspricht so viele Vorteile, dass es ein solches Silver Bullet sein könnte. Was stimmt also: Gibt es sie doch oder ist Continuous Delivery überbewertet?

Der Ausdruck "Silver Bullet" kommt von einem Paper [1] aus dem Jahr 1986 von Frederick Brooks. Dieser ist Autor des Buchs "The Mythical Man-Month", das über die Entwicklung von IBMs OS/360-Betriebssystem berichtet. Er hat dieses Projekt geleitet. Es hatte ein Budget von 5 Milliarden US-Dollar und wurde in den Sechzigern nur durch die Mondlandung in den Schatten gestellt. Das Buch enthält Erkenntnisse, die auch heute noch wichtig sind – beispielsweise dass ein Projekt zunächst langsamer wird, wenn man mehr Personen mit dem Projekt betraut, weil die Personen sich erst mal einarbeiten müssen.

Silberkugeln

Silberkugeln dienen eigentlich zur Jagd auf Werwölfe. Brooks argumentiert, dass viele IT-Projekte irgendwann zu einem Monster mutieren und wir daher Silberkugeln brauchen. Die gibt es aber nicht: Seiner Meinung nach verspricht keine einzelne Entwicklung in einem Jahrzehnt eine Größenordnung bessere Produktivität, Zuverlässigkeit oder Einfachheit. Eine Größenordnung ist ein Faktor von 10.

Brooks argumentiert, dass die technischen Komplexitätstreiber bereits eliminiert sind. Wenn aber die meiste Komplexität mittlerweile durch die Anforderungen, Designs und Tests entstehen, kann man die Komplexität nicht einfach durch einen einfachen Trick lösen. Vielversprechend findet er das Kaufen, statt irgendwas selbst zu bauen, besserer Umgang mit Anforderungen, das "Züchten" von Software durch inkrementelle Entwicklung und schließlich gute Designer.

Continuous Delivery

Continuous Delivery bezeichnet das kontinuierlich Ausliefern von Software. Es ist klar, dass durch eine höhere Deployment-Frequenz die Zeit abnimmt, bis eine Änderung in Produktion ist. Mittlerweile gibt es eine Studie [2] ("2018 State of DevOps Report"), die weitere Effekte aufzeigt. Sie unterscheidet "Elite Performer", die nach Bedarf mehrmals pro Tag deployen, und "Low Performer", die zwischen einmal pro Woche und einmal pro Monat deployen. Teams mit Quartalsreleases sind also noch nicht einmal "Low Performer.

Elite-Performer erreichen logischerweise höhere Geschwindigkeit, mit denen Änderungen in Produktion gelangen:

  • Die Deployment-Frequenz ist um den Faktor 46 höher.
  • Die Zeit, bis eine Änderung in Produktion geht, ist um den Faktor 2555 geringer.

Aber es gibt auch andere positive Effekte:


  • Die Wahrscheinlichkeit, dass Deployments fehlschlagen, ist siebenfach geringer.
  • 2604fach schnelleres Wiederanlaufen nach dem Ausfall eines Services.
  • 2/3 mehr Arbeitszeit kann für neue Features aufgewendet werden.
  • Halb so viel Arbeitszeit ist für Sicherheitsprobleme oder Defekte aufzuwenden, die von Endbenutzern gemeldet werden.
  • Man braucht nur ein Drittel der Zeit für Kunden-Support.

Also steigen Produktivität und Zuverlässigkeit. Continuous Delivery könnte demnach eine "Silberkugel" sein, obgleich es sie nach Brooks ja nicht geben dürfte. Wie kann dieser Widerspruch geklärt werden?

Doch Silberkugeln?

Eine Erklärung könnte sein, dass Brooks nicht recht hat. Zu beweisen, dass etwas nicht existiert, ist prinzipiell schwierig. Sein Paper nennt keine Belege, sondern gibt im Wesentlichen die Meinung des Autors wieder. Es ist mittlerweile 30 Jahre alt, sodass sich vielleicht mittlerweile etwas geändert hat.

Auf der anderen Seite ist Brooks sehr erfahren und eine der wichtigsten Personen in der Softwareentwicklungsszene. Also kann man das Paper nicht so ohne weiteres ignorieren.

Continuous Delivery – nur ein Hype?

Die genannte Studie könnte auch fehlerhaft sein. Hinter der Studie steht Gene Kim, der unter anderem das DevOps-Handbuch und das Buch über das Phoenix-Projekt geschrieben hat. Beides Bücher, die Continuous Delivery positiv sehen. Ein weiterer Protagonist der Studie ist Jez Humble, einer der Autoren des ersten Continuous-Delivery-Buchs. Es wäre erstaunlich, wenn diese Personen eine Studie schreiben, die zeigt, dass Continuous Delivery doch keine erheblichen Vorteile bringt.

Aber die dritte Autorin im Bunde ist die Wissenschaftlerin Dr. Nicole Forsgren. So kann man sicher sein, dass die Studie einer wissenschaftlichen Überprüfung standhält und entsprechend wissenschaftlicher Standards ausgewertet worden ist. Und schließlich kann die Studie eine große Datenbasis vorweisen: Insgesamt haben 30.000 Personen an ihr teilgenommen. Eine große Datenbasis und eine professionelle Auswertung der Daten führt eigentlich zu aussagekräftigen Ergebnissen.

Beides stimmt?

Ich glaube, dass es gar keinen Widerspruch gibt. Die Studie und Brooks haben beide recht.
Dafür gibt es mehrere Gründe:

  • Das Erhöhen der Deployment-Geschwindigkeit ist keine "einzelne Entwicklung". Durch das Beschleunigen des Deployments müssen Konfigurationsmanagement, Tests, Deployments und die Genehmigung von Änderungen automatisiert werden. Das zeigt die Studie auch auf. Oft gehen die Änderungen bis in die Architektur. Nur kleine, getrennt deploybare Einheiten wie Microservices sind realistisch mehrmals pro Tag deploybar. Höhere Deployment-Geschwindigkeit kann also auf die Herausforderungen hinweisen, die gelöst werden müssen, um noch schneller zu deployen. Aber es ist keine "einzelne Entwicklung", sondern erfordert eine Vielzahl an Maßnahmen.
  • Brooks schließt eine Verbesserung um eine Größenordnung in Produktivität, Zuverlässigkeit oder Einfachheit aus. Die Studie sieht aber "nur" eine Verbesserung von 2/3 bei Produktivität, wenn man die Arbeitszeit für neue Features als Maß dafür nutzt. Bei der Zuverlässigkeit ist es ein Faktor zwei, wenn man die Arbeitszeit betrachtet, die zum Beseitigen von Fehlern benötigt wird. Die Wahrscheinlichkeit, dass ein Deployment zu einem Fehler führt, ist um den Faktor sechs niedriger – aber auch das ist keine Größenordnung.
  • Schließlich setzt Continuous Delivery das von Brooks empfohlene "Züchten" von Software um: Software wird öfter in Produktion gebracht. Daher gehen die Teams in kleineren Schritten vor. Das begünstigt Feedbackzyklen: Ergebnisse aus der Produktion können sofort in die Entwicklung einfließen und so kann das Projekt schrittweise wachsen statt nach einem komplexen Plan fertiggestellt zu werden.

Fazit

Continuous Delivery hat tatsächlich viele deutliche Vorteile. Die Studie zeigt diese klar und sehr gut belegt auf. Das hilft dabei, die Vorteile von Continuous Delivery eindeutig darzustellen. Dennoch ist auch Continuous Delivery wohl nicht das Silver Bullet. Dennoch gehen die Vorteile von Continuous Delivery weit über das schnelle Ausliefern von Software und neuen Features hinaus. Es lohnt sich also, in diesen Bereich zu investieren, selbst wenn nicht schneller Features in Produktion gebracht werden müssen, weil auch Produktivität und Zuverlässigkeit signifikant besser werden.

tl;dr

Silver Bullets sollen Softwarentwicklung um mindestens eine Größenordnung verbessern, aber es gibt leider keine. Continuous Delivery hat dennoch nachweisbare erhebliche Vorteile auch für Zuverlässigkeit und Produktivität.


URL dieses Artikels:
http://www.heise.de/-4341288

Links in diesem Artikel:
[1] http://www.cs.nott.ac.uk/~pszcah/G51ISS/Documents/NoSilverBullet.html
[2] https://puppet.com/resources/whitepaper/state-of-devops-report

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Neuigkeiten von der Insel

Hibernate-Tipps: Entitätseigenschaften mit der @Formula-Annotation berechnen

Von heise online — 18. März 2019 um 08:38

zurück zum Artikel

Die Hibernate-Tipps-Serie bietet schnelle und einfache Lösungen zu verbreiteten Hibernate-Fragen. Dieses Mal geht es um die Abbildung des Rückgabewerts einer SQL-Funktion auf das Attribut einer Entität.

Frage:

Der Wert eines meiner Entity-Attribute wird durch eine SQL-Funktion berechnet. Wie kann ich das mit Hibernate abbilden?

Lösung:

Hibernates @Formula-Annotation ermöglicht es, ein SQL-Schnipsel bereitzustellen, den Hibernate ausführt, wenn es die Entität aus der Datenbank liest. Der Rückgabewert des SQL-Schnipsel wird dann auf ein schreibgeschütztes Entity-Attribut abgebildet. Dies kann vorteilhaft sein, wenn die Datenbank bereits eine komplexe Funktion bereitstellt, die auf einer großen Datenmenge arbeitet.

Das folgende, vereinfachte Beispiel verwendet die @Formula-Annotation, um das Alter eines Autors zu berechnen. Alternativ könnte dies in diesem Beispiel natürlich auch durch eine Java-Methode erfolgen:

@Entity
public class Author {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column
private LocalDate dateOfBirth;

@Formula(value = “date_part(‘year’, age(dateOfBirth))”)
private int age;

public int getAge() {
return age;
}
}

Wenn Hibernate eine Author-Entität aus der Datenbank holt, fügt es das durch die @Formular-Annotation definierte SQL-Schnipsel zur SQL-Anweisung hinzu:

05:35:15,762 DEBUG [org.hibernate.SQL] – select author0_.id as id1_0_, author0_.dateOfBirth as dateOfBi2_0_, author0_.firstName as firstNam3_0_, author0_.lastName as lastName4_0_, author0_.version as version5_0_, date_part(‘year’, age(author0_.dateOfBirth)) as formula0_ from Author author0_ where author0_.id=1

Zusammenfassung

Die @Formula-Annotation bietet eine einfache Möglichkeit, das Ergebnis eines SQL-Schnipsel auf ein Entity-Attribut abzubilden. Aber es hat auch einige Nachteile, die man beachten sollten:

  • Hibernate führt das SQL-Schnipsel für jede Author-Entität aus, die sie aus der Datenbank geladen wird. Daher ist es wichtig, diese Annotation nur für Attribute zu verwenden, die in allen Anwendungsfällen benötigt werden.
  • Die @Formula-Annotation verwendet ein natives SQL-Schnipsel. Dies kann dies Datenbankportabilität der Anwendung beeinträchtigen.

Hibernate Tips – das Buch

Mehr als 70 solcher Rezepte zu Themen wie einfache und komplexe Mappingdefinitionen, Logging, Unterstützung von Java 8, Caching sowie die statische und dynamische Erzeugung von Abfragen gibt es in meinem Buch "Hibernate Tips: More than 70 solutions to common Hibernate problems". Es ist als Taschenbuch und E-Book auf Amazon und als PDF auf hibernate-tips.com [1] erhältlich.


URL dieses Artikels:
http://www.heise.de/-4329792

Links in diesem Artikel:
[1] http://hibernate-tips.com

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Neuigkeiten von der Insel

Fünf Dinge, die man als Anfänger über JPA wissen sollte

Von heise online — 11. März 2019 um 07:53

zurück zum Artikel

Gute Kenntnisse über die Java Persistence API (JPA) und ihre Implementierungen sind nach wie vor eine der gefragtesten Fähigkeiten unter Java-Entwicklern. Es ist daher nicht verwunderlich, dass es viele Blogartikel, Bücher und Kurse [1] gibt, die zeigen, wie eine Persistenzschicht mit der JPA-Spezifikation implementiert werden kann.

Aber Neulinge fragen sich wahrscheinlich trotz aller Beliebtheit, warum JPA so oft verwendet wird und was man darüber wissen muss. Daher werfe ich einen Blick auf die fünf wichtigsten Dinge, die man als Entwickler über JPA wissen sollte.

1. Einfache Abbildungen erfordern kaum Annotationen

Beginnen wir mit dem Offensichtlichsten: Die JPA-Spezifikation definiert eine objektrelationale Abbildung zwischen Tabellen in einer relationalen Datenbank und Java-Klassen. Das Tolle daran ist, dass JPA diese Zuordnung sehr einfach macht. Sehr oft muss eine Klasse lediglich mit einer @Entity-Annotation versehen werden. Alle ihre Attribute werden dann automatisch auf gleichnamige Datenbankspalten abgebildet.

Hier ist ein Beispiel für ein solches Basis-Mapping:

@Entity
public class Professor {

@Id
private Long id;

private String firstName;

private String lastName;

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public void setId(Long id) {
this.id = id;
}

public Long getId() {
return id;
}
}

Die Professor-Klasse wird durch JPA auf eine Datenbanktabelle mit dem Namen professor und den Spalten id, firstname und lastname abgebildet. Ich erläutere die Abbildung dieser Klasse im Detail in der auf YouTube verfügbaren Beispiellektion meines Kurses "JPA for Beginners [2]":

Und man kann nicht nur einfache Attribute auf Datenbankspalten abbilden, sondern auch Assoziationen zwischen den Entitäten modellieren. Auf diese Weise können die Fremdschlüsselspalten und Beziehungstabellen des Tabellenmodells als Entitätsattribute mit Getter- und Setter-Methoden dargestellt werden. Diese Attribute können dann wie jedes andere Entitätsattribut verwendet werden. Die verwendete JPA-Implementierung stellt dabei sicher, dass die erforderlichen Datensätze entweder während der Initialisierung der Entität oder bei der erstmaligen Verwendung geladen werden.

Das folgende Beispiel zeigt die Abbildung einer typischen Viele-zu-Eins-Beziehung zwischen der professor- und der course-Tabelle. Das Attribut der Professor-Klasse modelliert die Beziehung, und die JPA-Implementierung sorgt dafür, dass die erforderlichen Lese- und Schreiboperationen durchgeführt werden:

@Entity
public class Course {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "course_generator")
@SequenceGenerator(name = "course_generator", sequenceName = "course_seq")
private Long id;

private String name;

private LocalDate startDate;

private LocalDate endDate;

@ManyToOne
private Professor professor;

...
}

2. JPA erfordert eine Implementierung

JPA ist nur eine Spezifikation, die eine Reihe von Schnittstellen und deren Funktionen definiert. Das bedeutet, dass man die Spezifikation zur Implementierung Ihrer Anwendung verwenden kann, aber das zum Ausführen eine Implementierung hinzugefügt werden muss. Zwei bekannte JPA-Implementierungen sind EclipseLink, die Referenzimplementierung der Spezifikation, und Hibernate, die wahrscheinlich beliebteste JPA-Implementierung.

3. JPA führt Abstraktionen und Indirektionen ein

Ich habe zu Beginn dieses Artikels erklärt, dass JPA Java-Klassen auf Datenbanktabellen abbildet und dies sogar Beziehungen zwischen diesen Klassen beinhaltet. Diese Abbildung führt offensichtlich zu einer Abstraktion. Der Abstraktionsgrad zwischen einem einfachen Attribut und einer Datenbankspalte mag eher gering sein, ist aber bei Beziehungen deutlich höher. Die JPA-Implementierung muss dann nicht nur die Typkonvertierung zwischen dem JDBC-Typ der Datenbankspalte und dem Java-Typ des Entitätsattributs durchführen, sondern auch zusätzliche Abfragen verwalten, um die zugehörigen Datensätze abzurufen.

Aus diesem Grund ist es äußerst wichtig, dass jeder Entwickler das Mapping und seine Auswirkungen genau versteht. Andernfalls wird die JPA-Implementierung diese Beziehungen ineffizient behandeln, und die Anwendung wird unter schwerwiegenden Performanzproblemen leiden. Deshalb beschäftige ich mich in vier Lektionen meines "JPA for Beginners Online Training" [3] mit den Abbildungen verschiedener Beziehungstypen [4] und deren, als Fetching bezeichneten Ladeverhalten.

Neben der Abstraktion durch die Attributszuordnungen löst JPA auch die erforderlichen Einfüge-, Aktualisierungs- und Entfernungsoperationen auf Basis eines komplexen Lebenszyklusmodells aus. Das Gute daran ist, dass für diese Operationen keine SQL-Anweisungen geschrieben werden müssen. Aber gleichzeitig verliert man dadurch die Kontrolle über die SQL-Anweisung und den Zeitpunkt ihrer Ausführung.

Die automatische Erstellung und Ausführung von SQL-Anweisungen macht es sehr einfach, die Geschäftslogik zu implementieren, und verbessert die Entwicklerproduktivität. Es macht es aber auch schwierig vorherzusagen, wann welche SQL-Anweisungen ausgeführt wird. Daher ist ein fundiertes Verständnis des Lebenszyklusmodells und dessen Auswirkungen auf die Ausführung von SQL-Anweisungen erforderlich.

4. Man muss trotzdem relationale Tabellenmodelle verstehen

JPA abstrahiert den Datenbankzugriff und verbirgt ihn hinter einer Reihe von Annotationen und Schnittstellen. Das bedeutet aber nicht, dass man die Datenbank ignorieren könnte. Auch wenn man nicht direkt mit auf einem Tabellenmodell arbeitet, müssen dennoch die Möglichkeiten und Grenzen von relationalen Tabellenmodellen berücksichtigt werden. Tut man dies nicht, führt dies früher oder später zu Performanzproblemen [5].

Des Weiteren sollte man darauf achten, dass die Entitäten so ähnlich wie möglich zu den abgebildeten Datenbanktabellen sind. Dadurch wird sichergestellt, dass die JPA-Implementierung ein schnelles und effizientes objektrelationales Mapping zur Verfügung stellen kann.

5. Man muss immer noch SQL lesen können

Es muss außerdem berücksichtigt werden, dass die Datenbank weiterhin SQL-Anweisungen ausführt. Durch die Verwendung von JPA müssen viele dieser Anweisungen nicht mehr selbst geschrieben werden, aber man sollte trotzdem in der Lage sein, dies zu lesen und zu verstehen. Dies ist notwendig, um die Interaktion der JPA-Implementierung mit der Datenbank zu verstehen und eine effiziente Datenbankanbindung zu realisieren.

Um die ausgeführten SQL-Anweisungen überprüfen zu können, müssen diese von der JPA-Implementierung zuerst protokolliert werden. Die erforderliche Konfiguration ist abhängig von der jeweiligen JPA-Implementierung. Im folgenden Beispiel zeige ich eine Konfiguration für Hibernate [6]:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n

log4j.rootLogger=info, stdout
# basic log level for all messages
log4j.logger.org.hibernate=info

# SQL statements and parameters
log4j.logger.org.hibernate.SQL=debug
log4j.logger.org.hibernate.type.descriptor.sql=trace

Mit dieser Konfiguration schreibt Hibernate alle ausgeführten SQL INSERT-, UPDATE- und DELETE-Anweisungen in die Logdatei. So kann man genau sehen, wann und welche Anweisungen Hibernate ausgeführt hat.

19:13:35,772 DEBUG [org.hibernate.SQL] - 
select
professor0_.id as id1_1_0_,
professor0_.firstName as firstNam2_1_0_,
professor0_.lastName as lastName3_1_0_
from
Professor professor0_
where
professor0_.id=?
19:13:35,773 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [1] as [BIGINT] -[1]
19:13:35,774 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([firstNam2_1_0_] : [VARCHAR]) - [Jane]
19:13:35,774 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([lastName3_1_0_] : [VARCHAR]) - [Doe]
19:13:35,775 DEBUG [org.hibernate.SQL] -
update
Course
set
endDate=?,
name=?,
professor_id=?,
startDate=?
where
id=?
19:13:35,776 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [1] as [DATE] - [2019-05-31]
19:13:35,776 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [2] as [VARCHAR] - [Software Development 1]
19:13:35,776 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [3] as [BIGINT] - [1]
19:13:35,776 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [4] as [DATE] - [2018-08-15]
19:13:35,777 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [5] as [BIGINT] - [1]

Mehr zu JPA in meinem Kurs

Auf den ersten Blick erscheint es oft so, als würde man mit JPA nur ein paar wenige Annotationen benötigen um eine vollständige Persistenzschicht zu implementieren. Während der praktischen Umsetzung stellt sich dann aber schnell heraus, dass die Verwendung der Spezifikation deutlich komplexer ist als erwartet und ein gutes Verständnis der grundlegenden Konzept erfordert.

Mit meinem Onlinekurs "JPA for Beginners [7]" biete ich eine einfache und schnelle Möglichkeit diese Kenntnisse zu erlernen. Mit kurzen Videolektionen und dazu passenden Aufgaben erlernen die Teilnehmer innerhalb kurzer Zeit, eine Persistenzschicht auf Basis der JPA-Spezifikation zu erstellen und dabei häufig auftretende Fehler zu vermeiden.

Zur Einführung der zweiten,. überarbeiteten Version des Kurses gibt es diesen noch bis zum 15 März zum reduzierten Preis auf https://thoughts-on-java.org/jpa-for-beginners/ [8].


URL dieses Artikels:
http://www.heise.de/-4329959

Links in diesem Artikel:
[1] https://thoughts-on-java.org/jpa-for-beginners/
[2] https://thoughts-on-java.org/jpa-for-beginners/
[3] https://thoughts-on-java.org/jpa-for-beginners/
[4] https://www.thoughts-on-java.org/ultimate-guide-association-mappings-jpa-hibernate/
[5] http://www.thoughts-on-java.org/tips-to-boost-your-hibernate-performance/
[6] http://www.thoughts-on-java.org/hibernate-logging-guide
[7] https://thoughts-on-java.org/jpa-for-beginners/
[8] https://thoughts-on-java.org/jpa-for-beginners/

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

c't zockt LIVE ab 17 Uhr: Apex Legends

Von Patrick Bellmer — 21. Februar 2019 um 06:30

zurück zum Artikel

Mit Apex Legend versucht auch EA, an den Erfolg von Fortnite und Co. anzuknüpfen. Ab 17 Uhr trifft sich das c’t-zockt-Team im Livestream zum Überlebenskampf.

Spätestens seit dem Start von Playerunknown’s Battlegrounds (PUBG) [1] und Fortnite vor zwei knapp Jahren ist Battle Royale in aller (Spieler-)Munde. Das Prinzip ist schnell erklärt: Dutzende Spieler messen sich in einem großen, sich aber stetig verkleinernden Kampfgebiet und ringen – je nach Spiel – allein oder im Team um den Sieg. EA ergänzt das mit eigenen Ansätzen, um sich von der Konkurrenz abzusetzen. Und das nicht ohne Erfolg: Bereits nach einer Woche konnte man 25 Millionen Spieler melden [2].

Der erste große Unterschied zwischen Apex Legends, PUBG und Fortnite ist die Begrenzung auf Dreierteams sowie die Wahl eines Charakters. Letzteres rückt das Spiel in die Nähe von Blizzards Overwatch; auch dort spielt die Charakterwahl innerhalb eines Teams eine große Rolle. Mit der traditionellen Unterteilung in Charakterklassen nimmt Apex Legends es nicht ganz so genau. Schließlich kann auch die Heilerin ordentlich Schaden austeilen. Aber auch beim Gameplay versucht EA es mit eigenen Akzenten. Wildes durch die Gegend hüpfen wie in Fortnite bringt hier ebenso wenig Erfolg wie minutenlanges Verharren wie in PUBG.

c't zockt LIVE Apex Legends am Donnerstag, 21. Februar 2019 ab 17 Uhr.

Umstellen müssen sich PUBG- und Fortnite-Spieler, wenn es um die Ausrüstung geht. Denn anders als in den beiden bekannten Battle-Royale-Titeln geht Apex Legends vergleichsweise sparsam mit Waffen und sonstigen Gegenständen um. Welchen Stellenwert Teamplay einnimmt, sieht man an der Möglichkeit, gefallene Team-Mitglieder wiederzubeleben.

Apex Legends angespielt (0 Bilder) [3]

[4]

Entwickelt wurde Apex Legends von den Titanfall-Machern Respawn Entertainment. Das weckte bei Fans der Shooter-Reihe zunächst die Hoffnung, dass Mechs und Walljumps essentieller Gameplay-Bestandteil sein werden. Beides fehlt, dennoch ist Bewegung ein wichtiger Faktor im Gefecht. Gleiches gilt für die Spezialfähigkeiten der Charaktere. So kann die Sanitäterin Lifeline eine Heildrohne starten, ein Carepaket anfordern und Teammitglieder schneller wiederbeleben. Bloodhound hingegen übernimmt die Rolle des Aufklärers, der Gegnerspuren erkennt, per Radar den Standort von Gegnern bestimmen und zeitweise schneller laufen kann.

Free-2-Play mit Mikrotransaktionen

Voraussetzung für das Spielen von Apex Legends ist ein EA-Konto. Auf Windows-PCs wird zusätzlich der Origin-Launcher benötigt, Xbox-One- und Playstation-4-Spieler benötigen das jeweilige Online-Abo. Genauso wie Fortnite ist der Titel selbst kostenlos, für die Finanzierung wird auf Mikrotransaktionen und Loot-Boxen zurückgegriffen. Angeboten werden allerdings kosmetische Items, die keine spielerischen Auswirkungen haben. Die meisten davon lassen sich aber auch durch erspielbare In-Game-Währung erwerben. Wie sich das c’t-zockt-Team in Apex Legends schlägt, zeigt sich heute ab 17 Uhr im Livestream auf YouTube [5] und Twitch [6]. ()


URL dieses Artikels:
http://www.heise.de/-4313309

Links in diesem Artikel:
[1] https://www.heise.de/ct/artikel/c-t-zockt-Spiele-Review-Playerunknown-s-Battlegrounds-3796401.html
[2] https://www.heise.de/meldung/25-Millionen-Spieler-probieren-Apex-Legends-aus-4305454.html
[3] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4309239.html?back=4313309
[4] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4309239.html?back=4313309
[5] https://www.youtube.com/watch?v=n9hr4mdWlRM
[6] https://www.twitch.tv/ctzockt
[7] mailto:pbe@heise.de

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

39 Days To Mars: Charmantes Steampunk-Adventure

Von Liane M. Dubowy — 31. Januar 2019 um 06:30

zurück zum Artikel

Im skurrilen 2D-Indie-Adventure "39 Days To Mars" starten Sie mit zwei verschrobenen Forschern des 19. Jahrhunderts und einem dampfbetriebenen Luftschiff auf eine Forschungsreise zum Mars.

Wie auf Pergament gezeichnet wirkt dieses hübsche 2D-Indie-Adventure mit Steampunk-Flair. Tee und Scones sind in "39 Days To Mars" von genauso großer Bedeutung wie die Lösung vieler Rätsel.

Sir Albert Wickes und der ehrenwerte Mr. Clarence Baxter beschließen im Jahr 1876, mit der klapprigen HMS Fearful zum Mars aufzubrechen. Die Forscher sind jedoch alles andere als trainierte Astronauten, daher muss man die beiden schrulligen Engländer mit perfekt zubereitetem Tee und passend belegten Scones bei Laune halten. Das dampfbetriebene Fluggefährt droht derweil ständig auseinanderzufallen.

Am besten spielt sich das skurrile 2D-Koop-Adventure zu zweit, zum Beispiel mit Controller an einem großen Bildschirm. Aber auch mit Tastatur und Maus lässt es sich bedienen. Ist mal kein Spielpartner zur Hand, kann eine vom Spiel per KI gesteuerte Katze einspringen. Weil zum Lösen der meisten Rätsel ein zweites Paar Hände gebraucht wird, muss man dann allerdings beide gleichzeitig steuern – einmal mit der Tastatur und einmal mit der Maus. Das kann ganz schön mühsam sein.

39 Days To Mars (0 Bilder) [1]

[2]

Erfolgreicher Kickstarter

"39 Days To Mars" ist im Jahr 2014 erfolgreich mit einer Kickstarter-Kampagne [3] finanziert worden. Mittlerweile wurde das Spiel von Philip Buchanan in verschiedene Sprachen übersetzt, darunter auch Deutsch. Allerdings gilt das nur für die Sprechblasen, die Stimmen bleiben auf Englisch. Das ist auch gut so, denn ohne den britischen Akzent würde dem Spiel einiges verloren gehen.

Fazit

39 Days To Mars ist kein hektisches Spiel. Es ist mit beruhigender Klaviermusik unterlegt, die beiden Charaktere sind witzig und die Rätsel abwechslungsreich. Allerdings ist die Bedienung ein wenig umständlich und die Zubereitung von Scones und Tee nach Geschmack von Albert und Clarence erfordert viel Geduld.

"39 Days To Mars" ist für Linux, macOS und Windows erhältlich auf Steam [4] (12,50 Euro) und Itch.io [5] (15 US-Dollar, ca. 13,20 Euro, Steam-Key und Download). Für unser Review haben wir die Linux-Version angespielt. Versionen für Xbox One und Nintendo Switch sind in Arbeit. ()


URL dieses Artikels:
http://www.heise.de/-4286929

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4287096.html?back=4286929
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4287096.html?back=4286929
[3] https://www.kickstarter.com/projects/philipbuchanan/39-days-to-mars
[4] https://store.steampowered.com/app/504920/
[5] https://its-anecdotal.itch.io/39-days-to-mars
[6] mailto:lmd@heise.de

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Neuigkeiten von der Insel

14 YouTube-Kanäle die Du 2019 nicht verpassen solltest

Von heise online — 29. Januar 2019 um 07:30

zurück zum Artikel

Anfang 2018 stieß der Vorgänger dieses Beitrags [1] auf reges Interesse. Es scheint, dass ich nicht der Einzige bin, der sich gerne gute Vorträge über Java auf YouTube anschaut. Es ist eine der einfachsten und komfortabelsten Möglichkeiten, von einigen der besten unserer Branche zu lernen.

Aus diesem Grund habe ich mich entschieden, eine aktualisierte Version dieses Artikels mit meinen empfohlenen YouTube-Kanälen für 2019 zu veröffentlichen. Hier ist eine unsortierte Liste meiner Lieblingskanäle.

Empfohlene Kanäle im Jahr 2019

1. Java [2]

Der Java-Kanal von Oracle war eine meiner letztjährigen Empfehlungen, und er ist immer noch ein großartiger Kanal für alle, die sich für das Java-Ökosystem interessieren. Hier findest Du Vorträge von der CodeOne sowie vom JVM Language Summit und Interviews mit bekannten Größen aus der Java-Community.

2. Thoughts on Java [3]

Da Du bereits meine empfohlene Liste von YouTube-Kanälen liest, kann ich mir natürlich nicht die Chance entgehen lassen meinen eigenen Kanal zu bewerben. Jede Woche veröffentliche ich zwei neue Videos über JPA, Hibernate und verwandte Persistenztechnologien. Wenn Du Deine Daten in einer relationalen Datenbank speicherst, solltest Du diese Videos nicht verpassen.

3. Docker [4]

Wenn Du Deine Anwendungen in einer zeitgemäßen Umgebung bereitstellst, sind Container inzwischen nicht mehr weg zu denken. Du solltest also mindestens einem Kanal folgen, der sich auf diese Kerntechnologie konzentriert. Für mich ist das der Docker-Kanal mit aufgezeichneten Webinaren und Vorträgen von der DockerCon.

4. Devoxx [5]

Der Devoxx-Kanal ist ideal für alle Konferenzliebhaber. Hier gibt es regelmäßig neue Vorträge von den Devoxx- und Voxxed Days-Konferenzen. Seien wir ehrlich, das Ansehen von aufgezeichneten Konferenzvorträgen von zu Hause oder Deinem Büro ist nicht so gut wie die Teilnahme an der Konferenz. Aber es ist viel bequemer und gibt Dir freien Zugang zu einigen der interessantesten Vorträge.

5. vJUG [6]

Java User Groups bieten eine ideale Möglichkeit, um sich mit gleichgesinnten Entwicklern zu treffen und mehr über die Sprache, populäre Frameworks und Softwareentwicklung im Allgemeinen zu erfahren. Die virtuelle Java User Group (vJUG) ist wahrscheinlich der komfortabelste Weg, um regelmäßig an User Group Meetings teilzunehmen. Das Team überträgt Webinare mit einigen der besten Java-Experten.

6. Nicolai Parlog(CodeFx) [7]

Wenn Du Dich für das Java Module System oder die neuesten Features der Java-Sprache interessierst, kennst Du wahrscheinlich Nicolai und seinen Blog codefx.org [8]. Seit neustem hat er auch einen YouTube-Kanal. In seinen Videos gelingt es ihm komplexe Themen verständlich und unterhaltsam zu erklären.

7. SouJava [9]

Die brasilianische Organisation SouJava bietet auf ihrem Kanal eine Mischung aus Interviews und Webinaren über Java und Jakarta EE.

8. NightHacking [10]

Du hast vielleicht nicht immer die Zeit, Dir ein einstündiges Webinar oder einen Konferenzvortrag anzusehen. In diesen Fällen könnte ein kurzes Interview oder Panel besser passen. Diese findest du auf dem NightHacking-Kanal.

9. SpringDeveloper [11]

Wenn Du mit Spring arbeitest, kennst Du wahrscheinlich bereits den Spring-Developer-Kanal. Das Team von Pivotal veröffentlicht dort viele aufgezeichnete Konferenzvorträge, Webinare und Tutorials über Spring.

10. JetBrainsTV [12]

Du kennst wahrscheinlich JetBrains, das Unternehmen, das für die IntelliJ IDE und die Programmiersprache Kotlin verantwortlich ist. Sie haben auch einen YouTube-Kanal, auf dem sie Vorträge von der KotlinConf, Webinare zu verschiedenen Themen der Softwareentwicklung und Tutorials zu ihren Tools anbieten.

11. Amazon Web Services [13]

Wenn Du Amazon Web Services nutzt oder Dich nur für Cloud-Technologien im Allgemeinen interessierst, solltest Du einen Blick auf den Amazon-Web-Services-Kanal werfen. Ich ignoriere die meisten ihrer Werbe- und Support-Videos, aber ich habe mir bereits einige interessante Vorträge der AWS:reinvent und des AWS Summit gesehen.

12. InfoQ [14]

Der InfoQ-Kanal bietet viele interessante Vorträge der QCon-Konferenzen zu verschiedenen Themen der Architektur und Softwareentwicklung.

13. SebastianDaschner [15]

Sebastian hat in 2018 nur wenige Videos veröffentlicht und ich habe mich gefragt, ob ich seinen Kanal noch in diese Liste aufnehmen sollte. Aber am Ende überzeugten mich die Qualität seiner Inhalte und sein Fokus auf die moderne MicroProfile- und Jakarta EE-Entwicklung. Wenn Du Jakarta EE oder Eclipse MicroProfile verwendest, solltest Du seine Videos nicht verpassen.

14. GOTO Conferences [16]

GOTO Conferences ist eine weitere beliebte Konferenzreihe, die ihre Vorträge aufzeichnet und auf YouTube bereitstellt.

Welche Kanäle schaust Du?

Das waren meine Empfehlungen für 2019. Welche Kanäle hast Du in den letzten Monaten gesehen? Welche kannst Du empfehlen?


URL dieses Artikels:
http://www.heise.de/-4288840

Links in diesem Artikel:
[1] https://www.heise.de/developer/artikel/12-YouTube-Kanaele-die-du-2018-nicht-verpassen-solltest-3937979.html
[2] https://www.youtube.com/user/java
[3] https://www.youtube.com/c/thoughtsonjava
[4] https://www.youtube.com/user/dockerrun
[5] https://www.youtube.com/channel/UCCBVCTuk6uJrN3iFV_3vurg
[6] https://www.youtube.com/user/virtualJUG
[7] https://www.youtube.com/channel/UCngKKOnBxYtLAV8pgUBNDng
[8] http://blog.codefx.org/
[9] https://www.youtube.com/channel/UCH0qj1HFZ9jy0w87YfMSA7w
[10] https://www.youtube.com/channel/UCT0bL2CQIk1eANeXk57mxaA
[11] https://www.youtube.com/user/SpringSourceDev
[12] https://www.youtube.com/user/JetBrainsTV
[13] https://www.youtube.com/user/AmazonWebServices
[14] https://www.youtube.com/user/MarakanaTechTV
[15] https://www.youtube.com/channel/UCG21GE2Go3vkj7mrs675ysA
[16] https://www.youtube.com/user/GotoConferences

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ FreshRSS.org

FreshRSS 1.13.1

Von Alkarex — 26. Januar 2019 um 16:05

Changelog:

  • Features
    • Include articles with custom labels during export #2196
    • Export/import articles read/unread state #2226
    • Import FeedBin, and more robust general import #2228
  • Bug fixing
    • Fix missing HTTP X-Forwarded-Prefix in cookie path behind a reverse-proxy #2201
  • Deployment
    • Docker improvements #2202
      • Performance: Hard-include Apache .htaccess to avoid having to scan for changes in those files
      • Performance: Disable unused Apache security check of symlinks
      • Performance: Disable unused Apache modules
      • Add option to mount custom .htaccess for HTTP authentication
      • Docker logs gets PHP syslog messages (e.g. from cron job and when fetching external content)
    • New environment variable COPY_SYSLOG_TO_STDERR or in constants.local.php to copy PHP syslog messages to STDERR #2213
    • New TZ timezone environment variable #2153
    • Run Docker cron job with Apache user instead of root #2208
    • Accept HTTP header X-WebAuth-User for delegated HTTP Authentication #2204
  • Extensions
    • Trigger a freshrss:openArticle JavaScript event #2222
  • API
    • Automatic test of API configuration #2207
    • Performance + compatibility: Use Apache SetEnvIf module if available and fall-back to RewriteRule #2202
  • Security
    • Fixes when HTTP user does not exist in FreshRSS #2204
  • I18n
  • Accessibility
    • Remove alt in logo #2209
✇ c't-Blog ff.org

c't zockt Spiele-Review: kNOW! – Das immer aktuelle Quiz

Von Julius Beineke — 24. Januar 2019 um 06:30

zurück zum Artikel

Beim Brettspiel kNOW! von Ravensburger geht's um aktuelles Wissen. Der Google Assistant macht mit und stellt Fragen und Aufgaben zu Allgemeinwissen und Kreativität – und checkt, ob Antworten hier und jetzt korrekt sind.

Ein Mix aus Trivial Pursuit, Tabu & Co., immer auf aktuellem Stand. Das verspricht das Wissensspiel kNOW! von Ravensburger. Das Brettspiel für drei bis sechs Spielende bringt in den vier Kategorien Wissen, Intuition, Kreativität und Fun insgesamt zwölf verschiedene Quizformen und Minispiele mit.

Grundlagen: Quizzen im Kreis

Im Vergleich zu anderen Quizklassikern sind die rund 1500 Fragen nicht viel. Der Clou: Der Google Assistant ist als Spielhelfer und Quizmaster im Smartphone oder Lautsprecher stets mit dabei. Viele Aufgaben sind so konzipiert, dass die richtige Lösung von Spielzeit und Ort abhängt und sich so mit der Zeit verändern kann. Google löst die Rätsel dann auf.

Viele der Quizaufgaben lassen sich nur mit aktivem Google Assistant spielen, andere auch offline, wenn man möchte. Ein On-/Offline-Symbol markiert die Spielkarten entsprechend. Offline-Fragen sind üblicherweise zeitlos im Vergleich zu den kontextabhängigen. Die korrekten Antworten stehen in diesem Fall direkt mit auf der Karte.

Nacheinander übernehmen Spielende die Quizmaster-Rolle. Er oder sie zieht eine Karte passend zum Feld, auf dem die eigene Spielfigur steht, stellt die Frage oder Aufgabe und interagiert mit dem Google Assistant. Alle anderen versuchen, die Frage am schnellsten oder kreativsten zu beantworten oder bei Minispielen zu punkten und so die eigene Figur mehrere Felder vorwärts zu bewegen – wer das Spielbrett zuerst umrundet hat, gewinnt.

Spiele-Review: kNOW! – Das immer aktuelle Quiz

Abwechslungsreiche Spielkategorien

Das einzige Spiel der Kategorie Wissen ist "Schnellerwisser" – das klassische Quiz: Wer die Antwort weiß, haut schnell auf den beiliegenden Buzzer und antwortet hoffentlich richtig. Hier sind die Fragen oft abhängig von Zeit und Kontext – etwa "In wie vielen Filmen hat Jennifer Lawrence mitgespielt?".

Auf Intuition-Karten sind "Let's Schätz" und "Toptreffer" verortet. Schätzen muss man beispielsweise, wie lange man mit dem Auto vom Spielort nach Ravensburg braucht. Bei "Toptreffer" gibt der Google Assistant ein Wort vor, das die Spielenden mit einem anderen zu einem Begriff ergänzen und im Geheimen notieren müssen. Aus "Baum" wird also etwa "Baumhaus" oder "Baumarkt". Reihum fragt man Google dann nach den Suchmaschinentreffern für den Begriff – wer die meisten Ergebnisse hat, punktet.

Bei "Gute Frage" und "Dreierlei" der Kategorie Kreativität muss man wiederum den Google Assistant dazu bringen, bestimmte Worte auszuspucken. "Gute Frage" ähnelt Tabu – man muss Google eine Frage stellen, die den auf der Karte gesuchten Begriff als Antwort hat, darf diesen selbst jedoch nicht nennen. Bei Dreierlei sind beispielsweise bekannte Songs der Beatles gesucht. Hat man möglichst viele notiert, fragt man Google nach den drei Toptreffern und rückt pro richtiger Antwort ein Feld vor.

Auf Fun-Karten finden sich kurzweilige Minispiele. Bei "Summsalabim" gilt es, gesummte Lieder zu erkennen. Bei "Stolperfalle" muss man dem Assistant Zungenbrecher fehlerfrei nachsprechen, bei "Phrasendrescher" Redewendungen vervollständigen. Bei "Quiz Ungewiss" tippt man auf eine Frage Antwort A, B oder C, bei "Ton für Ton" spielt der Google Assistant zwei Geräusche vor, aus denen man einen gesuchten Begriff erraten muss. Quaken und Streichinstrumente ergeben beispielsweise "Froschkonzert". "Sekunde noch" erfordert Timing und Schnelligkeit, "Nice Dice" eher Würfelglück.

Wie sich Redakteure im Test des Quiz schlagen, zeigt das Video.

Google als Quizmaster

Bei beispielsweise "Quiz Ungewiss" oder "Ton für Ton" spricht man Google als "Professor Know" an – Anweisungen dazu stehen auf den jeweiligen Karten. Besonders bei "Toptreffer" fällt auf, dass der Fundus an Begriffen und Aufgaben, den der Professor zur Verfügung hat, noch recht beschränkt ist.

Ansonsten wird schnell deutlich, dass man besonders bei "Gute Frage" und "Schnellerwisser" etwas Finesse im Umgang mit Sprachassistenten braucht, um dem Google Assistant die gesuchten Begriffe und Antworten aus der Nase zu kitzeln. Unbefriedigend, wenn Google manchmal nur unkommentiert Wikipedia-Seiten ausspuckt.

Ravenburger kNOW! (5 Bilder) [1]

[2]
Um kNOW! zu spielen, braucht man Stift und Zettel, den Google Assistant und gutes Allgemeinwissen. Fragen und andere Aufgaben kommen auf Karten in vier Kategorien daher: Grün für Wissen, Blau für Intuition, Gelb für Kreativität und Rot für Fun. Dann wird um die Wette gequizzt.

Der Google Assistant ist so fehlbar wie Google selbst. So beharrte er im Test darauf, dass der originale "Krieg der Sterne"-Film im Februar 1978 erschienen sei. Dass dies das Release-Datum für Deutschland, nicht die Ersterscheinung für das Ursprungsland USA war, wollte er auch bei gezielteren Fragen – nämlich nach dem Release in den USA – nicht einsehen. Grund dafür dürfte der Standort des verknüpften Gerätes und Google-Kontos sein.

Der Google Home Mini liegt der limitierten Edition von kNOW! bei und ist in diesem Bundle ziemlich preiswert. Es geht allerdings auch einfach mit einem Google-Assistant-fähigen Smartphone. Eine zusätzliche App braucht es dazu nicht – "Professor Know" weiß Bescheid und erklärt auch die Regeln der einzelnen Spiele.

Fazit: Google muss noch lernen

kNOW! zeigt sich als ein kurzweiliges Vergnügen für Familien- oder Partyabende, am besten in größerer Runde. Der Mix aus spaßigen Minispielen und oft knackig schweren Fragen, die sich nur durch tagesaktuelles Allgemeinwissen beantworten lassen, sorgt für Spielspaß.

Wenn Google sich immer mal wieder verschluckt, hemmt das, wenn auch nicht zu schlimm den Spielfluss. Wie gut kNOW! zukünftig noch wird und ob es dem Immer-Aktuell-Anspruch gerecht wird, hängt maßgeblich von den Fähigkeiten des Google Assistant ab. ()

Wie sich Redakteure im Test des Quiz schlagen, zeigt das Video.

URL dieses Artikels:
http://www.heise.de/-4282413

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4278396.html?back=4282413
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4278396.html?back=4282413
[3] mailto:jube@heise.de

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

c't zockt LIVE: kNOW! – Quizzen mit Google

Von Julius Beineke — 17. Januar 2019 um 06:30

zurück zum Artikel

Bei kNOW! geht's um aktuelles Wissen – Google checkt, ob Antworten hier und jetzt korrekt sind. Ab 17 Uhr trifft sich das c't-zockt-Team im Livestream zum Tablequiz.

Ok, Google! Heute ab 17 Uhr messen sich die c't-Zockenden in Allgemeinwissen, schätzen um die Wette und stellen sich weiteren Quizaufgaben bei "kNOW! – Das immer aktuelle Quiz" von Ravenburger.

Stets mit dabei: der Google Assistant als Spielhelfer und Quizmaster im Smartphone oder Google Home Mini. Der kleine, smarte Lautsprecher stellt Fragen und Aufgaben und checkt, ob die von den Spielenden gegebenen Antworten richtig sind. Das Spiel verspricht, so immer auf aktuellem Stand zu sein und mit seinen über 1500 Fragen für jede Menge Abwechslung zu sorgen.

c't zockt live am 17.01.19 ab 17 Uhr: kNOW! - das immer aktuelle Quiz

Bei kNOW! (ab 21,45 €) [1] sind insgesamt 12 verschiedene Quizaufgaben in die vier Kategorien Wissen, Intuition, Kreativität und Fun aufgeteilt. Einige davon lassen sich nur mit dem Google Assistant, manche auch komplett offline spielen, wenn man möchte. Die verschiedenfarbigen Felder auf dem Spielbrett repräsentieren die entsprechenden Kategorien, zu denen dann die passenden Spielkarten gezogen und ausgeführt werden.

c't zockt LIVE: kNOW! – Quizzen mit Google

"Schnellerwisser" ist beispielsweise das klassische Wissensquiz: Wer die Antwort weiß, haut auf den beiligenden Buzzer und antwortet hoffentlich richtig. Auch hier sind die Fragen jedoch oft abhängig von Zeit und Kontext – etwa "In wie vielen Filmen hat Jennifer Lawrence mitgespielt?"

Spielende müssen bei "Let's Schätz" hingegen schätzen, wie lange man mit dem Auto vom Spielort nach Ravensburg braucht oder wie warm es gerade in Havana ist.

Bei "Gute Frage" muss man wiederum den Google Assistant dazu bringen, ein vorgegebenes Wort auszuspucken – ohne ihm den genau gesuchten Begriff zu nennen.

Bei "Summsalabim" gilt es schlicht, gesummte Lieder zu erkennen – das geht auch ohne Googles Hilfe, bei "Phrasendrescher" muss man dem Assistant Zungenbrecher fehlerfrei nachsprechen.

Viele weitere mehr oder weniger komplexe Aufgaben sorgen bei kNOW! für Abwechslung. Da einige Fragestellungen der Assistant selbst entscheidet, soll der Umfang an möglichen Aufgaben stetig erweitert werden.

Ravenburger kNOW! (0 Bilder) [2]

[3]

kNOW! spielt man mit bis zu sechs Rätselnden – jede Runde leitet einer von ihnen das Spiel, unterstützt durch den Google Assistant. Alle anderen versuchen durch das schnelle und richtige Bestehen der gestellten Aufgaben das Spielbrett zuerst mit der eigenen Spielfigur zu umrunden.

Mit preiswertem Google Home Mini

Der Google Home Mini liegt der limitierten Edition des Quizspiels bei, ist zum Spielen aber nicht zwingend nötig, dafür in diesem Bundle doch ziemlich preiswert. kNOW! lässt sich allerdings auch einfach mit einem Google-Assistant-fähigen Smartphone spielen. Eine zusätzliche App braucht es dazu nicht – der Assistant weiß Bescheid und erklärt auf Wunsch auch die Regeln der einzelnen Spiele. Zusätzlich kann man die auch einfach im Regelbuch selbst nachlesen [4].

Wer der hellste Kopf des c't-zockt-Teams ist, zeigt sich heute ab 17 Uhr im Livestream auf YouTube [5] und Twitch [6]. ()


URL dieses Artikels:
http://www.heise.de/-4276304

Links in diesem Artikel:
[1] https://www.heise.de/preisvergleich/know-a1935317.html?hocid=ct
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4278396.html?back=4276304
[3] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4278396.html?back=4276304
[4] https://www.ravensburger.de/spielanleitungen/ecm/Spielanleitungen/27252%20Anl-1%201844679%20(2).pdf?ossl=pds_text_Spielanleitung
[5] https://www.youtube.com/watch?v=yNYrlKtRaQ4
[6] https://www.twitch.tv/ctzockt
[7] mailto:jube@heise.de

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Neuigkeiten von der Insel

Hibernate-Tipps: Skalare Werte mittels Criteria-Abfrage selektieren

Von heise online — 10. Januar 2019 um 14:41

zurück zum Artikel

Die Hibernate-Tipps-Serie bietet schnelle und einfache Lösungen zu verbreiteten Hibernate-Fragen. Dieses Mal geht es um die Verwendung einer skalaren Projektion in Criteria-Abfragen.

Frage:

Mit JPQL-Abfragen (Java Persistence Query Language) können Entwickler mehrere skalare Werte selektieren. Kann ich mit einer Criteria-Abfrage die gleiche Projektion verwenden oder muss ich immer Entitäten oder DTOs (Data Transfer Object) selektieren?

Lösung:

Auch wenn die Criteria API häufig etwas unübersichtlich erscheint, unterstützt sie dieselben Features wie JPQL [1]. Projektionen mehrerer skalarer Werte sind daher genauso möglich wie Projektionen, die Entitäten, DTOs und skalare Werte miteinander kombinieren.

Um mehrere skalare Werte zu selektieren, lässt sich die multiselect(Selection<?>... selections)-Methode verwenden. Der nachfolgende Quellcode zeigt ein Beispiel für eine solche Abfrage:

// Abfrage erzeugen
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> q = cb.createTupleQuery();
Root<Author> author = q.from(Author.class);

// Mehrere skalare Werte selektieren
q.multiselect(author.get(Author_.firstName).alias("firstName"), author.get(Author_.lastName).alias("lastName"));

// Abfrage ausführen
List<Tuple> authorNames = em.createQuery(q).getResultList();

for (Tuple authorName : authorNames) {
log.info(authorName.get("firstName") + " " + authorName.get("lastName"));
}

Die multiselect-Methode erwartet eine List oder ein Array von Selection-Interfaces, die die zu selektierenden Entitätseigenschaften benennen. In diesem Beispiel verwende ich das JPA-Metamodell [2], um die Eigenschaften typsicher zu referenzieren.

Wenn das Beispiel ausgeführt wird, erzeugt Hibernate eine SQL-Abfrage, die nur die von der multiselect-Methode referenzierten Datenbankspalten selektiert:

13:57:18,403 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - ... selectTuples ...
13:57:18,818 INFO[org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] - HHH000397: Using ASTQueryTranslatorFactory
13:57:19,158 DEBUG [org.hibernate.SQL] -
select
author0_.firstName as col_0_0_,
author0_.lastName as col_1_0_
from
Author author0_
13:57:19,188 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Thorben Janssen
13:57:19,188 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Joshua Bloch
13:57:19,189 INFO[org.thoughts.on.java.model.TestCriteriaTuples] - Gavin King

Das Abfrageergebnis wird anschließend als List von Tuple-Interfaces zurückgegeben. Das Tuple-Interface bietet einen komfortablen Zugriff auf die selektierten Eigenschaften. Dabei können die selektierten Spalten per Index oder, wie in diesem Beispiel, auch über den als Alias vergebenen Namen referenziert werden.

Hibernate Tips – das Buch

Mehr als 70 solcher Rezepte zu Themen wie einfache und komplexe Mappingdefinitionen, Logging, Unterstützung von Java 8, Caching sowie die statische und dynamische Erzeugung von Abfragen gibt es in meinem Buch "Hibernate Tips: More than 70 solutions to common Hibernate problems". Es ist als Taschenbuch und E-Book auf Amazon [3] und als PDF auf hibernate-tips.com [4] erhältlich.


URL dieses Artikels:
http://www.heise.de/-4270785

Links in diesem Artikel:
[1] http://www.thoughts-on-java.org/jpql/
[2] https://thoughts-on-java.org/static-metamodel/
[3] https://www.amazon.de/Hibernate-Tips-solutions-common-problems/dp/1544869177
[4] http://www.hibernate-tips.com/

Copyright © 2019 Heise Medien

Let's block ads! (Why?)

✇ FreshRSS.org

FreshRSS 1.13.0

Von Alkarex — 22. Dezember 2018 um 13:23

Changelog:

  • API
  • Features
    • Ability to import XML files exported from Tiny-Tiny-RSS #2079
    • Ability to show all the feeds that have a warning #2146
    • Share with Pinboard #1972
  • UI
    • Reworked the scrolling of the categories/feeds sidebar #2117
      • Native styled scrollbars in Firefox 64+, Chrome.
    • Show collapsed sidebar in the reader mode #2169
    • New shortcuts to move to previous/next article without opening it #1767
    • Fix regression from 1.12.0 preventing from closing an article #2085
    • Improvements of the Swage theme #2088, #2094
    • Many style improvements #2108, #2115, #1620, #2089, #2122, #2161
  • Deployment
    • Support for HTTP_X_FORWARDED_PREFIX to ease the use of reverse proxies #2191
      • Updated Docker + Træfik + Let’s Encrypt deployment guide #2189
    • Docker image updated to Alpine 3.8.2 with PHP 7.2.13 and Apache 2.4.35
    • Fix .dockerignore #2195
  • I18n
  • SimplePie
    • Update to SimplePie 1.5.2 #2136
      • Fix some sanitizing in authors / tags
    • Strip embedded SVG images for now #2135
  • Security
  • Bug fixing
    • Fix warning in tempnam() with PHP 7.1+ affecting ZIP export #2134
    • Fix print for views with unfolded articles #2130
    • Fix notifications in reader view #1407
    • Fix sharing with Movim #1781
  • Misc.
✇ c't-Blog ff.org

Harte Zeiten: c't zockt LIVE ab 17 Uhr die neue Version von 7 Days To Die

Von Liane M. Dubowy — 13. Dezember 2018 um 06:30

zurück zum Artikel

Sie werden Dich finden! Die Zombies im Survival-Crafting-Spiel "7 Days to Die" sind nun schlauer, springen, klettern und graben. Auch sonst hat das Entwicklerteam "The Fun Pimps" sein Spiel in der kommenden A17-Version ordentlich umgekrempelt und viel Neues hineingepackt: schickere Grafik, weit über 100 neue Orte zum Erforschen mit fiesen Fallen und versteckten Schätzen. Heute ab 17 Uhr spielen wir die neue Version im Live-Stream an.

Die Alpha-17-Version des Zombie-Spiels stellt Spielerinnen und Spieler vor ganz neue Herausforderungen: Das von einer Zombie-Apokalypse im Südwesten der USA handelnde Survival-Game mit dem besten Bau- und Crafting-System seit Minecraft ist deutlich schwerer geworden. Dank einer neuen Zombie-KI finden die Untoten nun viel leichter ihren Weg – und wenn sie sich dafür durch den Boden buddeln oder ein ganzes Haus wegkloppen müssen. Und wenn dann erst nach sieben Spieltagen die große Zombie-Horde kommt...

Hier gehts zum c't-zockt-Live-Stream, am Donnerstag 13.12.18 ab 17 Uhr.

Mit den im Spiel erworbenen Erfahrungspunkten können nun vielerlei Fähigkeiten erlernt werden, das macht Multiplayer-Spiele interessanter und sorgt auch in Singleplayer viel länger für Spannung als zuvor. Bis alles selbst gebaut werden kann, geht ziemlich viel Zeit ins Land, daher lohnt es sich bei den Händlern vorbeizuschauen. Dort kann man nun auch Aufträge annehmen und sich so weitere Erfahrungspunkte verdienen. Die Standard-Map Navezgane hat an Größe zugelegt und auch hier wurden sämtliche Gebäude runderneuert und neue hinzugefügt. Weiter verbessert wurde der Generator für Zufalls-Maps.

Fahrrad in 7 Days To Die
Mit dem Fahrrad kommt man schon früh im Spiel schneller voran.

War bisher das "Mini-Bike" – eine Art Mofa – das einzige Fortbewegungsmittel jenseits der eigenen Beine, kann man nun mit dem Fahrrad, einem Motorrad oder gar einem Jeep durch die Landschaft fahren. Sogar einen Mini-Hubschrauber gibt es im Spiel.

Motorrad in 7 Days To Die
Besser ist das dicke Motorrad, mit dem man auch Zombies überfahren kann.

Seit seiner Erstveröffentlichung als Early-Access-Titel hat das Multiplayer-Spiel "7 Days To Die" jede Menge Erweiterungen und Verbesserungen erlebt. Damit hält es die wachsende Fan-Gemeinde trotz der lang andauernden Entwicklungszeit bei der Stange. Zu den Besonderheiten gegenüber teureren Produktionen gehören die vielen unterstützten Plattformen – das Spiel gibt es für rund 23 Euro auf Steam für Linux, macOS und Windows [1] – und vor allem der lang anhaltende Spielspaß.

Noch steckt die Alpha-17-Version in einer öffentlichen Testphase; erst in einigen Woche soll sie im Stable-Channel freigegeben werden. Bis dahin dreht das Entwicklerstudio The Fun Pimps immer wieder an Schräubchen im Game Balancing und bessert Fehler aus.

Heute, Donnerstag 13. Dezember, ab 17 Uhr spielt das c't-zockt-Team die neue A17-Version von "7 Days To Die" an. Den Live-Stream gibt's bei YouTube [2] und Twitch [3].

Hier schon mal ein paar Spielszenen aus der neuen A17 von 7 Days To Die als Vorgeschmack.

URL dieses Artikels:
http://www.heise.de/-4242808

Links in diesem Artikel:
[1] https://store.steampowered.com/app/251570/7_Days_to_Die/
[2] https://www.youtube.com/watch?v=oCFfBY3DEc8
[3] https://www.twitch.tv/ctzockt

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

c't-Adventskalender: Hier bespricht sich die c't-Redaktion

13. Dezember 2018 um 06:30

zurück zum Artikel

Neben großen Konferenzräumen gibt es in der c't-Redaktion viele Ecken, in denen sich die Redakteurinnen und Redakteure zu Gesprächen zusammenfinden können.

Große runde Konferenztische, Beamer und eine Tür, die man hinter sich zu machen kann: Zwar gibt es solche Räume auch in der c't-Redaktion, doch oft trifft man sich woanders, in kleiner Runde oder zum kurzen Standup-Meeting. Deshalb wurden im Verlagshaus etliche gemütliche Ecken für solche Treffen geschaffen.

Hier bespricht sich die c't-Redaktion (0 Bilder) [1]

[2]

URL dieses Artikels:
http://www.heise.de/-4238602

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4238299.html?back=4238602
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4238299.html?back=4238602
[3] https://www.heise.de/ct/artikel/c-t-Adventskalender-2018-Alle-Tuerchen-im-Ueberblick-4235597.html
[4] https://www.heise.de/download/blog/Der-heise-Adventskalender-3885333

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

We Need To Go Deeper: c't-zockt-Live-Expedition in die Tiefsee ab 17 Uhr

Von Liane M. Dubowy — 15. November 2018 um 06:30

zurück zum Artikel

Early Access wie es sein soll: Ständig warten die Entwickler von We Need To Go Deeper mit neuen Inhalten auf. Heute ab 17 Uhr tauchen wir live in das Koop-Unterwasserabenteuer ein, bekämpfen Riesenhaie, untote Piraten und Kraken und tauchen immer tiefer!

Die Ansicht kann man nach Bedarf wechseln zwischen dem U-Boot-Inneren ..
Die Ansicht kann man nach Bedarf wechseln zwischen dem U-Boot-Inneren ..

Das Unterwasserabenteuer für zwei bis vier Spieler hält alle auf Trab: Jemand muss navigieren, die Torpedos nachladen, feuern und irgendwer auch die Lecks flicken, damit das U-Boot nicht ruckzuck vollläuft. Auch gegen Eindringlinge muss man etwas unternehmen. Die witzige 2D-Grafik und die dramatische Musik passen gut zum Szenario. Dabei kann man nach Bedarf wechseln zwischen der Innenansicht des Schiffes und dem Geschehen in der Meerestiefe rundum.

Die Ansicht kann man nach Bedarf wechseln zwischen dem Geschehen rundum im Meer oder dem U-Boot-Inneren.
.. und dem Geschehen rundum im Meer.

Immer weiter in die Tiefe geht es dabei in die Unterwasserwelt mit sechs verschiedenen Biomen. Jedes davon birgt dabei ganz eigene Gefahren und Gegner. Langweilig wird es dabei sicher nicht: Die von Jules Vernes inspirierte Unterwasserwelt wird prozedural generiert und ist damit immer wieder neu. Zwischendurch legt man Stopps in Höhlen ein, in denen zwar reichlich feindliche Muscheln, Krebse, Skelette, Piraten und andere unfreundliche Bewohner hausen, in denen aber auch Schätze, Munitions-Upgrades und sogar Unterwasser-Zivilisationen warten. Das dort gefundene Gold kann man später im Katalog in ein ausgefallenes Outfit oder ein Schwert investieren. Mit steigendem Erfahrungsgrad verbessert man seinen Rang, was wiederum zusätzliche Gegenstände und Outfits im Katalog freischaltet.

We Need To Go Deeper (0 Bilder) [1]

[2]

Seit Februar 2017 ist "We Need To Go Deeper" auf Steam als Early-Access-Spiel erhältlich. Das heißt: Wer es jetzt schon kauft, erhält deń bereits spielbaren Titel sofort und kann quasi live an der Entwicklung teilhaben. Dabei zeigt die Spieleschmiede Deli Interactive, wie das für beide Seiten Spaß machen kann: Regelmäßige Updates mit neuen Gegenständen, Bossgegner und anderen Verbesserungen sorgen dafür, dass es nie langweilig wird.

Bereits im Mai letzten Jahres haben wir We Need To Go Deeper angespielt [3]. Seither hat sich viel getan: Gab es anfangs nur zwei Schiffstypen, sind es inzwischen fünf. Neben ihrem Aufbau unterscheiden sie sich auch in Größe und besonderen Eigenschaften. Inzwischen kann man sich in der Tiefsee auch sichtbare Krankheiten wie Seekrankheit, Unterkühlung, die Seepocken-Infektion, eine Blutkrankheit und einen Fluch einfangen. Unterwasserzivilisationen verkaufen allerlei Nützliches von Heiltränken bis Torpedo-Upgrades. Außerdem gibt es dort stets einen Doktor, der die verschiedenen Krankheiten zu heilen weiß.

Das mit der Unity-Engine programmierte We Need To Go Deeper ist für Linux, macOS und Windows für 9,99 Euro bei Steam [4] erhältlich. Wir spielen die Koop-Action heute ab 17 Uhr live auf YouTube [5] und Twitch [6] unter Linux, macOS und Windows.

Hier gibts den Livestream bei Youtube

URL dieses Artikels:
http://www.heise.de/-4221261

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4221334.html?back=4221261
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4221334.html?back=4221261
[3] https://www.heise.de/ct/artikel/c-t-zockt-LIVE-We-Need-to-Go-Deeper-Tauchspass-im-Team-3721624.html
[4] https://store.steampowered.com/app/307110/We_Need_To_Go_Deeper/
[5] https://www.youtube.com/user/heisenewsticker
[6] https://www.twitch.tv/ctzockt

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ FreshRSS.org

FreshRSS 1.12.0

Von Alkarex — 28. Oktober 2018 um 10:23

Changelog:

  • Features
    • Ability to add labels (custom tags) to articles #928
      • Also available through Google Reader API (full support in News+, partial in FeedMe, EasyRSS). No support in Fever API.
    • Handle article tags containing spaces, as well as comma-separated tags #2023
    • Handle authors containing spaces, as well as comma or semi-colon separated authors #2025
    • Searches by tag, author, etc. accept Unicode characters #2025
    • New option to disable cache for feeds with invalid HTTP caching #2052
  • UI
    • New theme Swage #2069
    • Click on authors to initiate a search by author #2025
    • Fix CSS for button alignments in older Chrome versions #2020
    • Updated to jQuery 3.3.1 #2021
    • Updated to bcrypt.js 2.4.4 #2022
  • Security
    • Improved flow for password change (avoid error 403) #2056
    • Allow dot . in username (best to avoid, though) #2061
  • Performance
    • Remove some counterproductive preload / prefetch rules #2040
    • Improved fast flush (earlier transfer, fetching of resources, and rendering) #2045
      • Only available for Apache running PHP as module (not for NGINX, or PHP as CGI / FPM) because we want to keep compression
  • Deployment
    • Fix Docker bug with some cron values #2032
    • Perform git clean -f -d -f (removes unknown files and folders) before git auto-update method #2036
  • Bug fixing
    • Make article GUIDs case-sensitive also with MySQL #2077
    • Ask confirmation for important configuration actions #2048
    • Fix database size in the Web UI for users about to be deleted #2047
    • Fix actualize bug after install #2044
    • Fix manual / Web actualize for which the final commit coud be done too early #2081
    • Fix regression from version 1.11.2, which might have wrongly believed that the server address was private #2084
      • Please check in data/config.php that you have 'pubsubhubbub_enabled' => true, if your server has a public address
  • Extensions
    • Update built-in extension to again fix Tumblr feeds from European Union due to GDPR #2053
  • I18n
    • Fix missing German translations, e.g. for Sharing with Known #2059
  • Misc.
    • Better port detection behind a proxy #2031

Swage theme on mobile

Swage theme mobile

Add custom labels

Custom labels

✇ Developer-Blog - Neuigkeiten von der Insel

"Oracle Code One"-Tagebuch – Tag 3: Serverless

Von heise online — 25. Oktober 2018 um 22:25

zurück zum Artikel

Liebes Tagebuch,

heute hatte ich das Glück, mich länger mit Chad Arimura (Vice President Serverless, Oracle) unterhalten zu können. Chad ist bei Oracle für das Fn Project, Oracles Serverless-Angebot, zuständig. Fn ist eine quelloffene Container-native-Serverless-Plattform, die im eigenen Rechenzentrum on-premise oder aber in jeder beliebigen Cloud betrieben werden kann.

Da als Basis für die Serverless Functions Docker-Container verwendet werden, unterstützt Fn Project praktisch jede Programmiersprache, die in einem Docker-Container lauffähig ist. Für einige Programmiersprachen gibt es zusätzlich Function Development Kits (FDKs), welche die Entwicklung von Fn Functions deutlich vereinfachen. Als "First Class Citizens" werden derzeit neben Java die Sprachen Go, Python, Node.js und Groovy unterstützt.

Interview

Lars Röwekamp: Hallo Chad, lass uns gleich mit der ersten Frage starten: Fn Project wurde genau vor einem Jahr veröffentlicht [1]. Was sind aus deiner Sicht die wichtigsten Erweiterungen der letzten zwölf Monate?

Chad Arimura: Seit dem Launch im Rahmen der JavaOne 2017 haben wir vor allem an der Stabilität, der Zuverlässigkeit und der Skalierbarkeit des Frameworks gearbeitet. Zusätzlich haben wir viel Energie in die Ausarbeitung der Plattform-APIs gesteckt, um so das Hosten und Managen der Plattform zu erleichtern. Oracle plant in der ersten Hälfte 2019, mit Oracle Functions eine vollständig gemanagte Version des Frameworks in der Oracle-Cloud anzubieten.

Röwekamp: Das ist interessant. Bisher war sich zumindest die deutsche Serverless-Community uneins, ob man eine Plattform wie Fn Project als Serverless bezeichnen kann, wenn man sie zwingend selbst hosten muss.

Arimura: Diese Diskussion gibt es nicht nur in Deutschland. Aus Sicht der Function-Entwickler ist es auf jeden Fall als Serverless zu bezeichnen. Aus Betriebssicht dagegen mag es unterschiedliche Meinungen geben. Meiner Meinung nach muss man hier die unterschiedlichen Level unterscheiden. Aber genau in der Möglichkeit, unser Framework sowohl in einer Public Cloud als auch on-premise zu betreiben, sehen wir einen großen Mehrwert den meisten unserer Mitbewerber gegenüber. Das bestätigen uns auch immer wieder unsere Kunden.

Röwekamp: Aktuell liegt Fn Project in der Version 0.75 vor. Das schreckt sicherlich den einen oder anderen potenziellen Interessenten vor einem Einsatz im produktiven Umfeld ab. Wird es bis zum Launch von Oracle Functions auch eine Version 1.0 von Fn Project geben?

Arimura: Exakt das ist unser Plan. Wir wollen bis spätestens zum Release von Cloud Functions auch eine Version 1.0 von Fn Project bereitstellen. Zusätzlich gehen wir davon aus, dass neben Oracle auch weitere Partner von uns die Plattform als gemanagten Service anbieten werden. Das Team von Oracle Functions und Fn Project ist übrigens dasselbe. Beide Welten partizipieren daher stark voneinander. Anders formuliert wird der Mehrwert von Oracle Functions vor allem in den weltweit hochverfügbaren Rechenzentren von Oracle liegen. Die technische Basis des Frameworks dagegen wird in beiden Welten identisch sein.

Röwekamp: Wo siehst du weitere Mehrwerte eurer Plattform gegenüber denen eurer Mitbewerber?

Arimura: Der erste weitere Mehrwert ist sicherlich darin zu sehen, dass Fn Project Open Source ist und dank Docker auf ein offenes Protokoll setzt. Während bei den anderen Anbietern ein Zip-File in die spezielle Runtime geladen werden muss, stellen wir die Docker Contracts zur Verfügung. So können bereits existierende, komplexe Libraries – wie die automatische Erkennung von Nummernschildern – sehr einfach via Docker-Container als Serverless Function zur Verfügung gestellt werden. Ein weiterer Mehrwert ergibt sich durch die angedachte Integration mit anderen Oracle-Cloud-Services. Wir planen Event-Streams für viele der Oracle-Cloud-Services anzubieten. Erstellt man zum Beispiel in Oracle HCM (Human Capital Management) einen neuen Eintrag, so stößt dieser ein Cloud-Event an, welches wiederum von einer Oracle Function entgegengenommen werden und dort weitere Prüfungen oder Verarbeitungen außerhalb des HCM auslösen kann.

Röwekamp: Die von dir erwähnte Integration mit Oracle--CloudServices ist sicherlich ein wichtiger Mehrwert für Kunden, die bereits stark auf Oracle-Produkte setzen. Was aber ist mit der restlichen Welt. Ist diese außen vor?

Arimura Nein natürlich nicht. Wir arbeiten derzeit gemeinsam mit der Serverless Working Group der Cloud Native Computing Foundation (CNCF) an einer Standardisierung von Cloud-Events [2]. Mit diesen Events können dann Ereignisse von Services beliebiger anderer Clouds verarbeitet werden.

Röwekamp: Ein neutrales Event-Modell, mit dessen Hilfe Cloud-übergreifend Service-Events ausgetauscht werden können? Das hört sich gut an. Lass uns auf ein weiteres Problem der Serverless-Welt zu sprechen kommen. Nahezu alle Anbieter von Serverless Functions rechnen aktuell nach einem Pay-per-use-Modell ab. Dies lässt Serverless Functions für langlaufende Aktionen eher unattraktiv erscheinen. Genau aus diesem Grund bietet zum Beispiel AWS für die Orchestrierung ihrer Lambdas die AWS Step Functions an. Ist für Fn Project etwas Ähnliches geplant?

Arimura: In der gemanagten Variante, also Oracle Functions, wird es, wie bei allen anderen Providern auch, definitiv ein Timeout für die einzelnen Functions geben. Verwendet man dagegen die Open-Source-Variante, lässt sich natürlich das Timeout beliebig setzen. Ob dies sinnvoll ist, sei einmal dahingestellt. Für wirklich langlaufende Operationen und die Orchestrierung von Serverless Functions, also für Workflows, haben wir derzeit eine rudimentäre Lösung namens Fn Flow [3]. Unser eigentliches Ziel ist aber auch hier, gemeinsam mit der Serverless Working Goup der CNCF eine standardisierte Lösung zu spezifizieren und diese im Anschluss umzusetzen.

Röwekamp: Ich habe jetzt richtig Lust bekommen, einmal ein wenig mit Fn Project herumzuspielen. Abschließend also die Frage, wie und wo ich am besten starte.

Arimura: Am besten gehst du einfach direkt auf fnproject.io [4] oder unser GitHub-Projekt [5] und folgst dort den "Getting started"-Anweisungen. In weniger als zwei Minuten solltest du dann das Framework installiert und die erste Serverless Function deployt und aufgerufen haben: fn start, fn init, fn deploy und fn invoke – das ist schon alles. Für eine etwas ausgereiftere Variante, welche Fn Project auf Kubernetes aufsetzt, stellen wir ein Helm Chart [6] zur Verfügung. Ab Q1 oder Q2 2019 kannst du natürlich auch einfach auf Oracle Functions in der Oracle -Cloud aufsetzen. Aber so lange möchtest du sicherlich nicht warten.

Röwekamp: Besten Dank für das Interview und deine Zeit, Chad.

Arimura: Sehr gern. Und viel Spaß beim Herumspielen mit Fn Project!

... und Tschüss

Liebes Tagebuch, das war es erst einmal für mich auf der Code One 2018. Auch wenn ich mich nach wie vor nicht wirklich an den neuen Namen gewöhnen kann und in den vielen, vielen Gesprächen vor Ort immer wieder den Namen JavaOne verwendet habe, hat die Konferenz wirklich Spaß gemacht.

Inhaltlich tut die thematische Erweiterung der Konferenz gut. Die neuen Themenwelten wurden so gewählt, dass sie auf jeden Fall auch für Java-Entwickler von Interesse sind. Die IT-Landschaft ist in den letzten Jahren deutlich heterogener geworden. Da reicht oftmals die reine Kenntnis (s)einer Programmiersprache nicht mehr aus. DevOps, Container, Cloud, KI, Modern Web, all dies sind Themen, an denen in der Zukunft kaum ein Weg vorbeiführen wird. Dies gilt zumindest für Entwickler, die in einem zeitgemäßen Projektumfeld aktiv sind.

Mehr dazu aber in den nächsten Blogbeiträgen


URL dieses Artikels:
http://www.heise.de/-4204516

Links in diesem Artikel:
[1] https://www.heise.de/meldung/Oracle-startet-Angebot-zu-Serverless-Computing-3850138.html
[2] https://cloudevents.io
[3] https://github.com/fnproject/flow
[4] http://fnproject.io/
[5] https://github.com/fnproject
[6] https://medium.com/fnproject/fn-project-helm-chart-for-kubernetes-e97ded6f4f0c

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

c't zockt Spezial: Mit Red Dead Redemption 2 ins Cowboy-Abenteuer

Von Daniel Herbig — 25. Oktober 2018 um 13:13

zurück zum Artikel

Wird Red Dead Redemption 2 dem Hype gerecht? Am Freitag stürzt sich das c't-zockt-Team im Livestream ins Western-Abenteuer.

Bald ist es da: Am Freitag kommt mit Red Dead Redemption 2, das wohl meisterwartete Spiel des Jahres, in den Handel. c't spielt das Western-Abenteuer ab Freitag um 10 Uhr für mehrere Stunden im Livestream.

c't-zockt-Live-Stream am 26.10. ab 10 Uhr.

In Red Dead Redemption 2 steuert der Spieler das Mitglied einer Kriminellen-Bande, der auch die Hauptfigur von Red Dead Redemption angehört – RDR 2 spielt zeitlich vor den Ereignissen des Vorgängers. Red Dead Redemption 2 ist der erste Titel des GTA-Entwicklerstudios Rockstar, der ausschließlich für die aktuelle Konsolengeneration entwickelt wurde. Es ist gleichzeitig das erste Spiel des Studios seit GTA 5, das 2013 auf den Markt kam.

Red Dead Redemption 2 - Bilder aus dem Spiel (0 Bilder) [1]

[2]

heise online hatte bereits vor einigen Wochen die Gelegenheit, Red Dead Redemption 2 mehrere Stunden lang anzuspielen [3]. Dabei sind neben der tollen Grafik auch interessante Spielelemente aufgefallen, die RDR2 von der Konkurrenz abheben. Dazu gehört beispielsweise ein Kontext-Menü, mit dem Spieler passend auf die aktuelle Situation mit ihrer Umwelt interagieren können – zum Beispiel die Hände hoch nehmen, wenn ein Sheriff den Revolver zieht.

Die Spielwelt selbst wirkte sehr lebendig. Kleinere Geschichten und Aufgaben werden auch ohne Questmarker erzählt, NPCs reagieren außerdem passend auf das Aussehen und Verhalten der Spielfigur. Ob der positive Ersteindruck über die ersten paar Stunden der Story erhalten bleibt, prüfen Jan-Keno Janssen, Fabian Scherschel und Daniel Herbig am Freitag im Livestream. ()


URL dieses Artikels:
http://www.heise.de/-4202888

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4178282.html?back=4202888
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4178282.html?back=4202888
[3] https://www.heise.de/newsticker/meldung/Red-Dead-Redemption-2-loest-endlich-das-Open-World-Versprechen-ein-4183111.html
[4] mailto:dahe@heise.de

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ c't-Blog ff.org

Spiele-Review: Star Wars X-Wing Miniaturenspiel 2. Edition

Von Julius Beineke — 25. Oktober 2018 um 06:30

zurück zum Artikel

Beim X-Wing Miniaturenspiel fechten Spieler mit Raumschiffmodellen und Würfeln den Krieg der Sterne aus. X-Flügler, TIE-Jäger und der Millenium Falke – Luke Skywalker, Darth Vader, Han Solo: Sie alle kämpfen um die Macht auf dem Tabletop-Spieltisch.

Das Star Wars X-Wing Miniaturenspiel von Fantasy Flight Games – mittlerweile in der 2. Edition – hat die kultigen Weltraumkampf-Simulationen X-Wing Alliance, X-Wing vs. TIE Fighter & Co. von LucasArts als Vorbild. Gespielt wird üblicherweise zu zweit mit hochwertigen, fertig bemalten Raumschiff-Miniaturen, Karten, Würfeln und Pappmarkern auf einem Spieltisch. Sind mehr Spieler am Start, teilt man die Schiffe in zwei Teams untereinander auf.

Grundlagen: Die dunkle Seite gegen die helle

Das Ziel jeder Partie ist es, die gegnerischen Raumschiffe abzuschießen, ehe diese zu viele Treffer gegen die eigene Jägerstaffel landen können. Dafür müssen Spielende ihre Figuren so bewegen, dass sie in Reichweite von Laserkanonen oder Torpedos sind. Ein richtiges Spielbrett gibt es dabei nicht – gespielt wird auf einem festgelegten, gut 90 x 90 Zentimeter großen Bereich, in dem sich die Raumschiffe entlang bestimmter Manöverschablonen relativ frei bewegen. Hierbei kommt ein originelles Bewegungssystem zum Einsatz, das gutes Augenmaß erfordert und taktisches Geschick belohnt.

Star Wars X-Wing Miniaturenspiel (0 Bilder) [1]

[2]

Staffelzusammenstellung: alle Einheiten melden

Das eigene Geschwader stellen Spieler aus diversen Schiffen, Piloten und Upgrades zusammen. Dabei kann man auf bekannte Raumschiffe wie X-Wing, TIE-Fighter opder Sklave-1, aber auch eher obskure wie den mandalorianischen Fang-Jäger, U-Wing oder TIE-Schnitter zurückgreifen. Die Kombinationsmöglichkeiten scheinen grenzenlos, folgen aber einem detaillierten Regelsystem, sodass es stets fair bleibt. Unterstützt wird man dabei durch eine zugehörige App für iOS [3], Android [4] und den Internetbrowser [5], die beim Zusammenstellen der Staffeln und dem Verwalten der eigenen Raumschiff-Sammlung hilft. All diese Kombinationen und Fähigkeiten im laufenden Spiel dann auch im Kopf zu behalten, erfordert Konzentration und Übung. Ärgerlich ist es, wenn man erst Minuten später merkt, dass man eigentlich eine mächtige Fähigkeit hätte nutzen können.

Planung und Bewegung: Es ist eine Falle

Nach dem ersten Positionieren der Staffel und einiger Hindernis-Asteroiden auf dem Spielbrett, beginnt die Schlacht. Man wählt zu Beginn einer Spielrunde im Geheimen, welches Manöver jedes eigene Schiff ausführen wird – etwa ein langsame 90°-Kurve, um dem Gegner frontal zu begegnen, Vollgas geradeaus oder ein waghalsiges Wendemanöver, welches den Jäger gerade noch so aus der Reichweite der feindlichen Waffen bringen könnte. Sind alle Manöver vorausgeplant, bewegen sich die Raumschiffe in einer bestimmten Reihenfolge nach einander – ändern darf man das gewählte Manöver dann nicht mehr. Dabei kommen Bewegungsschablonen zum Einsatz, die man an die Plastikbasis des Modells anlegt und dieses einfach ans andere Ende setzt, wobei man möglichst keine Hindernisse oder anderen Schiffe rammen sollte. Taktik, Planung und richtiges Einschätzen und Überlisten des Gegenspielers sind so der Kern des X-Wing Miniaturenspiels. Daher kann diese Planung durchaus einige Minuten dauern, was den Spielfluss manchmal etwas hemmt.

Davon abgesehen fühlen sich Spielzüge aufgrund des originellen Bewegungssystems und der unterliegenden Konzepte sehr organisch an – und nach einer Raumschlacht im dreidimensionalen Raum, obwohl man auf einer Ebene spielt. Aber mit Physik und Realismus nahm es Star Wars ja noch nie allzu genau.

Angriff und Verteidigung: Krieg der Sterne

Haben sich alle Schiffe bewegt und Spezialfähigkeiten ausgeführt, die noch kleine Korrekturmanöver erlauben oder das Würfelglück für später beeinflussen können, kommt es zum eigentlichen Gefecht. Wer einen gegnerischen Jäger vor der Flinte hat, darf mithilfe von roten Würfeln angreifen – wer beschossen wird, versucht mit grünen Würfeln auszuweichen. Finden Schüsse ihr Ziel, werden erst die Schutzschilde schwächer, danach bekommt dann die Hülle Löcher. Werden die Hüllenpunkte durch Treffer überstiegen, ist das jeweilige Schiff zerstört und wird entfernt – und der Angreifer streicht dafür Punkte ein.

Alle Schiffe unterscheiden sich in ihren Eigenschaften, bringen unterschiedlich viel Schilde, Panzerung, Waffen und Wendigkeit mit. So sind TIE-Jäger schwer zu treffen und teilen nur wenig Schaden aus, platzen aber auch schon nach wenig Schaden – dafür kommen oft mehrere in Schwärmen daher. Der Millenium Falke kassiert hingegen fast jeden zweiten Treffer, hält aber auch richtig viel aus – während seine Lasergeschütze nicht nur nach vorn, sondern auch nach hinten und zu den Seiten feuern können.

Die Kampfphase des X-Wing Miniaturenspiels artet nicht selten in eine kleine Würfelorgie aus. Stehen beispielsweise sechs Schiffe auf dem Tisch und können einander angreifen, sind das insgesamt zwölf Würfelwürfe. Hat man Würfelpech, kann es trotz guter Vorbereitung der Angriffe dennoch frustig werden – das passiert allerdings aufgrund der vielen Möglichkeiten, die Würfel zu beeinflussen, eher selten. So darf man sie je nach vorheriger Planung etwa neu werfen oder auf bessere Ergebnisse drehen.

Sobald alle Schiffe angegriffen haben, endet die Runde und die Manöver für die nächste werden geplant. Das geht so lange weiter, bis alle Schiffe eines Spielenden zerstört sind oder das Zeitlimit abgelaufen ist – üblicherweise 75 Minuten. Gewonnen hat, wer mehr Punkte erspielt hat, wobei auch Schiffe zählen, die mehr als die Hälfte ihrer Schild- und Hüllenpunkte verloren haben, aber noch nicht zerstört wurden.

Preis, Auswahl und Verfügbarkeit

Die eigene Staffel lässt sich beim X-Wing Miniaturenspiel aus nahezu jedem Raumjäger zusammenstellen, den das Star-Wars-Universum zu bieten hat – alle mit unterschiedlichen Modellen, Piloten und Fähigkeiten. Diese muss man jedoch zum Grundspiel hinzukaufen. Das Basisspiel bringt einen X-Wing und zwei TIE-Jäger sowie alle anderen notwendigen Spielkomponenten mit (ab 47,91 €) [6]. Alle weiteren Schiffe kann und muss man sich, sofern man sie im Spiel verwenden möchte, zusätzlich kaufen. Je nach Modellgröße schlagen die Erweiterungen mit gut 15 bis knapp 40 Euro zu Buche. Je nachdem, was man bei welchem Händler kauft.

Bei Problemen mit der Wiedergabe des Videos aktivieren Sie bitte JavaScript

Die Schiffsmodelle des Star Wars X-Wing Miniaturenspiels kommen fertig zusammengebaut und bemalt. – Quelle: Fantasy Flight Games

Ein Hinweis zur Verfügbarkeit: Das X-Wing Miniaturenspiel gibt es bereits seit vielen Jahren. Im September 2018 wurde allerdings die "Spiel-Engine" auf Edition 2.0 aktualisiert. Dieser Reboot hatte viele Verbesserungen zur Folge, allerdings werden vorerst nur wenige Produkte neu produziert. Neben dem Grundspiel gibt es einzelne X-Wings und Y-Wings sowie den U-Wing aus "Rogue One: A Star Wars Story" für die Rebellen. Das Imperium bekommt einzelne TIE-Jäger und TIE-Turbojäger sowie den TIE-Schnitter aus Rogue One. Die Sklave-1, Landos Millenium Falke aus "Solo: A Star Wars Story" und der mandalorianische Fang-Jäger aus der Star-Wars-Rebels-Serie ist für die dritte spielbare Fraktion erhältlich – Kriminelle und Kopfgeldjäger.

Hat man jedoch noch Modelle aus der ersten Edition oder findet Sammlungen davon günstig auf Ebay und Konsorten, kann man auch Umwandlungsboxen kaufen – 50 Euro pro Fraktion – und mit diesen alte Schiffsmodelle mit Edition 2.0 verwenden. Sämtliche alte Schiffe (und natürlich weitere neue) sollen in den kommenden Jahren in regelmäßigen Abständen auch für Edition 2.0 neu veröffentlicht und erhältlich sein, teilweise mit neu designten Modellen: vom Rebellen-Millenium-Falken über A- und B-Wings zu TIE-Bombern, Abfangjägern und Lambda-Raumfähren bis hin zu Raumschiffen der berüchtigsten Kopfgeldjäger der Galaxis.

Darüber hinaus sind noch insgesamt vier weitere spielbare Fraktionen, alle mit eigenen Schiffen und Erweiterungen in Planung: Widerstand und Erste Ordnung aus der Sequel-Zeit des Star-Wars-Universums (wie Poe Damerons T70-X-Wing und Kylo Rens schwarzem TIE-Jäger aus Episode VII, VIII und IX) sowie Republik und Separatisten aus den Prequel-Zeit (wie Jedi-Sternenjäger und Vulture-Droiden aus Episode I, II und III).

Bei Problemen mit der Wiedergabe des Videos aktivieren Sie bitte JavaScript

Fett(e)s Gerät: Auch Kriminelle und Kopfgeldjager wie Boba Fett in seiner Sklave-1 lassen sich spielen. – Quelle: Fantasy Flight Games

Fazit: Die Macht ist stark

Um für ordentlich Varianz und Auswahlmöglichkeiten zu sorgen, ist man beim X-Wing Miniaturenspiel schnell mit Ausgaben im niedrigen dreistelligen Bereich dabei. Kein günstiges Hobby – für das Geld bekommt man aber auch einiges geboten. Wer besonders viel Spaß am Bauen und Bemalen von Miniaturen hat, fühlt sich hier eventuell um diesen Teil des Hobbys betrogen. Allerdings lassen sich die Modelle auch noch nachträglich gut bemalen oder umbauen.

Darüber hinaus ist das X-Wing Miniaturenspiel ein in vielerlei Hinsicht umfangreiches Spielerlebnis. Für eine Partie sollte man mindestens zwei Stunden Gesamtzeit und auch längere Pausen im Ablauf einplanen, wenn Spieler mal länger überlegen oder oft würfeln müssen. Dafür kann man dabei dann aber auch viel Spannung und Spielspaß erleben, die nicht nur den Zeitaufwand sondern auch das Geld wert sind. ()


URL dieses Artikels:
http://www.heise.de/-4195207

Links in diesem Artikel:
[1] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4191305.html?back=4195207
[2] https://www.heise.de/ct/bilderstrecke/bilderstrecke_4191305.html?back=4195207
[3] https://itunes.apple.com/de/app/x-wing-squad-builder-by-ffg/id1427859124?mt=8
[4] https://play.google.com/store/apps/details?id=com.fantasyflightgames.xwingsquadbuilder
[5] https://squadbuilder.fantasyflightgames.com/
[6] https://www.heise.de/preisvergleich/star-wars-x-wing-2-edition-grundspiel-a1863664.html?hocid=ct
[7] mailto:jube@heise.de

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

✇ Developer-Blog - Neuigkeiten von der Insel

"Oracle Code One"-Tagebuch – Tag 2: "Future-proofed Java"

Von heise online — 24. Oktober 2018 um 22:02

zurück zum Artikel

Liebes Tagebuch,

für heute habe ich mir vorgenommen, auf der "Code One"-Konferenz einmal dem Gerücht nachzugehen, Java sei mit seinen mittlerweile mehr als 20 Jahren nicht mehr zeitgemäß. Als Maßstab für den Begriff zeitgemäß habe ich dabei so unterschiedliche Trends wie Microservices, Container, Cloud-native, Serverless oder NoSQL angesetzt.

Das Enterprise-Java der Zukunft

Natürlich könnte ich es mir an dieser Stelle einfach machen und behaupten, dass dank Spring Boot und Spring Cloud Java auf jeden Fall bestens für Microservice-Projekte in der Cloud geeignet sei. Was aber, wenn man den mit Spring einhergehenden Vendor-Lock-in vermeiden und trotzdem Java für diese Art von Projekten nutzen möchte?

Sicher, mit JAX-RS, CDI und JPA lassen sich Microservices schnell und einfach auf Basis des Enterprise-Java-Standards Java EE – oder zukünftig Jakarta EE – implementieren. Das eigentliche Problem liegt aber weniger in den einzelnen Services als vielmehr in deren Zusammenspiel. Wie sieht es in einem stark verteilten System von Microservices mit den klassischen Querschnittsfunktionen wie Security, Tracing, Logging, Health Checks oder Metrics aus. Diese wurden einem bisher von einer zentralen Runtime (a.k.a. Application Server) abgenommen. Und was ist, wenn einmal ein Service ausfällt? Wie bekommen dies die anderen Service mit und wie reagieren sie darauf?

Eine mögliche Lösung stellt das in der Eclipse Foundation beheimatete und von namenhaften Firmen, wie IBM, Red Hat, Oracle, Fujitsu, Payara oder Tomitribe, unterstütze Open-Source-Projekt MicroProfile [1] dar. Erst vor wenigen Tagen in der Version 2.1 veröffentlicht [2], hat MicroProfile in den letzten zwei Jahren in der Java-Community mehr und mehr an Bedeutung gewonnen. Dank diverser Implementierungen von mittlerweile acht unterschiedlichen Herstellern hat MicroProfile das Zeug, zu einem neuen Standard für Java-basierte Microservices-Anwendungen zu werden. Kein Wunder also, dass es auf der Code One deutlich über 20 Sessions zu diesem Thema gibt.

Besonders gefallen hat mir die Session "Cloud-native, Service-Meshed Java Enterprise with Istio" von Sebstian Daschner. Er hat im Rahmen seiner Session anhand einer netten kleinen Live-Demo [3] gezeigt, wie gut Java EE kombiniert mit MicroProfile und die neue Wunderwelt der Cloud zusammenspielen. Während auf Java EE/MicroProfile basierende Microservices in Docker verpackt und via Kubernetes gemanagt wurden, hat Istio [4] die Verwaltung des Service Mesh, also der deployten Services, übernommen.

Dank Istio Sidecars (Service Proxies) konnten die benötigten Querschnittsaufgaben, wie Tracing, Security oder Resilience, aus dem Code der Services heraus in die Infrastruktur verlagert werden. Da sowohl Istio als auch MicroProfile stark auf Standards setzen, ließen sich die verteilten Tracing-Informationen der einzelnen Services problemlos mit Jaeger [5] verwalten und mit dem Grafana Dashboard [6] visualisieren. Eine tolle Demo, die Lust aufs Ausprobieren macht.

Java EE meets NoSQL

Mindestens genauso interessant, wenn auch in eine andere Richtung gehend, war die Session "Jakarta EE meets NoSQL in the Cloud Age [7]" von Elder Moraes (Oracle) und Otavio Santana (Tomitribe). Elder und Otavio sind in ihrer Session auf die verschiedenen NoSQL-Datenbankentypen – Key/Value, Document, Column-based, Graph und Multi-Model – eingegangen und haben deren Unterschiede zu klassischen relationalen Datenbanken aufgezeigt. Anhand eines Beispiels haben sie im Anschluss demonstriert, wie mit Java-EE-Bordmitteln und Eclipse JNoSQL [8] die bekanntesten der derzeit am Markt verfügbaren NoSQL Datenbanken in Java-EE-Projekte eingebunden werden können. Basierend auf den Standardannotationen von JPA, ergänzt um ein paar JNoSQL-eigenen APIs, ist die Anbindung einer NoSQL-Datenbank mit wenigen Zeilen Code erledigt.

JNoSQL ist als Basis für eine neue API zur Anbindung vonNoSQL-Datenbanken in Jakarta EE [9] ausgewählt. Es ist geplant, dass eine entsprechende Spezifikation Bestandteil des kommenden Releases, also Jakarta 9, werden wird.

Keynote: Oracle Cloud One

Auch die Keynote stand ganz im Zeichen der Cloud. Amit Zavery (Executive Vice President, Fusion Middleware and PaaS Development, Oracle) betonte gleich zu Beginn die große Bedeutung der Cloud für zukünftige Anwendungsentwicklung. "Building next generation cloud­­-native applications becomes more and more important", so Zavery.

Dabei sei es vor allem wichtig die Cloud nicht nur als Bare-Metal oder IaaS (Infrastructure as a Service) zu verstehen, sondern vor allem auch Innovationen in der Cloud voranzutreiben. Services für KI und Data Sience, Blockchain, Digital Assistant und Virtual beziehungsweise Argumented Reality seien die echten Mehrwerte der Cloud.

Oracle habe sich mit der Oracle Cloud Infrastructure (OCI) das Ziel gesetzt, genau diese Themen in den Fokus zu stellen. Dabei setze man bewusst darauf, wann immer möglich mehrere Kanäle zu unterstützen. So könne man zum Beispiel bei der Verwendung des Cloud-basierten Digital Assistant Services zwischen verschiedenen Varianten, wie Alexa oder Siri, frei wählen.

Wie eine Cloud-Anwendung unter Einsatz der verschiedenen Services aussehen kann, demonstrierte Matt Thompson (Vice President of Developer Engagement and Evangelism, Oracle) am Beispiel eines Car Selling Chatbots. Ein proaktives, mittels KI selbstlernendes Conversation Interface übernimmt die Kommunikation mit dem Nutzer. Serverless Functions steuern die Businesslogik und stellen die Verbindung zum Backend dar. Die eigentliche Verkaufsoperation wird dann im Backend via Blockchain Cloud abgewickelt. "That’s not my father’s monolithic application", kann man da nur sagen.

Zavery betonte während der Keynote mehrfach, dass man bei der Oracle Cloud Infrastructure bewusst auf Open-Source-Techniken setze. Der eigene Code könne so problemlos auf die Cloud-Angeboten anderer Anbieter migriert werden – vice versa.

Cloud Native Computing Foundation

Warum Open Source gerade im Umfeld der Cloud so wichtig ist, erläuterte im Anschluss Dee Kumar von der Cloud Native Computing Foundation (CNCF). Laut Kumar sei es nur möglich, nachhaltige Lösungen zu schaffen, wenn man sich die "Power" der Open-Source-Community zu Nutze mache. "Successful digital transformation depends on making cloud-native computing universal and sustainable. This only works by harnessing the power of open source", so Kumar.

Die CNCF kann als eine Art herstellerneutrales "Zuhause" für schnell wachsende Cloud-native Open-Source-Projekte auf GitHub verstanden werden. Ziel von CNCF ist es, diese Projekte auf ein professionelles Level zu heben, welches potenziellen Nutzern einen entsprechenden Investitionsschutz bietet. Zu den bekanntesten Projekten zählen derzeit sicherlich Kubernetes und Prometheus. Aber auch weniger bekannte Projekte wie OpenTracing API [10] und Jager (beide Distributed Tracing) oder Fluent [11], Logging), Envoy [12] (Service Mesh) und Helm [13] (Packaging) finden sich dort.

Wer in der nahen Zukunft plant, sich auf den Weg hin zu Cloud-native zu bewegen, sollte unbedingt einen Blick auf vom CNCF empfohlene Cloud-native Trail Map [14] werfen. Die dort aufgezeigten 10 Schritte geben einen guten Überblick darüber, welche Herausforderungen einem begegnen werden und wie man mit diesen umgehen sollte.

Groundbreaker Ambassador

Wie wichtig Oracle eine aktive Java-Community ist, zeigt das kürzlich ins Leben gerufene und im Rahmen der Keynote durch Steven Chin (Principal Engineer, Oracle) präsentierte Groundbreaker-Ambassador-Programm [15]. Mit ihm sollen besonders aktive Mitglieder der Community honoriert werden. Das Interessante an dem Programm ist, dass zukünftig jeder einen potenziellen Botschafter nominieren kann. Diese müssen lediglich ein paar Grundbedingungen erfüllen, die von dem jeweiligen Themenfokus (u.a. Microservices & Containers, Machine Learning & KI, Datenbank, Programmiersprachen & Frameworks, DevOps) abhängen.

Unter den Nominierten werden dann zukünftig einmalig pro Jahr die Groundbreaker Ambassador Awards vergeben. Auch hier findet die Abstimmung öffentlich statt. Für das erste Jahr hat Oracle ausnahmsweise diese Aufgabe übernommen und die ersten Award-Gewinner bestimmt, welche im Rahmen der Keynote ihre Auszeichnungen übergeben bekommen haben:

  • Doug Cutting – Co-Schöpfer von Hadoop
  • Neha Narkhede – Co-Founder und CTO von Apache Kafka
  • Charles Nutter – Co-Leader von JRuby
  • Graeme Rocher – Schöpfer von Grails und Micronaut
  • Guido van Rossum – Schöpfer von Python

Bis morgen …

Liebes Tagebuch, mein Fazit für den zweiten Tag der "Code One"-Konferenz fällt ähnlich positiv aus wie schon am Tag zuvor. Um die Zukunft von Java in Zeiten von Microservices, Containern, Cloud und Serverless mache ich mir zumindest keine Sorgen mehr. Ganz im Gegenteil: Ich kann nur bestätigen, was James Governor von RedMonk bereits letztes Jahr im Rahmen der JavaOne-Keynote geäußert hat: "Things have changed more in the Java ecosystem in the last 3 weeks than they have in the previous 13 years.", wobei ich die zitierten drei Wochen eher durch 12 Monate ersetzen würde. Mehr dazu aber in meinem nächsten Tagebucheintrag. Morgen ist ja auch noch ein Tag.


URL dieses Artikels:
http://www.heise.de/-4202708

Links in diesem Artikel:
[1] https://www.heise.de/developer/artikel/Microservice-Entwicklung-mit-Java-EE-eine-Einfuehrung-in-Eclipse-MicroProfile-4190801.html
[2] https://www.heise.de/meldung/Eclipse-MicroProfile-2-1-erweitert-die-Open-Tracing-API-4198856.html
[3] https://github.com/sdaschner/coffee
[4] https://www.heise.de/developer/artikel/Istio-Das-Service-Mesh-fuer-verteilte-Systeme-4153426.html
[5] https://github.com/jaegertracing/jaeger
[6] https://grafana.com/dashboards/7439
[7] http://bit.ly/dev6109
[8] http://www.jnosql.org/
[9] https://www.tomitribe.com/blog/jnosql-and-jakarta-ee/
[10] https://opentracing.io
[11] https://www.fluentd.org
[12] https://www.envoyproxy.io
[13] https://www.helm.sh
[14] https://github.com/cncf/landscape/blob/master/README.md#trail-map
[15] https://developer.oracle.com/ambassador

Copyright © 2018 Heise Medien

Let's block ads! (Why?)

❌