Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Building Scalable Web Sites
A Note Regarding Supplemental Files Preface
What This Book Is About What You Need to Know Conventions Used in This Book Using Code Examples SafariĀ® Enabled How to Contact Us Acknowledgments
1. Introduction
1.1. What Is a Web Application? 1.2. How Do You Build Web Applications? 1.3. What Is Architecture? 1.4. How Do I Get Started?
2. Web Application Architecture
2.1. Layered Software Architecture 2.2. Layered Technologies 2.3. Software Interface Design 2.4. Getting from A to B 2.5. The Software/Hardware Divide 2.6. Hardware Platforms
2.6.1. Shared Hardware 2.6.2. Dedicated Hardware 2.6.3. Co-Located Hardware 2.6.4. Self-Hosting
2.7. Hardware Platform Growth
2.7.1. Availability and Lead Times 2.7.2. Importing, Shipping, and Staging 2.7.3. Space 2.7.4. Power 2.7.5. NOC Facilities 2.7.6. Connectivity
2.8. Hardware Redundancy 2.9. Networking 2.10. Languages, Technologies, and Databases
3. Development Environments
3.1. The Three Rules 3.2. Use Source Control
3.2.1. What Is Source Control?
3.2.1.1. Versioning 3.2.1.2. Rollback 3.2.1.3. Logs 3.2.1.4. Diffs 3.2.1.5. Multiuser editing and merging 3.2.1.6. Annotation (blame) 3.2.1.7. The locking debate 3.2.1.8. Projects and modules 3.2.1.9. Tagging 3.2.1.10. Branching 3.2.1.11. Merging
3.2.2. Utilities—the "Nice to Haves"
3.2.2.1. Shell and editor integration 3.2.2.2. Web interfaces 3.2.2.3. Commit-log mailing list 3.2.2.4. Commit-log RSS feed 3.2.2.5. Commit database 3.2.2.6. Commit hooks
3.2.3. Source-Control Products 3.2.4. The Revision Control System (RCS)
3.2.4.1. The Concurrent Versions System (CVS)
3.2.4.1.1. Client availability 3.2.4.1.2. Web interfaces 3.2.4.1.3. Mailing list and RSS feed 3.2.4.1.4. Commit database
3.2.4.2. Subversion (SVN)
3.2.4.2.1. Client availability 3.2.4.2.2. Web interfaces 3.2.4.2.3. Mailing list and RSS feed 3.2.4.2.4. Commit database
3.2.4.3. Perforce
3.2.4.3.1. Client availability 3.2.4.3.2. Web interfaces 3.2.4.3.3. Mailing list and RSS feed 3.2.4.3.4. Commit database
3.2.4.4. Visual Source Safe (VSS)
3.2.4.4.1. Client availability 3.2.4.4.2. Web interfaces 3.2.4.4.3. Mailing list and RSS feed 3.2.4.4.4. Commit database
3.2.4.5. And the rest . . . 3.2.4.6. Summary
3.2.5. What to Put in Source Control
3.2.5.1. Documentation 3.2.5.2. Software configurations 3.2.5.3. Build tools
3.2.6. What Not to Put in Source Control
3.3. One-Step Build
3.3.1. Editing Live 3.3.2. Creating a Work Environment
3.3.2.1. Development
3.3.2.1.1. Personal development environments
3.3.2.2. Staging
3.3.2.2.1. Sub-staging
3.3.2.3. Production 3.3.2.4. Beta production
3.3.3. The Release Process 3.3.4. Build Tools 3.3.5. Release Management 3.3.6. What Not to Automate
3.3.6.1. Database schema changes 3.3.6.2. Software and hardware configuration changes
3.4. Issue Tracking
3.4.1. The Minimal Feature Set 3.4.2. Issue-Tracking Software
3.4.2.1. FogBugz 3.4.2.2. Mantis Bug Tracker 3.4.2.3. Request Tracker (RT) 3.4.2.4. Bugzilla 3.4.2.5. Trac
3.4.3. What to Track
3.4.3.1. Bugs 3.4.3.2. Features 3.4.3.3. Operations 3.4.3.4. Support requests
3.4.4. Issue Management Strategy
3.4.4.1. High-level categorization
3.4.5. CADT
3.5. Scaling the Development Model 3.6. Coding Standards 3.7. Testing
3.7.1. Regression Testing 3.7.2. Manual Testing
4. i18n, L10n, and Unicode
4.1. Internationalization and Localization
4.1.1. Internationalization in Web Applications 4.1.2. Localization in Web Applications
4.1.2.1. String substitution 4.1.2.2. Multiple template sets 4.1.2.3. Multiple frontends
4.2. Unicode in a Nutshell 4.3. Unicode Encodings
4.3.1. Code Points and Characters, Glyphs and Graphemes 4.3.2. Byte Order Mark
4.4. The UTF-8 Encoding 4.5. UTF-8 Web Applications
4.5.1. Handling Output 4.5.2. Handling Input
4.6. Using UTF-8 with PHP 4.7. Using UTF-8 with Other Languages 4.8. Using UTF-8 with MySQL 4.9. Using UTF-8 with Email 4.10. Using UTF-8 with JavaScript 4.11. Using UTF-8 with APIs
5. Data Integrity and Security
5.1. Data Integrity Policies 5.2. Good, Valid, and Invalid 5.3. Filtering UTF-8 5.4. Filtering Control Characters 5.5. Filtering HTML
5.5.1. Why Use HTML? 5.5.2. HTML Input Filtering 5.5.3. Blacklists and Whitelists 5.5.4. Balancing 5.5.5. Dealing with HTML
5.6. Cross-Site Scripting (XSS)
5.6.1. The Canonical Hole 5.6.2. User Input Holes 5.6.3. Tag and Bracket Balancing 5.6.4. Protocol Filtering
5.7. SQL Injection Attacks
5.7.1. Mitigating SQL Injection Attacks 5.7.2. Avoiding SQL Injection Attacks
6. Email
6.1. Receiving Email 6.2. Injecting Email into Your Application
6.2.1. An Alternative Approach
6.3. The MIME Format 6.4. Parsing Simple MIME Emails 6.5. Parsing UU Encoded Attachments 6.6. TNEF Attachments 6.7. Wireless Carriers Hate You 6.8. Character Sets and Encodings 6.9. Recognizing Your Users 6.10. Unit Testing
7. Remote Services
7.1. Remote Services Club 7.2. Sockets 7.3. Using HTTP
7.3.1. The HTTP Request and Response Cycle 7.3.2. HTTP Authentication 7.3.3. Making an HTTP Request
7.4. Remote Services Redundancy 7.5. Asynchronous Systems 7.6. Exchanging XML
7.6.1. Parsing XML 7.6.2. REST 7.6.3. XML-RPC 7.6.4. SOAP
7.7. Lightweight Protocols
7.7.1. Memory Usage 7.7.2. Network Speed 7.7.3. Parsing Speed 7.7.4. Writing Speed 7.7.5. Downsides 7.7.6. Rolling Your Own
8. Bottlenecks
8.1. Identifying Bottlenecks
8.1.1. Application Areas by Software Component 8.1.2. Application Areas by Hardware Component 8.1.3. CPU Usage 8.1.4. Code Profiling 8.1.5. Opcode Caching 8.1.6. Speeding Up Templates 8.1.7. General Solutions 8.1.8. I/O 8.1.9. Disk I/O 8.1.10. Network I/O 8.1.11. Memory I/O 8.1.12. Memory and Swap
8.2. External Services and Black Boxes
8.2.1. Databases 8.2.2. Query Spot Checks 8.2.3. Query Profiling 8.2.4. Query and Index Optimization 8.2.5. Caching 8.2.6. Denormalization
9. Scaling Web Applications
9.1. The Scaling Myth
9.1.1. What Is Scalability? 9.1.2. Scaling a Hardware Platform 9.1.3. Vertical Scaling 9.1.4. Horizontal Scaling 9.1.5. Ongoing Work 9.1.6. Redundancy
9.2. Scaling the Network
9.2.1. Scaling PHP
9.3. Load Balancing
9.3.1. Load Balancing with Hardware 9.3.2. Load Balancing with Software 9.3.3. Layer 4 9.3.4. Layer 7 9.3.5. Huge-Scale Balancing 9.3.6. Balancing Non-HTTP Traffic
9.4. Scaling MySQL
9.4.1. Storage Backends
9.5. MyISAM
9.5.1. InnoDB 9.5.2. BDB 9.5.3. Heap
9.6. MySQL Replication
9.6.1. Master-Slave Replication 9.6.2. Tree Replication 9.6.3. Master-Master Replication 9.6.4. Replication Failure 9.6.5. Replication Lag
9.7. Database Partitioning
9.7.1. Clustering 9.7.2. Federation
9.8. Scaling Large Database 9.9. Scaling Storage
9.9.1. Filesystems 9.9.2. Protocols 9.9.3. RAID 9.9.4. Federation 9.9.5. Caching 9.9.6. Caching Data 9.9.7. Caching HTTP Requests 9.9.8. Scaling in a Nutshell
10. Statistics, Monitoring, and Alerting
10.1. Tracking Web Statistics
10.1.1. Server Logfiles 10.1.2. Analysis 10.1.3. Using Beacons 10.1.4. Spread 10.1.5. Load Balancers 10.1.6. Tracking Custom Metrics
10.2. Application Monitoring
10.2.1. Bandwidth Monitoring 10.2.2. Long-Term System Statistics
10.2.2.1. MySQL statistics 10.2.2.2. Apache statistics 10.2.2.3. memcached statistics 10.2.2.4. Squid statistics
10.2.3. Custom Visualizations
10.3. Alerting
10.3.1. Uptime Checks 10.3.2. Resource-Level Monitoring 10.3.3. Threshold Checks 10.3.4. Low-Watermark Checks
11. APIs
11.1. Data Feeds
11.1.1. RSS 11.1.2. RDF 11.1.3. Atom 11.1.4. The Others 11.1.5. Feed Auto-Discovery 11.1.6. Feed Templating 11.1.7. OPML 11.1.8. Feed Authentication
11.2. Mobile Content
11.2.1. The Wireless Application Protocol (WAP) 11.2.2. XHTML Mobile Profile
11.3. Web Services 11.4. API Transports
11.4.1. REST 11.4.2. XML-RPC 11.4.3. SOAP 11.4.4. Transport Abstraction
11.5. API Abuse
11.5.1. Monitoring with API Keys 11.5.2. Throttling 11.5.3. Caching
11.6. Authentication
11.6.1. None at All 11.6.2. Plain Text 11.6.3. Message Authentication Code (MAC) 11.6.4. Token-Based Systems
11.7. The Future
Index Colophon
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion