archivo | General RSS para esta sección

Reactive System (and 3)

This tutorial starts here and the second part continues here. Do not forget to start at the beginning.

Part VI: Create a simple frontend App for our System.

  1. Create a new Scala module (microservice) for our project.
  2. Create the package.
  3. Create model WFForm
  4. Implement controllers.
    1. create package controllers
    2. create WFAbstractController
    3. WFConsumerController
    4. WFController

To be continued…

WF Reactive System (2)

In previous post (available here.) we gave a try to Lagom and reactive microservices. We started by creating a sample Weather forecast App with three reactive microservices. Starting by the preparation and setup of tools needed, and the creation of service API and its implementation for the producer service that will deal with request that User will generate from a future UI (We’ll have the chance of play with Play framework).

In this  part, we’ll create a consumer API and its implementation.

Part IV: Consumer API

  1. Open the project in the IDE and create a copy of the producer module and rename it as wf-consumer-api.
  2. Add this module to build.sbt.
  3. Go to model and refactor (rename):
    1. WFMessage to WeatherForecasting.
  4. Modify the Service API:
    1. Remove topic
    2. Change descriptor name to “wfconsumer”.
    3. Define functions to:
      1. Get Top Ten Weather Forecasts.
      2. Get one (the first) Weather Forecast. (findOneWFData)
      3. Get the latest Weather Forecast. (latestWF)
    4. Define the rest endpoints URI in descriptor to our consumer.
      1. Get for (findTopTenWFData)
      2. Get for (latestWF)
      3. Get for (latestWF)
    5. Remove the withTopics and withAutoAcl options of descriptor.

Part V: Implementing the Consumer Services

  1. Create model package and create the case class WeatherForecasting.
  2. Create companion object for Json serialization format.
  3. Modify the consumer’s WFCommand
    1. Extend ReplyType[T] (previously [Done])
    2. Create SaveNewWF case class and its companion object.
    3. Delete WF case class and its companion object.
    4. Rename WFSerializerRegistry to WFConsumerSerializerRegistry
    5. Add class to WFSerializerRegistry.
    6. EventTag does not require modification.
    7. Modify WFEvent. Refactor WFChanged to WFSaved and change its signature to receive a WeatherForecast object as parameter.
    8. Remove onReadOnlyCommand
    9. In onEvent change case and add message for detail of message.
    10. Modify WFEntity to implement saving messages to handle onCommand and on Event operations for all WFEvents. It is very important to note that this Entity manages components of CQRS/ES architecture.
    11. Modify WFLoader.
      1. Rename it to WFConsumerLoader
      2. Override load and loadDEvMode.
      3. Change abstract class WFConsumerApplication
      4. Add lazy vals for binding WFService client wfService and message repository (WFRepository).
      5. Override jsonSerializerRegistry.
      6. Add persistentEntityRegistry
      7. Add readSide.register(wire[WFEventProcessor])
    12. Implement WFRepository.
      1. Create package repositories.
      2. Create private [impl] class WFRepository its constructor receives CassandraSession.
      3. Implement method for data fetching according to rest endpoints:
        1. fetchWFData: to retrieve 10 elements
        2. fetchOneWFData: to retrieve one (first) register.
    13. Implement Consumer Service
      1. Create class WFConsumerServiceImpl.
      2. Override findTopTenWFData and findOneWFData
    14. change Loader in resources/application.conf
    15. Add binds to build.sbt.

In the next post, we’ll create a simple frontend for our Reactive System.

WF Reactive System (1)

Prerequisites:

  • Java 8
  • Scala
  • sbt
  • IntelliJ IDEA

Part I: Preparation from Template

Create new lagom project from template.

sbt new lagom/lagom-scala.g8

  1. Import project into IDE.
  2. Refactor project-name-API to create producer API and IMPL.
    1. rename folder wfproducer-API.
    2. Rename module wfproducer-API.
    3. Change new names in build.sbt lazy vals and bindings. Note: at this point you can remove lazy vals of stream services API and its implementation created by lagom template.
  3. Test by runAll. If you’ve done changes correct it’ll run.
    1. Go to: http://localhost:9000/api/hello/Martin

Part II: Define a Producer Service API

  1. Delete stream-api and stream-impl services. Do not forget to remove their references (lazy val) from build.sbt
  2. Since we’re building a reactive Weather forecast system we’ll handle user events on wf-producer service.
  3. Rename wfreactiveService Scala class of wf-producer-API service. Take into consideration that a service API is an interface that in scala is declared with a trait, so make sure to rename using IDE’s refactor capabilities in order to keep consistency and find usages on other scala files.
  4. Extract model from service api implementation.
    1. Create model package inside api.
    2. Move class to the new model package.
    3. Rename class and its companion object to WFMessage.
  5. Open WFService.
    1. Change the topic to wfTemperature.
    2. Change signature of wfTemperature.
    3. Remove other functions definition.
    4. Rename greetingsTopic function to wfTopic and its signature.
    5. Include pathCall to wfTemperature in descriptor.
    6. Remove the addProperty Kafka part.
    7. Delete case class GreetingMessageChanged part.

Part III: Define a Producer Service Implementation (impl)

  1. Producer commands Creation:
    1. Sealed trait WFCommand
    2. UseWFMessage
    3. WF
  2. Create companion objects for commands
  3. Create Serialized registry. Add all command case classes.
  4. Create system events:
    1. (sealed trait) WFEvent
    2. WFChanged
  5. Create Event Tag (WFEventTag) for Service.
  6. Add system events case classes to Serialized registry.
  7. Create WFState
  8. Add WFState to Serialized registry.
  9. Modify WfreactiveEntity.
    1. Rename it to WFEntity.
    2. Change Initial State
  10. Implement WFLoader
    1. Rename it to WFLoader
    2. override lazy val jsonSerializerRegistry = WFSerializerRegistry
  11. Implement WFServiceImpl
  12. Change in application.conf values of Loader

