INDEX

Numbers Neo4j, 119 NoSQL-based data stores, 118 512MB of memory Papertrail, 121 failing to meet, 62, 342, 348 popular, 117–121 requirement for, 7 Postgres. See Postgres databases 99.99% (four nines), 160 Ranger, 121 99.999999999% (eleven nines), 160 Redis, 119 search, 119–120 A Sentry, 121 Solr, 120 Access Keys, 27–28, 37 Sphinx, 120 accreditation, 27–28 SQL-based data stores, 118 ACID (atomicity, consistency, isolation, and StillAlive, 121 durability), 158 summary of, 131 ActiveRecord Admin users, 198 Delayed Job in, 255–256 administration of applications introduction to, 162 overview of, 146–152 in Ruby/Rails apps, 217 tasks in, 20 ActiveState, 352 users in, 198 add-ons Admins, 152 architecture and, 117 Advanced Package Tool (APT), 272 Cassandra, 119, 222–224 AJAX, 390–391 CouchDB, 50, 119, 224–226 Akamai, 41 creating, 127–130 Akka, 335 data stores in, 50 aliases, 83 ecosystem of, 116–117 Amazon ElasticSearch, 120 CloudFront by. See CloudFront Exceptional, 121 COPYRIGHTED MATERIALdata centers of, 25 IndexTank, 120 DynamoDB by, 48, 51 installing from CLI, 125–127 EC2 by. See Amazon Elastic Compute Cloud installing from Dashboard, 122–125 (Amazon EC2) introduction to, 115 Elastic Block Store by, 29, 159–160 LogEntries, 121 Machine Image by, 60 logging, 120–121 Relational Database Service by, 50, 118, Loggly, 121 210–215 Logplex, 121 S3 by. See Amazon Simple Storage Service for mobile apps, 405–409 (Amazon S3) MongoDB, 118–119 Web Services by, 38, 117, 182, monitoring, 121 210–215

469

bbindex.inddindex.indd 469469 009/01/139/01/13 66:50:50 PPMM Amazon Elastic Compute Cloud (Amazon EC2) – AspectJ

Amazon Elastic Compute Cloud (Amazon EC2) Apple Database.com vs., 181 App Store of, 385 e-mail in, 57 iPads by. See mobile applications external data stores in, 226 iPhones by. See mobile applications in Heroku, 4–6 Macs by. See Macs introduction to, 3–4 operating systems by. See Mac OS X Amazon Machine Image (AMI), 60 Xcode Developer Tools by, 272 Amazon Simple Storage Service (Amazon S3) application portfolio management, 23–24 buildpacks in, 369, 372 Applications information, 150–152 apps in, 326 APT (Advanced Package Tool), 272 Django apps in, 309 Arab Spring, 411 fi le uploads in, 47 architecture apps in, 342 accreditation in, 27–28 introduction to, 8 add-ons and, 117 Node.js apps in, 317 Amazon CloudFront and, 41–43 PHP apps in, 347 Amazon S3 and, 36–40 in release management, 104–105 availability zones in, architecture Scala apps in, 334 certifi cations in, 27–28 snapshots of databases in, 160 compliance in, 27–28, 32–33 static assets in, 36–40 content delivery networks in, 18, 36–43 Amazon Web Services (AWS) APIs, 38, 117, 182 data at rest in, 32 AMI (Amazon Machine Image), 60 data in transit in, 32 Android devices. See mobile applications data retention in, 27 Anorm, 328 data stores in, 18 Ant, 57, 274–275, 294 disaster recovery in, 28–29 AOP (aspect-oriented programming), 281 dyno isolation in, 26 Apache encryption in, 32–36 Ant by, 57, 274–275, 294 frameworks in, 17–18 Cassandra by, 119, 222–224 international apps in, 41–43 CouchDB by, 50, 119, 224–226 introduction to, 17–18 HTTP Server by, 347 languages in, 17–18 Ivy by. See Ivy logs in, 33 Lucene by, 119–120 in mobile apps, 384–389 Maven by. See Maven network security and, 25–26 Software Foundation of, 222 pace layering in, 21–24 Subversion by, 74 passwords in, 31 apex domains, 67, 83 physical security and, 25 Apex sharing rules, 200 redundancy, 28–31 Apex triggers, 203–204 reliability in, 28–31 APIs security and, 25–27, 31–33 Bulk, 182 SSL in, 33–36 Chatter. See Chatter APIs stack-layer security in, 26 Persistence, 281 static assets in, 18, 36–43 keys for, 188 summary of, 43 leveraging, 145–146 third-party providers and, 32–33 Metadata, 182 transparency in, 29–31 REST. See REST APIs in twelve-factor apps, 18–20 Streaming, 182 Argent Aspen, 5 usage notifi cations for, 192 AspectJ, 281

470

bbindex.inddindex.indd 470470 009/01/139/01/13 6:506:50 PMPM aspect-oriented programming (AOP) – cache-hit ratios

aspect-oriented programming (AOP), 281 in Python, 310 Aspen, 5 in Scala, 335 Atlassian Bamboo, 298 bin/release, 358–359, 375 atomicity, consistency, isolation, and durability bit rot, 10 (ACID), 158 Blackberry devices. See mobile applications attributes, 175 Blassic binary, 370–375 authentication, 98, 198–199, 262 BLOBs (binary large objects), 48 automation BoxCar, 405, 409 in Database.com, 201–204 buckets of Postgres health checks, 160 in Amazon S3, 37–40 of process management, 6–7 in CloudFront, 41–43 availability zones, architecture introduction to, 27 AWS (Amazon Web Services) APIs, 38, 117, 182, in release management, 103–104 210–215 build scripts, 373 AWS Management Console, 38–40, build stages, 19 211–215 Builder, 241–243 buildpacks B BASIC interpreter in, 370–375 bin/compile in, 353–358, 373–375 B2C (business-to-consumer), 412 bin/detect in, 353, 373 BaaS (back end as a service), 405 bin/release in, 358–359, 375 BAAs (business associate agreements), 28 Blassic binary in, 370–375 back end, 388–394 build scripts in, 373 back end as a service (BaaS), 405 creating apps in, 377–380 background jobs. See also Delayed Job (DJ), creating custom, 370–380 253–261 deploying apps to Heroku in, 377–380 BackgroundThread plugin, 343 introduction to, 351–352 backing services, 19 .NET apps and, 359–362 Backups & Jobs, 210 packaging binary dependencies in, backups in Postgres, 169–171 366–370 Backups in Redis, 221 Perl apps and, 362–366 Badious Bamboo, 5 pushing to public Git repositories, 376–377 bare domains, 67, 83 summary of, 380 Basecamp, 102 Vulcan in, 370–375 BASIC, 370–375 workings of, 352–359 Basic authentication, 98 Bulk API, 182 Beans, 281 Bundler Beckwith, Burt, 342 Delayed Job in, 255–256 beta status add-ons, 117 introduction to, 235–238 binary dependencies, 366–370 Rails apps and, 239–240 binary large objects (BLOBs), 48 in release management, 94–95 bin/compile, 353–358, 373–375 social apps and, 440 bin/detect, 353, 373 business associate agreements (BAAs), 28 binding to ports business-to-consumer (B2C), 412 in Clojure, 327, 343 introduction to, 62–63, 264 C in Java, 297 in Node.js, 318 C# programs, 359–362 in PHP, 348 cache-hit ratios, 167–168

