Search icon CANCEL
Subscription
0
Cart icon
Cart
Close icon
You have no products in your basket yet
Save more on your purchases!
Savings automatically calculated. No voucher code required
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Go Programming Blueprints

You're reading from  Go Programming Blueprints

Product type Book
Published in Jan 2015
Publisher Packt
ISBN-13 9781783988020
Pages 274 pages
Edition 1st Edition
Languages
Author (1):
Mat Ryer Mat Ryer
Profile icon Mat Ryer
Toc

Table of Contents (17) Chapters close

Go Programming Blueprints
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
1. Chat Application with Web Sockets 2. Adding Authentication 3. Three Ways to Implement Profile Pictures 4. Command-line Tools to Find Domain Names 5. Building Distributed Systems and Working with Flexible Data 6. Exposing Data and Functionality through a RESTful Data Web Service API 7. Random Recommendations Web Service 8. Filesystem Backup Good Practices for a Stable Go Environment Index

Index

A

  • API key
    • about / API key
  • API program
    • design goals / A simple main function to serve our API
    • testing, curl used / Testing our API using curl
    • running / Running the solution
  • append built-in function / Reading from MongoDB
  • Application Programming Interface (API) / Writing a package using TDD
  • Archiver interface
    • about / Obvious interfaces?
  • arguments
    • parsing / Parsing arguments
    • paths, listing / Listing the paths
    • string representations / String representations for your own types
    • paths, adding / Adding paths
    • paths, removing / Removing paths
  • authentication providers
    • informing about app / Tell the authentication providers about your app
  • authentication wrapper handler
    • creating / Handlers all the way down
  • authorization, with Twitter
    • about / Authorization with Twitter
    • connection, extracting / Extracting the connection
    • environment variables, reading / Reading environment variables
  • Available program
    • about / Five simple programs, Available
    • code file / Available
    • building / Available
    • running / Available
  • avatar picture, uploading
    • uploading / Uploading an avatar picture
    • user identification / User identification
    • upload form / An upload form
    • upload, handling / Handling the upload
    • images, serving / Serving the images
    • avatar implementation, for local files / The Avatar implementation for local files
    • different file types, supporting / Supporting different file types
    • code, refactoring / Refactoring and optimizing our code
    • code, optimizing / Refactoring and optimizing our code
  • avatars, from authentication server
    • implementing / Avatars from the authentication server
    • avatar URL, obtaining / Getting the avatar URL
    • avatar URL, transmitting / Transmitting the avatar URL
    • adding, to user interface / Adding the avatar to the user interface
  • avatar URL process, Gravatar
    • abstracting / Abstracting the avatar URL process
    • authentication service / The authentication service and avatar's implementation
    • avatar implementation / The authentication service and avatar's implementation
    • implementation, using / Using an implementation
    • Gravatar implementation / Gravatar implementation

B

  • backup package
    • writing / Backup package
    • Archiver interface / Obvious interfaces?
    • ZIP, implementing / Implementing ZIP
    • filesystem modification, checking / Has the filesystem changed?
    • changes, checking for / Checking for changes and initiating a backup
    • backup, initiating / Checking for changes and initiating a backup
    • hardcoding / Hardcoding is OK for a short while
  • Big Hugh Thesaurus
    • URL / Synonyms
  • Bootstrap
    • about / Making a pretty social sign-in page

C

  • chat application
    • authentication wrapper handler, creating / Handlers all the way down
    • social sign-in page, creating / Making a pretty social sign-in page
    • endpoints, with dynamic paths / Endpoints with dynamic paths
    • logging out / Logging out
    • updating / Making things prettier
  • chat room
    • modeling / Modeling a chat room and clients on the server, Modeling a room
    • client, modeling / Modeling the client
    • concurrency programming, idiomatic Go used / Concurrency programming using idiomatic Go
    • turning, into HTTP handler / Turning a room into an HTTP handler
    • helper functions, using for removing complexity / Use helper functions to remove complexity
    • creating / Creating and using rooms
    • using / Creating and using rooms
  • code, avatar implementation
    • refactoring / Refactoring and optimizing our code
    • optimizing / Refactoring and optimizing our code
    • concrete types, replacing with interfaces / Replacing concrete types with interfaces
    • interfaces, changing in test-driven way / Changing interfaces in a test-driven way
    • existing implementations, fixing / Fixing existing implementations
    • global variables, versus fields / Global variables versus fields
    • new design, implementing / Implementing our new design
    • tiding up / Tidying up and testing
    • testing / Tidying up and testing
  • code, tracing
    • about / Tracing code to get a look under the hood
    • packages, writing with TDD / Writing a package using TDD
    • trace package, using / Using our new trace package
    • making optional / Making tracing optional
    • package APIs, cleaning / Clean package APIs
  • command-line programs
    • Sprinkle / Five simple programs
    • Domainify / Five simple programs
    • Coolify / Five simple programs
    • Synonyms / Five simple programs
    • Available / Five simple programs
    • combining / Composing all five programs
    • super program, building / One program to rule them all
  • command-line tools
    • pipe design / Pipe design for command-line tools
  • Coolify program
    • about / Five simple programs, Coolify
    • code file / Coolify
    • building / Coolify
    • running / Coolify
  • counter program
    • about / System design, Counting votes
    • database, connecting to / Connecting to the database
    • messages, consuming in NSQ / Consuming messages in NSQ
    • database, updating / Keeping the database updated
    • Ctrl+C, responding to / Responding to Ctrl + C
    • running / Running our solution
  • cross-browser resource sharing
    • about / Cross-browser resource sharing
  • curl
    • about / Testing our API using curl
    • used, for testing API / Testing our API using curl