play.application.loader = com.example.wfreactive.impl.WFLoader

(This is a guide, a draft, will be completed with images soon)

Cada día somos más brutos: César Hildebrandt

PERIODISMO CRÍTICO

fotografía César Hildebrant IIEl periodista hace una dura crítica al nivel intelectual de los peruanos y de lo que llama “estupidización colectiva”.

“Tengo la convicción de que el cociente intelectual peruano disminuye cada día”.

Con estas palabras, el periodista César Hildebrandt criticó el nivel cultural de los peruanos, sobre todo para quienes programas como Combate y Esto es Guerra es su paradigma.

En su última columna en el semanario “Hildebrandt en sus Trece”, el periodista opinó que el “porcentaje de brutos se ha incrementado exponencialmente en el Perú” y que la falta de cultura se refleja en todos los ámbitos, incluso en la política.

“Qué Javier Velásquez Quesquén, que fue presidente del Congreso, diga “teníanos” y “habíanos” es algo de lo más decidor”, señaló.

Señaló que en muchos casos la televisión, las redes sociales  y la masificación de la educación privada “trucha” contribuyen a lo que llama “estupidización colectiva” y una “epidemia de…

Ver la entrada original 102 palabras más

Asimov

122

No hay mucho más que agregar.

Flash Informativo

Buenos días/tardes/noches amigos de la blogósfera, interrumpimos una jornada normal en este su espacio (en realidad mío, pero siempre de puertas abiertas) para contarles que estamos de celebración, pues hemos sido nominados a un Liebster Award, no estoy muy acostumbrado a los premios, pero siendo la opinión científica de Antoni quien en su genial blog nos dice que la Ciencia es fácil, no podíamos  dejar de lado el honor que esto supone. Además en un suceso sin precedentes practicoeco también me nominó: ¡Gracias a ambos! La dinámica de este premio en lo particular nos permite conocer a otros blogueros, así crear lazos con ellos, a la vez que seguimos aprendiendo.

Las reglas para la nominación son:

– Agradecer al blog que te ha nominado.

– Visitar los otros blogs que han sido nominados junto a ti.

– Responder a las preguntas que te han hecho.

– Nominar 5, 11 o 20 blogs.

– Avisarles de su nominación.

– Realizar 11 preguntas nuevas

Leer Más…

Facebook guarda todo lo que escribes, incluso si nunca lo publicas.

Muy interesante. Es necesario conocer hasta donde se habla de privacidad de los contenidos publicados (no publicados en este caso) de la red social más usada del mundo.

Blog de Javier del Campo

img_1497¿Creen que Facebook graba todo lo que la gente tipea y luego borra antes de apretar el botón de “publicar”?

Buena pregunta.

Este artículo fue escrito por Jennifer Golbeck, directora del Laboratorio de Interacción Humano-Computador y profesora asociada en la University of Maryland.

Pasamos mucho tiempo pensando en qué postear en Facebook. ¿Deberías argumentar en contra de la opinión política que publicó uno de tus compañeros de secundaria? ¿Quieren realmente tus amigos ver otra foto de tu gato (o hijo)? La mayoría de nosotros, alguna que otra vez, hemos comenzado a escribir algo y luego, sabiamente, hemos cambiado de opinión.

Desafortunadamente, el código que ejecuta Facebook aún sabe lo que escribiste incluso si decidiste no publicarlo. Resulta que las cosas que decidiste explícitamente no compartir no son del todo privadas.

Facebook llama a estos pensamientos no publicados “autocensura” y es posible encontrar algunos rudimentos de cómo recolectar…

Ver la entrada original 999 palabras más

¡La homeopatía cura el SIDA desde un iPod!

Por favor, ¡Esto DEBE de ser una broma!
Creo que a todos nos ha pasado alguna vez: compras un Smartphone y de la misma forma que un niño con juguete nuevo dedicamos un tiempo a buscar aplicaciones para “sacarle el jugo” a nuestro móvil, y pasa que además de los visores de pdf, mensajeria instantánea, cliente de redes sociales, variados juegos y las microsuites de ofimática encontramos absurdas aplicaciones que incluso dan para hacer más de una lista, como por ejemplo un log de nuestras visitas al trono, o quizás una app para evaluar nuestra destreza para besar o un simpático aunque machista simulador de peleas maritales ¡¡con platillos voladores y todo!!.

Pero en los casos anteriormente citados no existe mayor riesgo que perder unos cuantos dólares y mucho tiempo para realizar cosas verdaderamente útiles; pero este caso es diferente pues brujos del mundo digital están ofreciendo curar el SIDA con melodías, lo siguiente (me temo) será ofrecer Apps para curar enfermedades como si se tratara de actualizar las definiciones de virus de un Software para PC.

Verdaderamente trágico.

La Ciencia y sus Demonios

hiv sida homeopatiaAunque la pseudomedicina homeopática alude a una fantasmal “memoria del agua” para justificar cómo la ausencia de principio activo es capaz de producir un efecto curativo, la constante labor de I+D de las diversas empresas del sector ha producido un vertiginoso avance tecnológico en este campo “médico”, de tal manera que ahora se pueden administrar los preparados homeopáticos no sólo en ausencia total de agua sino ¡sorpréndanse! incluso de materia.

Ver la entrada original 2.069 palabras más