471

bbindex.inddindex.indd 471471 009/01/139/01/13 6:506:50 PMPM caching – command-line interfaces (CLIs)

caching PHP apps and, 347 in Clojure apps, 326 SQL-based data stores and, 158 in Groovy, 342 third-party data stores and, 208–210 in Java apps, 297–298 CLI (command line interface). See command-line in Node.js apps, 317 interfaces (CLIs) in PHP apps, 347 Clojure in porting apps, 52–53, 263 binding to ports in, 327, 343 in Python apps, 309 caching in, 326 in Ruby, 261–262 confi guration variables in, 326, 342 in Scala apps, 334 data stores in, 326 in session management, 296 dependencies in, 326, 342 CakePHP, 347 e-mail in, 326–327, 342 Campfi re, 102 external programs in, 327, 342 Camping, 234 fi lesystems in, 326 cancelling queries, 176 logging in, 327, 342 Canonical Name (CNAME), 66, 83 long-running processes in, 327 Canvas apps moving domains in, 328, 343 contest apps and, 416, 424 scaling up vs. scaling out in, 327, 342–343 creating, 412–416 session management in, 326 deploying to Heroku, 424–429 shutting down in, 327, 343 Page of, 412 for software development, generally, 319–328 CAs (certifi cate authorities), 34–35 static assets in, 326 Cassandra, 119, 222–224 Web containers in, 326, 342 Catalina, 281 Web servers in, 326, 342 Catalyst, 362 CloudAMPQ, 318, 327 CDNs (content delivery networks). See content Cloudant, 119, 224–226 delivery networks (CDNs) CloudBerry Explorer, 38 Cedar, 4–6, 351 CloudFront Cedexis, 41 architecture and, 41–43 Celadon Cedar, 4–6, 351 Clojure apps in, 326 central data repositories, 388–389 Django apps in, 309 centralized models, 74 Grails apps in, 342 certifi cate authorities (CAs), 34–35 Node.js apps in, 317 certifi cations, 27–28 PHP apps in, 347 change sets, 203 Scala apps in, 334 Chatter APIs CNAME (Canonical Name), 66, 83 Amazon Web Services and, 38, 182 codebases, 18–19 data stores and, generally, 182 CoffeeScript, 331 introduction to, 49 collaborators, 83–84 release of, 411 Collections tab, 219 for social apps, 429–444 collectstatic, 309 social graphs in, 204 CometD, 389 Chen, David E., 27 command-line interfaces (CLIs) chroot, 8 Cassandra in, 223–224 classifi cations, 22 ClearDB in, 208 ClearDB Cloudant in, 225–226 introduction to, 50–51 creating databases in, 163 MYSQL and, 118 deploying apps in, 77–79

472

bbindex.inddindex.indd 472472 009/01/139/01/13 6:506:50 PMPM comma-separated value (CSV) spreadsheets – data retention

destroying databases in, 169 CSS fi les, 54 followers for databases in, 165 CSV (comma-separated value) spreadsheets, forking databases in, 164 189–190 Heroku interactions via, 77–79 cURL installing apps from, 125–127 buildpacks and, 366, 368 maintenance mode in, 106 Clojure and, 327 MongoDB in, 218 Grails and, 342 Proximo in, 227–229 Heroku API and, 145 RDS tools in, 214 Java and, 296 RedisGreen in, 220–222 PHP apps and, 348 Spring Roo in, 281 Ruby and, 264 comma-separated value (CSV) spreadsheets, Scala apps and, 335 189–190 URL transfer tasks in, 61 compliance, 27–28, 32–33 custom collaborators, 83–84 Compojure, 319–321 custom domains, 83, 133–135 Composer, 347 custom error pages, 103–106 Concurrent Versions System (CVS), 74 customer relationship management (CRM), 22, confi guration variables (confi g vars) 158, 407 in Clojure, 326, 342 CVS (Concurrent Versions System), 74 in Node.js, 317 Cyberduck, 38 in PHP, 347 in porting apps, 54–55 D in Python, 309 in release management, 94–97 DaaS (data as a service), 18, 158–159, 182 in Scala, 334 Dalli, 262 in session management, 296 Dancer, 362 console process type, 245 Dashboard containerless applications, 275–281 Cassandra in, 223 content delivery networks (CDNs) ClearDB in, 208–210 in architecture, 18, 36–43 Cloudant in, 224–225 caching in, 262 custom collaborators in, 83–84 CloudFront as, 41–43 custom domains in, 83 introduction to, 15 deploying apps in, 80–87 contest apps, 416–424 installing apps from, 122–125 continuous integration, 107–114, 298 introduction to, 80–82 continuous protection, 159–160 JustOneDB in, 216 Couchbase’s Memcache. See Memcache MongoDB in, 218 CouchDB, 50, 119, 224–226 names of apps in, 82 Coyote, 286 Proximo in, 227 CPAN, 363, 365 RedisGreen in, 221–222 create, read, update, and delete scaling resources in, 84–87 (CRUD), 199 data as a service (DaaS), 18, CRM (customer relationship management), 22, 158–159, 182 158, 407 data caching, 261 cron jobs, 57–59 data clips, 173–174 cross-site scripting (XSS), 31 data integrity, 200–201 CRUD (create, read, update, and Data Loader, 188 delete), 199 data retention, 27

473

bbindex.inddindex.indd 473473 009/01/139/01/13 6:506:50 PMPM data storage vs. fi le storage – development databases

