Git Product home page Git Product logo

functional-effects's Introduction

Functional Effects

For years, actors have allowed Scala application developers to build async, concurrent, and distributed applications that are resilient, reactive, and scalable. Increasingly, however, functional effect systems like can are being used to create these types of applications, with greater type-safety, more flexibility, and increased testability.

In this course, Scala developers will learn how to solve complex problems in asynchronous, concurrent programming using the ZIO library. Upon completion of the course, attendees will be confident using the ZIO library (and similar libraries, like Monix or Cats IO) to build modern high-performance, asynchronous, concurrent applications that don't block threads, don't deadlock, and don't leak resources; and which follow best practices regarding error management, thread management, and dependency management.

Who Should Attend

Scala developers who would like to write modern async, concurrent, and distributed applications that are robust, testable, and powerful.

Prerequisites

Good working knowledge of Scala, including familiarity with immutable data, pattern matching, and basic recursion. Developers who have attended Functional Scala Foundations will be well-prepared for this course.

Topics

  • Laziness of functional effects
  • Escaping callback hell
  • Using the compiler to help deal with errors
  • Separating recoverable errors from non-recoverable errors
  • Separating blocking code from async code
  • Safe handling of async and concurrent resources
  • Efficient concurrency and parallelism
  • Shared concurrent state without visibility issues, deadlocks, or race conditions
  • Testing functional effects
  • Retrying and repetition
  • Resource-safe, effectful, async streaming
  • Test-friendly dependency management

Usage

From the UI

  1. Download the repository as a zip archive.
  2. Unzip the archive, usually by double-clicking on the file.
  3. Configure the source code files in the IDE or text editor of your choice.

From the Command Line

  1. Open up a terminal window.

  2. Clone the repository.

    git clone https://github.com/jdegoes/functional-effects
  3. Launch project provided sbt.

    cd functional-effects; ./sbt
  4. Enter continuous compilation mode.

    sbt:functional-effects> ~ test:compile

Hint: You might get the following error when starting sbt:

[error] typesafe-ivy-releases: unable to get resource for com.geirsson#sbt-scalafmt;1.6.0-RC4: res=https://repo.typesafe.com/typesafe/ivy-releases/com.geirsson/sbt-scalafmt/1.6.0-RC4/jars/sbt-scalafmt.jar: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targe

It's because you have an outdated Java version, missing some newer certificates. Install a newer Java version, e.g. using Jabba, a Java version manager. See Stackoverflow for more details about the error.

Legal

Copyright© 2019-2021 John A. De Goes. All rights reserved.

functional-effects's People

Contributors

fsvehla avatar geggo98 avatar jdegoes avatar phderome avatar triggernz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.