Категорії
Електронні книги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комп'ютер в офісі
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Мультимедійне навчання
- Нерухомість
- Переконання та НЛП
- Податки
- Соціальна політика
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Звіти, аналізи
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Електронна преса
- Architektura i wnętrza
- Biznes i Ekonomia
- Будинок та сад
- Електронний бізнес
- Фінанси
- Особисті фінанси
- Бізнес
- Фотографія
- Інформатика
- Відділ кадрів та оплата праці
- Комп'ютери, Excel
- Бухгалтерія
- Культура та література
- Наукові та академічні
- Охорона навколишнього середовища
- Впливові
- Освіта
- Податки
- Подорожі
- Психологія
- Релігія
- Сільське господарство
- Ринок книг і преси
- Транспорт та спедиція
- Здоров'я та краса
-
Історія
-
Інформатика
- Офісні застосунки
- Бази даних
- Біоінформатика
- Бізнес ІТ
- CAD/CAM
- Digital Lifestyle
- DTP
- Електроніка
- Цифрова фотографія
- Комп'ютерна графіка
- Ігри
- Хакування
- Hardware
- IT w ekonomii
- Наукові пакети
- Шкільні підручники
- Основи комп'ютера
- Програмування
- Мобільне програмування
- Інтернет-сервери
- Комп'ютерні мережі
- Стартап
- Операційні системи
- Штучний інтелект
- Технологія для дітей
- Вебмайстерність
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Оповідна поезія
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Шкільні підручники
-
Науково-популярна та академічна
- Археологія
- Bibliotekoznawstwo
- Кінознавство / Теорія кіно
- Філологія
- Польська філологія
- Філософія
- Finanse i bankowość
- Географія
- Економіка
- Торгівля. Світова економіка
- Історія та археологія
- Історія мистецтва і архітектури
- Культурологія
- Мовознавство
- літературні студії
- Логістика
- Математика
- Ліки
- Гуманітарні науки
- Педагогіка
- Навчальні засоби
- Науково-популярна
- Інше
- Психологія
- Соціологія
- Театральні студії
- Богослов’я
- Економічні теорії та науки
- Transport i spedycja
- Фізичне виховання
- Zarządzanie i marketing
-
Порадники
-
Ігрові посібники
-
Професійні та спеціальні порадники
-
Юридична
- Безпека життєдіяльності
- Історія
- Дорожній кодекс. Водійські права
- Юридичні науки
- Охорона здоров'я
- Загальне, компендіум
- Академічні підручники
- Інше
- Закон про будівництво і житло
- Цивільне право
- Фінансове право
- Господарське право
- Господарське та комерційне право
- Кримінальний закон
- Кримінальне право. Кримінальні злочини. Кримінологія
- Міжнародне право
- Міжнародне та іноземне право
- Закон про охорону здоров'я
- Закон про освіту
- Податкове право
- Трудове право та законодавство про соціальне забезпечення
- Громадське, конституційне та адміністративне право
- Кодекс про шлюб і сім'ю
- Аграрне право
- Соціальне право, трудове право
- Законодавство Євросоюзу
- Промисловість
- Сільське господарство та захист навколишнього середовища
- Словники та енциклопедії
- Державні закупівлі
- Управління
-
Путівники та подорожі
- Африка
- Альбоми
- Південна Америка
- Центральна та Північна Америка
- Австралія, Нова Зеландія, Океанія
- Австрія
- Азії
- Балкани
- Близький Схід
- Болгарія
- Китай
- Хорватія
- Чеська Республіка
- Данія
- Єгипет
- Естонія
- Європа
- Франція
- Гори
- Греція
- Іспанія
- Нідерланди
- Ісландія
- Литва
- Латвія
- Mapy, Plany miast, Atlasy
- Мініпутівники
- Німеччина
- Норвегія
- Активні подорожі
- Польща
- Португалія
- Інше
- Росія
- Румунія
- Словаччина
- Словенія
- Швейцарія
- Швеція
- Світ
- Туреччина
- Україна
- Угорщина
- Велика Британія
- Італія
-
Психологія
- Філософія життя
- Kompetencje psychospołeczne
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Аудіокниги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Нерухомість
- Переконання та НЛП
- Податки
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Історія
-
Інформатика
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Науково-популярна та академічна
-
Порадники
-
Професійні та спеціальні порадники
-
Юридична
-
Путівники та подорожі
-
Психологія
- Філософія життя
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Відеокурси
-
Бази даних
-
Big Data
-
Biznes, ekonomia i marketing
-
Кібербезпека
-
Data Science
-
DevOps
-
Для дітей
-
Електроніка
-
Графіка / Відео / CAX
-
Ігри
-
Microsoft Office
-
Інструменти розробки
-
Програмування
-
Особистісний розвиток
-
Комп'ютерні мережі
-
Операційні системи
-
Тестування програмного забезпечення
-
Мобільні пристрої
-
UX/UI
-
Веброзробка, Web development
-
Управління
Подкасти
- Електронні книги
- Програмування
- Методи програмування
- Go: Building Web Applications. Building Web Applications
Деталі електронної книги
Увійти, Якщо вас цікавить зміст видання.
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. It is a statically typed language with syntax loosely derived from that of C, adding garbage collection, type safety, some dynamic-typing capabilities, additional built-in types such as variable-length arrays and key-value maps, and a large standard library.
This course starts with a walkthrough of the topics most critical to anyone building a new web application. Whether it’s keeping your application secure, connecting to your database, enabling token-based authentication, or utilizing logic-less templates, this course has you covered.
Scale, performance, and high availability lie at the heart of the projects, and the lessons learned throughout this course will arm you with everything you need to build world-class solutions. It will also take you through the history of concurrency, how Go utilizes it, how Go differs from other languages, and the features and structures of Go's concurrency core. It will make you feel comfortable designing a safe, data-consistent, and high-performance concurrent application in Go.
This course is an invaluable resource to help you understand Go's powerful features to build simple, reliable, secure, and efficient web applications.
This course starts with a walkthrough of the topics most critical to anyone building a new web application. Whether it’s keeping your application secure, connecting to your database, enabling token-based authentication, or utilizing logic-less templates, this course has you covered.
Scale, performance, and high availability lie at the heart of the projects, and the lessons learned throughout this course will arm you with everything you need to build world-class solutions. It will also take you through the history of concurrency, how Go utilizes it, how Go differs from other languages, and the features and structures of Go's concurrency core. It will make you feel comfortable designing a safe, data-consistent, and high-performance concurrent application in Go.
This course is an invaluable resource to help you understand Go's powerful features to build simple, reliable, secure, and efficient web applications.
- Go: Building Web Applications
- Table of Contents
- Go: Building Web Applications
- Go: Building Web Applications
- Credits
- Preface
- What this learning path covers
- What you need for this learning path
- Who this learning path is for
- Reader feedback
- Customer support
- Downloading the example code
- Errata
- Piracy
- Questions
- 1. Module 1
- 1. Introducing and Setting Up Go
- Installing Go
- Structuring a project
- Code conventions
- Importing packages
- Handling private repositories
- Dealing with versioning
- Introducing the net package
- Hello, Web
- Summary
- 2. Serving and Routing
- Serving files directly
- Basic routing
- Using more complex routing with Gorilla
- Redirecting requests
- Serving basic errors
- Summary
- 3. Connecting to Data
- Connecting to a database
- Creating a MySQL database
- Using GUID for prettier URLs
- Handling 404s
- Summary
- Connecting to a database
- 4. Using Templates
- Introducing templates, context, and visibility
- HTML templates and text templates
- Displaying variables and security
- Using logic and control structures
- Summary
- 5. Frontend Integration with RESTful APIs
- Setting up the basic API endpoint
- RESTful architecture and best practices
- Creating our first API endpoint
- Implementing security
- Creating data with POST
- Modifying data with PUT
- Summary
- 6. Sessions and Cookies
- Setting cookies
- Capturing user information
- Creating users
- Enabling sessions
- Letting users register
- Letting users log in
- Initiating a server-side session
- Creating a store
- Utilizing flash messages
- Summary
- 7. Microservices and Communication
- Introducing the microservice approach
- Pros and cons of utilizing microservices
- Understanding the heart of microservices
- Communicating between microservices
- Putting a message on the wire
- Reading from another service
- Summary
- 8. Logging and Testing
- Introducing logging in Go
- Logging to IO
- Multiple loggers
- Formatting your output
- Using panics and fatal errors
- Introducing testing in Go
- Summary
- 9. Security
- HTTPS everywhere implementing TLS
- Preventing SQL injection
- Protecting against XSS
- Preventing cross-site request forgery (CSRF)
- Securing cookies
- Using the secure middleware
- Summary
- 10. Caching, Proxies and Improved Performance
- Identifying bottlenecks
- Implementing reverse proxies
- Implementing caching strategies
- Using Least Recently Used
- Caching by file
- Caching in memory
- Implementing HTTP/2
- Summary
- 1. Introducing and Setting Up Go
- 2. Module 2
- 1. Chat Application with Web Sockets
- A simple web server
- Templates
- Doing things once
- Using your own handlers
- Properly building and executing Go programs
- Templates
- Modeling a chat room and clients on the server
- Modeling the client
- Modeling a room
- Concurrency programming using idiomatic Go
- Turning a room into an HTTP handler
- Use helper functions to remove complexity
- Creating and using rooms
- Building an HTML and JavaScript chat client
- Getting more out of templates
- Tracing code to get a look under the hood
- Writing a package using TDD
- Interfaces
- Unit tests
- Red-green testing
- Implementing the interface
- Unexported types being returned to users
- Using our new trace package
- Making tracing optional
- Clean package APIs
- Writing a package using TDD
- Summary
- A simple web server
- 2. Adding Authentication
- Handlers all the way down
- Making a pretty social sign-in page
- Endpoints with dynamic paths
- OAuth2
- Open source OAuth2 packages
- Tell the authentication providers about your app
- Implementing external logging in
- Logging in
- Handling the response from the provider
- Presenting the user data
- Augmenting messages with additional data
- Summary
- 3. Three Ways to Implement Profile Pictures
- Avatars from the authentication server
- Getting the avatar URL
- Transmitting the avatar URL
- Adding the avatar to the user interface
- Logging out
- Making things prettier
- Implementing Gravatar
- Abstracting the avatar URL process
- The authentication service and avatars implementation
- Using an implementation
- Gravatar implementation
- Abstracting the avatar URL process
- Uploading an avatar picture
- User identification
- An upload form
- Handling the upload
- Serving the images
- The Avatar implementation for local files
- Supporting different file types
- Refactoring and optimizing our code
- Replacing concrete types with interfaces
- Changing interfaces in a test-driven way
- Fixing existing implementations
- Global variables versus fields
- Implementing our new design
- Tidying up and testing
- Combining all three implementations
- Summary
- Avatars from the authentication server
- 4. Command-line Tools to Find Domain Names
- Pipe design for command-line tools
- Five simple programs
- Sprinkle
- Exercise configurable transformations
- Domainify
- Exercise making top-level domains configurable
- Coolify
- Synonyms
- Using environment variables for configuration
- Consuming a web API
- Getting domain suggestions
- Available
- Sprinkle
- Composing all five programs
- One program to rule them all
- Summary
- 5. Building Distributed Systems and Working with Flexible Data
- System design
- Database design
- Installing the environment
- NSQ
- NSQ driver for Go
- MongoDB
- MongoDB driver for Go
- Starting the environment
- NSQ
- Votes from Twitter
- Authorization with Twitter
- Extracting the connection
- Reading environment variables
- Reading from MongoDB
- Reading from Twitter
- Signal channels
- Publishing to NSQ
- Gracefully starting and stopping
- Testing
- Authorization with Twitter
- Counting votes
- Connecting to the database
- Consuming messages in NSQ
- Keeping the database updated
- Responding to Ctrl + C
- Running our solution
- Summary
- System design
- 6. Exposing Data and Functionality through a RESTful Data Web Service API
- RESTful API design
- Sharing data between handlers
- Wrapping handler functions
- API key
- Database session
- Per request variables
- Cross-browser resource sharing
- Responding
- Understanding the request
- A simple main function to serve our API
- Using handler function wrappers
- Handling endpoints
- Using tags to add metadata to structs
- Many operations with a single handler
- Reading polls
- Creating a poll
- Deleting a poll
- CORS support
- Testing our API using curl
- A web client that consumes the API
- An index page showing a list of polls
- A page to create a new poll
- A page to show details of the poll
- Running the solution
- Summary
- 7. Random Recommendations Web Service
- Project overview
- Project design specifics
- Representing data in code
- Public views of Go structs
- Generating random recommendations
- Google Places API key
- Enumerators in Go
- Test-driven enumerator
- Querying the Google Places API
- Building recommendations
- Handlers that use query parameters
- CORS
- Testing our API
- Web application
- Summary
- Project overview
- 8. Filesystem Backup
- Solution design
- Project structure
- Backup package
- Obvious interfaces?
- Implementing ZIP
- Has the filesystem changed?
- Checking for changes and initiating a backup
- Hardcoding is OK for a short while
- The user command-line tool
- Persisting small data
- Parsing arguments
- Listing the paths
- String representations for your own types
- Adding paths
- Removing paths
- Listing the paths
- Using our new tool
- The daemon backup tool
- Duplicated structures
- Caching data
- Infinite loops
- Updating filedb records
- Testing our solution
- Summary
- Solution design
- 1. Chat Application with Web Sockets
- 3. Module 3
- 1. An Introduction to Concurrency in Go
- Introducing goroutines
- A patient goroutine
- Implementing the defer control mechanism
- Using Go's scheduler
- Using system variables
- Understanding goroutines versus coroutines
- Implementing channels
- Channel-based sorting at the letter capitalization factory
- Cleaning up our goroutines
- Buffered or unbuffered channels
- Using the select statement
- Closures and goroutines
- Building a web spider using goroutines and channels
- Summary
- Introducing goroutines
- 2. Understanding the Concurrency Model
- Understanding the working of goroutines
- Synchronous versus asynchronous goroutines
- Designing the web server plan
- Visualizing concurrency
- RSS in action
- An RSS reader with self diagnostics
- Imposing a timeout
- A little bit about CSP
- The dining philosophers problem
- Go and the actor model
- Object orientation
- Demonstrating simple polymorphism in Go
- Using concurrency
- Managing threads
- Using sync and mutexes to lock data
- Summary
- 3. Developing a Concurrent Strategy
- Applying efficiency in complex concurrency
- Identifying race conditions with race detection
- Using mutual exclusions
- Exploring timeouts
- Importance of consistency
- Synchronizing our concurrent operations
- The project multiuser appointment calendar
- Visualizing a concurrent pattern
- Developing our server requirements
- Web server
- The Gorilla toolkit
- Using templates
- Time
- Web server
- Endpoints
- Custom structs
- A multiuser Appointments Calendar
- A note on style
- A note on immutability
- Summary
- 4. Data Integrity in an Application
- Getting deeper with mutexes and sync
- The cost of goroutines
- Working with files
- Getting low implementing C
- Touching memory in cgo
- The structure of cgo
- The other way around
- Getting even lower assembly in Go
- Distributed Go
- Some common consistency models
- Distributed shared memory
- First-in-first-out PRAM
- Looking at the master-slave model
- The producer-consumer problem
- Looking at the leader-follower model
- Atomic consistency / mutual exclusion
- Release consistency
- Using memcached
- Circuit
- Summary
- 5. Locks, Blocks, and Better Channels
- Understanding blocking methods in Go
- Blocking method 1 a listening, waiting channel
- Sending more data types via channels
- Creating a function channel
- Using an interface channel
- Using structs, interfaces, and more complex channels
- The net package a chat server with interfaced channels
- Handling direct messages
- Sending more data types via channels
- Examining our client
- Blocking method 2 the select statement in a loop
- Blocking method 1 a listening, waiting channel
- Cleaning up goroutines
- Blocking method 3 network connections and reads
- Creating channels of channels
- Pprof yet another awesome tool
- Handling deadlocks and errors
- Summary
- Understanding blocking methods in Go
- 6. C10K A Non-blocking Web Server in Go
- Attacking the C10K problem
- Failing of servers at 10,000 concurrent connections
- Using concurrency to attack C10K
- Taking another approach
- Building our C10K web server
- Benchmarking against a blocking web server
- Handling requests
- Routing requests
- Serving pages
- Parsing our template
- External dependencies
- Connecting to MySQL
- Multithreading and leveraging multiple cores
- Exploring our web server
- Timing out and moving on
- Summary
- Attacking the C10K problem
- 7. Performance and Scalability
- High performance in Go
- Getting deeper into pprof
- Parallelism's and concurrency's impact on I/O pprof
- Using the App Engine
- Distributed Go
- Types of topologies
- Type 1 star
- Type 2 mesh
- The Publish and Subscribe model
- Serialized data
- Remote code execution
- Other topologies
- Message Passing Interface
- Types of topologies
- Some helpful libraries
- Nitro profiler
- Heka
- GoFlow
- Memory preservation
- Garbage collection in Go
- Summary
- High performance in Go
- 8. Concurrent Application Architecture
- Designing our concurrent application
- Identifying our requirements
- Using NoSQL as a data store in Go
- MongoDB
- Redis
- Tiedot
- CouchDB
- Cassandra
- Couchbase
- Setting up our data store
- Monitoring filesystem changes
- Managing logfiles
- Handling configuration files
- Detecting file changes
- Sending changes to clients
- Checking records against Couchbase
- Backing up our files
- Designing our web interface
- Reverting a file's history command line
- Using Go in daemons and as a service
- Checking the health of our server
- Summary
- 9. Logging and Testing Concurrency in Go
- Handling errors and logging
- Breaking out goroutine logs
- Using the LiteIDE for richer and easier debugging
- Sending errors to screen
- Logging errors to file
- Logging errors to memory
- Using the log4go package for robust logging
- Panicking
- Recovering
- Logging our panics
- Catching stack traces with concurrent code
- Using the runtime package for granular stack traces
- Summary
- Handling errors and logging
- 10. Advanced Concurrency and Best Practices
- Going beyond the basics with channels
- Building workers
- Implementing nil channel blocks
- Using nil channels
- Implementing more granular control over goroutines with tomb
- Timing out with channels
- Building a load balancer with concurrent patterns
- Choosing unidirectional and bidirectional channels
- Using receive-only or send-only channels
- Using an indeterminate channel type
- Using Go with unit testing
- GoCheck
- Ginkgo and Gomega
- Using Google App Engine
- Utilizing best practices
- Structuring your code
- Documenting your code
- Making your code available via go get
- Keeping concurrency out of your packages
- Summary
- 1. An Introduction to Concurrency in Go
- A. Bibliography
- Index
- Назва: Go: Building Web Applications. Building Web Applications
- Автор: Nathan Kozyra, Mat Ryer
- Оригінальна назва: Go: Building Web Applications. Building Web Applications
- ISBN: 9781787123496, 9781787123496
- Дата видання: 2016-08-31
- Формат: Eлектронна книга
- Ідентифікатор видання: e_3bf6
- Видавець: Packt Publishing