data storage vs. fi le storage, 192 Delayed Job (DJ) data stores deploying apps to Heroku in, 257–268 in architecture, 18 introduction to, 253–255 in Clojure, 326 setup of, 255–257 Database.com as. See Database.com testing, 258–261 in Groovy, 342 delegated authentication, 198–199 Java and, 296 deleting databases, 168–169 in Node.js, 317 dependencies in PHP, 347 binary, 366–370 porting apps to Heroku and, 48–51, 263 in Clojure, 326, 342 Postgres as. See Postgres databases declaration of, 19 in Python, 309 in Java, 272–275 in Scala, 334 in Node.js, 317 third-parties for. See third-party data stores in PHP, 347–348 Database Interface (DBI), 217 porting apps to Heroku and, Database Session Plugin, 342 56–57, 263 Database.com in Python, 310 advanced features in, 199 in Ruby, 235–238 Apex triggers in, 203–204 in Scala, 334–335 authenticating users in, 198–199 in session management, 296 automation in, 201–204 deploy hooks, 102–103 creating databases in, 183–188 deploying applications creating sample app in, 193–198 buildpacks in, 377–380 data integrity in, 200–201 command-line interface in, 77–79 as data store, generally, 181–182 custom collaborators in, 83–84 exporting data in, 188–191 custom domains in, 83 importing data in, 188–191 Dashboard in, 80–87 managing change in, 202–203 Delayed Job in, 257–268 managing databases in, 191–192 Foreman in, 75–76 managing users in, 198–199 Git in, 74–75, 79–80 in porting apps, 49–50 Heroku clients in, 76 profi les in, 199–200 introduction to, 73–74 sharing in, 199–200 management of, 148 for social apps, 430–444 names of apps in, 82 social graphs in, 204 post deploy hooks in, 80 startup in, 182–183 in Rails, 244–247 storing fi les in, 203 in Ruby, 244–247, 251–253, summary of, 204–205 257–268 test databases in, 202–203 scaling resources in, 84–87 validation rules in, 200–201 in Sinatra, 251–253 workfl ow rules in, 201–202 social apps in, 424–429 databases in Postgres. See Postgres summary of, 87–88 databases Toolbelt installation and, 74–76 DataNucleus JPA, 56 deploying WAR fi les, 294–295 DBI (Database Interface), 217 deployment descriptor (DD) fi les, 294 DD (deployment descriptor) fi les, 294 destroying databases, 168–169 DDoS (Distributed Denial of Service), 26 developer operations (DevOps), 267 de Icaza, Miguel, 359 development architectures, 384–389 decide() method, 68 development databases, 178

474

bbindex.inddindex.indd 474474 009/01/139/01/13 6:506:50 PMPM DevOps (developer operations) – extension method

DevOps (developer operations), 267 E direct uploads, 64 disaster recovery, 28–29 EAR (Enterprise Archive) fi les, 270 Distributed Denial of Service (DDoS), 26 Ebean ORM, 290–291 distributed models, 74 EBS (Elastic Block Store), 29, 159–160 distribution, defi ned, 7 EC2 (Elastic Compute Cloud). See Amazon Elastic DJ (Delayed Job). See Delayed Job (DJ) Compute Cloud (Amazon EC2) Django, 302–309 ecosystems, 116–117 DNS (Domain Name Service) Elastic Block Store (EBS), 29, 159–160 cached, 67 Elastic Compute Cloud (Amazon EC2). See Canonical Name and, 35, 42, 66 Amazon Elastic Compute Cloud Java apps and, 297 (Amazon EC2) management of, 85 ElasticSearch, 120 naked domains and, 67 eleven nines (99.999999999%), 160 Python apps and, 311 e-mail Ruby apps and, 264 in Clojure, 326–327, 342 updating, 83, 134–135 Java and, 296 DNSimple, 83 in Node.js, 317 DoD 5220.22-M (“National Industrial Security in PHP, 348 Program Operating Manual”), 27 porting apps and, 57, 263 Dollar, David, 75 in Python, 310 Domain Name Service (DNS). See DNS (Domain in Scala, 335 Name Service) SendGrid, 87 domains embedded databases, 48 apex, 67, 83 Embedded Jetty, 275–281 bare, 67, 83 encryption, 32–36 in Clojure, 328, 343 Endpoint, 34–36 custom, 83 Endpoint Information, 210 in Dashboard, 83 enterprise applications, 268–271 in DNS, 67 Enterprise Archive (EAR) fi les, 270 fully-qualifi ed, 54, 83 enterprise resource planning (ERP), in Heroku Dashboard, 83 21, 407 moving, 66 EntityStore, 262 naked, 67, 83 ephemeral fi lesystems, 47 in Node.js, 318 erosion resistance, 10–11 in PHP, 349 ERP (enterprise resource planning), in Python, 311 21, 407 in Scala, 336 error pages, 106 “don’t repeat yourself” principle, 234 event streams, 20 downtime planning, 103–106 Eventlet, 310 drains, 60–61 Evolutions, 332 Drawbridge, 327 Exceptional, 121 Duffy, Frank, 21 existing applications, 47–48, dump fi les, 171–172 51, 67–68 dynos existing data stores, 226–229 introduction to, 6–7 exporting data, 188–191 isolation in, 8, 26 exporting processes, 19–20 manifolds in, 6–7 Express, 312–313, 317–318 in multi-dyno apps, 47 extension method, 241

475

bbindex.inddindex.indd 475475 009/01/139/01/13 6:506:50 PMPM external programs – GitHub