D

  • daemon backup tool
    • about / The daemon backup tool
    • duplicated structures / Duplicated structures
    • data, caching / Caching data
    • infinite loops / Infinite loops
    • filedb records, updating / Updating filedb records
  • data
    • sharing, between handlers / Sharing data between handlers
  • database session
    • about / Database session
  • DisposaBoy
    • URL / Sublime Text 3
  • domainfinder super program
    • building / One program to rule them all
  • Domainify program
    • about / Five simple programs, Domainify
    • building / Domainify
    • running / Domainify
    • top-level domains, making configurable / Exercise – making top-level domains configurable
  • DRY (Don't Repeat Yourself)
    • about / Database session

E

  • endpoints, handling
    • about / Handling endpoints
    • tags, used for adding metadata to structs / Using tags to add metadata to structs
    • many operations, with single handler / Many operations with a single handler
    • polls, reading / Reading polls
    • poll, creating / Creating a poll
    • poll, deleting / Deleting a poll
    • CORS support / CORS support
  • enumerators
    • about / Enumerators in Go
    • checklist, for writing / Enumerators in Go
    • writing / Enumerators in Go
    • test-driven enumerator / Test-driven enumerator
  • environment
    • installing / Installing the environment
    • NSQ / NSQ
    • MongoDB / MongoDB
    • starting / Starting the environment
  • ErrNoAvatarURL error / Abstracting the avatar URL process
  • external logging in
    • implementing / Implementing external logging in
    • logging in / Logging in
    • response from provider, handling / Handling the response from the provider
    • user data, presenting / Presenting the user data
    • messages, augmenting with additional data / Augmenting messages with additional data

F

  • filepath.Walk function
    • about / Implementing ZIP
  • filesystem backup
    • solution design / Solution design
    • project structure / Project structure
    • backup package, writing / Backup package
    • user command-line tool / The user command-line tool
    • daemon backup tool / The daemon backup tool
    • testing / Testing our solution

G

  • GetAvatarURL method / Abstracting the avatar URL process
  • Go
    • about / Installing Go
    • installing / Installing Go
    • C tools, installing / Installing the C tools
    • downloading, from source / Downloading and building Go from the source
    • building, from source / Downloading and building Go from the source
    • configuring / Configuring Go
    • GOPATH / Getting GOPATH right
  • goauth2 package
    • URL / Open source OAuth2 packages
  • go build command / Properly building and executing Go programs
  • go fmt command
    • about / Go tools
  • goimports tool
    • about / Go tools
  • gomniauth
    • URL / Open source OAuth2 packages
  • Google Places API
    • URL / Project overview
    • querying / Querying the Google Places API
  • GOPATH
    • about / Getting GOPATH right
  • Go programs
    • building / Properly building and executing Go programs
    • executing / Properly building and executing Go programs
  • Go standard library source code
    • URL / Templates
  • Go tools
    • about / Go tools
  • go vet tool
    • about / Go tools
  • Gravatar
    • implementing / Implementing Gravatar
    • avatar URL process, abstracting / Abstracting the avatar URL process

H

  • handlePolls function / Handling endpoints
  • handler functions
    • wrapping / Wrapping handler functions
    • API key / API key
    • database session / Database session
    • per request variables / Per request variables
    • cross-browser resource sharing / Cross-browser resource sharing
  • handler function wrappers
    • used, for writing main function for API / Using handler function wrappers
    • withCORS / Using handler function wrappers
    • withVars / Using handler function wrappers
    • withData / Using handler function wrappers
    • withAPIKey / Using handler function wrappers
    • handlePolls / Using handler function wrappers
  • HTML client
    • building / Building an HTML and JavaScript chat client
  • http.HandleFunc function
    • about / A simple web server
  • http.Handler example / Abstracting the avatar URL process
  • http.Request object
    • about / Understanding the request
  • HTTP methods / RESTful API design

I

  • implementations, of profile pictures
    • combining / Combining all three implementations
  • interfaces
    • about / Interfaces
    • implementing / Implementing the interface
  • is package / Test-driven enumerator

J

  • JavaScript chat client
    • building / Building an HTML and JavaScript chat client

M

  • main function, for API
    • writing / A simple main function to serve our API
    • writing, handler function wrappers used / Using handler function wrappers
  • mgo
    • URL / MongoDB driver for Go
  • MinGW project
    • URL / Installing the C tools
  • MongoDB
    • about / System design, MongoDB
    • URL / MongoDB
    • installing / MongoDB
    • installation, validating / MongoDB
    • driver for Go / MongoDB driver for Go

N

  • NewConsumer function / Consuming messages in NSQ
  • NewTemplateHandler function / Doing things once
  • NSQ
    • about / System design, NSQ
    • installing / NSQ
    • installation, validating / NSQ
    • driver for Go / NSQ driver for Go
    • twittervotes program, publishing to / Publishing to NSQ
  • nsqd program
    • about / NSQ
  • nsqlookupd program
    • about / NSQ

O

  • OAuth2
    • about / OAuth2
    • open source packages / Open source OAuth2 packages

P

  • per request variables
    • about / Per request variables
  • pipe design, for command-line tools
    • about / Pipe design for command-line tools
  • profile pictures, implementing
    • avatars, from authentication server / Avatars from the authentication server
  • public views, of Go structs
    • controlling / Public views of Go structs

R

  • random recommendations, generating
    • about / Generating random recommendations
    • Google Places API key / Google Places API key
    • enumerators, in Go / Enumerators in Go
    • Google Places API, querying / Querying the Google Places API
    • recommendations, building / Building recommendations
    • handlers, using query parameters / Handlers that use query parameters
    • CORS / CORS
  • random recommendations web service
    • project overview / Project overview
    • project design specifics / Project design specifics
    • data, representing in code / Representing data in code
    • public views of Go structs, controlling / Public views of Go structs
    • random recommendations, generating / Generating random recommendations
    • testing / Testing our API
    • web application / Web application
  • receive-only signal channel / Signal channels
  • red-green testing
    • about / Red-green testing
  • request
    • about / Understanding the request
  • responding
    • about / Responding
  • RESTful API design
    • about / RESTful API design
    • design concepts / RESTful API design

S

  • send-only signal channel
    • about / Reading from Twitter
  • signal channels
    • about / Signal channels
    • using / Signal channels
  • social sign-in page, chat application
    • creating / Making a pretty social sign-in page
  • Sprinkle program
    • about / Five simple programs, Sprinkle
    • working / Sprinkle
    • building / Sprinkle
    • running / Sprinkle
    • configurable transformations / Exercise – configurable transformations
  • strings
    • URL / Domainify
  • Sublime Text 3
    • about / Sublime Text 3
    • URL / Sublime Text 3
  • Synonyms program
    • about / Five simple programs, Synonyms
    • environment variables, using for configuration / Using environment variables for configuration
    • web API, consuming / Consuming a web API
    • domain suggestions / Getting domain suggestions
  • system design
    • about / System design
    • database design / Database design

T

  • templateHandler structure / Using your own handlers
  • templates
    • compiling / Doing things once
    • templateHandler type, implementing / Using your own handlers
    • using / Getting more out of templates
  • Test-driven Development (TDD)
    • about / Tracing code to get a look under the hood, Implementing ZIP
  • Test-driven Development (TDD) approach / The authentication service and avatar's implementation
  • tests, on save
    • cleaning up / Cleaning up, building, and running tests on save
    • building / Cleaning up, building, and running tests on save
    • running / Cleaning up, building, and running tests on save
  • text/template package
    • URL / Getting more out of templates
  • Top-level Domain (TLD) / Domainify
  • Twitter
    • about / System design
  • twittervotes program
    • about / System design, Votes from Twitter
    • authorization / Authorization with Twitter
    • MongoDB, reading from / Reading from MongoDB
    • Twitter, reading from / Reading from Twitter
    • signal channels / Signal channels
    • publishing, to NSQ / Publishing to NSQ
    • starting / Gracefully starting and stopping
    • stopping / Gracefully starting and stopping
    • testing / Testing

U

  • unexported types
    • returning / Unexported types being returned to users
  • unit tests
    • about / Unit tests
  • user command-line tool
    • building / The user command-line tool
    • data persisting / Persisting small data
    • arguments, parsing / Parsing arguments
    • using / Using our new tool

W

  • web
    • about / System design
  • web client, consuming API service
    • about / A web client that consumes the API
    • index page, showing poll list / An index page showing a list of polls
    • new poll, creating / A page to create a new poll
    • page, for viewing poll details / A page to show details of the poll
  • web server
    • about / A simple web server
    • templates / Templates
  • WHOIS specification
    • URL / Available

Z

  • ZIP
    • implementing / Implementing ZIP
lock icon The rest of the chapter is locked
arrow left Previous Section
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}