Puppet Best Practices. Design Patterns for Maintainable Code
- Autorzy:
- Chris Barbour, Jo Rhett
- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 308
- Dostępne formaty:
-
ePubMobi
Opis ebooka: Puppet Best Practices. Design Patterns for Maintainable Code
If you maintain or plan to build Puppet infrastructure, this practical guide will take you a critical step further with best practices for managing the task successfully. Authors Chris Barbour and Jo Rhett present best-in-class design patterns for deploying Puppet environments and discuss the impact of each. The conceptual designs and implementation patterns in this book will help you create solutions that are easy to extend, maintain, and support.
Essential for companies upgrading their Puppet deployments, this book teaches you powerful new features and implementation models that weren’t available in the older versions. DevOps engineers will learn how best to deploy Puppet with long-term maintenance and future growth in mind.
- Explore Puppet’s design philosophy and data structures
- Get best practices for using Puppet’s declarative language
- Examine Puppet resources in depth—the building blocks of state management
- Learn to model and describe business and site-specific logic in Puppet
- See best-in-class models for multitiered data management with Hiera
- Explore available options and community experience for node classification
- Utilize r10k to simplify and accelerate Puppet change management
- Review the cost benefits of creating your own extensions to Puppet
- Get detailed advice for extending Puppet in a maintainable manner
Wybrane bestsellery
-
Orchestrate change across server clusters in near realtime with MCollective, the framework that works in concert with Puppet, Chef, and other configuration management tools. Ideal for system administrators and operations or DevOps engineers at any level, this hands-on guide teaches you how to bui...
Learning MCollective. Parallel Server Management in Puppet and Chef Learning MCollective. Parallel Server Management in Puppet and Chef
(118.15 zł najniższa cena z 30 dni)118.15 zł
139.00 zł(-15%) -
If you're a system administrator, developer, or site reliability engineer responsible for handling hundreds or even thousands of nodes in your network, the Puppet configuration management tool will make your job a whole lot easier. This practical guide shows you what Puppet does, how it works, an...
Learning Puppet 4. A Guide to Configuration Management and Automation Learning Puppet 4. A Guide to Configuration Management and Automation
(152.15 zł najniższa cena z 30 dni)160.65 zł
189.00 zł(-15%) -
Learn how to transform your SDLC fast by developing the key skills to shift left and complete projects in record time. This book will give you the knowledge to start your own DevOps release management initiative and transform your company.
Embracing DevOps Release Management. Strategies and tools to accelerate continuous delivery and ensure quality software deployment Embracing DevOps Release Management. Strategies and tools to accelerate continuous delivery and ensure quality software deployment
(100.08 zł najniższa cena z 30 dni) -
Explore the implementation of Wazuh for effective security monitoring through use cases and demonstrations of how to integrate Wazuh with essential tools like OSSEC, TheHive, Cortex, and Shuffle.
Security Monitoring with Wazuh. A hands-on guide to effective enterprise security using real-life use cases in Wazuh Security Monitoring with Wazuh. A hands-on guide to effective enterprise security using real-life use cases in Wazuh
(92.88 zł najniższa cena z 30 dni) -
Discover a proven method to learning programming in an accessible style. Ideal for enthusiasts, this book guides your from fundamentals to advanced concepts, enabling you to code confidently and build your tools and libraries using PowerShell 7.
PowerShell 7 Workshop. Learn how to program with PowerShell 7 on Windows, Linux, and the Raspberry Pi PowerShell 7 Workshop. Learn how to program with PowerShell 7 on Windows, Linux, and the Raspberry Pi
-
With this new edition, get to grips with Linux kernel development on the long-term 6.1 (S)LTS kernel in a hands-on way with the help of brilliant code examples. Linux Kernel Programming 2E teaches you how to write high-quality kernel modules suitable for real-world products, following industry be...
Linux Kernel Programming. A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization - Second Edition Linux Kernel Programming. A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization - Second Edition
-
This practical guide enables you to implement DevOps best practices while building systems with automation and reusability in mind. You’ll learn the modern-day infrastructure design best practices needed to create an impact on data-persistent technologies.
DevOps for Databases. A practical guide to applying DevOps best practices to data-persistent technologies DevOps for Databases. A practical guide to applying DevOps best practices to data-persistent technologies
-
Implementing CI/CD Using Azure Pipelines contains everything you need to automate your CI/CD pipelines using Microsoft Azure. You’ll learn how to efficiently manage your CI/CD pipelines, deploy your apps, and set up workflow pipelines on Azure DevOps portal.
Implementing CI/CD Using Azure Pipelines. Manage and automate the secure flexible deployment of applications using real-world use cases Implementing CI/CD Using Azure Pipelines. Manage and automate the secure flexible deployment of applications using real-world use cases
-
Okta is one of the leading IAM platforms that consolidate identities for company tools. Okta Administration Up and Running is a comprehensive introduction for anyone new to Okta’s products, and aims to help you understand and implement Okta’s features for enhanced security in your a...
Okta Administration Up and Running. Drive operational excellence with IAM solutions for on-premises and cloud apps - Second Edition Okta Administration Up and Running. Drive operational excellence with IAM solutions for on-premises and cloud apps - Second Edition
-
Unlock the understanding of the Microsoft 365 identity platform and security technologies for the MS-102 exam. From Entra ID essentials to core Microsoft 365 Defender deployment and key governance concepts, gain practical insights for success.
Microsoft 365 Administrator MS-102 Exam Guide. Master the Microsoft 365 Identity and Security Platform and confidently pass the MS-102 exam Microsoft 365 Administrator MS-102 Exam Guide. Master the Microsoft 365 Identity and Security Platform and confidently pass the MS-102 exam
Ebooka "Puppet Best Practices. Design Patterns for Maintainable Code" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Puppet Best Practices. Design Patterns for Maintainable Code" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Puppet Best Practices. Design Patterns for Maintainable Code" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- ISBN Ebooka:
- 978-14-919-2304-7, 9781491923047
- Data wydania ebooka:
- 2018-08-24 Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 2.2MB
- Rozmiar pliku Mobi:
- 4.8MB
Spis treści ebooka
- Preface
- What Is a Best Practice?
- Who Should Read This Book
- Why We Wrote This Book
- A Word on Puppet Today
- Navigating This Book
- Online Resources
- Conventions Used in This Book
- Using Code Examples
- OReilly Safari
- How to Contact Us
- Acknowledgments
- 1. The Puppet Design Philosophy
- Declarative Code
- What Is Declarative Code, Anyway?
- Resource Types and Providers
- Procedural Example
- Imperitive/procedural code
- Declarative replacement
- Gain by replacing procedural code
- Nondeclarative Code with Puppet
- Declarative Code
- Idempotency
- Side Effects
- Resource-Level Idempotence
- Run-Level Idempotence
- Nondeterministic Code
- Stateless
- Benefits of Stateless Design
- Sources of State Information
- Filebuckets
- Exported resources
- Hiera
- Inventory and reporting
- Custom facts
- Summary
- 2. High-Level Code and Data Design
- Code and Data Organization
- Code and Data Categories
- Types of Code Logic
- Application logic
- Site-specific data
- Node data
- Service data
- Business logic
- Examples of Logic Types
- Code and Data Organization
- Mapping Data Types to Puppet Use Cases
- Application Logic and Puppet Modules
- Example component module
- Identifying business logic in Puppet modules
- Identifying site-specific data in Puppet modules
- Application Logic and Puppet Modules
- Business Logic Should Not Be Written into Component Modules
- Less is more
- Small components are flexible building blocks
- Distinct components avoid conflicts
- Small components are easily testable
- Business Logic with Roles and Profiles
- Roles describe business logic and site-specific configurations
- Profiles implement technology stacks
- Roles and profiles versus node classifiers
- Business, Service, Site, Node, and Application Data
- Global layer: business data
- Environment layer: site, service, and node-specific data
- Module layer: application defaults
- Hiera Data Sources
- Static data in Hiera
- Service discovery from Hiera
- Accessing third-party external data sources in Hiera
- Node Classification
- ENCs
- Hiera as a node classifier
- Appropriate uses of node data
- Summary
- 3. Coding Practices
- The Style Guide
- Coding Principles
- KISS: Keep It Simple
- The Single Responsibility Principle
- Separation of Concerns
- Interface-Driven Design
- DRY: Dont Repeat Yourself
- Dont Reinvent the Wheel
- YAGNI: You Aint Gonna Need It (or Youre Not Google)
- Code Practices
- Balance of Resources Versus Logic
- Balance of Code Versus Data
- Conditional Logic
- Iteration
- Iteration with resources
- Iteration with functions
- Generating Lists
- Variables
- Variable Naming
- Referencing Variables
- Variable should be fully qualified
- Other Variable Use Cases
- Avoid anonymous regular expressions
- Prefer named regular expressions
- Trusted Variables
- Order of Assignment for Top-Level Variables
- Assignment with Selectors
- Attribute Values Chosen by Conditional Evaluation
- Variable Inheritance
- Strict Variables
- Function Calls
- Always Use Parentheses
- Functions for Logging and Debugging
- String Manipulation Functions
- Path Manipulation
- Input Validation Functions
- Data validation functions
- Data type comparison
- Value existence comparison
- Catalog Tests
- Data Transformation
- Templates
- ERB Templates
- EPP Templates
- EPP Versus ERB
- Other Language Features
- Summary
- 4. Puppet Module Design
- The Puppet Development Kit
- Installing the Puppet Agent
- Using the Ruby that Comes Bundled with Puppet
- Installing the Puppet Development Kit
- Favor Editors or IDEs with Puppet Plugins
- The Puppet Development Kit
- Using Vendor-Provided or Community Modules
- Picking Good Modules
- Module Checklist
- Module Applicability to Your Needs
- Contributing Modules
- Designing Modules Well
- Make Use of Module Structure
- Keep the Module Focused
- Design Modules for Public Consumption
- Planning and Scoping Your Module
- Basic Module Layout
- The Modules Main Class
- An example main class
- Module Parameters
- Parameter defaults
- Parameter default complexity
- Parameter default limitations
- Parameter naming conventions
- Parameter defaults
- Input Validation
- Data in the Module
- The params.pp Pattern
- Hiera Data in Modules
- Modularizing Classes
- Dependencies
- Class Relationships
- Class Containment
- Containment
- Anchors
- Intentionally uncontained classes
- Interfacing with Classes
- Passing data via parameterized class declarations
- Passing data via fully qualified variable references
- Passing data via class inheritence
- Reusing Defined Types
- Providing Clean Service Interfaces with Defined Types
- Simplify Complex Operations with a Defined Type
- Interacting with Other Resouces in the Module
- Creating relationships with resources in the module
- Including other classes
- Creating Useful Documentation
- README, REFERENCE, and Other Markdown
- Usage examples
- Dependencies
- License information
- README, REFERENCE, and Other Markdown
- REFERENCE Markdown
- Parameter documentation
- Inline documentation
- Summary
- 5. Resources
- Using Resources to Implement Change
- Resource Types Abstract Implementation Details
- Use the Most Specific Resource Type
- Examining a Naked Resource
- Exploring Resources with Tools
- puppet describe
- puppet-strings
- puppet resource
- Displaying a resource in Puppet language
- Displaying all instances of a resource
- Declare a resource on the command line
- puppet apply
- Using Resources to Implement Change
- Resource Declaration
- Ensure states
- Use Variables for Data-Driven Declaration
- Static declaration
- Interpolation
- Use Arrays for Similar Resources
- Using Automatic Resource Relationships for Clean Code
- Avoid complex structures in resource declarations
- Resource Declaration by Functions
- The create_resources() function
- The ensure_ functions
- Resources Metatypes
- Resource Metaparameters
- alias
- audit
- Ordering metaparameters: before and require
- Notification metaparameters: notify and subscribe
- Avoid tight relationships whenever possible
- noop
- schedule
- stage
- tag
- Avoid Parse-Order Problems by Using Virtual Resources
- Dangling relationships to unrealized resources causes breakage
- Exporting Resources
- Comparing virtual and exported resources
- Safely using exported resource
- Overriding and Modifying Declared Resources
- Resource Default Statements
- Per-expression defaults provide a solution
- Per-expression defaults provide a way to avoid surprises
- Resource Default Statements
- Resource Chaining
- Resource Collectors
- Resource Best Practices
- Custom Resource Types
- The ACL type
- The anchor type
- Augeas providers
- The datacat types
- The file_line resource type
- The match attribute
- The after attribute
- The gnupg_key type
- The ini_setting and ini_subsetting resource types
- The registry type
- The reboot type
- The vcs_repo type
- The windows_env native type and provider
- Custom Resource Types
- Useful Defined Types
- The concat defined type
- The account defined type
- Summary
- 6. Hiera Data
- Separating Code and Data
- Global, Environment, and Module Data
- Hiera Backends
- Separating Code and Data
- Designing the Hiera Hierarchy
- Variable Interpolation
- Node-provided facts
- Use the facts hash to retrieve variables
- Viewing a nodes facts
- Node-provided facts
- Use trusted facts when available
- Remove environment interpolation
- Label node classifier-provided data
- Avoid using Puppet variables
- Use explain to debug lookup interpolation
- Variable Interpolation
- Design Guidelines
- Most specific to generaltop to bottom
- Avoid unnecessary deep hierarchies
- Deep hierarchies should contain data relevant to the top level
- Useful Hierarchy Levels
- The accounts hierarchies
- Packages hierarchy level
- Team hierarchy level
- Eliminating Data
- Hierarchy design
- Package management
- User management
- Service discovery
- Accessing Hiera
- Automatic Parameter Lookups
- Defined types
- Automatic Parameter Lookups
- Hiera Function Calls
- Key naming conventions
- Hash and array data merges
- Data-driven class assignment
- Converting Serialized Hiera Data into Resource Declarations
- Interpolation in Your Data
- The Built-In Backends
- YAML
- JSON
- HOCON
- eYAML
- Custom Hiera Backends
- Database and NoSQL Engines
- Service Discovery Backends
- Encrypted Key/Value Storage
- Encrypted Hiera is not filesystem security
- Summary
- 7. Roles and Profiles
- Roles
- Creating Readable Roles
- Role classes
- Hiera-defined roles
- Creating Readable Roles
- Design Roles for a Singular Use Case
- Provide the Role for Use in Data Lookups
- Identifying node roles in the ENC
- Identifying node roles using node facts
- Roles
- Profiles
- A Sample Service Profile
- Providing Actionable Data in Profile Parameters
- Shared Hiera data
- Implementing Business Logic in Profiles
- Defining Module Relationships in Profiles
- Creating Metaprofiles to Group Configurations
- Avoid creating a base profile
- Encapsulate one-off configurations in new profiles
- Designing an Appropriate Profile Structure
- Implement the smallest usable component
- Handling multiple instances
- A profile for each service instance
- Creating instances from a data example
- Testing Roles and Profiles
- Validating Profiles by Using Unit Tests
- Confirming Profile Implementation with Acceptance Tests
- Summary
- 8. Node Classification
- What Data Should the Node Classifier Provide?
- Roles and Profiles
- Node-Specific Data
- What Data Should the Node Classifier Provide?
- Node Statements
- Node Statement Matching
- Default node statement
- Regular expression node statements
- Partial node match
- Node Statement Matching
- Replacing Node Inheritance
- Node classification with inheritance
- Node classification using roles and profiles
- Node Parameters Within Node Blocks
- Fact-Based Classification
- Fact-Based Role Assignment
- Security and Fact-Selected Roles or Profiles
- Mitigating the risk by using trusted facts
- Fact-Based Hiera Classification
- Customizing Hiera hierarchy using facts
- Listing classes in Hiera data
- Declaring classes from Hiera data
- Node Parameters with Hiera Classification
- Avoiding Node Data in Manifests
- Serverless Classification
- ENCs
- What Data Can an ENC Provide?
- Class list (node role)
- Node parameters
- Puppet environment
- What Data Can an ENC Provide?
- Puppet Management Consoles
- Puppet Enterprise console
- Puppet Dashboard
- Inventory and Infrastructure Management ENCs
- Foreman
- Cobbler
- Build your own ENC
- Summary
- 9. Release Engineering and r10k
- Puppet Environments in Depth
- Puppet Directory Environments
- Selectable Blocks for Catalog Building
- Environment Configuration
- Environment Independence and Isolation
- Puppet Environments in Depth
- Deploying with r10k
- What Does r10k Actually Do?
- The Control Repository
- Control Repository Branch Contents
- Files expected by Puppet
- Files used by r10k
- Alternative file and directory conventions
- r10k Configuration File
- Puppetfile
- Modules
- Hiera data
- r10k Deployment Walkthrough
- Installing r10k
- Creating a test branch
- Deploying with r10k
- Uses for r10k
- Build Development Environments
- Simplifying Acceptance Testing
- Implement Continuous Integration, Delivery, and Deployment
- Deploy Production Environments
- Build and Package
- A hybrid approach
- Release Management Strategies with r10k
- Stage/Production Branches
- Single Branch (GitHub Flow)
- GitFlow
- Invoking r10k
- Puppet Prerun Command
- Deploying on Receipt of a WebHook
- Puppet Enterprise: Code Manager WebHook
- Orchestrating Deployments with MCollective/Choria
- Invoking r10k in Testing Frameworks
- Combining Multiple Invocation Methods
- Concurrency
- Migrating to r10k
- Repository-per-Module Benefits
- Configuring an Environment in the Control Repository
- Enabling Monolithic and Per-module Hybrid Deployment
- Adding r10k deployment of monolithic repo
- Modulepath adjustment
- Adding r10k to existing deployments
- Moving Modules to their Own Repositories
- Moving public modules
- Moving dependency modules
- Moving dependent modules
- Placing Roles and Profiles in the site/ Module Directory
- Remove Fully Qualified Paths
- Moving Shared Tools to Their Own Repository
- Implementing Test Cases
- Best Practices for Puppet Deployments
- Using Repository Access Control to Enforce Deployment Policy
- Security of the control repository
- Hiera data in the control repository
- Using Repository Access Control to Enforce Deployment Policy
- Enabling Multiteam Coordination
- Deployments for multiple team modules
- Multiple control repositories providing Puppet environments
- Multiple module directories within a single Puppet environment
- Pinning Module Versions
- Isolating Puppet Extensions
- Utilizing Standard Environment Configuration Practices
- Keeping Hiera configuration within the environment
- Global modules
- Environment manifests
- The modules directory
- Test tools, rake tasks, and other utilities
- Environment documentation
- Git Best Practices
- Deployment Practices
- Concurrency protection
- Dont go cowboy on shared infrastructure
- Summary
- 10. Extending Puppet
- The Cost of Extending Puppet
- Minimizing Development Costs
- Reducing Upgrade Costs
- The Cost of Extending Puppet
- Testing
- Static Code Analysis
- Puppet metadata
- Puppet code lint
- Ruby code cop
- Static Code Analysis
- Unit Testing
- Dependencies
- Input testing with rspec
- Resource validation
- Testing input validation
- Acceptance Testing
- Use containers or virtualization for acceptance testing
- Resource validation
- Creating Facts
- Distributing Facts in Modules
- Custom facts
- External facts
- Distributing Facts in Modules
- Facts Puppet Cant Know
- Structured Facts
- Abusing Facts
- Trusted Certificate Attributes
- Custom Types and Providers
- Avoiding Creation of Duplicate Types
- PowerShell DSC
- PowerShell DSC-lite
- PowerShell DSC
- inifile
- XML
- The archive resource
- Avoiding Creation of Duplicate Types
- Creating a New Resource Type
- Describing state with a type
- Defining the types interface
- Custom Resource Providers
- Adding providers to a resource
- Inheriting an existing provider
- Creating a resource provider
- Retrieving existing resource instances
- Reuse Existing Frameworks
- Text frameworks
- JSON, YAML, XML, and other well-known formats
- Windows Management Interface and object linking and embedding
- Creating Custom Hiera Backends
- Choose the Appropriate Backend Type
- Creating a High-Performance Backend
- Using Puppets Public Classes and Method Calls
- Puppet Faces
- Indirection
- Deploying Extensions
- pluginsync
- Deploying Gem Dependencies
- Deploying Ruby Gem Extensions on Puppet Server
- Summary
- Index
O'Reilly Media - inne książki
-
JavaScript gives web developers great power to create rich interactive browser experiences, and much of that power is provided by the browser itself. Modern web APIs enable web-based applications to come to life like never before, supporting actions that once required browser plug-ins. Some are s...(177.65 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
How will software development and operations have to change to meet the sustainability and green needs of the planet? And what does that imply for development organizations? In this eye-opening book, sustainable software advocates Anne Currie, Sarah Hsu, and Sara Bergman provide a unique overview...(160.65 zł najniższa cena z 30 dni)
169.14 zł
199.00 zł(-15%) -
OpenTelemetry is a revolution in observability data. Instead of running multiple uncoordinated pipelines, OpenTelemetry provides users with a single integrated stream of data, providing multiple sources of high-quality telemetry data: tracing, metrics, logs, RUM, eBPF, and more. This practical gu...(143.65 zł najniższa cena z 30 dni)
143.65 zł
169.00 zł(-15%) -
Interested in developing embedded systems? Since they don't tolerate inefficiency, these systems require a disciplined approach to programming. This easy-to-read guide helps you cultivate good development practices based on classic software design patterns and new patterns unique to embedded prog...(152.15 zł najniższa cena z 30 dni)
160.65 zł
189.00 zł(-15%) -
If you use Linux in your day-to-day work, then Linux Pocket Guide is the perfect on-the-job reference. This thoroughly updated 20th anniversary edition explains more than 200 Linux commands, including new commands for file handling, package management, version control, file format conversions, an...(92.65 zł najniższa cena z 30 dni)
92.65 zł
109.00 zł(-15%) -
Gain the valuable skills and techniques you need to accelerate the delivery of machine learning solutions. With this practical guide, data scientists, ML engineers, and their leaders will learn how to bridge the gap between data science and Lean product delivery in a practical and simple way. Dav...(237.15 zł najniższa cena z 30 dni)
245.65 zł
289.00 zł(-15%) -
This practical book provides a detailed explanation of the zero trust security model. Zero trust is a security paradigm shift that eliminates the concept of traditional perimeter-based security and requires you to "always assume breach" and "never trust but always verify." The updated edition off...(203.15 zł najniższa cena z 30 dni)
203.15 zł
239.00 zł(-15%) -
Decentralized finance (DeFi) is a rapidly growing field in fintech, having grown from $700 million to $100 billion over the past three years alone. But the lack of reliable information makes this area both risky and murky. In this practical book, experienced securities attorney Alexandra Damsker ...(194.65 zł najniższa cena z 30 dni)
203.15 zł
239.00 zł(-15%) -
Whether you're a startup founder trying to disrupt an industry or an entrepreneur trying to provoke change from within, your biggest challenge is creating a product people actually want. Lean Analytics steers you in the right direction.This book shows you how to validate your initial idea, find t...(126.65 zł najniższa cena z 30 dni)
126.65 zł
149.00 zł(-15%) -
When it comes to building user interfaces on the web, React enables web developers to unlock a new world of possibilities. This practical book helps you take a deep dive into fundamental concepts of this JavaScript library, including JSX syntax and advanced patterns, the virtual DOM, React reconc...(194.65 zł najniższa cena z 30 dni)
203.15 zł
239.00 zł(-15%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka drukowana
Oceny i opinie klientów: Puppet Best Practices. Design Patterns for Maintainable Code Chris Barbour, Jo Rhett (0) Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.