external programs Fugu, 125–126 in Clojure, 327, 342 fully-qualifi ed domain names (FQDNs), 54, 83 in Java, 296 in Node.js, 318 in PHP, 348 G porting apps and, 61, 264 Gartner, 21 in Python, 310 Geddy, 317–318 in Scala, 335 Gem Bundler, 19 gems F Bundler, 235–238 defi ned, 235 Facebook apps Kensa, 127–130 Canvas, 412–416 OAuth, 437 for contests, 416–424 Postgres, 239 deploying to Heroku, 424–429 Rails, 127–130 introduction to, 411–412 Rake, 177, 239 PHP vs., 343 Ruby, 76, 94–96, 108–109 federated authentication, 198–199 RubyGems for, 235–238 Ferret, 48 in Sinatra apps, 251 fi eld updates, 201 Tddium, 108–109 fi le storage, defi ned, 192 Twilio Rbuy, 239 fi le uploads, 47–48 Vulcan and, 366–368 fi lesystems gevent, 310 caching in, 263 Git. See also GitHub in Clojure, 326 buildpacks and, 376–377, 379 in Groovy, 341 in Canvas apps, 424–425 in Java, 296 in Clojure apps, 323–324 in Node.js, 317 command-line commands for, 78 in PHP, 346 confi guration variables in, 95 in Python, 309 deploying apps in, 74–75, 79–80 in Scala, 334 git remotes in, 77, 82, 91–93 traditional vs. ephemeral, 46–48 in release management, 91–93 fi rewalls, 25–26 repositories in, 251–252, 376–377, 424–425 Fisher, Robert, 342 in Sinatra apps, 251–252 FlightCaster, 389 git remotes, 77, 82, 91–93 Flying Sphinx, 48, 120 GitHub following databases, 161 binding to ports in, 62 Force.com, 181 buildpacks and, 376–377, 379 Foreman in Clojure apps, 327 confi guration variables in, 97 continuous integration in, 110–114 deploying apps, 75–76 gitignore in, 306 Kensa and, 128–129 in Grails apps, 343 forking databases, 160–161, 164 introduction to, 75–77 forks, 76 Java and, 297 four nines (99.99%), 160 in Node.js apps, 318 FQDNs (fully-qualifi ed domain names), 54, 83 in PHP apps, 348 frameworks, defi ned, 17–18 porting apps to Heroku and, 264 front end, 394–405 in Scala apps, 335

476

bbindex.inddindex.indd 476476 009/01/139/01/13 6:506:50 PMPM GlassFish – International Traffi c in Arms Regulations (ITAR)

GlassFish, 55 routing HTTP requests in, 13–15 global positioning system (GPS), 385 slug compiler in, 12–13 Goliath, 15 stacks in, 4–6 Google, 311 summary of, 15 Gosling, Dr. James A., 268 Toolbelt in. See Toolbelt GovCloud (US), 28 version control in, 11–12 governance, 23 , 56, 281–286, 336 GPS (global positioning system), 385 Hiccup, 319, 322 Grails, 336–343 Hickey, Rich, 319 Grails Database Session Plugin, 342 higher-availability architecture, 160–161 graph databases, 119 HIPAA (Health Insurance Portability and graphical user interfaces (GUIs), 80 Accountability Act), 28 Graphs tab, 221 Homebrew, 234 Groovy Hoover library, 310 caching in, 342 How Buildings Learn: What Happens After data stores in, 342 They’re Built, 21 fi lesystems in, 341 HSQLDB (Hyper Structured Query Language introduction to, 336–343 Database), 338 session management in, 342 hstore, 174–176 static assets in, 342 HTML5 mobile applications Growl, 409 back end of, 390–394 “Guidelines for Media Sanitization” (NIST front end of, 394–405 800-88), 27 introduction to, 386–387 GUIs (graphical user interfaces), 80 writing, generally, 389 Gunicorn, 310 HTTP Basic authentication, 98 caching, 52–53, 261–262 H porting existing apps and, 67–68 Hadoop, 49 requests, 13–15, 253–254 Hall, Ben, 359–360 HTTParty, 440 Hansson, David Heinemeier, 234 HTTPS, 67–68 Harris, Parker, 25 HTTPS over SSL, 66–68 Health Insurance Portability and Accountability hybrid mobile applications, 387 Act (HIPAA), 28 Hyper Structured Query Language Database Heapy, 310 (HSQLDB), 338 Heroku client in, 76 I Dashboard in. See Dashboard deploying apps to. See deploying applications importing data, 171–173, 188–191 dyno isolation in, 7–8 IndexTank, 120 dyno manifolds in, 6–7 Info tab, 221 dynos in, 6–7 integration testing, 90 erosion resistance in, 10–11 intelligent routing, 6 Labs in, 55 IntelliJ, 329 Manager in, 150–152 interactive voice response (IVR), 238 for Mobile version of, 405 international applications, 41–43 Postgres in. See Postgres databases International Traffi c in Arms Regulations process model in, 8–10 (ITAR), 28

477

bbindex.inddindex.indd 477477 009/01/139/01/13 6:506:50 PMPM Internet service providers (ISPs) – just-in-time (JIT) provisioning

Internet service providers (ISPs), 67 session management in, 297–298 Inversion of Control (IoC) and, 281–286 frameworks, 281 summary of, 298–299 I/O approaches, 286 Tomcat and, 281–286 I/O bottlenecks, 167 WAR fi les in, 294–295 IoC (Inversion of Control) Windows and, 271 frameworks, 281 Java ARchive (JAR), 274 iOS devices. See mobile applications Java Database Connectivity (JDBC), IronCache, 50 162, 281 IronMQ, 327 (JDK), 268, 271–272, isolation 405–409 in ACID, 158 Java EE (Java Platform, Enterprise Edition), 56, of dynos, 7–8, 26 268–271 in twelve-factor apps, 19 Java Message Service (JMS), 343 ISPs (Internet service providers), 67 Java Naming and Directory Interface (JDNI), 270 ITAR (International Traffi c in Arms Java Persistence API (JPA), 281 Regulations), 28 (JVM) IVR (interactive voice response), 238 Clojure and, 319, 327 Ivy Grails and, 336 Grails and, 339, 342 introduction to, 268 I/O approaches and, 286 Scala apps in, 328 Java apps and, 294 JavaMelody Grails Plugin, 342 Scala apps and, 333–334 JavaScript Object Notation (JSON), 218, 328–333 JavaServer Faces (JSF), 56 J JavaServer Pages (JSP), 56, 269 JBoss, 55 JAR (Java ARchive), 274 JBoss Netty, 286 Java JDBC (Java Database Connectivity), 162, 281 additional considerations in, JDK (Java Development Kit), 268, 271–272, 295–298 405–409 ARchive in, 274 JDNI (Java Naming and Directory buildpacks in, 355–358 Interface), 270 caching in, 297–298 Jenkins app, 298 containerless apps in, 275–281 Jetty, 56, 327, 334 continuous integration in, 298 Jetty Runner, 275, 342 dependencies in, 272–275 JIT (just-in-time) provisioning, 199 Embedded Jetty and, 275–281 Jitterbit Data Loader, 189 Enterprise Edition of, 56, 268–271 JMS (Java Message Service), 343 Hibernate and, 281–286 JPA (Java Persistence API), 281 introduction to, 267–268 JPython, 268 Linux and, 272 jQMobile, 386 Mac OS X and, 272 jQuery Mobile, 386, 394 memory management in, 298 JRuby, 268 Naming and Directory Interface in, 270 JSF (JavaServer Faces), 56 overview of, 268 JSON (JavaScript Object Notation), 218, Persistence API in, 281 328–333 and, 286–294 JSP (JavaServer Pages), 56, 269 porting apps to Heroku in, 295–297 just-in-time (JIT) provisioning, 199

