Akka, Play & Scala in Practice – Stjepan

Total Page:16

File Type:pdf, Size:1020Kb

Akka, Play & Scala in Practice – Stjepan 1 Akka, Play & Scala u praksi STJEPAN BULJAT ETNA D.O.O. [email protected] @sbuljat JavaCro ‘13 – 2nd International Java Conference in Croatia 2 O predavaču… Radim kao voditelj tima za razvoj i istraživanje u tvrtki Etna d.o.o. Završio FER (mag.ing.comp.) i EFZG (univ.spec.oec ) Povijest programiranja: Pascal C Smalltalk Java Scala je privatna tvrtka iz Zagreba osnovana 1990. godine Zapošljava 30ak djelatnika 22 godine iskustva u bankarstvu i informatici Usluge razvoja i uvođenja informatičkih rješenja uz primjenu suvremenih informacijskih tehnologija Usluge prilagodbe i integracije postojećih informatičkih rješenja Usluge poslovne analize i poslovnih konzultacija All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 3 Akka - Uvod Threads are bad? Ne nužno, ali apstrakcija može biti korisna… tu dolazi Akka Akka je middleware koji omogućuje izgradnju visoko konkurentnih i distribuiranih event-driven aplikacija koje su otporne na greške (eng. fault tolerant ) Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava Omogućuje konkurentnost bez dijeljenog promjenjivog stanja i zaključavanja resursa Osnovni gradivni element u Akka-i je ACTOR Location Transparent & Distributable by Design Actor Model je definirao Carl Hewitt 1973, ali zasluge za popularizaciju ipak pripadaju Erlangu Actori omogućuju Jednostavnu apstrakciju konkurentnosti i paralelizma Asinkroni, ne blokirajući i jako učinkovit event-driven programski model Lightweight event-driven procese (cca 2.7M actora po GB Heap-a) All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 4 Akka – Actor Actor može biti alternativa za: Thread, Component, Listener , Service, Load balancer , EJB SB / MDB, … Osnovne actor operacije DEFINE CREATE SEND BECOME SUPERVISE All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 5 Akka – Remoting / Routing Remoting Dvije vrste LOOKUP – Pristup actoru na udaljenom čvoru CREATE – Kreiranje actora na udaljenom čvoru Load balancing (routers) Više implementacija: RoundRobinRouter, RandomRouter , BroadcastRouter, … All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 6 Play Framework – Uvod 1 Play je… baziran na asinkronom modelu koji je izgrađen povrh Akka Framework-a Stateless Non-Blocking IO Play je… moderan web framework RESTful by default Asset Compiler za CoffeeScript, LESS,… WebSockets, Comet, … JSON is a first class citizen Play je… developer friendly Promijeni kod i refresh -aj browser Integrirana konzola i build alati ( powered by sbt ) Type safety Ugrađeni testni alati Podrška za Eclipse i IntelliJ IDEA All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 7 Play Framework – Uvod 2 Play je… high-productivity Java Web Framework Inspiriran s Ruby on Rails, Django, … Play je… full-stack platforma Integriran compiler, embedded server, template engine , Akka, … Play nije… Java EE Nije baziran na Servlet API-ju Designed by Web Developers for Web Developers Play doesn’t fight the HTTP or the browser All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 8 Play Framework – Hello World! All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 9 Scala – Uvod 1 Nastala 2003. na EPFL u Lausanni (Švicarska) – Martin Odersky Though my tip though for the long term Originalno zamišljena da se izvršava na JVM-u i CLR-u replacement of javac is Scala. I'm very Hibrid objektno orijentiranog i funkcijskog jezika impressed with it! I can honestly say if someone If I were Statički to pick jezik a language to use on had shown me the Programming in Scala book the JVM today, other than Java, it Bolji kôd zbog compile-time provjera by Martin Odersky, Lex Spoon & Bill Venners would be Scala. back in 2003 I'd probably have never created Bolje performanse od dinamičkih jezika (Groovy, Ruby , …) Groovy. -- JamesKompatibilan Gosling, creator s Javom of Java Kompajlira se u Java bytecode -- James Strachan, creator of Groovy Konzican i elegantan kôd 2-3x manje kôda u odnosu na Javu „Bolja Java” ? All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 10 Scala – Uvod 2 Scala popravlja brojne Java „greške” Sve je objekt Type inference val country = new Country („HR”) Primjena koncepata iz funkcijskih jezika Kompaktna Nema potrebe za getterima, setterima, eQuals(), hashCode (), … Scala povećava produktivnost programera Manje linija kôda (LOC) Izgleda kao dinamički jezik, a istovremeno je 100% statički Omogućava upotrebu novih (efikasnijih) idioma i načina programiranja Bolja čitljivost (podložno polemikama) All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 11 Enterprise Scala Adoption Tips 1 Books to read Scala for the Impatient, Programming in Scala, Beginning Scala , Atomic Scala Akka in Action, Akka Concurrency Play for Scala, Play for Java Twitter users to follow: @odersky, @viktorklang, @jboner , @_JamesWard, @jsuereth, @rit, @ScalaIDE, @djspiewak, @milessabin, @typesafe, @hseeberger , @ jamie_allen, @psnively, @StefanZeiger, @rolandkuhn, @etorreborre, @jroper, @honzam399, … Blogs to read http://letitcrash.com/ http://www.cakesolutions.net/teamblogs http://www.jamesward.com/ http://blog.evilmonkeylabs.com/ http://jsuereth.com/archive.html http://debasishg.blogspot.com/ http://typesafe.com/blog Dio materijala preuzet s http://typesafe.com/blog/enterprise -scala-adoption-roadmap-55683 All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 12 Scala Frameworks REST Spray.io – http://spray.io Play2 Mini - https://github.com/typesafehub/play2-mini Socko – http://sockoweb.org / Unfiltered – http://unfiltered.databinder.net/Unfiltered.html Data Access Slick – http://slick.typesafe.com Anorm – http://www.playframework.com/documentation/2.1.1/ScalaAnorm Web Framework Scalatra – http://www.scalatra.org Lift – http://liftweb.net/ Remote Procedure Call Finagle – http://twitter.github.io/finagle / Build Tool sbt – http://www.scala-sbt.org/ All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 13 Sustavtav zza nadzor poslovnih procesa u informacijskom sustavu Omogućuje bolji pregled poslovnog procesa Što je BALP? Na koji način se to ostvaruje? Prikupljanjem poslovnih događaja (eng. event ) u stvarnom vremenu Prikazom podataka u stvarnom vremenu (eng. real -time ) Kontrolna ploča (eng. dashboard ) KPI – Ključni pokazatelji uspješnosti (eng. key performance indicator ) Izradom dinamičkih statističkih izvještaja PDF XLS Reakcijom na predefinirane poslovne događaje Slanje dodatnih obavijesti Pokretanje dodatnih akcija All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 14 Povećanje profitabilnosti Real -time uvid u operativne poslove Poboljšanje operativne efikasnosti Zašto BALP? Dinamički odgovor na poslovne događaje Povećanje zadovoljstva korisnika Proaktivne obavijesti na poslovne događaje Pristup relevantnim podacima za rješenje problema Povećanje produktivnosti Nadzor ukupne produktivnosti Nadzor produktivnosti pojedinog zaposlenika Prepoznavanje visoko produktivnih zaposlenika Kontrolna ploča Radije pogledajte ŠTO SE DOGAĐA nego pročitajte ŠTO SE DOGODILO All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 15 Arhitektura sustava 1 push event HIBIS push event dashboard event event (web browser ) Moneta event event pull event event HYPOnet external systems save event storage vent generators (apps) BALP All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 16 Arhitektura 2 Dashboard push event Interface Storage event save event Rule engine load data Batch server Reporting engine All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr pull events 16.6.2013. 21:33 17 Integracija s drugim sustavima PROTOKOLI Web servis REST/HTTP TCP/IP* File Email MQ Twitter AMQP – Advanced Message Queueing Protocol … All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 18 Primjeri poruka Referent Naziv aktivnosti Vrijeme početka aktivnosti UserActivity( Matija Capan,Provjera pe čata i potpisa ,1364984874695 ) Activity ( EventHead( 192.168.200.10#1#4bff6492-f025-4aad-940e-91dd7ef53dae, Jedinstveni identifikator aktivnosti null, Jedinstveni identifikator krovne aktivnosti [opcionalno Ana Ani ć, Referent Unos HUB1 naloga , Naziv aktivnosti null Naziv krovne aktivnosti [opcionalno] ), 1364984874769 , Vrijeme početka aktivnosti 34928 , Trajanje aktivnosti null, Opis [opcionalno] null, Organizacijska jedinica [opcionalno] null, Šifra valute [opcionalno] null, Iznos [opcionalno] null Šifra transakcije [opcionalno] ) All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 19 Životni ciklus poslovnog događaja 1 PRIMJER Referent „Hrvoje Horvat” u aplikaciji otvara ekran za unos HUB3 naloga „Aplikacija” automatski šalje poruku UserActivity prema BALP serveru UserActivity(Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695 ) Ovaj podatak je unutar kratkog vremena vidljiv preko BALP web aplikacije All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 20 Životni ciklus poslovnog događaja 2 PRIMJER Referent „Hrvoje Horvat” nakon određenog vremena završi s unosom HUB3 naloga „Aplikacija” automatski šalje poruku Activity prema BALP serveru s vremenom koliko je referentu bilo potrebno za unos naloga Activity (Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695 , 34928) ***pojednostavljeni format Ovaj podatak utječe na podatke koji se prikazuju u statistici platnih naloga (HUB1, HUB3) Ovaj podatak utječe na grafikon „Raspodjela naloga” All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 21 DEMO 16.6.2 16.6.2 23 Powered by All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 24 All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 25 Hvala na pozornosti!.
Recommended publications
  • A Web-Based System for Executing Interactive Scala Programming Exercises in Browser
    Aalto University School of Science Master's Programme in Information Networks Anastasia Lipi¨ainen A Web-Based System for Executing Interactive Scala Programming Exercises in Browser Master's Thesis Espoo, November 27, 2016 Supervisor: Professor Lauri Malmi Advisors: Otto Sepp¨al¨aD.Sc. (Tech) Juha Sorva D.Sc. (Tech) Aalto University School of Science ABSTRACT OF Master's Programme in Information Networks MASTER'S THESIS Author: Anastasia Lipi¨ainen Title: A Web-Based System for Executing Interactive Scala Program- ming Exercises in Browser Date: November 27, 2016 Pages: vii + 120 Major: Information Networks Code: SCI3047 Supervisor: Professor Lauri Malmi Advisors: Otto Sepp¨al¨aD.Sc. (Tech), Juha Sorva D.Sc. (Tech) When first introduced to programming, students are often assigned to write mere code snippets that only produce a numerical output with the help of a simple control structure. The students are left unimpressed as they fail to see the real utility that learning to program holds. By assigning students real-world programming problems, such as games and media computation exercises, we showcase real applications for programming. At the beginning of their first programming course, students are already used to working with modern, interactive, and visually impressive interfaces. However, they cannot be expected to produce the graphical user interfaces required to take the full advantage of media content. Previously, we have distributed interfaces implemented with Swing as program code for local execution; the practise does not allow the easy updating of assignment related code and achieving a usable interface is tiresome with the use of Swing. To address the issues of the current process, we developed a web-based system that allows the execution of interactive Scala programs in a browser.
    [Show full text]
  • The Lift Approach
    Science of Computer Programming 102 (2015) 1–19 Contents lists available at ScienceDirect Science of Computer Programming www.elsevier.com/locate/scico Analyzing best practices on Web development frameworks: The lift approach ∗ María del Pilar Salas-Zárate a, Giner Alor-Hernández b, , Rafael Valencia-García a, Lisbeth Rodríguez-Mazahua b, Alejandro Rodríguez-González c,e, José Luis López Cuadrado d a Departamento de Informática y Sistemas, Universidad de Murcia, Campus de Espinardo, 30100 Murcia, Spain b Division of Research and Postgraduate Studies, Instituto Tecnológico de Orizaba, Mexico c Bioinformatics at Centre for Plant Biotechnology and Genomics, Polytechnic University of Madrid, Spain d Computer Science Department, Universidad Carlos III de Madrid, Spain e Department of Engineering, School of Engineering, Universidad Internacional de La Rioja, Spain a r t i c l e i n f oa b s t r a c t Article history: Choosing the Web framework that best fits the requirements is not an easy task for Received 1 October 2013 developers. Several frameworks now exist to develop Web applications, such as Struts, Received in revised form 18 December 2014 JSF, Ruby on Rails, Grails, CakePHP, Django, and Catalyst. However, Lift is a relatively new Accepted 19 December 2014 framework that emerged in 2007 for the Scala programming language and which promises Available online 5 January 2015 a great number of advantages and additional features. Companies such as Siemens© and Keywords: IBM®, as well as social networks such as Twitter® and Foursquare®, have now begun to Best practices develop their applications by using Scala and Lift. Best practices are activities, technical Lift or important issues identified by users in a specific context, and which have rendered Scala excellent service and are expected to achieve similar results in similar situations.
    [Show full text]
  • N2O Most Powerful Erlang Web Framework @5HT How Do I Shot Web? Micro REST
    N2O Most Powerful Erlang Web Framework @5HT How do I shot Web? Micro REST Python Flask Ruby Sinatra PHP Silex Scala Scalatra Concurrency in Mind Ruby Celluloid PHP React PHP phpDaemon Java+Scala Play SPA Angular Meteor Ember Chaplin Brunch D3 Knockout React Backbone jQuery Functional DSL Scala Lift Erlang Nitrogen Haskell BlazeHtml OCaml Ocsigen F# WebSharper Clojure Laser Enlive Compojure Ring Hiccup ClojureScript Om http-kit aleph noir JVM Elixir Weber def action(_, conn) do {:render, [project: "simpleTodo"], []} end def add([body: body], _conn) do {:json, [response: "ok"], [{"Content-Type", "application/json"}]} end def wrong(_, _) do {:redirect, "/"} end Erlang ChicagoBoss DTL Engine Database Connectivity PubSub Ruby on Rails like Nitrogen N2O ~2000 LOC One Process per Connection Binary Page Construction Zero Bridge GProc Pub/Sub WebSockets, KVS DB Tuned Layers static and dynamic Routing Path cleaned Query Parser Session Cookies stored in ETS cached DTL Templates optimized Nitrogen DSL rendering HTML Elements binaries JavaScript Actions deferred Layers Performance components TCP conn (K) PHP5 FCGI Simple Script <?php ?> 5 Nitrogen No session, No DSL, DTL 1 N2O Sessions, DSL, DTL 7 N2O Sessions, no DSL, DTL 10 N2O No Sessions, no DSL, DTL 13 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Measuring Tools requests pages/sec latency (ms) wrk 15K 13628.86 18.88 ab 10K 5464.63 190 httperf 10K 3623.50 200 siege 1K 884.51 430 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Decreasing Latency From 2x to ∞ Deliver HTML ASAP Deferred JavaScript delivery after WebSocket connection established <script> TransitionProcess = '<0.7780.5>' </script> socket.send(["N2O",TransitionProcess]).
    [Show full text]
  • Full-Graph-Limited-Mvn-Deps.Pdf
    org.jboss.cl.jboss-cl-2.0.9.GA org.jboss.cl.jboss-cl-parent-2.2.1.GA org.jboss.cl.jboss-classloader-N/A org.jboss.cl.jboss-classloading-vfs-N/A org.jboss.cl.jboss-classloading-N/A org.primefaces.extensions.master-pom-1.0.0 org.sonatype.mercury.mercury-mp3-1.0-alpha-1 org.primefaces.themes.overcast-${primefaces.theme.version} org.primefaces.themes.dark-hive-${primefaces.theme.version}org.primefaces.themes.humanity-${primefaces.theme.version}org.primefaces.themes.le-frog-${primefaces.theme.version} org.primefaces.themes.south-street-${primefaces.theme.version}org.primefaces.themes.sunny-${primefaces.theme.version}org.primefaces.themes.hot-sneaks-${primefaces.theme.version}org.primefaces.themes.cupertino-${primefaces.theme.version} org.primefaces.themes.trontastic-${primefaces.theme.version}org.primefaces.themes.excite-bike-${primefaces.theme.version} org.apache.maven.mercury.mercury-external-N/A org.primefaces.themes.redmond-${primefaces.theme.version}org.primefaces.themes.afterwork-${primefaces.theme.version}org.primefaces.themes.glass-x-${primefaces.theme.version}org.primefaces.themes.home-${primefaces.theme.version} org.primefaces.themes.black-tie-${primefaces.theme.version}org.primefaces.themes.eggplant-${primefaces.theme.version} org.apache.maven.mercury.mercury-repo-remote-m2-N/Aorg.apache.maven.mercury.mercury-md-sat-N/A org.primefaces.themes.ui-lightness-${primefaces.theme.version}org.primefaces.themes.midnight-${primefaces.theme.version}org.primefaces.themes.mint-choc-${primefaces.theme.version}org.primefaces.themes.afternoon-${primefaces.theme.version}org.primefaces.themes.dot-luv-${primefaces.theme.version}org.primefaces.themes.smoothness-${primefaces.theme.version}org.primefaces.themes.swanky-purse-${primefaces.theme.version}
    [Show full text]
  • A Sampling of NYC Python My Startups And
    A Startup Junkie's Journey to Python via Java, Ruby and Scala Andy Parsons @andyparsons Happiness Speed Magic Readability My Startups and Their Stacks What Are We Building? And in general... Happify is an angel-funded consumer Github Project Relative % destination “life game.” BUSINESS WEB API SERVICES DATABASES TEAM SIZE HTML5, Mobile, and Facebook front ends. Pro Photo ASP.NET C#, Perl SQL Server 12 Currently in stealth mode. Scala Ruby 4% 60% Hyperlocal PostgreSQL, How do they “Stack” Up? RoR Sinatra Scala 10 Content MongoDB (Geolocation ) Score is based on: Ereading and Python Book RoR Scalatra Scala/Java MongoDB 8 Green = 2 Recommende Yellow = 1 23 36% r Red = 0 Python/ PostgreSQL, Life Gaming Flask Python 3 Gevent MongoDB 18 Building Happify: Comparing Language Options BASICS 8 PACKAGING / FRAMEWORKS SPEED CONCURRENCY TOOLING DEPLOYMENT TESTING DEPENDENCIES / LIBS Growing collection Healthy, lots of Fast enough Achieved through Process.fork Gems Capistrano Mature of libs, but weak in RUBY choice NLP Early for native Scala Ruby Python Still early. IDE’s Complex. JARs, SBT, Ivy, Fast! Real concurrency, Akka ? Maturing scala libraries, rely SCALA weak. Maven. on Java interop A Sampling of NYC Python Achieved through Healthy, lots of Massive collection Fast enough Eggs Fabric Mature Gratuitous Perf Charts! PYTHON multiprocessing choice of libraries FLAME BAIT HAPPINESS / COMMUNITY / PROPENSITY FOR MATURITY / READABILITY HIRING PRODUCTIVITY ACTIVITY MAGIC STABILITY OK. Emphasis Metaprogramming is sometimes Stable, but much Tough. Medium RUBY metaprogramming can High Huge and active abused. RoR is too magical and catchup remaining for learning curve, present challenges. many imitated its philosophy gems to support 1.9 hard to find seasoned devs Too many ways to accomplish Language spec Very difficult.
    [Show full text]
  • Introducing Scalatra by Ivan Porto Carrero, Ross A
    1 Introducing Scalatra By Ivan Porto Carrero, Ross A. Baker, Dave Hrycyszyn, Stefan Ollinger, and Jared Armstrong, authors of Scalatra in Action Scalatra is an HTTP micro-framework, written in the up-and-coming new language, Scala. Scalatra is used by LinkedIn, the BBC, the Guardian newspaper, games website IGN, social identity provider JanRain, the Wordnik online dictionary, and the British government’s new flagship website. It’s fast, battle-tested, and in production. This article introduces you to the simplicity of Scalatra micro-framework. Add a small configuration file, download, and run one command, and you’ve got a running web application. There’s a lot more to Scalatra, but the following simple code expresses its essence. You define a route, which is a combination of an HTTP verb (get), and a URL route matcher (/hello), which executes a block of code on the server and returns the result (in this case, the string Hello world!). Listing 1 Scalatra in Action package com.example.yourapp import org.scalatra._ class HelloWorld extends ScalatraFilter { get(“/hello”) { “Hello there!” } } If you put this code up on http://yourwebsite.org, you could type http://yourwebsite.org/hello into your browser and see the text “Hello world!” in return. And yet...it’s so small. What do all of these big organizations see in it? The interesting thing is, there isn’t a single answer to that question because Scalatra is a micro-framework. Micro-frameworks vs. full-stack frameworks A micro-framework is a very small framework or way of organizing your code, with only minimal helper functions built in.
    [Show full text]
  • PRINT:OAS:Remain API Studio - Remain Software
    5/18/2020 PRINT:OAS:Remain API Studio - Remain Software PRINT:OAS:Remain API Studio From Remain Software Welcome to the index of the Remain API Studio. OpenAPI Specification (formerly Swagger Specification) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API. This editor helps you easily create and edit your OpenAPI file. Contents 1 Import OpenAPI 2 Export OpenAPI 3 Schemas 3.1 Add New Schema 3.2 Update Schema 3.2.1 Update Schema Name/Description 3.2.2 Update Schema Properties/Attributes 3.3 Delete Schema 3.4 Import Schema 3.5 Extract Schema From JSON Sample/Payload 3.6 Composite Schema 3.6.1 Add Sub-Schema 3.6.2 Change Sub-Schema (composite) Keyword 3.7 Schema Properties 3.8 Additional Properties 4 Paths 4.1 Add Path 4.2 Edit Path 4.3 Delete Path 4.4 Duplicate Path 4.5 Copy|Cut Operation 4.6 Parameters 4.7 Add global parameter 4.8 Add a path/operation parameter 4.9 Edit/Delete parameter 5 Operations 5.1 Add Operation 5.2 Update Operation 5.3 Delete Operation 6 Request Bodies 6.1 Add A Global Request Body 6.2 Add An Operation Request Body 6.3 Add Request Body Content Type 6.4 Delete Request Body Content Type 6.5 Add Schema to Request Body Content Type 6.6 Update Schema to Request Body Content Type 6.7 Delete Request Body 6.8 Update Request Body 7 Responses 7.1 Add new Response 7.2 Delete a Response 7.3 Update Response 7.4 Add new Response Content Type 7.5 Update/Delete Response Content Type 7.6 Update Response Content Type Schema 8 Tags 8.1 Add Global Tag 8.2 Add Operation Tag 8.3 Update Tag
    [Show full text]
  • DAN COLLINS Software Architect, Engineer, Leader
    DAN COLLINS Software Architect, Engineer, Leader EXPERIENCE MOST PROUD OF Grit & Perseverance Sr. Principal Engineer Jan 2018 - Ongoing Uptake Technologies, Inc to tackle hard problems and deliver ¬ Proposed and then built Uptake’s next generation industrial AI and data science platform as a SaaS offering using the working software combined experience of over four years in industrial IOT, data science, and data engineering ¬ Created the Uptake Data Service, codenamed Escher, as the reimagined backbone for data persistence with features like strong Building Teams schema enforcement and consistency for data scientists as well as dynamic schema creation and metadata storage for that share a vision, understand the application development architecture, and excel together ¬ Established the Enterprise Architecture Group with the Chief Architect and Sr. Principals to codify best practices and technology Exciting Users patterns along with building a community of practice for software architecture with results made possible by systems ¬ Drove the effort to modernize the Uptake tech stack resulting in the adoption of Kubernetes for runtime orchestration, I’ve designed Spinnaker for continuous deployment, and Apache Flink for streaming data processing ¬ Improved Uptake’s adoption of cloud native services including AWS Lambda, RDS, Glue, Athena, S3, and SNS to lower overall TECHNOLOGY cost to serve and decrease time to market Architectures ¬ Standardized engineering documentation across over 90 repositories and 8 different teams for better knowledge
    [Show full text]
  • {Dоwnlоаd/Rеаd PDF Bооk} Leo : a Ghost Story
    LEO : A GHOST STORY Author: Mac Barnett Number of Pages: 52 pages Published Date: 25 Aug 2015 Publisher: CHRONICLE BOOKS Publication Country: San Francisco, United States Language: English ISBN: 9781452131566 DOWNLOAD: LEO : A GHOST STORY Leo : A Ghost Story PDF Book Using his own strong voice and trademark narrative style, he teaches by example-his own and his students'-how writers can be true to themselves and vivid on the page to pull readers in and keep them reading. At the same time, however, Lewis remains best known for his work with Dean Martin, and in that sense, he remains overshadowed by his more famous partner. A welcome addition to the library of helpful reference material for written English. Packed with helpful information, this book encourages you to confidently get the most out of the new features of Windows 7. Lumpkin's bed, where we will excavate for pizza crusts and coinage, as well as cell phones dating back to the early paleo-iPhone era. Rather, it is offered as a guide, based on a pilot-tested approach. The therapeutic value of electro-magnetism has never been fairly tried - 4it has been resorted to as a universal remedy capable of effecting impossibilities when all other remedies have failed; from this its want of success has arisen, and consequently it has not been duly appreciated. Water and Energy Threats and Opportunities, 2e creates an awareness of the important couplings between water and energy. Buy our stuff. Global random optimization algorithms appear in this book, such as the Simulated Annealing in chapter 6 and the Genetic Algorithms p- posedinchapters3and9.
    [Show full text]
  • Scalatra in Action
    MANNING Dave Hrycyszyn Stefan Ollinger Ross A. Baker www.allitebooks.com Scalatra in Action DAVE HRYCYSZYN STEFAN OLLINGER ROSS A. BAKER MANNING Shelter Island www.allitebooks.com For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: [email protected] ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Karen Miller 20 Baldwin Road Technical development editor:
    [Show full text]
  • The Ultimate Microframework Smackdown
    The ultimate microframework smackdown Jaap Coomans @JaapCoomans Who is that guy? @JaapCoomans Microframeworks Microservices framework? Microservices framework? What is a microframework? Wikipedia “A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.” Author: Dmitry Abramov https://pixabay.com/illustrations/elephant-pink-sitting-smile-cute-3516211/ Author: Dmitry Abramov https://pixabay.com/illustrations/panic-big-eyes-crooked-arm-1393619/ Timeline minijax Dropwizard jawn light4j gemini 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 Redkale The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5. Gemini 21. Micronaut 6. GreenLightning 22. Minijax 7. Hammock 23. Ninja Framework 8. Helidon SE 24. Pippo 9. Helidon MP 25. Play Framework 10. http4k 26. Proteus 11. Javalin 27. Quarkus 12. Jawn 28. Rapidoid 13. jlhttp 29. Ratpack 14. Jodd 30. Redkale 15. Jooby 31. Scalatra 16. khttp 32. Spark The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5. Gemini 21. Micronaut 6. GreenLightning 22. Minijax 7. Hammock 23. Ninja Framework 8. Helidon SE 24. Pippo 9. Helidon MP 25. Play Framework 10. http4k 26. Proteus 11. Javalin 27. Quarkus 12. Jawn 28. Rapidoid 13. jlhttp | GPL and custom hosting platform 29. Ratpack 14. Jodd 30. Redkale 15. Jooby 31. Scalatra 16. khttp 32. Spark The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5.
    [Show full text]
  • Scalatra in Action
    MANNING SAMPLE CHAPTER Dave Hrycyszyn Stefan Ollinger Ross A. Baker Scalatra in Action by Dave Hrycyszyn Stefan Ollinger and Ross A. Baker Chapter 12 Copyright 2016 Manning Publications brief contents PART 1INTRODUCTION TO SCALATRA.............................................1 1 ■ Introduction 3 2 ■ A taste of Scalatra 12 3 ■ Routing 28 4 ■ Working with user input 49 PART 2COMMON DEVELOPMENT TASKS .........................................71 5 ■ Handling JSON 73 6 ■ Handling files 94 7 ■ Server-side templating 104 8 ■ Testing 116 9 ■ Configuration, build, and deployment 130 10 ■ Working with a database 154 PART 3ADVANCED TOPICS ........................................................169 11 ■ Authentication 171 12 ■ Asynchronous programming 197 13 ■ Creating a RESTful JSON API with Swagger 211 iii Asynchronous programming This chapter covers ■ Scala, servlets, and mutable state ■ Using Futures for asynchronous programming ■ Using Akka Actors with Scalatra ■ Big data in Scalatra with Spark Scala makes multicore, distributed, and asynchronous programming easier. Its focus on immutability, as well as associated libraries such as Akka, lower the concep­ tual burdens of concurrency management by making it easier to reason about your code. Why is this important? Most other languages still rely on old-style concurrency management tools like locks and threads, which can be extremely difficult to use because they are non­ deterministic. That is, you can’t necessarily reproduce your threading bugs when you want, because they can be the result of multiple threads interacting in strange and horrifying ways. Older concurrency models were designed in an age of non-networked, single- core microcomputers, when building distributed systems was the exception rather than the norm. We now live in a very different world.
    [Show full text]