Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Modern Systems Programming with S cala Native
About the Pragmatic Bookshelf
Table of Contents
Early Praise for Modern Systems Prog ramming with Scala Native
Acknowledgments
Foreword
Preface
Who This Book Is For
What’s In This Book
Working with the Code
Online Resources
Systems Programming in the Twenty-First Century
What Is Systems Programming?
Moving Toward Modern Systems Programming
Why Scala Native?
What Makes Scala Native Different
Part 1: Foundations of Systems Programming
Chapter 1: The Basics: Input and Output
Working with Output
Working with Input
Case Study: Google NGrams
What’s Next
Chapter 2: Arrays, Structs, and the Heap
The Stack and the Heap
Structs, Arrays, and Sorting
Sorting an Array
Aggregation at Scale
What’s Next
Chapter 3: Writing a Simple HTTP Client
Defining Terms
Working with TCP
Making a TCP Connection
Testing Network Code with Netcat
Introducing HTTP
Implementing HTTP
Testing Our Code
What’s Next
Chapter 4: Managing Processes: A Deconstructed Shell
Running a Program
Introducing exec
What Went Wrong?
Introducing Concurrency with fork() and wait( )
Supervising Multiple Processes
Working with Pipes
What’s Next
Chapter 5: Writing a Server the Old-Fashioned Way
Understanding How a Server Works
Building Our Server
Creating a Minimum Viable Server
Handling HTTP
Performance Testing with Gatling
What’s Next
Part 2: Modern Systems Programming
Chapter 6: Doing I/O Right, with Event Loops
Blocking and Polling
Introducing libuv
Working with Asynchronous TCP Sockets
Building an Asynchronous HTTP Server
What’s Next
Chapter 7: Functions and Futures: Patterns for Distributed Services
Designing an Asynchronous API
Introducing Futures
Implementing Futures
Implementing an ExecutionContext
Futures and Promises
Introducing libcurl
Asynchronous curl
What’s Next
Chapter 8: Streaming with Pipes and Files
Looking at Streams, Files, and Descriptors
Streaming Pipe Input in libuv
Streaming File Input in libuv
Streaming File Output in libuv
Stream Processors
What’s Next
Chapter 9: Durability: An Embedded Key-Value Database with LMDB
Introducing Embedded Storage
Defining LMDB Concepts
Working with the LMDB API
Serialization and Deserialization with JS ON
Putting LMDB on the Web
What’s Next
Chapter 10: Services: Encapsulation and Abstraction for Modern Designs
Services and Distributed Systems
Parsing, Revisited
Moving from Server to Service
Implementing an Idiomatic Service DSL
Integrations and Ecosystems
The Way Forward
Appendix 1: Setting Up the Environment
Running Scala Native on Mac OS
Why Use Containers?
Installing and Configuring Docker
Running Scala Native in Docker
You May Be Interested In…
← Prev
Back
Next →
← Prev
Back
Next →