478

bbindex.inddindex.indd 478478 009/01/139/01/13 6:506:50 PMPM JustOneDB – Macs

JustOneDB, 50, 215–217 LogEntries, 121 JVisualVM, 327 logging JVM (Java Virtual Machine). See Java Virtual add-ons for, 120–121 Machine (JVM) in architecture, 33 in Clojure, 327, 342 K event streams and, 20 Java and, 296 Kensa gem, 127–130 in Node.js, 317 key-value pairs, 175 in PHP, 348 porting apps and, 59–61, L 264 in Python, 310 LAMP (Linux, Apache, MySQL, PHP), 343 in Scala, 335 languages for software development viewing logs in, 136–140 in architecture, generally, 17–18 Loggly Clojure, 319–328 Clojure and, 327 Grails framework for, 336–343 Grails and, 342 Groovy, 336–343 introduction to, 121 introduction to, 301 Java and, 270 Java. See Java Node.js apps and, 317 Node.js, 311–318 Python apps in, 310 PHP, 343–349 logins, 81 Python, 302–311 Logplex, 60, 121, 166 Ruby. See Ruby apps long-running processes Scala, 328–336 in binding to ports, 264 summary of, 349 in Clojure, 327 Launch DB Instance Wizard, 211–213 in Java, 297 Leiningen, 319, 325–326 in Node.js, 318 Lerdorf, Rasmus, 343 in PHP, 348–349 LexiLoader, 189 porting apps and, 63–65 Lifty, 334 in Scala, 335 Light Database.com, 200 Lucene, 119–120 Light users, 198 Lulz Security, 27 Linux LXC (Linux Containers), 8 Git and, 11 HTTP servers in, 310 M in LAMP, 343 Maven in, 275 Mac OS X. See also Macs OpenJDK 6 in, 272 Growl notifi cations in, 409 PHP in, 343 Java and, 272 production environments in, 90 Maven and, 275 stacks in, 4–5 Maven in, 275 Toolbelt on, 73, 76 PHP in, 343 Linux Containers (LXC), 8 Ruby with, 234 Lisp, 319 MacPorts, 272 local environment variables, 97 Macs local workstations, 234–235 stacks in, 5 Log4j, 270 Toolbelt on, 73, 76

479

bbindex.inddindex.indd 479479 009/01/139/01/13 6:506:50 PMPM Mailgun – moving domains

Mailgun, 57 PHP apps in, 347 maintenance mode, 103–106 Ruby apps and, 262 MAMP, 343–344 memory management, 62, 298 managing applications Memory Quota Exceeded (R14) administration options for, 146–152 errors, 62 Admins in, 152 menu method, 241 API leveraging in, 145–146 Metadata API, 182 Applications information in, 150–152 Microsoft SharePoint, 411 custom domains in, 133–135 Miyagawa, Tatsuhiko, 363 deploys in, 148 mobile applications Heroku Manager for, 150–152 add-ons for, 405–409 introduction to, 20, 133 back end of, 390–394 Members in, 152 BoxCar for, 409 on mobile devices, 146–148 central data repositories for, 388–389 multi-account options for, 149 development architectures in, 384–389 New Relic in, 141–144 front end of, 394–405 Nezumi in, 147 HTML5 for, 386–389 performance tuning in, 140–145 hybrid, 387 status page in, 147–148 introduction to, 383–384 summary of, 153 managing, 146–148 viewing logs in, 136–140 native, 384–386 Worqbench in, 148 Parse for, 406–407 managing change, 202–203 PubNub for, 409 managing databases, 166, 191–192 RhoConnect for, 407–408 managing users, 198–199 StackMob for, 405–406 Matsumoto, Yukihiro “Matz,” 234 summary of, 409–410 Matz’s Ruby Implementation (MRI), 5 toolkits for, 405–409 Maven model-view-controller (MVC), 234, buildpacks in, 355–358 286, 302 containerless apps in, 280 MongoDB, 50, 118–119, 218–220 dependencies in, 272–275 MongoHQ, 218 Grails and, 336, 342 MongoLab, 218–220 Java and, 268, 270–275 monitoring applications Scala apps and, 334–335 add-ons for, 121 Spring Framework and, 285 introduction to, 133 Members, 152 performance tuning in, 140–145 Memcache summary of, 153 introduction to, 15 viewing logs in, 136–140 Java and, 270 monitoring databases, 166 PHP apps and, 347 Mono framework, 359–362 Ruby apps and, Motorola, 407 261–262 moving domains Scala apps and, 334 in Clojure, 328, 343 Memcachier in Node.js, 318 Django apps in, 309 in PHP, 349 introduction to, 50, 53 in porting apps, 66, 264 Java and, 297 in Python, 311 Node.js apps in, 317 in Scala, 336

480

bbindex.inddindex.indd 480480 009/01/139/01/13 6:506:50 PMPM MRI (Matz’s Ruby Implementation) – outbound messages

MRI (Matz’s Ruby Implementation), 5 logging in, 317 multi-account options, 149 long-running processes in, 318 multi-dyno applications, 47 moving domains in, 318 multi-ingress, 159 scaling up vs. scaling out in, 318 multiple data stores, 51 session management in, 317 multiple deploys, 18–19 shutting down in, 318 multiple environments, 19, 90–93 for software development, generally, 311–318 Murty, James, 64 static assets in, 317 MVC (model-view-controller), 234, 286, 302 Web containers in, 317 My Apps page, 82 Web servers in, 317 Myspace, 411 Nodetime, 318 MySQL Noir, 326 data stores and, 158 NoSQL-based data stores, 118, 217–226 databases in. See Postgres databases importing from databases in, 173 O third-party data stores in, 208–215 mysql2psql, 173 OAuth in Database.com, 198 N introduction to, 49 social apps and, 430–437, 440, 442 naked domains, 67, 83 object-relational mapping (ORM) names of applications, 82 in Java, 281, 283 Nancy, 359–362 in Python, 302 “National Industrial Security Program Operating in Ruby/Rails apps, 217 Manual” (DoD 5220.22-M), 27 objects native mobile applications, 384–386 access to, 182, 412 Neo4J, 50, 119 in ActiveRecords, 264 .NET applications, 359–362 Beans, 281 network security, 25–26 binary large, 48 New Relic in Database.com, 183–188 monitoring databases in, 167 in ORM. See object-relational mapping in performance tuning, 141–144 (ORM) Python apps in, 310 in Parse, 407 in session management, 297 in Rails, 262 Nezumi, 147 in Scala, 328 Nginx, 347 security and, 49 NIST 800-88 (“Guidelines for Media storage of, 36–40 Sanitization”), 27 onStart()/onStop() methods, 291 Node.js Open Java Development Kit (OpenJDK) 6, for back end, 390–391 271–272 binding to ports in, 318 Open Web Application Security Project, 32 caching in, 317 OpenRedis, 220 confi guration variables in, 317 Oracle, 271 data stores in, 317 organization-wide defaults, 199 dependencies in, 317 origin, 91–93 e-mail in, 317 ORM (object-relational mapping). See external programs in, 318 object-relational mapping (ORM) fi lesystems in, 317 outbound messages, 201

