{"product_id":"practical-go-9781119773818","title":"Practical Go","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eYOUR PRACTICAL, HANDS-ON GUIDE TO WRITING APPLICATIONS USING GO\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGoogle announced the Go programming language to the public in 2009, with the version 1.0 release announced in 2012. Since its announcement to the community, and the compatibility promise of the 1.0 release, the Go language has been used to write scalable and high-impact software programs ranging from command-line applications and critical infrastructure tools to large-scale distributed systems. It's speed, simplicity, and reliability make it a perfect choice for developers working in various domains.\u003c\/p\u003e \u003cp\u003eIn \u003ci\u003ePractical Go - Building Scalable Network + Non-Network Applications\u003c\/i\u003e, you will learn to use the Go programming language to build robust, production-ready software applications. You will learn just enough to building command line tools and applications communicating over HTTP and gRPC.\u003c\/p\u003e \u003cp\u003eThis practical guide will cover:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eWriting command line applications\u003c\/li\u003e \u003cli\u003eWriting a HTTP \u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eIntroduction xvii\u003c\/p\u003e \u003cp\u003eGetting Started xxi\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Writing Command-Line Applications 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eYour First Application 1\u003c\/p\u003e \u003cp\u003eWriting Unit Tests 8\u003c\/p\u003e \u003cp\u003eUsing the Flag Package 14\u003c\/p\u003e \u003cp\u003eTesting the Parsing Logic 20\u003c\/p\u003e \u003cp\u003eImproving the User Interface 22\u003c\/p\u003e \u003cp\u003eRemoving Duplicate Error Messages 23\u003c\/p\u003e \u003cp\u003eCustomizing Usage Message 24\u003c\/p\u003e \u003cp\u003eAccept Name via a Positional Argument 25\u003c\/p\u003e \u003cp\u003eUpdating the Unit Tests 28\u003c\/p\u003e \u003cp\u003eSummary 32\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Advanced Command-Line Applications 33\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eImplementing Sub-commands 33\u003c\/p\u003e \u003cp\u003eAn Architecture for Sub-command-Driven Applications 37\u003c\/p\u003e \u003cp\u003eTesting the Main Package 43\u003c\/p\u003e \u003cp\u003eTesting the Cmd Package 45\u003c\/p\u003e \u003cp\u003eMaking Your Applications Robust 47\u003c\/p\u003e \u003cp\u003eUser Input with Deadlines 48\u003c\/p\u003e \u003cp\u003eHandling User Signals 52\u003c\/p\u003e \u003cp\u003eSummary 56\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Writing HTTP Clients 57\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDownloading Data 57\u003c\/p\u003e \u003cp\u003eTesting the Data Downloader 59\u003c\/p\u003e \u003cp\u003eDeserializing Received Data 61\u003c\/p\u003e \u003cp\u003eSending Data 66\u003c\/p\u003e \u003cp\u003eWorking with Binary Data 72\u003c\/p\u003e \u003cp\u003eSummary 80\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Advanced HTTP Clients 81\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing a Custom HTTP Client 81\u003c\/p\u003e \u003cp\u003eDownloading from an Overloaded Server 81\u003c\/p\u003e \u003cp\u003eTesting the Time-Out Behavior 85\u003c\/p\u003e \u003cp\u003eConfiguring the Redirect Behavior 88\u003c\/p\u003e \u003cp\u003eCustomizing Your Requests 91\u003c\/p\u003e \u003cp\u003eImplementing Client Middleware 92\u003c\/p\u003e \u003cp\u003eUnderstanding the RoundTripper Interface 93\u003c\/p\u003e \u003cp\u003eA Logging Middleware 94\u003c\/p\u003e \u003cp\u003eAdd a Header to All Requests 96\u003c\/p\u003e \u003cp\u003eConnection Pooling 99\u003c\/p\u003e \u003cp\u003eConfiguring the Connection Pool 103\u003c\/p\u003e \u003cp\u003eSummary 104\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Building HTTP Servers 105\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eYour First HTTP Server 105\u003c\/p\u003e \u003cp\u003eSetting Up Request Handlers 108\u003c\/p\u003e \u003cp\u003eHandler Functions 109\u003c\/p\u003e \u003cp\u003eTesting Your Server 112\u003c\/p\u003e \u003cp\u003eThe Request Struct 114\u003c\/p\u003e \u003cp\u003eMethod 115\u003c\/p\u003e \u003cp\u003eUrl 115\u003c\/p\u003e \u003cp\u003eProto, ProtoMajor, and ProtoMinor 116\u003c\/p\u003e \u003cp\u003eHeader 116\u003c\/p\u003e \u003cp\u003eHost 116\u003c\/p\u003e \u003cp\u003eBody 116\u003c\/p\u003e \u003cp\u003eForm, PostForm 116\u003c\/p\u003e \u003cp\u003eMultipartForm 117\u003c\/p\u003e \u003cp\u003eAttaching Metadata to a Request 118\u003c\/p\u003e \u003cp\u003eProcessing Streaming Requests 121\u003c\/p\u003e \u003cp\u003eStreaming Data as Responses 126\u003c\/p\u003e \u003cp\u003eSummary 132\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Advanced HTTP Server Applications 133\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Handler Type 133\u003c\/p\u003e \u003cp\u003eSharing Data across Handler Functions 134\u003c\/p\u003e \u003cp\u003eWriting Server Middleware 139\u003c\/p\u003e \u003cp\u003eCustom HTTP Handler Technique 139\u003c\/p\u003e \u003cp\u003eThe HandlerFunc Technique 140\u003c\/p\u003e \u003cp\u003eChaining Middleware 142\u003c\/p\u003e \u003cp\u003eWriting Tests for Complex Server Applications 147\u003c\/p\u003e \u003cp\u003eCode Organization 147\u003c\/p\u003e \u003cp\u003eTesting the Handler Functions 153\u003c\/p\u003e \u003cp\u003eTesting the Middleware 155\u003c\/p\u003e \u003cp\u003eTesting the Server Startup 157\u003c\/p\u003e \u003cp\u003eSummary 159\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Production- Ready HTTP Servers 161\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAborting Request Handling 161\u003c\/p\u003e \u003cp\u003eStrategies to Abort Request Processing 165\u003c\/p\u003e \u003cp\u003eHandling Client Disconnects 169\u003c\/p\u003e \u003cp\u003eServer-Wide Time- Outs 173\u003c\/p\u003e \u003cp\u003eImplement a Time- Out for All Handler Functions 173\u003c\/p\u003e \u003cp\u003eImplementing Server Time- Out 174\u003c\/p\u003e \u003cp\u003eImplementing Graceful Shutdown 179\u003c\/p\u003e \u003cp\u003eSecuring Communication with TLS 184\u003c\/p\u003e \u003cp\u003eConfiguring TLS and HTTP\/2 184\u003c\/p\u003e \u003cp\u003eTesting TLS Servers 188\u003c\/p\u003e \u003cp\u003eSummary 192\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Building RPC Applications with gRPC 193\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003egRPC and Protocol Buffers 193\u003c\/p\u003e \u003cp\u003eWriting Your First Service 197\u003c\/p\u003e \u003cp\u003eWriting the Server 198\u003c\/p\u003e \u003cp\u003eWriting a Client 203\u003c\/p\u003e \u003cp\u003eTesting the Server 207\u003c\/p\u003e \u003cp\u003eTesting the Client 211\u003c\/p\u003e \u003cp\u003eA Detour into Protobuf Messages 214\u003c\/p\u003e \u003cp\u003eMarshalling and Unmarshalling 214\u003c\/p\u003e \u003cp\u003eForward and Backward Compatibility 219\u003c\/p\u003e \u003cp\u003eMultiple Services 220\u003c\/p\u003e \u003cp\u003eError Handling 226\u003c\/p\u003e \u003cp\u003eSummary 228\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Advanced gRPC Applications 229\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStreaming Communication 229\u003c\/p\u003e \u003cp\u003eServer- Side Streaming 230\u003c\/p\u003e \u003cp\u003eClient- Side Streaming 237\u003c\/p\u003e \u003cp\u003eBidirectional Streaming 239\u003c\/p\u003e \u003cp\u003eReceiving and Sending Arbitrary Bytes 247\u003c\/p\u003e \u003cp\u003eImplementing Middleware Using Interceptors 256\u003c\/p\u003e \u003cp\u003eClient- Side Interceptors 257\u003c\/p\u003e \u003cp\u003eServer- Side Interceptors 263\u003c\/p\u003e \u003cp\u003eWrapping Streams 269\u003c\/p\u003e \u003cp\u003eChaining Interceptors 271\u003c\/p\u003e \u003cp\u003eSummary 272\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Production- Ready gRPC Applications 275\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSecuring Communication with TLS 275\u003c\/p\u003e \u003cp\u003eRobustness in Servers 278\u003c\/p\u003e \u003cp\u003eImplementing Health Checks 278\u003c\/p\u003e \u003cp\u003eHandling Runtime Errors 286\u003c\/p\u003e \u003cp\u003eAborting Request Processing 289\u003c\/p\u003e \u003cp\u003eRobustness in Clients 297\u003c\/p\u003e \u003cp\u003eImproving Connection Setup 298\u003c\/p\u003e \u003cp\u003eHandling Transient Failures 300\u003c\/p\u003e \u003cp\u003eSetting Time- Outs for Method Calls 305\u003c\/p\u003e \u003cp\u003eConnection Management 306\u003c\/p\u003e \u003cp\u003eSummary 309\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Working with Data Stores 311\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Object Stores 312\u003c\/p\u003e \u003cp\u003eIntegration with Package Server 313\u003c\/p\u003e \u003cp\u003eTesting Package Uploads 323\u003c\/p\u003e \u003cp\u003eAccessing Underlying Driver Types 325\u003c\/p\u003e \u003cp\u003eWorking with Relational Databases 327\u003c\/p\u003e \u003cp\u003eIntegration with Package Server 328\u003c\/p\u003e \u003cp\u003eTesting Data Storage 339\u003c\/p\u003e \u003cp\u003eData Type Conversions 343\u003c\/p\u003e \u003cp\u003eUsing Database Transactions 346\u003c\/p\u003e \u003cp\u003eSummary 348\u003c\/p\u003e \u003cp\u003eAppendix A Making Your Applications Observable 349\u003c\/p\u003e \u003cp\u003eLogs, Metrics, and Traces 349\u003c\/p\u003e \u003cp\u003eEmitting Telemetry Data 352\u003c\/p\u003e \u003cp\u003eCommand- Line Applications 352\u003c\/p\u003e \u003cp\u003eHTTP Applications 360\u003c\/p\u003e \u003cp\u003egRPC Applications 364\u003c\/p\u003e \u003cp\u003eSummary 366\u003c\/p\u003e \u003cp\u003eAppendix B Deploying Applications 367\u003c\/p\u003e \u003cp\u003eManaging Configuration 367\u003c\/p\u003e \u003cp\u003eDistributing Your Application 370\u003c\/p\u003e \u003cp\u003eDeploying Server Applications 372\u003c\/p\u003e \u003cp\u003eSummary 373\u003c\/p\u003e \u003cp\u003eIndex 375\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49407147934039,"sku":"9781119773818","price":24.79,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119773818.jpg?v=1730498337","url":"https:\/\/bookcurl.com\/products\/practical-go-9781119773818","provider":"Book Curl","version":"1.0","type":"link"}