Go systems programming master Linux and Unix system level programming with Go

Learning the new system’s programming language for all Unix-type systems About This Book Learn how to write system's level code in Golang, similar to Unix/Linux systems code Ramp up in Go quickly Deep dive into Goroutines and Go concurrency to be able to take advantage of Go server-level constr...

Descripción completa

Detalles Bibliográficos
Otros Autores: Tsoukalos, Mihalis, author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, England : Packt 2017.
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630748906719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright
  • Credits
  • About the Author
  • About the Reviewer
  • www.PacktPub.com
  • Customer Feedback
  • Table of Contents
  • Preface
  • Chapter 1: Getting Started with Go and Unix Systems Programming
  • The structure of the book
  • What is systems programming?
  • Learning systems programming
  • About Go
  • Getting ready for Go
  • Two useful Go tools
  • Advantages and disadvantages of Go
  • The various states of a Unix process
  • Exercises
  • Summary
  • Chapter 2: Writing Programs in Go
  • Compiling Go code
  • Checking the size of the executable file
  • Go environment variables
  • Using command-line arguments
  • Finding the sum of the command-line arguments
  • User input and output
  • Getting user input
  • Printing output
  • Go functions
  • Naming the return values of a Go function
  • Anonymous functions
  • Illustrating Go functions
  • The defer keyword
  • Using pointer variables in functions
  • Go data structures
  • Arrays
  • Slices
  • Maps
  • Converting an array into a map
  • Structures
  • Interfaces
  • Creating random numbers
  • Exercises
  • Summary
  • Chapter 3: Advanced Go Features
  • Error handling in Go
  • Functions can return error variables
  • About error logging
  • The addCLA.go program revisited
  • Pattern matching and regular expressions
  • Printing all the values from a given column of a line
  • Creating summaries
  • Finding the number of occurrences
  • Find and replace
  • Reflection
  • Calling C code from Go
  • Unsafe code
  • Comparing Go to other programming languages
  • Analysing software
  • Using the strace(1) command-line utility
  • The DTrace utility
  • Disabling System Integrity Protection on macOS
  • Unreachable code
  • Avoiding common Go mistakes
  • Exercises
  • Summary
  • Chapter 4: Go Packages, Algorithms, and Data Structures
  • About algorithms
  • The Big O notation
  • Sorting algorithms.
  • The sort.Slice() function
  • Linked lists in Go
  • Trees in Go
  • Developing a hash table in Go
  • About Go packages
  • Using standard Go packages
  • Creating your own packages
  • Private variables and functions
  • The init() function
  • Using your own Go packages
  • Using external Go packages
  • The go clean command
  • Garbage collection
  • Your environment
  • Go gets updated frequently!
  • Exercises
  • Summary
  • Chapter 5: Files and Directories
  • Useful Go packages
  • Command-line arguments revisited!
  • The flag package
  • Dealing with directories
  • About symbolic links
  • Implementing the pwd(1) command
  • Developing the which(1) utility in Go
  • Printing the permission bits of a file or directory
  • Dealing with files in Go
  • Deleting a file
  • Renaming and moving files
  • Developing find(1) in Go
  • Traversing a directory tree
  • Visiting directories only!
  • The first version of find(1)
  • Adding some command-line options
  • Excluding filenames from the find output
  • Excluding a file extension from the find output
  • Using regular expressions
  • Creating a copy of a directory structure
  • Exercises
  • Summary
  • Chapter 6: File Input and Output
  • About file input and output
  • Byte slices
  • About binary files
  • Useful I/O packages in Go
  • The io package
  • The bufio package
  • File I/O operations
  • Writing to files using fmt.Fprintf()
  • About io.Writer and io.Reader
  • Finding out the third column of a line
  • Copying files in Go
  • There is more than one way to copy a file!
  • Copying text files
  • Using io.Copy
  • Reading a file all at once!
  • An even better file copy program
  • Benchmarking file copying operations
  • Developing wc(1) in Go
  • Counting words
  • The wc.go code!
  • Comparing the performance of wc.go and wc(1)
  • Reading a text file character by character
  • Doing some file editing!
  • Interprocess communication.
  • Sparse files in Go
  • Reading and writing data records
  • File locking in Go
  • A simplified Go version of the dd utility
  • Exercises
  • Summary
  • Chapter 7: Working with System Files
  • Which files are considered system files?
  • Logging in Go
  • Putting data at the end of a file
  • Altering existing data
  • About log files
  • About logging
  • Logging facilities
  • Logging levels
  • The syslog Go package
  • Processing log files
  • File permissions revisited
  • Changing file permissions
  • Finding other kinds of information about files
  • More pattern matching examples
  • A simple pattern matching example
  • An advanced example of pattern matching
  • Renaming multiple files using regular expressions
  • Searching files revisited
  • Finding the user ID of a user
  • Finding all the groups a user belongs to
  • Finding files that belong or do not belong to a given user
  • Finding files based on their permissions
  • Date and time operations
  • Playing with dates and times
  • Reformatting the times in a log file
  • Rotating log files
  • Creating good random passwords
  • Another Go update
  • Exercises
  • Summary
  • Chapter 8: Processes and Signals
  • About Unix processes and signals
  • Process management
  • About Unix signals
  • Unix signals in Go
  • The kill(1) command
  • A simple signal handler in Go
  • Handling three different signals!
  • Catching every signal that can be handled
  • Rotating log files revisited!
  • Improving file copying
  • Plotting data
  • Unix pipes in Go
  • Reading from standard input
  • Sending data to standard output
  • Implementing cat(1) in Go
  • The plotIP.go utility revisited
  • Unix sockets in Go
  • RPC in Go
  • Programming a Unix shell in Go
  • Yet another minor Go update
  • Exercises
  • Summary
  • Chapter 9: Goroutines - Basic Features
  • About goroutines
  • Concurrency and parallelism
  • The sync Go packages.
  • A simple example
  • Creating multiple goroutines
  • Waiting for goroutines to finish their jobs
  • Creating a dynamic number of goroutines
  • About channels
  • Writing to a channel
  • Reading from a channel
  • Explaining h1s.go
  • Pipelines
  • A better version of wc.go
  • Calculating totals
  • Doing some benchmarking
  • Exercises
  • Summary
  • Chapter 10: Goroutines - Advanced Features
  • The Go scheduler
  • The sync Go package
  • The select keyword
  • Signal channels
  • Buffered channels
  • About timeouts
  • An alternative way to implement timeouts
  • Channels of channels
  • Nil channels
  • Shared memory
  • Using sync.Mutex
  • Using sync.RWMutex
  • The dWC.go utility revisited
  • Using a buffered channel
  • Using shared memory
  • More benchmarking
  • Detecting race conditions
  • About GOMAXPROCS
  • Exercises
  • Summary
  • Chapter 11: Writing Web Applications in Go
  • What is a web application?
  • About the net/http Go package
  • Developing web clients
  • Fetching a single URL
  • Setting a timeout
  • Developing better web clients
  • A small web server
  • The http.ServeMux type
  • Using http.ServeMux
  • The html/template package
  • About JSON
  • Saving JSON data
  • Parsing JSON data
  • Using Marshal() and Unmarshal()
  • Using MongoDB
  • Basic MongoDB administration
  • Using the MongoDB Go driver
  • Creating a Go application that displays MongoDB data
  • Creating an application that displays MySQL data
  • A handy command-line utility
  • Exercises
  • Summary
  • Chapter 12: Network Programming
  • About network programming
  • About TCP/IP
  • About TCP
  • The TCP handshake!
  • About UDP and IP
  • About Wireshark and tshark
  • About the netcat utility
  • The net Go standard package
  • Unix sockets revisited
  • A Unix socket server
  • A Unix socket client
  • Performing DNS lookups
  • Using an IP address as input
  • Using a host name as input.
  • Getting NS records for a domain
  • Developing a simple TCP server
  • Developing a simple TCP client
  • Using other functions for the TCP server
  • Using alternative functions for the TCP client
  • Developing a simple UDP server
  • Developing a simple UDP client
  • A concurrent TCP server
  • Remote procedure call (RPC)
  • An RPC server
  • An RPC client
  • Exercises
  • Summary
  • Index.