481

bbindex.inddindex.indd 481481 009/01/139/01/13 6:506:50 PMPM PaaS (platform as a service) – porting applications

P scaling up vs. scaling out in, 348 session management in, 347 PaaS (platform as a service), 269 shutting down in, 349 pace layering for social apps, generally, 412 application portfolio management in, for software development, generally, 23–24 343–349 classifi cation in, 22 static assets in, 347 governance in, 23 Web containers in, 347 introduction to, 21 Web servers in, 347 reliability in, 22–23 physical security, 25 security in, 22–23 PicCollage, 388 systems of differentiation in, 21–22, 24 piggybacking, 33 systems of innovation in, 22, 24 PINs, 248–251 systems of record in, 21, 24 Pip, 19, 303–304 packaging binary dependencies, 366–370 plans for databases, 167–168 page caching, 52–53, 261 platform as a service (PaaS), 269 Papertrail, 121 Play framework, 286–294, 328–335 Parse, 405–407 POM (Project Object Model), 272–275 pass-throughs, 65 popular add-ons, 117–121 passwords, 31 port binding, 19–20 performance tuning porting applications guidelines for, 145 add-on data stores in, 50 introduction to, 140–141 binding to ports in, 62–63 New Relic in, 141–144 caching in, 52–53 third-party data stores in, 210 confi guration variables in, 54–55 Perl applications, 362–366 cron jobs in, 57–59 Perl Web Server Gateway Interface (PSGI), 363 data store selection in, 48–51 personnel gaps, 20 Database.com in, 49–50 PG Backups, 169–172 dependencies in, 56–57 PHI (protected health information), 28 e-mail in, 57 phone numbers, 241–244 embedded databases in, 48 PhoneGap, 388, 394 ephemeral fi lesystems vs., 47 PHP existing apps in, 47–48, 51, 67–68 binding to ports in, 348 external programs in, 61 buildpacks in, 353–355 fi le uploads in, 47–48 caching in, 347 HTTPS over SSL in, 66–68 Canvas in, 412–416 introduction to, 45–46 confi guration variables in, 347 in Java, 295–297 contest app code in, 416–424 logging in, 59–61 data stores in, 347 long-running processes in, 63–65 dependencies in, 347–348 moving domains in, 66 deploying apps in, 424–429 multi-dyno apps in, 47 e-mail in, 348 multiple data stores in, 51 external programs in, 348 Postgres in, 48–49 fi lesystems in, 346 Ruby apps, 263–265 logging in, 348 scaling up vs. scaling out in, 62 long-running processes in, 348–349 session management in, 51–52 moving domains in, 349 shutting down in, 65–66 Quick Profi ler in, 348 storing static assets in, 54

482

bbindex.inddindex.indd 482482 009/01/139/01/13 6:506:50 PMPM POST – Python apps

summary of, 68–69 production databases third-party DaaS providers in, 50–51 creating apps in, 176–179 traditional fi lesystems vs., 46–48 followers for, 166 Web containers in, 55–56 forking, 164 Web servers in, 55–56 plans for, 167 POST, 241 profi les, 199–200, 348 post deploy hooks, 80 Project Object Model (POM), Postgres databases 272–275 adding via command-line, 85–86 protected health information (PHI), 28 adding via Dashboard, 85 Proximo, 26, 227–229 advanced features in, 173–176 PSGI (Perl Web Server Gateway Interface), 363 automated health checks in, 160 PSQL (PostgresSQL), 162, 166 backing up, 169–171 PubNub, 389, 405, 409 buildpacks and, 365–366 pull requests, 76 cancelling queries in, 176 Pusher, 14 Clojure apps and, 319 pushing apps to Heroku. See also deploying continuous protection in, 159–160 applications creating, 161–163 buildpacks and, 376–377 data clips in, 173–174 continuous integration in, 110–114 deleting, 168–169 databases in, generally, 178 followers in, 164–166 dependencies in, 237–238 forking, 164 git push for, 79–80 Grails apps and, 338 introduction to, 11 higher-availability architecture in, Postgres databases in, 197 160–161 in Rails, 244–245 hstore in, 174–176 in Ruby, 12–13 importing data in, 171–173 in Sinatra, 98–99 installing, 121–127 versioning and, 100–101 introduction to, 157–159 WebSockets and, 63 Java apps and, 290–294 Python apps managing, 166 binding to ports in, 310 mobile apps and, 393 caching in, 309 monitoring, 166 confi guration variables in, 309 Node.js apps and, 314–315 data stores in, 309 PHP apps and, 345–346 dependencies in, 310 plans for, 167–168 e-mail in, 310 porting apps in, 48–49 external programs in, 310 Python apps and, 305 fi lesystems in, 309 Rails apps and, 238 introduction to, 9 sample app creation in, 176–179 Java and, 268 schema-free storage in, 174–176 logging in, 310 sharing information in, 173–174 moving domains in, 311 SQL in, 118 PHP and, 348 summary of, 179 scaling up vs. scaling out, 310 third-party alternatives to, session management in, 309 215–217 shutting down in, 310–311 PostgresSQL (PSQL), 162, 166 static assets in, 309 presentation assets, 26, 36 Web containers in, 310 process model, 8–10 Web servers in, 310

483

bbindex.inddindex.indd 483483 009/01/139/01/13 6:506:50 PMPM quality assurance (QA) – Ruby apps

