samedi 7 juin 2014

Scala : collections et monades (initiation)

Le but de cet article d’initiation est de présenter à travers des exemples simples quelques unes des possibilités offertes par la programmation fonctionnelle et en particulier par Scala, autour des collections et des monades.

dimanche 1 juin 2014

Simple dependency injection with Play, without DI framework

There are many ways to setup dependency injection in a Play Framework project.
In this post, we will see two ways to achieve this as simply as we can, without using a DI framework.

mercredi 16 avril 2014

A Typesafe Activator plugin for Play-Slick

Typesafe Activator is a very cool tool to bootstrap applications built with the Typesafe stack (Scala, Play, Akka...).

I've just published an activator template for play-slick : https://typesafe.com/activator/template/play-slick-quickstart

Slick is the default library for databases access in the Typesafe stack. This template may help you integrate Play Framework and Slick to create a new Web application or a JSON API.

Play relies on asynchronous and non blocking IO. As Slick, uses only blocking IO (it uses on JDBC drivers under the hood), the template uses a DBAction to provide a "slick execution context" with a bigger thread pool to execute the blocking queries. This way you can use Slick without thinking about this kind of problem.

 Enjoy!

lundi 13 janvier 2014

How to monitor a Play Framework app in production

Today, we will try to explain how to monitor a play application with Metrics and JMX.

Metrics-play

Metrics-play is a Play plugin for the Metrics library.

This plugin provides a lot of information about requests (count, response time, requests/second, errors…) and JVM (CPU, memory...)

mardi 8 octobre 2013

Scala : quelques cheat sheets

Il m'arrive souvent d'utiliser Gist pour stocker quelques idées, exemples ou astuces. Comme cela peut servir à d'autres personnes, je me suis dit que je pourrais poser quelques gists sur Scala ici.

mercredi 2 octobre 2013

Java EE 7 : Bonne nouvelle?

Oracle a présenté en Juin la version finale de Java EE 7, et on peut déjà l'utiliser avec Glassfish 4.
Cela fait très longtemps que je n'ai pas parlé de Java EE (ou de Spring) sur ce blog.
En effet d'autres technologies bien plus innovantes ont fait leur apparition sur la JVM côté serveur depuis quelques années. Cependant je vous propose aujourd'hui un petit billet d'humeur sur cette nouvelle spécification.

Certains voient Java EE 7 comme une déception car un certain nombre de fonctionnalités liées au Cloud ont été abandonnées pour cette release.
Personnellement, je vois les choses un peu différemment. Il existe déjà des façons efficaces de travailler en mode Cloud et multi-tenant, et standardiser un tel fonctionnement au niveau des serveurs d'application ne me semble être d'une grande urgence.

Néanmoins d'autres fonctionnalités intéressantes font leur apparition dans Java EE 7.

Vous pouvez trouver la liste complète des modifications ici.
A côté des mises à jour de JSF, JPA, EJB... 3 spécifications retiennent mon attention.

mardi 14 mai 2013

Calcul distribué avec Spark

Spark est un outil de calcul distribué, permettant de lancer de gros calculs sur un cluster.

D'après ses développeurs, Spark est jusqu'à 100 fois plus rapide qu'Hadoop pour effectuer le même genre de taches.
Spark repose sur HDFS (Hadoop Distributed File System) mais les calculs se font en mémoire pour accélérer les traitements. Le but de cette accélération est de pouvoir effectuer des requêtes en temps réel sur de très gros volumes de données, par exemple sur les logs d'accès d'un site Internet. L'analyse des données en temps réel, le rêve quand on fait de la BI!

D'autres applications sont possibles comme le machine learning ou le data mining. Mais commençons par mettre les mains dans le cambouis!
Le coeur de Spark est écrit en Scala mais des API Java et Python sont également proposées pour interagir avec le framework. Un shell est fourni par défaut, il permet de manipuler facilement l'API Scala de Spark. Très pratique pour faire des tests!

Pour découvrir Spark, commençons par lire un fichier en local :
val textFile = sc.textFile("README.md")
Note : sc est un objet disponible par défaut dans le shell, il correspond au contexte Spark courant.