• Stars
    star
    320
  • Rank 126,274 (Top 3 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hands-On Reactive Programming in Spring 5, published by Packt

Hands-On Reactive Programming in Spring 5

Hands-On Reactive Programming in Spring 5

This is the code repository for Hands-On Reactive Programming in Spring 5, published by Packt.

Build cloud-ready, reactive systems with Spring 5 and Project Reactor

What is this book about?

  • Discover the difference between a reactive system and reactive programming
  • Explore the benefits of a reactive system and understand its applications
  • Get to grips with using reactive programming in Spring 5
  • Gain an understanding of Project Reactor
  • Build a reactive system using Spring 5, Spring WebFlux, and Project Reactor
  • Explore reactive data access with Spring Data
  • Create a highly efficient reactive microservices with Spring Cloud
  • Test, monitor, and release reactive applications

If you feel this book is for you, get your copy today!

Authors

Oleh Dokuka

Oleh Dokuka is an experienced software engineer, Pivotal Champion, and one of the top contributors to Project Reactor and Spring Framework. He knows the internals of both frameworks very well and advocates reactive programming with Project Reactor on a daily basis. Along with that, the author applies Spring Framework and Project Reactor in software development, so he knows how to build reactive systems using these technologies.

Igor Lozynskyi

Igor Lozynskyi is a senior Java developer who primarily focuses on developing reliable, scalable, and blazingly fast systems. He has over seven years of experience with the Java platform. He is passionate about interesting and dynamic projects both in life and in software development.

General requirements

All code samples should run on any operating system where the appropriate Java runs. Some examples require Docker Engine.

OS requirements

There is no hard requirement for OS. However, examples use JDK8 and later, Docker Engine 18.06 and later, and also download native executables (embedded MongoDB). Consequently, for successful execution, all software described above should work on your OS.

Tested operation systems: MacOS High Sierra, Windows 10, Ubuntu Linux 16.04 LTS.

Java

All examples were developed with JDK8 and tested to be compatible with JDK11. Because of the significant changes introduced by JDK11, some examples may display warnings or run only on JDK8.

To install JDK8, please refer to these instructions: http://jdk.java.net/8

To install JDK11, please refer to these instructions: http://jdk.java.net/11

Docker

A couple of examples assume running Docker Engine to start supporting services (MongoDB, PostgreSQL, Prometheus, etc.)

Only Chapter 10's example requires running Docker commands manually, other examples do automatic service provisioning.

To install Docker Engine on your PC, please follow the official instructions: https://docs.docker.com/install

IDE

All examples use Gradle build system, so they are not IDE dependent. However, we recommend using a free version of IntelliJ IDEA for a seamless exploration of the provided examples. We recommend using the latest version of IntelliJ IDEA as it has better support for JDK11.

The Community Edition of IntelliJ IDEA may be downloaded here: https://www.jetbrains.com/idea/download

Many examples use a handy the Lombok library (https://projectlombok.org/) which require annotation processing. Consequently, please install IntelliJ Lombok plugin (https://github.com/mplushnikov/lombok-intellij-plugin).

IDEA Lombok plugin

Also, please enable annotation processing in IDE (Preferences -> Build, Execution, Deployment -> Compiler -> Annotation Processors -> Check Enable annotation processing).

IDEA annotation processing

When IDE is installed and configured, you may open this project as Gradle project. Then, please define JDK for the project (File -> Project Structure -> Project Settings -> Project -> Project SDK).

Then, rebuild all modules of the project (Build -> Rebuild Project). Now, you may explore and run all examples.

Disclaimer

All code in this repository is for demonstration purposes and, consequently, often oversimplified.

Chapter 1: Why Reactive Spring?

Contains the following examples:

  • ChapterFirstApplication - a web application that demonstrates the blocking communication approach.
  • imperative.OrdersService - a console application that demonstrates the synchronous, blocking approach for components interactions.
  • callbacks.OrdersService - a console application that demonstrates the callback-based approach for components interactions.
  • futures.OrdersService - a console application that demonstrates the Future based approach for components interactions.
  • completion_stage.OrdersService - a console application that demonstrates the CompletionStage based approach for components interactions.

Chapter 2: Reactive Programming in Spring - Basic Concepts

  • Module unit tests show examples of the Observer pattern and reactive workflows with RxJava 1.
  • pub_sub_app.Application - a web application that demonstrates how Spring 4 enables asynchronous execution with ApplicationEventPublisher and SSE.
  • rx_app.Application - a web application that demonstrates how Spring 4 enables asynchronous execution with RxJava 1.x and SSE.
  • rx_app_no_logs.Application - a web application that demonstrates how Spring 4 enables asynchronous execution with RxJava 1.x and SSE.

Chapter 3: Reactive Streams - the New Streams' Standard

  • conversion_problem - a web application (with corresponding unit tests) demonstrates how to convert different types of futures.
  • async.vs.reactive - unit tests compares the asynchronous and reactive approached (Publisher as CompletableFuture, CompletableFuture as Publisher).
  • news-service.NewsServiceApp - the console application that demonstrates custom implementation of Reactive Streams' interfaces (Publisher, Subscriber, Processor). Works with JDK8, fail with JDK11.
  • news-service unit tests show how to test custom implementation of Reactive Streams with TCK. Tests are based on TestNG. Works with JDK8, may fail with JDK11. Tests may run long!
  • jdk9 - a console application that demonstrates how to adapt reactive-streams types to Java Flow API. This application requires at least JDK9.
  • push.vs.pull - classes and unit tests that demonstrate different approaches for data retrieval (pull, batched pull, push, push-pull).
  • rxjava-reactivestreams-ratpack.LogServiceApplication - a web application that demonstrates the power of Reactive Streams for integration of reactive libraries (Spring, Ratpack, RxJava, etc.).
  • vert.x.VertxDemoApp - a web application that demonstrates how Verte.x integrates with Reactive Streams.

Chapter 4: Project Reactor - the Foundation for Reactive Apps

  • Module unit tests show examples of reactive workflows with Project Reactor.

Chapter 5: Going Reactive with Spring Boot 2

  • Module unit tests show how Spring's reactive adapters work.
  • Chapter5ReactiveApplication - web reactive application that simulates IoT sensor (SSE, MongoDB write, MongoDB read).

Chapter 6: WebFlux Async Non-blocking Communication

  • functional - a few examples of usage of function web approach with new WebFlux module mentioned in section Purely functional web with WebFlux
  • webclient - an example of the WebClient usage mentioned in section Non-blocking cross-service communication with WebClient. In addition, another example mentioned in this section is located in the following package: org.rpis5.chapters.chapter_06.functional.password.verification.client
  • websocket - new reactive WebSocket API examples mentioned in section Reactive WebSocket API
  • sse - an example of Server-sent events usage in section Reactive SSE as a lightweight replacement for WebSockets

Chapter 7: Reactive Database Access

  • section-01-jdbc - a blocking console application that demonstrates Jdbi library, Spring JDBC and Spring Data JDBC (runs embedded H2 database).
  • section-02-jpa - a blocking console application that demonstrates Spring Data JPA (runs embedded H2 database).
  • section-03-mongo - a blocking console application that demonstrates Spring Data MongoDB (runs embedded MongoDB)
  • section-04-rx-mongo - a reactive console application that demonstrates reactive Spring Data MongoDB (runs embedded MongoDB).
  • section-05-rx-mongo-tx - unit tests that demonstrate how reactive transactions work with MongoDB 4 (runs MongoDB cluster in Docker).
  • section-06-r2dbc - a reactive console application that demonstrates how Spring Data JDBC and R2DBC work together (runs PostgreSQL in docker).
  • section-07-rx-webflux - a reactive web application (SSE) that simulates simple chat application (embedded MongoDB).
  • section-08-rx-dbs - code samples that demonstrate different types of reactive repositories (MongoDB, Cassandra, Couchbase, Redis).
  • section-09-rx-sync - a console application that demonstrates how to wrap blocking JPA repository into reactive repository (runs embedded H2 database).
  • section-10-rxjava2-jdbc - a console application that demonstrates how to use the rxjava2-jdbc library for reactive communication over blocking JDBC (runs embedded H2 database).

Chapter 8: Scaling Up with Cloud Streams

Cloud-Stream

this is an example of Chat application that is fully decoupled and ready to be run in the cloud. The following is a steps required to prepare this sample:

Preparing MongoDB

The Project uses MongoDB as the primary database for all data's querying and storing.

There are two available options in order to install MongoDB:

(Option 1) Dockerized MongoDB

Note, that option requires the essential understanding of the [Docker's CLI] (https://docs.docker.com/engine/reference/commandline/cli/)

Before starting that option, please ensure that Docker (has already been installed on the local machine).

It is necessary to execute the following command in the terminal to run MongoDB image in the Docker container:

docker run --name test-mongo -p 27017:27017 -d mongo
(Option 2) Local Community MongoDB Server

There is an option to install MongoDB locally. All required information related to the local installation is available by the following link.

Preparing RabbitMQ

The Project uses RabbitMQ as a message broker for this example

There are two available options in order to install RabbitMQ:

(Option 1) Dockerized RabbitMQ

Note, that option requires the essential understanding of the [Docker's CLI] (https://docs.docker.com/engine/reference/commandline/cli/)

Before starting that option, please ensure that Docker (has already been installed on the local machine).

It is necessary to execute the following command in the terminal to run MongoDB image in the Docker container:

docker run --name test-rabbit -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 25672:25672 -d rabbitmq
(Option 2) Local Community MongoDB Server

There is an option to install RabbitMQ locally. All required information related to the local installation is available by the following link.

Preparing the Environment

To properly run the Project the proper environment variables / YAML properties are required. The following is the list of available Spring Framework properties/environment variables:

Spring property Environment variable Description
gitter.auth.token GITTER_TOKEN Personal Access Token which can be used to access the Gitter API.
gitter.api.endpoint - The address of public Gitter REST API endpoint. The default value is https://api.gitter.im/. To learn more, see following API docs
gitter.api.version - The version of the Gitter REST API. The default value is v1.
gitter.api.messages-resource GITTER_ROOM Path to the Messages Resource. Note, in environment variable case, it is unnecessary defining the whole path since it has already been defined as the following: rooms/${GITTER_ROOM}/chatMessages. To get created Gitter room id, please see API docs.
gitter.stream.endpoint - The address of public Gitter Streaming API endpoint. The default value is https://stream.gitter.im/. To learn more, see following API docs
gitter.stream.version - The version of the Gitter Streaming API. The default value is v1.
gitter.stream.messages-resource GITTER_ROOM Path to the Messages Resource. Note, in environment variable case, it is unnecessary defining the whole path since it has already been defined as the following: rooms/${GITTER_ROOM}/chatMessages. To get created gitter room id, please see API docs.

Chapter 9: Testing the Reactive Application

  • DemoApplication - a web application used for testing with a reactive test framework.
  • Module unit tests demonstrate how to verify reactive applications with WebTestClient (including security).

Chapter 10: And, Finally, Release It!

This sample depicts a reactive application based on Spring Boot 2 and WebFlux with all required infrastructure for operational monitoring.

Prometheus pulls metrics, Grafana has a simple dashboard with app metrics, Zipkin gathers traces.

Application structure

  • Application itself:
    • Reactive Web App (with Spring Boot Admin)
    • Database: MongoDB (used only for health checks)
  • Monitoring infrastructure:
    • Prometheus
    • Grafana
    • Zipkin

Start or stop infrastructural services

To start services run the following command:

docker-compose -f chapter-10/docker/docker-compose.yml up -d

To stop services run the following command:

docker-compose -f chapter-10/docker/docker-compose.yml down

Start Spring Boot application

To start the application, run class org.rpis5.chapters.chapter_10.Chapter10CloudReadyApplication.

Accessing application components

Feedback

Your feedback is important for us, so do not hesitate creating issues if some examples do not work with your environment.

Also, please star of fork this repository if you find it useful!

Thanks!

Download a free PDF

If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.

https://packt.link/free-ebook/9781787284951

More Repositories

1

Deep-Reinforcement-Learning-Hands-On

Hands-on Deep Reinforcement Learning, published by Packt
Python
2,750
star
2

The-Kaggle-Book

Code Repository for The Kaggle Book, Published by Packt Publishing
Jupyter Notebook
2,056
star
3

Advanced-Deep-Learning-with-Keras

Advanced Deep Learning with Keras, published by Packt
Python
1,700
star
4

Hands-On-Machine-Learning-for-Algorithmic-Trading

Hands-On Machine Learning for Algorithmic Trading, published by Packt
Jupyter Notebook
1,280
star
5

Node.js-Design-Patterns-Third-Edition

Node.js Design Patterns Third Edition, published by Packt
JavaScript
1,162
star
6

Machine-Learning-for-Algorithmic-Trading-Second-Edition_Original

Machine Learning for Algorithmic Trading, Second Edition - published by Packt
Jupyter Notebook
1,083
star
7

Deep-Learning-with-Keras

Code repository for Deep Learning with Keras published by Packt
Jupyter Notebook
1,047
star
8

Deep-Reinforcement-Learning-Hands-On-Second-Edition

Deep-Reinforcement-Learning-Hands-On-Second-Edition, published by Packt
Jupyter Notebook
1,028
star
9

Learning-JavaScript-Data-Structures-and-Algorithms-Third-Edition

Learning JavaScript Data Structures and Algorithms (Third Edition), published by Packt
JavaScript
1,007
star
10

40-Algorithms-Every-Programmer-Should-Know

40 Algorithms Every Programmer Should Know, published by Packt
Python
910
star
11

Learn-CUDA-Programming

Learn CUDA Programming, published by Packt
Cuda
849
star
12

3D-Graphics-Rendering-Cookbook

3D Graphics Rendering Cookbook, published by Packt.
C++
847
star
13

Vulkan-Cookbook

Code repository for Vulkan Cookbook by Packt
C++
784
star
14

Linux-Kernel-Programming

Linux Kernel Programming, published by Packt
Makefile
759
star
15

Learn-Algorithmic-Trading

Learn Algorithmic Trading, Published by Packt
Python
730
star
16

Django-4-by-example

Django 4 by example (4th Edition) published by Packt
Python
718
star
17

Django-3-by-Example

Django 3 by Example (3rd Edition) published by Packt
Python
710
star
18

Node.js_Design_Patterns_Second_Edition_Code

Code repository for Node.js Design Patterns Second Edition, published by Packt
JavaScript
706
star
19

Python-for-Finance-Cookbook

Python for Finance Cookbook, published by Packt
Jupyter Notebook
665
star
20

Pandas-Cookbook

Pandas Cookbook, published by Packt
Jupyter Notebook
623
star
21

Hands-on-Exploratory-Data-Analysis-with-Python

Hands-on Exploratory Data Analysis with Python, published by Packt
Jupyter Notebook
619
star
22

Java-Coding-Problems

Java Coding Problems, published by Packt
Java
615
star
23

Hands-On-Domain-Driven-Design-with-.NET-Core

Hands-On Domain-Driven Design with .NET Core, published by Packt
C#
602
star
24

Modern-Computer-Vision-with-PyTorch

Modern Computer Vision with PyTorch, published by Packt
Jupyter Notebook
585
star
25

Hands-On-GPU-Accelerated-Computer-Vision-with-OpenCV-and-CUDA

Hands-On GPU Accelerated Computer Vision with OpenCV and CUDA, published by Packt
C++
584
star
26

Django-2-by-Example

Django 2 by Example (2nd Edition) published by Packt
Python
567
star
27

Learning-OpenCV-4-Computer-Vision-with-Python-Third-Edition

Learning OpenCV 4 Computer Vision with Python 3 – Third Edition, published by Packt
Python
562
star
28

Learn-Data-Structures-and-Algorithms-with-Golang

Learn Data Structures and Algorithms with Golang, published by Packt
Go
557
star
29

Causal-Inference-and-Discovery-in-Python

Causal Inference and Discovery in Python by Packt Publishing
Jupyter Notebook
555
star
30

TensorFlow-Machine-Learning-Cookbook

Code repository for TensorFlow Machine Learning Cookbook by Packt
Python
552
star
31

Transformers-for-Natural-Language-Processing

Transformers for Natural Language Processing, published by Packt
Jupyter Notebook
539
star
32

Data-Engineering-with-Python

Data Engineering with Python, published by Packt
Python
537
star
33

Mastering-OpenCV-4-Third-Edition

Mastering OpenCV 4, Third Edition, published by Packt publishing
Assembly
520
star
34

Cpp17-STL-Cookbook

Code files by Packt
C++
514
star
35

Clean-Code-in-Python

Clean Code in Python, published by Packt
Python
513
star
36

Hands-On-Graph-Neural-Networks-Using-Python

Hands-On Graph Neural Networks Using Python, published by Packt
Jupyter Notebook
500
star
37

Getting-Started-with-TensorFlow

Getting Started with TensorFlow, published by Packt
Python
491
star
38

Hands-On-Data-Structures-and-Algorithms-with-Rust

Hands-On Data Structures and Algorithms with Rust, published by Packt
Rust
486
star
39

Linux-Device-Drivers-Development

Linux Device Drivers Development, published by Packt
C
482
star
40

Python-Machine-Learning-Second-Edition

Python Machine Learning - Second Edition, published by Packt
Jupyter Notebook
477
star
41

Mastering-Graphics-Programming-with-Vulkan

C++
469
star
42

Learn-LLVM-12

Learn LLVM 12, published by Packt
C++
465
star
43

Mastering-Embedded-Linux-Programming-Third-Edition

Mastering Embedded Linux Programming Third Edition, published by Packt
C
460
star
44

Python-3-Object-Oriented-Programming-Third-Edition

Python 3 Object-Oriented Programming – Third Edition, published by Packt
Python
453
star
45

Hands-On-Microservices-with-Spring-Boot-and-Spring-Cloud

Hands-On Microservices with Spring Boot and Spring Cloud, published by Packt
Java
452
star
46

Software-Architecture-with-Cpp

Software Architecture with C++, published by Packt
C++
447
star
47

Full-Stack-React-Projects-Second-Edition

Full-Stack React Projects - Second Edition, published by Packt
JavaScript
445
star
48

Python-Feature-Engineering-Cookbook

Python Feature Engineering Cookbook, published by Packt
Jupyter Notebook
442
star
49

Deep-Learning-with-PyTorch

Deep Learning with PyTorch, published by Packt
Jupyter Notebook
437
star
50

Interpretable-Machine-Learning-with-Python

Interpretable Machine Learning with Python, published by Packt
Jupyter Notebook
423
star
51

Python-Machine-Learning-Cookbook

Code files for Python-Machine-Learning-Cookbook
Python
416
star
52

Modern-CMake-for-Cpp

Modern CMake for C++, published by Packt
Dockerfile
411
star
53

Artificial-Intelligence-with-Python

Code repository for Artificial Intelligence with Python, published by Packt
Python
408
star
54

Hands-On-Software-Engineering-with-Golang

Hands-On Software Engineering with Golang, published by Packt
Go
406
star
55

Mastering-Python-for-Finance-Second-Edition

Mastering Python for Finance – Second Edition, published by Packt
Jupyter Notebook
394
star
56

Go-Design-Patterns

This is the code repository for the book, Go Design Patterns, published by Packt
Go
394
star
57

Mastering-Python-Design-Patterns-Second-Edition

Mastering-Python-Design-Patterns-Second-Edition, published by Packt
Python
389
star
58

Mastering-Go-Second-Edition

Mastering Go Second Edition, published by Packt
Go
384
star
59

Hands-On-Machine-Learning-with-CPP

Hands-On Machine Learning with C++, published by Packt
C++
377
star
60

Learn-OpenCV-4-By-Building-Projects-Second-Edition

Learn OpenCV 4 By Building Projects, Second Edition, published by Packt
C++
367
star
61

Hands-On-Computer-Vision-with-TensorFlow-2

Hands-On Computer Vision with TensorFlow 2, published by Packt
Jupyter Notebook
366
star
62

Mastering-OpenCV-4-with-Python

Mastering OpenCV 4 with Python, published by Packt
Python
362
star
63

Hands-On-Microservices-with-Rust

Hands-On Microservices with Rust 2018, published by Packt
Rust
354
star
64

Hands-On-Design-Patterns-with-CPP

Hands-On Design Patterns with C++, published by Packt
C
353
star
65

Python-Machine-Learning-Blueprints

Code repository for Python Machine Learning Blueprints, published by Packt
Jupyter Notebook
349
star
66

Practical-Time-Series-Analysis

Practical Time-Series Analysis, published by Packt
Jupyter Notebook
345
star
67

Machine-Learning-for-Algorithmic-Trading-Bots-with-Python

Jupyter Notebook
337
star
68

Machine-Learning-for-Finance

Machine Learning for Finance, published by Packt
Jupyter Notebook
336
star
69

Effective-Python-Penetration-Testing

Effective Python Penetration Testing by Packt Publishing
Python
334
star
70

Python-Algorithmic-Trading-Cookbook

Python Algorithmic Trading Cookbook, published by Packt
Jupyter Notebook
325
star
71

Hands-On-Intelligent-Agents-with-OpenAI-Gym

Code for Hands On Intelligent Agents with OpenAI Gym book to get started and learn to build deep reinforcement learning agents using PyTorch
Python
322
star
72

Python-Artificial-Intelligence-Projects-for-Beginners

Python Artificial Intelligence Projects for Beginners, published by Packt
Jupyter Notebook
321
star
73

Micro-State-Management-with-React-Hooks

Micro State Management with React Hooks, published by Packt
TypeScript
317
star
74

The-Azure-Cloud-Native-Architecture-Mapbook

The Azure Cloud Native Architecture Mapbook, published by Packt
C#
315
star
75

Godot-Game-Engine-Projects

Godot Game Engine Projects, published by Packt
GDScript
315
star
76

Modern-Time-Series-Forecasting-with-Python

Modern Time Series Forecasting with Python, published by Packt
Jupyter Notebook
315
star
77

Python-GUI-Programming-Cookbook-Second-Edition

Python GUI Programming Cookbook, Second Edition, published by Packt
Python
312
star
78

Computer-Vision-with-OpenCV-3-and-Qt5

Computer Vision with OpenCV 3 and Qt5, published by Packt
C++
305
star
79

Learning-PySpark

Code repository for Learning PySpark by Packt
Jupyter Notebook
303
star
80

Deep-Learning-with-TensorFlow-2-and-Keras

Deep Learning with TensorFlow 2 and Keras, published by Packt
Jupyter Notebook
302
star
81

PyTorch-Computer-Vision-Cookbook

PyTorch Computer Vision Cookbook, Published by Packt
Jupyter Notebook
302
star
82

Mastering-Machine-Learning-for-Penetration-Testing

Mastering Machine Learning for Penetration Testing, published by Packt
Python
298
star
83

Learning-Vuejs-2

This is the code repository for Learning Vue.js 2, published by Packt.
JavaScript
296
star
84

Building-Data-Science-Applications-with-FastAPI

Building Data Science Applications with FastAPI, Published by Packt
Python
295
star
85

OpenGL-4-Shading-Language-Cookbook-Third-Edition

OpenGL 4 Shading Language Cookbook - Third Edition, published by Packt
C
295
star
86

Mastering-Transformers

Mastering Transformers, published by Packt
Jupyter Notebook
289
star
87

Neural-Network-Projects-with-Python

Neural Network Projects with Python, Published by Packt
Python
289
star
88

Bioinformatics-with-Python-Cookbook-Second-Edition

Bioinformatics with Python Cookbook Second Edition, published by Packt
OpenEdge ABL
287
star
89

Hands-on-Python-for-Finance

Hands-on Python for Finance published by Packt.
Jupyter Notebook
284
star
90

Full-Stack-React-TypeScript-and-Node

Full-Stack React, TypeScript, and Node, published by Packt
TypeScript
282
star
91

CPP-Data-Structures-and-Algorithms

C++ Data Structures and Algorithms, published by Packt
C++
279
star
92

The-Modern-Cpp-Challenge

The Modern C++ Challenge, published by Packt
C
276
star
93

The-Complete-Coding-Interview-Guide-in-Java

The Complete Coding Interview Guide in Java, published by Packt
Java
272
star
94

Pandas-Cookbook-Second-Edition

Pandas Cookbook Second Edition, published by Packt
Jupyter Notebook
271
star
95

Full-Stack-React-Projects

Full-Stack React Projects, published by Packt
JavaScript
271
star
96

Machine-Learning-for-Cybersecurity-Cookbook

Machine Learning for Cybersecurity Cookbook, published by Packt
Jupyter Notebook
270
star
97

Natural-Language-Processing-with-TensorFlow

Natural Language Processing with TensorFlow, published by Packt
Jupyter Notebook
269
star
98

50-Projects-In-50-Days---HTML-CSS-JavaScript

50 Projects In 50 Days - HTML, CSS & JavaScript, by Packt Publishing
CSS
269
star
99

Hands-On-Image-Processing-with-Python

Jupyter Notebook
264
star
100

Mastering-Distributed-Tracing

"Mastering Distributed Tracing" by Yuri Shkuro, published by Packt
Java
264
star