Q Redis Queue (RQ), 310 Redis To Go, 48, 53, 317 quality assurance (QA), 23, 90, 202–203 RedisGreen, 220–221 queries redundancy, 7, 28–31 cancelling, 176 REE (Ruby Enterprise Edition), 5 in HSQLDB, 338 refreshing databases, 203 in jQuery Mobile, 386, 394 Relational Database Service (RDS) Slow, 221 introduction to, 50 in SOQL, 183 MYSQL in, 118 SOQL (Salesforce Object Query Language), as third-party data store, 210–215 183 release management in Squeryl, 328 confi guration variables in, 94–97 Quick Profi ler, 348 continuous integration in, 107–114 custom error pages in, 103–106 R deploy hooks in, 102–103 downtime planning in, 103–106 R14 (Memory Quota Exceeded) introduction to, 89–90 errors, 62 multiple environments in, 90–93 RabbitMQ, 297 rolling back releases in, 100–102 Rack-based frameworks, 234 securing development environments in, Rack::Cache, 262 97–99 Rails apps summary of, 114 ActiveRecord in, 217 versioning in, 100–102 caching, 261–262 reliability, 22–23, 28–31 creating, 193–198, 238–244 Resources page, 86–87 Delayed Job in, 255–261 REST APIs deploying to Heroku, 244–247 Chatter in, 204 introduction to, 8–9 Database.com and, 187–188, 198 Postgres and, 176–179 for front end, 398–400 RedisGreen in, 221 introduction to, 182 Ruby and, 234, 238–244 JustOneDB in, 217 testing apps in, 247–248 storing fi les in, 203 Twilio accounts in, 244 restoring database backups, 171 Rake gems RhoConnect, 405, 407–408 Clojure and, 319, 323 Ring, 326 Postgres and, 178–179 role hierarchies, 200 Ruby and, 239 rolling back releases, 100–102 rake process type, 245, 247 RQ (Redis Queue), 310 Ramaze, 234 Ruby apps Ranger, 121 ActiveRecord in, 217 RDS (Relational Database Service), 50, 118, background jobs in, 253–261 210–215 caching, 261–262 record ownership, 199 confi guration variables in, 94–95 Redis Delayed Job in, 253–261 add-ons, 119 dependencies in, 235–238 introduction to, 50 deploying to Heroku, 244–247, 251–253, Java and, 270 257–268 as third-party data store, 220–222 installing programs for, 234–235

484

bbindex.inddindex.indd 484484 009/01/139/01/13 6:506:50 PMPM Ruby Enterprise Edition (REE) – security tokens

introduction to, 12–13, 233 e-mail in, 335 Java and, 268 external programs in, 335 Kensa, 127–130 fi lesystems in, 334 on local workstations, 234–235 introduction to, 268 overview of, 234 logging in, 335 porting to Heroku, 263–265 long-running processes in, 335 on Rails, 193–198 moving domains in, 336 Rails framework for, 238–248 scaling up vs. scaling out in, 335 RedisGreen in, 221 session management in, 334 Sinatra framework for, 248–253 shutting down in, 335–336 summary of, 265 for software development, generally, Tddium in, 107–114 328–336 testing, 247–248, 253, 258–261 static assets in, 334 Twilio accounts for, 244 Web containers in, 334 writing, 238–244, 248–251 Web servers in, 334 Ruby Enterprise Edition (REE), 5 Scalatra, 334 Ruby Version Manager (RVM), 235 scaling applications RubyGems, 235 in Clojure, 327, 342–343 run stages, 19 Java and, 297 RVM (Ruby Version Manager), 235 managing apps and, 133 in Node.js, 318 S in PHP, 348 in porting apps, 62, 264 S3 (Simple Storage Service). See Amazon Simple Postgres and, 153 Storage Service (Amazon S3) in Python, 310 S3Fox Organizer, 38 in Scala, 335 Salesforce Object Query Language scalability, defi ned, 20 (SOQL), 183 scaling elasticity, 6 Salesforce.com scaling resources, 84–87 Chatter by, 411 Scheduler, 58–59, 101 compliance and, 27 Schema Builder, 187–188 Database.com by. See Database.com schema-free data storage, 174–176 introduction to, 18 search add-ons, 119–120 physical security and, 25 Secret Access Keys, 27–28, 37 SAML (Security Assertion Markup Language), Secure Shell (SSH), 26 198–199 Secure Sockets Layer (SSL). See SSL (Secure Socket Sarbanes-Oxley (SOX) Act, 27 Layer) SASL (Simple Authentication and Security Layer), security 262 of apps, 31–33 saved fi les, 48 in architecture, 25–27 sbt (Simple Build Tool), 286 in Database.com, 198–199 Scala of development environments, 97–99 binding to ports in, 335 in pace layering, 22–23 buildpacks in, 358–359 in SASL, 262 caching in, 334 Spring, 297 confi guration variables in, 334 Security Assertion Markup Language (SAML), data stores in, 334 198–199 dependencies in, 334–335 security tokens, 188, 198

485

bbindex.inddindex.indd 485485 009/01/139/01/13 6:506:50 PMPM SendGrid –

SendGrid Sinatra apps adding, 126 buildpacks in, 359–362 Clojure and, 327 caching, 262 introduction to, 57 Cloudant and, 226 Node.js and, 317 deploying to Heroku, PHP and, 348 251–253 Postgres and, 87 installing, 235 Python and, 310 introduction to, 98, 108, 234 Scala and, 335 Kensa and, 128 Sentry, 121 porting to Heroku, 263 Service Cloud, 181 Ruby and, 248–253 service-level agreements (SLAs), 29 testing, 253 servlet containers, 55 writing, 248–251 session management SLAs (service-level agreements), 29 in Clojure, 326 SLF4J (Simple Logging Facade for in Groovy, 342 Java), 270 in Java, 297–298 Slow Queries tab, 221 Java and, 296 slugs, 12–13, 352 in Node.js, 317 SOAP, 198, 203 in PHP, 347 social applications porting apps and, 51–52, 263 Canvas, 412–416 in Python, 309 Chatter API for, 429–444 in Scala, 334 contests in, 416–424 shadow objects, 430–444 Database.com for, share-nothing models, 286 430–444 SharePoint, 411 deploying to Heroku, sharing information, 173–174, 199–200 424–429 shearing layers, 21 for Facebook, generally, 412 shutting down introduction to, 411–412 in Clojure, 327, 343 PHP for, generally, 412 introduction to, 20 shadow objects in, Java and, 297 430–444 in Node.js, 318 summary of, 444 in PHP, 349 social graphs, 204 in porting apps, 65–66 Socket.IO, 318 in Python, 310–311 software development cycle, 89–90 in Ruby, 264 software development languages. See languages in Scala, 335–336 for software development SIGTERM. See also shutting down, 7, software erosion, 10 65–66, 264 Solr, 120 Simone, John, 284 SOQL (Salesforce Object Query Simple Authentication and Security Layer Language), 183 (SASL), 262 SOX (Sarbanes-Oxley) Simple Build Tool (sbt), 286 Act, 27 Simple Logging Facade for Java Sphinx, 120 (SLF4J), 270 Spring, 336 Simple Storage Service (Amazon S3). Spring Framework, 281–286 See Amazon Simple Storage Service Spring Roo, 269, 281–286 (Amazon S3) Spring Security, 297

486

bbindex.inddindex.indd 486486 009/01/139/01/13 6:506:50 PMPM SQL-based data stores – third-party data stores

SQL-based data stores, 158–159 of data. See data stores SQL of Database.com fi les, 203 data store add-ons in, 118 of fi les, defi ned, 192 databases in. See Postgres databases of static assets, 18, 54 databases in, generally, 207 usage of, 191–192 MySQL, 158, 173, 208–215 storage as a service (STaaS), 26, 36 PostgresSQL, 162, 166 Streaming API, 182 third-party data stores in, 207–217 Subversion (SVN), 74 SQLite, 236–237 Sun Systems, 268 Squeryl, 328 Support Cases, 210 SSH (Secure Shell), 26 supported languages. See languages for software SSL (Secure Socket Layer) development Endpoint in, 34–36 SVN (Subversion), 74 introduction to, 33 Symphony, 347 piggybacking on Heroku’s certifi cate in, 33 System Overview page, 191 Postgres and, 166 systems of differentiation, 21–22, 24 STaaS (storage as a service), 26, 36 systems of innovation, 22, 24 Stackato, 352 systems of record, 21, 24 stack-layer security, 26 StackMob, 405–406 T staging applications, 91–92 staging databases, 202 tag library descriptor (TLD) fi les, 294 standard input (STDIN), 9 Tddium, 107–114 standard output (STDOUT), 10 temporary fi les, 48 Standard users, 198 test databases, 202–203 Starman, 363 testing applications startup, 20 in Delayed Job, 258–261 stateless processes, 19 in Rails, 247–248 static assets in Ruby, 247–248, 253, 258–261 in Amazon S3, 36–40 in Sinatra, 253 in architecture, 36–43 Thin, 15 in Clojure, 326 third-party add-ons, 32–33 in Groovy, 342 third-party DaaS providers, 50–51 in Node.js, 317 third-party data stores in PHP, 347 Amazon Relational Database Service, porting apps and, 263 210–215 in Python, 309 Apache Cassandra, 119, 222–224 in Scala, 334 Apache CouchDB, 50, 119, 224–226 in session management, 296 attaching existing, 226–229 storage of, 18, 54 ClearDB. See ClearDB Stats tab, 219 introduction to, 207 status page, 147–148 JustOneDB, 215–217 status.heroku.com, 29 MongoDB, 218–220 STDIN (standard input), 9 MySQL options for, 208–215 STDOUT (standard output), 10 NoSQL-based options for, 217–226 StillAlive, 121 Postgres alternatives for, 215–217 storage Redis, 220–222 in Amazon S3. See Amazon Simple Storage SQL-based options for, 207–217 Service (Amazon S3) summary of, 229

487

bbindex.inddindex.indd 487487 009/01/139/01/13 6:506:50 PMPM Tiggzi – WSGI (Web Server Gateway Interface)

Tiggzi, 394–402, 403 Vulcan time gaps, 20 buildpacks and, 355, 366–375 TLD (tag library descriptor) fi les, 294 introduction to, 347 Tomcat, 56, 269, 281–286 tool gaps, 20 Toolbelt W Foreman in, 75–76 Wall, Larry, 362 Git in, 74–75 WAR fi les, 294–295 Heroku client in, 76 Web containers installing, 74–76 in Clojure, 326, 342 toolkits, 405–409 in Node.js, 317 Tools tab, 219 in PHP, 347 Top Ten Project, 32 in porting apps, 55–56, 263 Torvalds, Linus, 11 in Python, 310 transparency, 29–31 in Scala, 334 Treasure Data, 49, 50 in session management, 296 triggers, 201–202 web process type, 245 twelve-factor applications, 18–20 Web Server Gateway Interface (WSGI), 302 Twilio Web servers Rails apps and, 238–244 in Clojure, 326, 342 Ruby apps and, 244 in Node.js, 317 Sinatra apps and, 248–253 in PHP, 347 TwiML, 241 in porting apps, 55–56, 263 in Python, 310 U in Scala, 334 in session management, 296 UAT (user acceptance testing), 23, 90 Webapp Runner, 284–285 uninterrupted power supply (UPS), 25 Weblogic, 268 URLs. See cURL WebSockets, 389 US-East region, 41, 51, 117 WebSolr, 120 user acceptance testing (UAT), 23, 90 WebSphere, 55, 268 user interfaces (UIs), 385–386, 388, 402 Windows Users tab, 219 Java and, 271 production environments in, 90 V stacks in, 5 Toolbelt on, 73, 76 V8 JavaScript engine, 311 WampServer, 344 valet keys, 198 Workbench, 189–191 validation rules, 200–201 worker process type, 245 Varnish, 15, 261 workfl ow rules, 201–202 version control, 11–12, 100–102 Worqbench, 148 views, 250 writing applications virtual environments, 302–303 containerless, 275–281 virtual machines (VMs). See also Java Virtual in Play framework, 286–294 Machine (JVM), 75 in Rails, 238–244 virtual private networks (VPNs), 11, 26 in Ruby, 238–244, 248–251 VMs (virtual machines). See also Java Virtual in Sinatra, 248–251 Machine (JVM), 75 in Spring Framework, 281–286 VPNs (virtual private networks), 11, 26 WSGI (Web Server Gateway Interface), 302

488

bbindex.inddindex.indd 488488 009/01/139/01/13 6:506:50 PMPM Xcode Developer Tools – Zerigo DNS

X XML, 241–244 XSS (cross-site scripting), 31 Xcode Developer Tools, 272 XDebug, 348 Y Xeround introduction to, 48 YAML, 94, 358 MYSQL and, 118 Yum, 272 PHP apps in, 347 in porting apps, 50–51 Z SQL-based data stores and, 158 Zend, 347 X-Forwarded-Proto, 68 Zerigo DNS, 134–135

489

bbindex.inddindex.indd 489489 009/01/139/01/13 6:506:50 PMPM bbindex.inddindex.indd 490490 009/01/139/01/13 6:506:50 PMPM