Web programming Books
O'Reilly Media iOS 11 Swift Programming Cookbook
Book SynopsisiOS 11, Swift 4, and Xcode 9 provide many new APIs for iOS developers. With this cookbook, you'll learn more than 170 proven solutions for tackling the latest features in iOS 11 and watchOS 4, including new ways to use Swift and Xcode to make your day-to-day app development life easier.
£35.99
Pearson Education (US) Learning React
Book Synopsis Kirupa Chinnathambi has spent most of his life trying to teach others to love web development as much as he does. In 1999, before blogging was even a word, he started posting tutorials on kirupa.com. In the years since then, he has written hundreds of articles, penned a few books (none as good as this one, of course!), and recorded a bunch of videos you can find on YouTube. When he isn't writing or talking about web development, he spends his waking hours helping make the web more awesome as a Program Manager at Microsoft. In his nonwaking hours, he is probably sleepingor writing about himself in the third person. You can find him on Twitter (twitter.com/kirupa), Facebook (facebook.com/kirupa), or email (kirupa@kirupa.com). Feel free to contact him anytime.Trade ReviewAmazon Reviews of the First Edition This is the best book to get up and running with React.JS I found this book to be an amazing introductory text to learning React. Leveraging creativity interspersed with a bit of humor, the author took complex topics and made it more easily understood. Even when the difficulty ramped up, Kirupa made the dry and mundane almost non-existent. I can't recall once wishing for the book to end. That's tough to do - definitely more art than science. If you're looking for a solid, working understanding of getting up & running with React - this is the book. (January 20, 2017) Great book from start to finish I rarely review books. I don't even remember the last time I reviewed a book. I may have never reviewed a book in my life. In any event, I felt obligated to review this book because it was so well written. I've ready many programming books on many languages and this one is the only one to keep my attention all the way to the end. Every chapter builds upon the previous one. It starts out elementary and then works its way through more complex ideas. I understand JavaScript but this book explained to me how React works. The author is a born teacher and I appreciate his efforts! Thank you. (June 8, 2017) Absolutely amazing Absolutely blown away with how good of a book this is. I've been trying different tutorials, along with a couple of paid video courses. The video courses were fairly good, but they started off with complex projects and built them from the ground up. While it was cool to see how a complex app is actually built with React, there is no replacement for how Kirupa has figured out how to explain everything so simply. One difference here is that he starts with the very minimal things you need to know, explains those, and then expands to something a little more complex in the next chapter. This, combined with some humor, is just perfect. I've read a lot of IT and development books over the years, and I think this may be the best one I've read. I'm only around halfway done with the book, but wow, again, I'm blown away. I don't generally write reviews much, but I had to on this one. You're a natural teacher man, and thank you for this one! Seriously, thank you. If I could give this one more than 5 stars, I absolutely would. (February 17, 2017) Well Written I cannot comment enough on the readability of this text. Seasoned and rookie web developers should have no problem understanding the subject matter. (March 21, 2017) Makes sense of difficult concepts, and is a fun, easy read This is actually the only tech book I have ever read cover-to-cover. The author is a natural teacher. I tried a different react book and a bunch of online tutorials, and the concepts just didn't "click" for me. But after reading this, I understand it alot better. If you're starting at square one with react, this is square one. Side note: it's also very nicely designed. Shouldn't matter that much for a tech book, but then again we ARE talking about the view layer here! (January 21, 2017) Absolutely love this book Absolutely love this book! I have read other books and I've even taken a video course on React and this is the first time the author actually clearly explains the benefits of React. The other texts assumed the reader knows and jumps right in. I am a big reader and this is by far the best information on learning React that I've found. (January 25, 2018) Great examples, code, and explanations Spectacular job of keeping things simple by only focusing on one point at a time, choosing great examples, and using readable code with well-crafted, simple explanations. Many authors try to achieve this the lazy way- by omitting large amounts of code and relying on the reader to download it and understand it on her own. By contrast, the Learning React author included all of the code in the book and was not afraid to repeat code when it reinforced his point. (May 8, 2018) Excellent primer for React The author does a great job of introducing one concept at a time and then ties it all together. The overall tone of the book makes it easy to read cover to cover in one sitting. (January 31, 2017) Great book for beginners Great book so far. I'm about 25% in and it's already paid off in my React class. Love the friendly writing style, the easy-to-understand code snippets, and the well written explanations. Great job.(January 26, 2018) Skip the command line and learn how to build React apps first I'm learning React (after learning many other languages over the years). This is the single best book I've read to get started with a new language! The author has a terrific sense of humor and a logical progression from front to back. What had been the bane of my existence for React - dealing with setup of Node.js using the command line interface and the many issues I had getting done - he eliminated and put toward the end of the book. I actually got to enjoy going through the book, and try it all out before dealing with the command line. Talk about getting off to a good start! I still have a lot to learn, but I feel confident that I can learn what I need to know. (March 23, 2018) A really great way to learn the fundamentals of ReactJS A really great way to learn the fundamentals of ReactJS. This books really breaks it down barney style and teaches you how to write react with JSX; which is the easiest way to learn the JS library. Buy this book if you are willing to learn the JS library. (September 14, 2017) Table of Contents1 Introducing React Old-School Multipage Design New-School Single-Page Apps Meet React Automatic UI State Management Lightning-Fast DOM Manipulation APIs to Create Truly Composable UIs Visuals Defined Entirely in JavaScript Just the V in an MVC Architecture 2 Building Your First React App Dealing with JSX Getting Your React On Displaying Your Name It’s All Still Familiar Changing the Destination Styling It Up! 3 Components in React Quick Review of Functions Changing How We Deal with UI Meet the React Component Creating a Hello, World! Component Specifying Properties First Part: Updating the Component Definition Second Part: Modifying the Component Call Dealing with Children 4 Styling in React Displaying Some Vowels Styling React Content Using CSS Understand the Generated HTML Just Style It Already! Styling Content the React Way Creating a Style Object Actually Styling Our Content Making the Background Color Customizable 5 Creating Complex Components From Visuals to Components Identifying the Major Visual Elements Identifying the Components Creating the Components The Card Component The Square Component The Label Component Passing Properties, Again! Why Component Composability Rocks 6 Transferring Properties Problem Overview Detailed Look at the Problem Meet the Spread Operator A Better Way to Transfer Properties 7 Meet JSX...Again! What Happens with JSX? JSX Quirks to Remember Evaluating Expressions Returning Multiple Elements You Can’t Specify CSS Inline Comments Capitalization, HTML Elements, and Components Your JSX Can Be Anywhere 8 Dealing with State in React Using State Our Starting Point Getting Our Counter On Setting the Initial State Value Starting Our Timer and Setting State Rendering the State Change Optional: The Full Code 9 Going from Data to UI in React The Example Your JSX Can Be Anywhere, Part II Dealing with Arrays 10 Events in React Listening and Reacting to Events Starting Point Making the Button Click Do Something Event Properties Meet Synthetic Events Doing Stuff with Event Properties More Eventing Shenanigans You Can’t Directly Listen to Events on Components Listening to Regular DOM Events The Meaning of this Inside the Event Handler React...Why? Why? Browser Compatibility Improved Performance 11 The Component Lifecycle Meet the Lifecycle Methods See the Lifecycle Methods in Action The Initial Rendering Phase Getting the Default Props Getting the Default State componentWillMount render componentDidMount The Updating Phase Dealing with State Changes shouldComponentUpdate componentWillUpdate render componentDidUpdate Dealing with Prop Changes The Unmounting Phase 12 Accessing DOM Elements in React The Colorizer Example Meet Refs Using Portals 13 Setting Up Your React Dev Environment Easily Meet Create React Making Sense of What Happened Creating Our HelloWorld App Creating a Production Build 14 Working with External Data in React Web Request 101 It’s React Time! Getting Started Getting the IP Address Kicking the Visuals Up a Notch 15 Building an Awesome Todo List App in React Getting Started Creating the Initial UI Building the Rest of the App Adding Items Displaying the Items Styling our App Removing Items Animation! Animation! Animation! 16 Creating a Sliding Menu in React How the Sliding Menu Works Setting Up the Sliding Menu Getting Started Showing and Hiding the Menu Creating the Button Creating the Menu 17 Avoiding Unnecessary Renders in React About the render Method Optimizing render Calls Getting an Example Going Seeing the render Calls Overriding a Component Update Using PureComponent 18 Creating a Single-Page App in React Using React Router The Example Getting Started Building Our Single-Page App Displaying the Initial Frame Creating Our Content Pages Using React Router It’s the Little Things Fixing Our Routing Adding Some CSS Highlighting the Active Link 19 Introduction to Redux What Is Redux? Building a Simple App Using Redux It’s Redux Time Lights! Camera! Action! Our Reducer Store Stuff 20 Using Redux with React Managing React State with Redux How Redux and React Overlap Getting Started Building the App
£28.49
O'Reilly Media JavaScript jQuery The Missing Manual 3e
Book SynopsisThis easy-to-read guide not only covers JavaScript basics, but also shows you how to save time and effort with the jQuery and jQuery UI libraries of prewritten JavaScript code. You'll build web pages that feel and act like desktop programs - with little or no programming.
£35.99
O'Reilly Media Javascript Robotics
Book SynopsisJohnny-Five is an open source JavaScript Arduino programming framework for robotics. This book brings together fifteen rock star programmers, each creating a unique Johnny-Five robot step-by-step, and offering tips and tricks along the way. Experience with JavaScript is a prerequisite.
£19.19
O'Reilly Media Designing for Scalability with ErlangOTP
Book SynopsisThis hands-on guide demonstrates how to use the Erlang programming language and its OTP framework of reusable libraries, tools, and design principles to develop complex commercial-grade systems that simply cannot fail.
£29.99
O'Reilly Media Learning SPARQL
Book SynopsisGet hands-on experience with SPARQL, the RDF query language. With this concise book, you will learn how to use the latest version of this W3C standard to retrieve and manipulate the increasing amount of public and private data available via SPARQL endpoints.
£25.59
O'Reilly Media Head First Ruby
Book SynopsisBased on the latest research in cognitive science and learning theory, Head First Ruby uses a visually rich format to engage your mind, rather than a text-heavy approach that puts you to sleep. Why waste your time struggling with new concepts? This multi-sensory learning experience is designed for the way your brain really works.
£35.99
Pearson Education (US) Modern JavaScript for the Impatient
Book SynopsisCay S. Horstmann is principal author of Core JavaTM Volumes I & II, Eleventh Edition (Pearson, 2018), Scala for the Impatient, Second Edition (2016), and Core Java SE 9 for the Impatient (2017). Cay is a professor of computer science at San Jose State University, a Java Champion, and a frequent speaker at computer industry conferences.Table of ContentsPreface xvAbout the Author xxi Chapter 1: Values and Variables 11.1 Running JavaScript 11.2 Types and the typeofOperator 51.3 Comments 51.4 Variable Declarations 61.5 Identifiers 71.6 Numbers 81.7 Arithmetic Operators 91.8 Boolean Values 121.9 null and undefined 121.10 String Literals 131.11 Template Literals 151.12 Objects 161.13 Object Literal Syntax 171.14 Arrays 181.15 JSON 201.16 Destructuring 211.17 Advanced Destructuring 23Exercises 24 Chapter 2: Control Structures 272.1 Expressions and Statements 272.2 Semicolon Insertion 292.3 Branches 312.4 Boolishness 342.5 Comparison and Equality Testing 342.6 Mixed Comparisons 362.7 Boolean Operators 372.8 The switchStatement 392.9 while anddo Loops 402.10 for Loops 412.11 Breaking and Continuing 442.12 Catching Exceptions 46Exercises 47 Chapter 3: Functions and Functional Programming 513.1 Declaring Functions 513.2 Higher-Order Functions 533.3 Function Literals 543.4 Arrow Functions 543.5 Functional Array Processing 563.6 Closures 573.7 Hard Objects 593.8 Strict Mode 613.9 Testing Argument Types 623.10 Supplying More or Fewer Arguments 633.11 Default Arguments 643.12 Rest Parameters and the Spread Operator 643.13 Simulating Named Arguments with Destructuring 663.14 Hoisting 673.15 Throwing Exceptions 693.16 Catching Exceptions 703.17 The finallyClause 72Exercises 73 Chapter 4: Object-Oriented Programming 774.1 Methods 774.2 Prototypes 784.3 Constructors 814.4 The Class Syntax 834.5 Getters and Setters 854.6 Instance Fields and Private Methods 854.7 Static Methods and Fields 864.8 Subclasses 874.9 Overriding Methods 894.10 Subclass Construction 904.11 Class Expressions 914.12 The thisReference 92Exercises 95 Chapter 5: Numbers and Dates 995.1 Number Literals 995.2 Number Formatting 1005.3 Number Parsing 1015.4 Number Functions and Constants 1025.5 Mathematical Functions and Constants 1035.6 Big Integers 1055.7 Constructing Dates 1055.8 Date Functions and Methods 1095.9 Date Formatting 110Exercises 110 Chapter 6: Strings and Regular Expressions 1156.1 Converting between Strings and Code Point Sequences 1156.2 Substrings 1166.3 Other String Methods 1186.4 Tagged Template Literals 1216.5 Raw Template Literals 1226.6 Regular Expressions 1236.7 Regular Expression Literals 1276.8 Flags 1276.9 Regular Expressions and Unicode 1296.10 The Methods of the RegExpClass 1306.11 Groups 1316.12 String Methods with Regular Expressions 1336.13 More about Regex Replace 1356.14 Exotic Features 136Exercises 137 Chapter 7: Arrays and Collections 1417.1 Constructing Arrays 1417.2 The lengthProperty and Index Properties 1437.3 Deleting and Adding Elements 1447.4 Other Array Mutators 1457.5 Producing Elements 1487.6 Finding Elements 1497.7 Visiting All Elements 1507.8 Sparse Arrays 1527.9 Reduction 1537.10 Maps 1567.11 Sets 1587.12 Weak Maps and Sets 1597.13 Typed Arrays 1607.14 Array Buffers 163Exercises 164 Chapter 8: Internationalization 1678.1 The Locale Concept 1678.2 Specifying a Locale 1688.3 Formatting Numbers 1718.4 Localizing Dates and Times 1728.5 Collation 1768.6 Other Locale-Sensitive String Methods 1778.7 Plural Rules and Lists 1788.8 Miscellaneous Locale Features 180Exercises 181 Chapter 9: Asynchronous Programming 1859.1 Concurrent Tasks in JavaScript 1859.2 Making Promises 1889.3 Immediately Settled Promises 1919.4 Obtaining Promise Results 1919.5 Promise Chaining 1929.6 Rejection Handling 1949.7 Executing Multiple Promises 1969.8 Racing Multiple Promises 1979.9 Async Functions 1979.10 Async Return Values 1999.11 Concurrent Await 2019.12 Exceptions in Async Functions 202Exercises 203 Chapter 10: Modules 20910.1 The Module Concept 20910.2 ECMAScript Modules 21010.3 Default Imports 21110.4 Named Imports 21210.5 Dynamic Imports 21310.6 Exports 21310.7 Packaging Modules 217Exercises 218 Chapter 11: Metaprogramming 22111.1 Symbols 22111.2 Customization with Symbol Properties 22311.3 Property Attributes 22511.4 Enumerating Properties 22811.5 Testing a Single Property 22911.6 Protecting Objects 23011.7 Creating or Updating Objects 23111.8 Accessing and Updating the Prototype 23111.9 Cloning Objects 23211.10 Function Properties 23511.11 Binding Arguments and Invoking Methods 23611.12 Proxies 23711.13 The ReflectClass 24011.14 Proxy Invariants 242Exercises 244 Chapter 12: Iterators and Generators 24912.1 Iterable Values 24912.2 Implementing an Iterable 25012.3 Closeable Iterators 25212.4 Generators 25412.5 Nested Yield 25512.6 Generators as Consumers 25712.7 Generators and Asynchronous Processing 25912.8 Async Generators and Iterators 261Exercises 263 Chapter 13: An Introduction to Typescript 26913.1 Type Annotations 27013.2 Running TypeScript 27113.3 Type Terminology 27313.4 Primitive Types 27413.5 Composite Types 27513.6 Type Inference 27713.7 Subtypes 28013.8 Classes 28413.9 Structural Typing 28713.10 Interfaces 28813.11 Indexed Properties 29013.12 Complex Function Parameters 29113.13 Generic Programming 297Exercises 305 Index 309
£30.59
The Pragmatic Programmers Rust Brain Teasers
Book SynopsisThe Rust programming language is consistent and does its best to avoid surprising the programmer. Like all languages, though, Rust still has its quirks. But these quirks present a teaching opportunity. In this book, you'll work through a series of brain teasers that will challenge your understanding of Rust. By understanding the gaps in your knowledge, you can become better at what you do and avoid mistakes. Many of the teasers in this book come from the author's own experience creating software. Others derive from commonly asked questions in the Rust community. Regardless of their origin, these brain teasers are fun, and let's face it: who doesn't love a good puzzle, right? What better way to exercise your brain and increase your Rust programming knowledge than with a collection of dynamic brain teasers? As you read through each of these puzzles and try to work out the answers, you'll not only learn about Rust's unique quirks and peculiarities, you'll also have loads of fun along the way. Dive right in and get started with example code and sample problems that cover numbers and text, shadowing and memory, and everything in between. Try to figure out why a particular program won't compile, why it produces unexpected output, or why it panics and terminates with an error message. Once you've run the code and read the answer, it's time to get to the heart of the matter with a detailed explanation. Learn why a program produced the result it did, and discover how similar issues might affect the code you write in your own programs, even in production. Sourced from engaging discussions within the Rust community, real-world problems, and even reader feedback, these challenges will certainly surprise, enlighten, and entertain you. Are you ready to experience Rust like never before? Then sharpen your brain and get ready for a challenge! What You Need: This book assumes you have some knowledge of the Rust programming language. To work through the brain teasers in this book, you'll need a working Rust environment on any platform. You can install Rust by visiting https: //rustup.rs/. You'll also need a text editor or Rust-friendly IDE.
£13.49
O'Reilly Media Learning Go
Book Synopsis
£42.39
O'Reilly Media Fluent React
Book SynopsisWhen 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 reconciliation, and advanced optimization techniques.
£39.74
Manning Publications ASP.NET Core in Action, Third Edition
Book SynopsisBuild professional-grade full-stack web applications using C# and ASP.NET Core. ASP.NET Core in Action, 3rd edition by Microsoft MVP Andrew Lock, is a fully updated edition, ideal for intermediate C# developers, and teaches you how to use your C# and .NET skills to build amazing cross-platform web applications. This revised bestseller reveals the latest .NET patterns, including minimal APIs and minimal hosting. Even if you have never worked with ASP.NET, you will soon start creating productive cross-platform web apps. Features include: Build minimal APIs for serving JSON to client-side applications Create dynamic, server-side rendered applications using Razor Pages User authentication and authorisation Store data using Entity Framework Core Unit and integration tests for ASP.NET Core applications Write custom middleware and components About the technology Developers love ASP.NET Core for its libraries and pre-built components that maximize productivity. This awesome web framework empowers you to build web applications using HTTP APIs, server-side rendered HTML, and long-running server processes - all by using the same familiar structure and components. Version 7.0 takes full advantage of new C# features, easy-to-build minimal APIs, and big performance upgrades.
£38.99
O'Reilly Media Generative AI on Aws
Book SynopsisWith this book, Chris Fregly, Antje Barth, and Shelbee Eigenbrode from AWS help CTOs, ML practitioners, application developers, business analysts, data engineers, and data scientists find practical ways to use this exciting new technology.
£47.99
John Wiley & Sons Inc JavaScript AllinOne For Dummies
Book SynopsisTable of ContentsIntroduction 1 Book 1: JavaScript Fundamentals 7 Chapter 1: Jumping into JavaScript 9 Chapter 2: Filling Your JavaScript Toolbox 41 Chapter 3: Using Data 63 Chapter 4: Working with Operators and Expressions 81 Chapter 5: Controlling Flow 91 Chapter 6: Using Arrays 105 Chapter 7: Making and Using Objects 125 Chapter 8: Writing and Running Functions 139 Chapter 9: Getting Oriented with Classes 167 Chapter 10: Making Things Happen with Events 181 Chapter 11: Writing Asynchronous JavaScript 197 Chapter 12: Using JavaScript Modules 223 Book 2: Meet Your Web Browser 231 Chapter 1: What a Web Browser Does 233 Chapter 2: Programming the Browser 241 Book 3: React 261 Chapter 1: Getting Started with React 263 Chapter 2: Writing JSX 281 Chapter 3: Building React Components 297 Chapter 4: Using Data and Events in React 327 Book 4: Vue 341 Chapter 1: Getting an Overview of Vue 343 Chapter 2: Introducing Vue Components 357 Chapter 3: Making Vue Templates 369 Chapter 4: Using Data and Reactivity 395 Chapter 5: Responding to Events 411 Book 5: Svelte 421 Chapter 1: Getting Started with Svelte 423 Chapter 2: Building with Components 437 Chapter 3: Designing Templates 451 Chapter 4: Using Directives 463 Chapter 5: Using the Component Lifecycle 471 Chapter 6: Advanced Svelte Reactivity 483 Book 6: Sharpening Your Tools 493 Chapter 1: Building from Scratch 495 Chapter 2: Optimizing and Bundling 513 Chapter 3: Testing Your JavaScript 535 Book 7: Node.js 557 Chapter 1: Node.js Fundamentals 559 Chapter 2: Streaming 587 Chapter 3: Working with Buffers 603 Chapter 4: Accessing the File System 613 Chapter 5: Networking with Node 627 Chapter 6: Using Events 639 Chapter 7: Error Handling and Debugging 651 Chapter 8: Accessing Databases 673 Chapter 9: Riding on the Express Train 697 Chapter 10: Registration and Authentication 721 Index 755
£22.39
Pearson Education (US) Core Java
Book SynopsisCay S. Horstmann is the author of Modern JavaScript for the Impatient (2020), Core Java SE 9 for the Impatient, Second Edition (2017), Scala for the Impatient, Second Edition (2016), and Java SE 8 for the Really Impatient (2014), all from Addison-Wesley. He has written more than a dozen other books for professional programmers and computer science students. He is an emeritus professor of computer science at San Jose State University and a Java Champion.Table of ContentsPreface xvii Acknowledgments xxi Chapter 1: Streams 1 1.1 From Iterating to Stream Operations 2 1.2 Stream Creation 5 1.3 The filter, map, and flatMap Methods 11 1.4 Extracting Substreams and Combining Streams 13 1.5 Other Stream Transformations 15 1.6 Simple Reductions 16 1.7 The Optional Type 17 1.8 Collecting Results 26 1.9 Collecting into Maps 31 1.10 Grouping and Partitioning 35 1.11 Downstream Collectors 36 1.12 Reduction Operations 41 1.13 Primitive Type Streams 43 1.14 Parallel Streams 49 Chapter 2: Input and Output 55 2.1 Input/Output Streams 56 2.2 Reading and Writing Binary Data 78 2.3 Object Input/Output Streams and Serialization 89 2.4 Working with Files 115 2.5 Memory-Mapped Files 131 2.6 File Locking 141 2.7 Regular Expressions 143 Chapter 3: XML 159 3.1 Introducing XML 160 3.2 The Structure of an XML Document 162 3.3 Parsing an XML Document 165 3.4 Validating XML Documents 175 3.5 Locating Information with XPath 194 3.6 Using Namespaces 199 3.7 Streaming Parsers 203 3.8 Generating XML Documents 212 3.9 XSL Transformations 223 Chapter 4: Networking 235 4.1 Connecting to a Server 235 4.2 Implementing Servers 244 4.3 Getting Web Data 259 4.4 The HTTP Client 279 4.5 Sending E-Mail 287 Chapter 5: Database Programming 291 5.1 The Design of JDBC 292 5.2 The Structured Query Language 295 5.3 JDBC Configuration 301 5.4 Working with JDBC Statements 307 5.5 Query Execution 319 5.6 Scrollable and Updatable Result Sets 331 5.7 Row Sets 338 5.8 Metadata 343 5.9 Transactions 353 5.10 Connection Management in Web and Enterprise Applications 358 Chapter 6: The Date and Time API 361 6.1 The Time Line 362 6.2 Local Dates 366 6.3 Date Adjusters 372 6.4 Local Time 373 6.5 Zoned Time 375 6.6 Formatting and Parsing 379 6.7 Interoperating with Legacy Code 384 Chapter 7: Internationalization 387 7.1 Locales 388 7.2 Number Formats 395 7.3 Date and Time 403 7.4 Collation and Normalization 407 7.5 Message Formatting 413 7.6 Text Input and Output 418 7.7 Resource Bundles 421 7.8 A Complete Example 426 Chapter 8: Scripting, Compiling, and Annotation Processing 443 8.1 Scripting for the Java Platform 444 8.2 The Compiler API 456 8.3 Using Annotations 467 8.4 Annotation Syntax 475 8.5 Standard Annotations 482 8.6 Source-Level Annotation Processing 488 8.7 Bytecode Engineering 493 Chapter 9: The Java Platform Module System 503 9.1 The Module Concept 504 9.2 Naming Modules 505 9.3 The Modular "Hello, World!" Program 506 9.4 Requiring Modules 508 9.5 Exporting Packages 510 9.6 Modular JARs 514 9.7 Modules and Reflective Access 515 9.8 Automatic Modules 518 9.9 The Unnamed Module 521 9.10 Command-Line Flags for Migration 521 9.11 Transitive and Static Requirements 523 9.12 Qualified Exporting and Opening 525 9.13 Service Loading 526 9.14 Tools for Working with Modules 528 Chapter 10: Security 533 10.1 Class Loaders 534 10.2 User Authentication 549 10.3 Digital Signatures 562 10.4 Encryption 578 Chapter 11: Advanced Swing and Graphics 591 11.1 Tables 591 11.2 Trees 630 11.3 Advanced AWT 671 11.4 Raster Images 721 11.5 Printing 749 Chapter 12: Native Methods 785 12.1 Calling a C Function from a Java Program 786 12.2 Numeric Parameters and Return Values 793 12.3 String Parameters 795 12.4 Accessing Fields 801 12.5 Encoding Signatures 806 12.6 Calling Java Methods 808 12.7 Accessing Array Elements 816 12.8 Handling Errors 819 12.9 Using the Invocation API 825 12.10 A Complete Example: Accessing the Windows Registry 830 12.11 Foreign Functions: A Glimpse into the Future 846 Index 849
£42.74
Rosenfeld Media Managing Chaos: Digital Governance by Design
Book Synopsis
£33.29
The Pragmatic Programmers Concurrent Data Processing in Elixir: Fast,
Book SynopsisLearn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or fault-tolerance. Most projects benefit from running background tasks and processing data concurrently, but the world of OTP and various libraries can be challenging. Which Supervisor and what strategy to use? What about GenServer? Maybe you need back-pressure, but is GenStage, Flow, or Broadway a better choice? You will learn everything you need to know to answer these questions, start building highly concurrent applications in no time, and write code that's not only fast, but also resilient to errors and easy to scale. Whether you are building a high-frequency stock trading application or a consumer web app, you need to know how to leverage concurrency to build applications that are fast and efficient. Elixir and the OTP offer a range of powerful tools, and this guide will show you how to choose the best tool for each job, and use it effectively to quickly start building highly concurrent applications. Learn about Tasks, supervision trees, and the different types of Supervisors available to you. Understand why processes and process linking are the building blocks of concurrency in Elixir. Get comfortable with the OTP and use the GenServer behaviour to maintain process state for long-running jobs. Easily scale the number of running processes using the Registry. Handle large volumes of data and traffic spikes with GenStage, using back-pressure to your advantage. Create your first multi-stage data processing pipeline using producer, consumer, and producer-consumer stages. Process large collections with Flow, using MapReduce and more in parallel. Thanks to Broadway, you will see how easy it is to integrate with popular message broker systems, or even existing GenStage producers. Start building the high-performance and fault-tolerant applications Elixir is famous for today. What You Need: You'll need Elixir 1.9+ and Erlang/OTP 22+ installed on a Mac OS X, Linux, or Windows machine.
£30.35
No Starch Press,US Eloquent Javascript, 3rd Edition: A Modern
Book SynopsisJavaScript lies at the heart of almost every modern web application, from social apps like Twitter to browser-based game frameworks like Phaser and Babylon. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. This much anticipated and thoroughly revised third edition of Eloquent JavaScript dives deep into the JavaScript language to show you how to write beautiful, effective code.Trade Review“Eloquent Javascript 3rd Edition is a worthy and much-needed update to the popular programming book. The fact that the book covers ES6 is worth a re-read, but the new edition goes above and beyond with new illustrations, a new exercise, and tighter writing. The 3rd edition of the book is substantially improved from its predecessors and worthy of the hype.”—Books on Code"It’s a smart, lean JavaScript tutorial that exists as an in-print book from No Starch Press, and a free, nicely formatted web version . . . easily the most enjoyable read in this list. And there are so many useful insights that you won’t be bored."—Matthew MacDonald, Medium's Young Coder“This is all the JavaScript knowledge you’ll need to hit the ground running in a JavaScript project . . . it’s a book I will be frequently revisiting as it has put JavaScript back on my radar.”—GeekTeckStuff“This book would make a great addition to any developer's reference books . . . I really like the author's style of writing and clarity of explanations. The sample code and exercises also work, which can be a rare feature in tech-related books”—Gary Woodfine, Software Developer“I think this is one of the most enjoyable programming books I’ve read. It covers the core features of the language concisely but then goes on to illustrate how to use those features.”—Ian Hopkinson, IanHopkinson.org“If you’re at all interested in learning JavaScript, making this your first guide could mean the difference between getting discouraged and giving up and really getting into programming as a lifelong venture.”—Joshua Johnson, Design Shack“Marijn Haverbeke is a software philosopher and all-round genius. He also has a terrific sense of humor and writes both prose and code in a friendly and un-intimidating fashion. In common with the very best teachers he dispenses his wisdom with disarming simplicity. I became a better architect, author, mentor and developer because of this book. It deserves to share shelf space with Flannagan and Crockford.”—Angus Croll, Javascript We Blog"A tour de force that takes you from the fundamentals to the heights of JavaScript mastery. Marijn Haverbeke’s conversational prose breathes life into JavaScript, making it accessible and engaging."—Alex Maher, .NET C# dev"The author, Marijn Haverbeke, has a great voice."—Abu Sayed, Sayed.Cyou Blog"One of the things that makes [Eloquent JavaScript, 3rd Edition] so good is that it doesn’t shy away from complexity . . . Haverbeke is a talented teacher, and he seems to have an intuitive understanding of how difficult concepts can be explained without oversimplifying them."—Neil Abad, Book Review Buffs
£28.49
O'Reilly Media Head First HTML5
Book SynopsisHead First HTML5 Programming introduces the key features -- including improved text elements, audio and video tags, geolocation, and the Canvas drawing surface -- and uses concrete examples and exercises to apply and reinforce these concepts.
£35.99
O'Reilly Media Applied Text Analysis with Python
Book SynopsisThis practical book presents a data scientist's approach to building language-aware products with applied machine learning.
£39.74
Manning Publications Learn Kubernetes in a Month of Lunches
Book SynopsisIn Learn Kubernetes in a Month of Lunches you'll go from "what's a Pod?" to automatically scaling clusters of containers and components in just 22 hands-on lessons, each short enough to fit into a lunch break. Every lesson is task-focused and covers an essential skill on the road to Kubernetes mastery. You'll learn how to smooth container management with Kubernetes, including securing your clusters, and upgrades and rollbacks with zero downtime. No development stack, platform, or background is assumed. Author Elton Stoneman describes all patterns generically, so you can easily apply them to your applications and port them to other projects! about the technologyCreate apps that perform identically on your laptop, data center, and cloud! Kubernetes provides a consistent method for deploying applications on any platform, making it easy to grow. By efficiently orchestrating Docker containers, Kubernetes simplifies tasks like rolling upgrades, scaling, and self-healing. about the book Learn Kubernetes in a Month of Lunches is your guide to getting up and running with Kubernetes. You'll progress from Kubernetes basics to essential skills, learning to model, deploy, and manage applications in production. Exercises demonstrate how Kubernetes works with multiple languages and frameworks. You'll also practice with new apps, legacy code, and serverless functions. what's inside Deploying applications on Kubernetes clusters Understanding the Kubernetes app lifecycle, from packaging to rollbacks Self-healing and scalable apps Using Kubernetes as a platform for new technologies about the readerFor readers familiar with Docker and containerization. about the author Elton Stoneman is a Docker Captain, a 11-time Microsoft MVP, and the author of Learn Docker in a Month of Lunches.
£43.19
In Easy Steps Limited JavaScript in easy steps
Book SynopsisJavaScript in easy steps, 6th edition instructs the user how to create exciting web pages that employ the power of JavaScript to provide functionality. You need have no previous knowledge of any scripting language so it''s ideal for the newcomer to JavaScript. By the end of this book you will have gained a sound understanding of JavaScript and be able to add exciting dynamic scripts to your own web pages. JavaScript in easy steps, 6th edition begins by explaining how to easily incorporate JavaScript code in an HTML document. Examples demonstrate how to use built-in JavaScript functions to work with Math, date and time, random numbers, cookies, text strings, and elements of web pages via the Document Object Model (DOM). You will learn how JavaScript is used with HTML submission forms and how JavaScript Object Notation (JSON) is used for asynchronous browser-server communication. The book examples provide clear syntax-highlighted code showing how to create behaviors for an HTML document to endow components with interactive functionality, to illustrate each aspect of JavaScript. JavaScript in easy steps, 6th edition has an easy-to-follow style that will appeal to anyone who wants to add functionality to their web pages. It will appeal to programmers who want to quickly add JavaScript to their skills set, and to the student who is studying website design at school or college, and to those seeking a career in web development who need an understanding of client-side scripting. Fully updated since the previous edition, which was published in 2013.
£11.39
Cambridge University Press Python Programming for Biology
Book SynopsisThis book presents core concepts in computational biology in an accessible, jargon-free manner and offers a complete foundation course in the Python language, with entry points for novices and experienced programmers alike. Material covers traditional bioinformatics and many topics beyond, with practical examples for Python versions 2 and 3.Trade Review'As a long-time advocate of Python as the language of choice for both the bulk of biological data analysis and for teaching computer programming to molecular life scientists, I am delighted to see this book. [It] provides a well-focused introduction to Python programming but then goes on to use the clarity of the Python language to demystify a wide range of commonly applied data processing and analysis techniques that arise in modern cell and molecular biology. The integration of straightforward introductions to sequence analysis, image processing and statistical analysis (amongst others) into a book on Python is inspired. The clarity of the Python language helps to show that often 'yes it really is that simple', in a way that staring at a mathematical expression often fails to, and the programming element allows the reader to become actively involved.' Jeremy Craven, University of Sheffield'Python Programming for Biology is an excellent introduction to the challenges that biologists and biophysicists face. The choice of Python is appropriate; we use it in most research in our laboratories at the interface between biology, biochemistry and bioinformatics. The book takes us through programming principles for a beginner with a biological background, introducing the basics. It has useful tips for improving code and some specific examples, for example in sequence analysis, macromolecular structures, image processing and databases. I was pleased to see that there is a substantive section on machine learning which in the era of 'big data' is becoming central to much of the software developed for biomedical and agri-biotech research.' Tom Blundell, University of Cambridge'Stevens and Boucher tear down barriers to programming and bioinformatics, for biologists and medics alike … this is the book that I wish I could have read years ago. Serving as both a straightforward tutorial and plain-English reference, the key programming, biology and bioinformatics concepts necessary to build programs for practical, real-world applications are explained in a logical and easy-to-follow order, helping the reader to get from zero to results faster. Unlike many programming books and resources, information is presented in the right amount of detail and jargon is demystified, giving a gentle but thorough and practical introduction to programming with Python, while providing useful tips and encouraging good practices. This introduction is built on with 'from the ground up' explanations of basic, intermediate and advanced computational biology methodologies through Python implementations, resulting in a well-rounded text for programming to solve biological challenges.' Harry Jubb, University of Cambridge'As an increasingly valuable and important skill, programming can be daunting for those new to it. Python Programming for Biology provides the perfect introduction into the world of coding. Stevens and Boucher gently guide the reader through the basics and into practical examples that will aid the reader into incorporating Python into their research activities. I would not hesitate to recommend it as a valuable teaching aide or to people keen to expand their horizons into bioinformatics.' David Ascher, University of Cambridge'Python has become a programming and scripting language of utmost importance in scientific computing, in particular in biology. Major, widely used software packages make use of Python, and libraries offering powerful functionalities are available. Many if not most research projects in biology benefit from computational techniques. Although it is incredibly simple to write small scripts in Python, for a novice in programming, the first steps may seem daunting. In contrast to many other books on Python, this book is specifically aimed at an audience that has little or no experience with programming. After a step-by-step introduction to programming in Python, it describes concrete examples from different areas in biology, with code examples from data analysis to modelling. [It] is a highly valuable addition to the literature on Python, and recommended to any biologist who is interested in using computers in his research.' Michael Nilges, Institut Pasteur, France'[Stevens and Boucher's] understanding of the needs of the target audience for this book (primarily bench scientists with minimal programming experience) is complete. They have accurately customized the book, to meet those specific requirements which are so distinct from those of students aspiring to be specialist programmers. They have achieved this difficult objective without 'dumbing down' the content or omitting any relevant aspect of Python. The book provides an easy and comprehensive introduction for the complete novice as well as offering plenty to engage the more experienced reader. This work is exactly what is required for us to build new training events upon.' David Judge, University of CambridgeTable of ContentsPreface; Acknowledgements; 1. Prologue; 2. Beginners' guide; 3. Python basics; 4. Program control and logic; 5. Functions; 6. Files; 7. Object orientation; 8. Object data modelling; 9. Mathematics; 10. Coding tips; 11. Biological sequences; 12. Pairwise sequence alignments; 13. Multiple sequence alignments; 14. Sequence variation and evolution; 15. Macromolecular structures; 16. Array data; 17. High-throughput sequence analyses; 18. Images; 19. Signal processing; 20. Databases; 21. Probability; 22. Statistics; 23. Clustering and discrimination; 24. Machine learning; 25. Hard problems; 26. Graphical interfaces; 27. Improving speed; Appendix 1: simplified language reference; Appendix 2: selected standard type methods and operations; Appendix 3: standard module highlights; Appendix 4: string formatting; Appendix 5: regular expressions; Appendix 6: further statistics; Glossary; Index.
£56.99
Pearson Education Introduction to Computing and Programming with
Book Synopsis
£164.69
Pearson Education Introduction to JavaScript Programming with XML
Book Synopsis
£151.35
Pearson Education Introduction to Computing and Programming in
Book SynopsisMark Guzdial is a professor in the School of Interactive Computing in the College of Computing at Georgia Institute of Technology. He is one of the founders of the ACM's International Computing Education Research workshop series. Dr. Guzdial's research focuses on learning sciences and technology, specifically, computing education research. His first books were on the programming language Squeak and its use in education. He was the original developer of Swiki (Squeak Wiki), the first wikideveloped explicitly for use in schools. Mark has published several books on the use of media as a context for learning computing, which have influenced undergraduate computing curricula around the world. He is on the editorial boards of the Journal of the Learning Sciences and Communications of the ACM. He was a recipient of the 2012 IEEE Computer Society Undergraduate Teaching Award. He is a Senior Member of the ACM. Barbara Ericson is a research scientist aTable of ContentsIntroduction 1 1 Introduction to Computer Science and Media Computation 3 1.1 What Is Computer Science About? 3 1.2 Programming Languages 6 1.3 What Computers Understand 9 1.4 Media Computation: Why Digitize Media? 11 1.5 Computer Science for Everyone 13 1.5.1 It’s About Communication 13 1.5.2 It’s About Process 13 1.5.3 You Will Probably Need It 14 2 Introduction to Programming 18 2.1 Programming Is About Naming 18 2.2 Programming in Python 21 2.3 Programming in JES 22 2.4 Media Computation in JES 23 2.1.1 Files and Their Names 20 2.5 Making a Program 33 2.4.1 Showing a Picture 27 2.4.2 Playing a Sound 30 2.4.3 Naming Values 30 2.5.1 Variable Recipes: Real Math-Like Functions That Take Input 37 3 Creating and Modifying Text 44 3.1 Strings: Making Strings 44 3.2 Taking Strings Apart with For 49 3.1.1 Making Strings from Strings: Telling Stories 46 3.2.1 Testing the Pieces 51 3.2.2 Taking String Apart, and Putting Strings Together 54 3.2.3 Taking Strings Apart with Indices 57 3.2.4 Mirroring, Reversing, and Separating Strings with Index 59 3.2.5 Encoding and Decoding Strings Using a Keyword Cipher 61 3.3 Taking Strings Apart by Words 63 3.4 What’s Inside a String 66 3.5 What a Computer Can Do 67 4 Modifying Pictures Using Loops 74 4.1 How Pictures Are Encoded 75 4.2 Manipulating Pictures 80 4.3 Changing Color Values 86 4.2.1 Exploring Pictures 84 4.3.1 Using Loops in Pictures 86 4.3.2 Increasing/Decreasing Red (Green, Blue) 88 4.3.3 Testing the Program: Did That Really Work? 93 4.3.4 Changing One Color at a Time 94 4.4.1 Making Sense of Functions 95 4.4 Creating a Sunset 95 4.5 Lightening and Darkening 100 4.6 Creating a Negative 101 4.7 Converting to Grayscale 102 4.8 Specifying Pixels by Index 104 5 Picture Techniques with Selection 114 5.1 Replacing Colors: Red-Eye, Sepia Tones, and Posterizing 114 5.1.1 Reducing Red-Eye 118 5.1.2 Sepia-Toned and Posterized Pictures: Using Conditionals to Choose the Color 120 5.2 Comparing Pixels: Edge Detection 126 5.3 Background Subtraction 129 5.4 Chromakey 132 5.5 Coloring in ranges 137 5.5.1 Adding a Border 137 5.5.2 Lightening the Right Half of a Picture 138 5.6 Selecting without Retesting 139 6 Modifying Pixels by Position 145 6.1 Processing Pixels Faster 145 6.1.1 Looping across the Pixels with Range 147 6.1.2 Writing Faster Pixel Loops 149 6.2 Mirroring a Picture 151 6.3 Copying and Transforming Pictures 158 6.3.1 Copying 159 6.3.2 Copying Smaller and Modifying 165 6.3.3 Copying and Referencing 167 6.3.4 Creating a Collage 169 6.3.5 General Copying 172 6.3.6 Rotation 173 6.3.7 Scaling 176 6.4 Combining Pixels: Blurring 181 6.5 Blending Pictures 184 6.6 Drawing on Images 186 6.7 Programs as Specifying Drawing Process 191 6.6.1 Drawing with Drawing Commands 188 6.6.2 Vector and Bitmap Representations 189 6.7.1 Why Do We Write Programs? 192 Sounds 201 7 Modifying Sounds Using Loops 203 7.1 How Sound Is Encoded 203 7.2 Manipulating Sounds 215 7.3 Changing the Volume of Sounds 220 7.1.1 The Physics of Sound 203 7.1.2 Investigating Different Sounds 206 7.1.3 Encoding the Sound 211 7.1.4 Binary Numbers and Two’s Complement 212 7.1.5 Storing Digitized Sounds 213 7.2.1 Open Sounds and Manipulating Samples 215 7.2.2 Using the JES MediaTools 218 7.2.3 Looping 219 7.3.1 Increasing Volume 220 7.3.2 Did That Really Work? 221 7.3.3 Decreasing Volume 225 7.3.4 Using Array Index Notation 226 7.3.5 Making Sense of Functions in Sounds 227 7.4.1 Generating Clipping 229 7.4 Normalizing Sounds 227 8 Modifying Samples in a Range 235 8.1 Manipulating Different Sections of the Sound Differently 235 8.2 Splicing Sounds 238 8.3 General Clip and Copy 245 8.4 Reversing Sounds 247 8.5 Mirroring 249 8.6 On Functions and Scope 249 9 Making Sounds by Combining Pieces 255 9.1 Composing Sounds Through Addition 255 9.2 Blending Sounds 256 9.3 Creating an Echo 258 8.1.1 Revisiting Index Array Notation 236 9.4 How Sampling Keyboards Work 261 9.5 Additive Synthesis 265 9.6 Modern Music Synthesis 273 9.3.1 Creating Multiple Echoes 259 9.3.2 Creating Chords 260 9.4.1 Sampling as an Algorithm 265 9.5.1 Making Sine Waves 265 9.5.2 Adding Sine Waves Together 267 9.5.3 Checking Our Result 268 9.5.4 Square Waves 269 9.5.5 Triangular Waves 272 9.6.1 MP3 274 9.6.2 MIDI 274 10 Building Bigger Programs 279 10.1 Designing Programs Top-Down 280 10.1.1 A Top-Down Design Example 281 10.1.2 Designing the Top-Level Function 282 10.2 Designing Programs Bottom-Up 288 10.3 Testing Your Program 290 10.4 Tips on Debugging 292 10.1.3 Writing the Subfunctions 285 10.2.1 An Example Bottom-Up Process 289 10.3.1 Testing the Edge Conditions 291 10.4.1 Finding Which Statement to Worry About 293 10.4.2 Seeing the Variables 293 10.4.3 Debugging the Adventure Game 296 10.5 Algorithms and Design 299 10.6 Connecting to Data outside a Function 299 10.7 Running Programs Outside of JES 303 11 Manipulating Text with Methods and Files 310 11.1 Text as Unimedia 310 11.2 Manipulating Parts of Strings 311 11.3 Files: Places to Put Your Strings and Other Stuff 317 11.4 The Python Standard Library 327 11.2.1 String Methods: Introducing Objects and Dot Notation 312 11.2.2 Lists: Powerful, Structured Text 314 11.2.3 Strings Have No Font 316 11.3.1 Opening and Manipulating Files 318 11.3.2 Generating Form Letters 320 11.3.3 Reading and Manipulating Data from the Internet 321 11.3.4 Scraping Information from a Web Page 323 11.3.5 Reading CSV Data 324 11.3.6 Writing Out Programs 326 11.4.1 More on Import and Your Own Modules 328 11.4.2 Adding Unpredictably toYour Program with Random 329 11.4.3 Reading CSV Files with a Library 331 11.4.4 A Sampling of Python Standard Libraries 331 12 Advanced Text Techniques: Web and Information 337 12.1 Networks: Getting Our Text from the Web 337 12.1.1 Automating Access to CSV Data 341 12.1.2 Accessing FTP 343 12.2 Using Text to Shift Between Media 344 12.3 Moving Information Between Media 347 12.4 Using Lists as Structured Text for Media Representations 349 12.5 Hiding Information in a Picture 351 12.5.1 Hiding a Sound Inside a Picture 353 13 Making Text for the Web 359 13.1 HTML: The Notation of the Web 359 13.2 Writing Programs to Generate HTML 364 13.3 Databases: A Place to Store Our Text 369 13.2.1 Making Home Pages 366 13.3.1 Relational Databases 371 13.3.2 An Example Relational Database Using HashTables 372 13.3.3 Working with SQL 375 13.3.4 Using a Database to Build Web Pages 377 14 Creating and Modifying Movies 382 14.1 Generating Animations 383 14.2 Working with Video Source 392 14.3 Building a Video Effect Bottom-Up 396 15 Speed 403 15.1 Focusing on Computer Science 403 15.2 What Makes Programs Fast? 403 14.2.1 Video Manipulating Examples 392 15.3 What Makes a Computer Fast? 417 15.2.1 What Computers Really Understand 404 15.2.2 Compilers and Interpreters 405 15.2.3 What Limits Computer Speed? 409 15.2.4 Does It Really Make a Difference? 411 15.2.5 Making Searching Faster 413 15.2.6 AlgorithmsThat Never Finish or Can’t BeWritten 415 15.2.7 Why Is Photoshop Faster than JES? 417 15.3.1 Clock Rates and Actual Computation 417 15.3.2 Storage: What Makes a Computer Slow? 419 15.3.3 Display 420 16 Functional Programming 423 16.1 Using Functions to Make Programming Easier 423 16.2 Functional Programming with Map and Reduce 427 16.3 Functional Programming for Media 430 16.4 Recursion: A Powerful Idea 432 16.3.1 Media Manipulation Without Changing State 431 16.4.1 Recursive Directory Traversals 438 16.4.2 Recursive Media Functions 440 17 Object Oriented Programming 444 17.1 History of Objects 444 17.2 Working with Turtles 446 17.3 Teaching Turtles New Tricks 451 17.2.1 Classes and Objects 446 17.2.2 Sending Messages to Objects 447 17.2.3 Objects Control Their State 449 17.3.1 Overriding an Existing Turtle Method 453 17.3.2 Working with Multiple Turtles at Once 454 17.3.3 Turtles with Pictures 456 17.3.4 Dancing Turtles 458 17.3.5 Recursion and Turtles 460 17.4.1 Making the Slide Class More Object-Oriented 465 17.4 An Object-Oriented Slide Show 461 17.5 Object-Oriented Media 466 17.6 Joe the Box 471 17.7 Why Objects? 473 Bibliography 480
£123.44
Pearson Education (US) Programming Abstractions in Java
Book SynopsisEric Roberts is the Charles Simonyi Professor of Computer Science, emeritus, at Stanford University. Throughout his career, Roberts was a widely acknowledged leader in computer science education and received numerous national and international awards, including the Outstanding Contribution to Computer Science Education Award from the Association for Computing Machinery's Special Interest Group in Computer Science Education (ACM SIGCSE), the Karl V. Karlstrom Outstanding Educator Award from the ACM, and the Taylor Booth Education Award from the Institute for Electrical and Electronic Engineers Computer Society (IEEE-CS). Programming Abstractions in Java is his seventh book.Table of Contents1. Overview of Java 2. Methods 3. Strings 4. Files 5. Arrays 6. Collections 7. Classes and Objects 8. Inheritance 9. Recursive Strategies 10. Backtracking Algorithms 11. Algorithmic Analysis 12. Efficiency and Representation 13. Linear Structures 14. Maps 15. Trees 16. Sets 17. Graphs 18. Expression Trees 19. Using Function as Data
£148.14
Pearson Education (US) Learning Angular
Book Synopsis
£22.12
Pearson Education Introduction to Java Programming Brief Version
Book Synopsis
£132.99
Pearson Education (US) Effective Python
Book SynopsisBrett Slatkin is a principal software engineer at Google. He is the technical co-founder of Google Surveys, the co-creator of the PubSubHubbub protocol, and he launched Google's first cloud computing product (App Engine). Fourteen years ago, he cut his teeth using Python to manage Google's enormous fleet of servers. Outside of his day job, he likes to play piano and surf (both poorly). He also enjoys writing about programming-related topics on his personal website (https://onebigfluke.com). He earned his B.S. in computer engineering from Columbia University in the City of New York. He lives in San Francisco.Trade Review“I have been recommending this book enthusiastically since the first edition appeared in 2015. This new edition, updated and expanded for Python 3, is a treasure trove of practical Python programming wisdom that can benefit programmers of all experience levels.” –Wes McKinney, Creator of Python Pandas project, Director of Ursa Labs “If you’re coming from another language, this is your definitive guide to taking full advantage of the unique features Python has to offer. I’ve been working with Python for nearly twenty years and I still learned a bunch of useful tricks, especially around newer features introduced by Python 3. Effective Python is crammed with actionable advice, and really helps define what our community means when they talk about Pythonic code.” –Simon Willison, Co-creator of Django “I’ve been programming in Python for years and thought I knew it pretty well. Thanks to this treasure trove of tips and techniques, I’ve discovered many ways to improve my Python code to make it faster (e.g., using bisect to search sorted lists), easier to read (e.g., enforcing keyword-only arguments), less prone to error (e.g., unpacking with starred expressions), and more Pythonic (e.g., using zip to iterate over lists in parallel). Plus, the second edition is a great way to quickly get up to speed on Python 3 features, such as the walrus operator, f-strings, and the typing module.” –Pamela Fox, Creator of Khan Academy programming courses “Now that Python 3 has finally become the standard version of Python, it’s already gone through eight minor releases and a lot of new features have been added throughout. Brett Slatkin returns with a second edition of Effective Python with a huge new list of Python idioms and straightforward recommendations, catching up with everything that’s introduced in version 3 all the way through 3.8 that we’ll all want to use as we finally leave Python 2 behind. Early sections lay out an enormous list of tips regarding new Python 3 syntaxes and concepts like string and byte objects, f-strings, assignment expressions (and their special nickname you might not know), and catch-all unpacking of tuples. Later sections take on bigger subjects, all of which are packed with things I either didn’t know or which I’m always trying to teach to others, including ‘Metaclasses and Attributes’ (good advice includes ‘Prefer Class Decorators over Metaclasses’ and also introduces a new magic method ‘__init_subclass__()’ I wasn’t familiar with), ‘Concurrency’ (favorite advice: ‘Use Threads for Blocking I/O, but not Parallelism,’ but it also covers asyncio and coroutines correctly) and ‘Robustness and Performance’ (advice given: ‘Profile before Optimizing’). It’s a joy to go through each section as everything I read is terrific best practice information smartly stated, and I’m considering quoting from this book in the future as it has such great advice all throughout. This is the definite winner for the ‘if you only read one Python book this year...’ contest.” –Mike Bayer, Creator of SQLAlchemy “This is a great book for both novice and experienced programmers. The code examples and explanations are well thought out and explained concisely and thoroughly. The second edition updates the advice for Python 3, and it’s fantastic! I’ve been using Python for almost 20 years, and I learned something new every few pages. The advice given in this book will serve anyone well.” –Titus Brown, Associate Professor at UC Davis “Once again, Brett Slatkin has managed to condense a wide range of solid practices from the community into a single volume. From exotic topics like metaclasses and concurrency to crucial basics like robustness, testing, and collaboration, the updated Effective Python makes a consensus view of what’s ‘Pythonic’ available to a wide audience.” –Brandon Rhodes, Author of python-patterns.guideTable of ContentsPrefaceChapter 1 Pythonic ThinkingChapter 2 Lists and DictionariesChapter 3 FunctionsChapter 4 Comprehensions and GeneratorsChapter 5 Classes and InterfacesChapter 6 Metaclasses and AttributesChapter 7 Concurrency and ParallelismChapter 8 Robustness and PerformanceChapter 9 Testing and DebuggingChapter 10 CollaborationIndex
£39.89
Pearson Education (US) Deep Learning Illustrated
Book Synopsis Jon Krohn is the chief data scientist at untapt, a machine learning startup in New York. He leads a flourishing Deep Learning Study Group, presents the acclaimed Deep Learning with TensorFlow LiveLessons in Safari, and teaches his Deep Learning curriculum at the NYC Data Science Academy. Jon holds a doctorate in neuroscience from Oxford University and has been publishing on machine learning in leading academic journals since 2010. Grant Beyleveld is a doctoral candidate at the Icahn School of Medicine at New York's Mount Sinai hospital, researching the relationship between viruses and their hosts. A founding member of the Deep Learning Study Group, he holds a masters in molecular medicine and medical biochemistry from the University of Witwatersrand. Aglaé Bassens is a Belgian artist based in Brooklyn. She studied fine arts at The Ruskin School of Drawing and Fine Art, Oxford University, and University College London's SlaTrade Review“Over the next few decades, artificial intelligence is poised to dramatically change almost every aspect of our lives, in large part due to today’s breakthroughs in deep learning. The authors’ clear visual style provides a comprehensive look at what’s currently possible with artificial neural networks as well as a glimpse of the magic that’s to come.” —Tim Urban, writer and illustrator of Wait But Why “This book is an approachable, practical, and broad introduction to deep learning, and the most beautifully illustrated machine learning book on the market.” —Dr. Michael Osborne, Dyson Associate Professor in Machine Learning, University of Oxford “This book should be the first stop for deep learning beginners, as it contains lots of concrete, easy-to-follow examples with corresponding tutorial videos and code notebooks. Strongly recommended.” —Dr. Chong Li, cofounder, Nakamoto & Turing Labs; adjunct professor, Columbia University “It’s hard to imagine developing new products today without thinking about enriching them with capabilities using machine learning. Deep learning in particular has many practical applications, and this book’s intelligible clear and visual approach is helpful to anyone who would like to understand what deep learning is and how it could impact your business and life for years to come.” —Helen Altshuler, engineering leader, Google “This book leverages beautiful illustrations and amusing analogies to make the theory behind deep learning uniquely accessible. Its straightforward example code and best-practice tips empower readers to immediately apply the transformative technique to their particular niche of interest.” –Dr. Rasmus Rothe, founder, Merantix “This is an invaluable resource for anyone looking to understand what deep learning is and why it powers almost every automated application today, from chatbots and voice recognition tools to self-driving cars. The illustrations and biological explanations help bring to life a complex topic and make it easier to grasp fundamental concepts.” –Joshua March, CEO and cofounder, Conversocial; author of Message Me “Deep learning is regularly redefining the state of the art across machine vision, natural language, and sequential decision-making tasks. If you too would like to pass data through deep neural networks in order to build high-performance models, then this book–with its innovative, highly visual approach–is the ideal place to begin.” –Dr. Alex Flint, roboticist and entrepreneur Table of ContentsFigures xixTables xxviiExamples xxixForeword xxxiiiPreface xxxvAcknowledgments xxxixAbout the Authors xliPart I: Introducing Deep Learning 1Chapter 1: Biological and Machine Vision 3Biological Vision 3Machine Vision 8TensorFlow Playground 17Quick, Draw! 19Summary 19Chapter 2: Human and Machine Language 21Deep Learning for Natural LanguageProcessing 21Computational Representations of Language 25Elements of Natural Human Language 33Google Duplex 35Summary 37Chapter 3: Machine Art 39A Boozy All-Nighter 39Arithmetic on Fake Human Faces 41Style Transfer: Converting Photos into Monet (and Vice Versa) 44Make Your Own Sketches Photorealistic 45Creating Photorealistic Images from Text 45Image Processing Using Deep Learning 46Summary 48Chapter 4: Game-Playing Machines 49Deep Learning, AI, and Other Beasts 49Three Categories of Machine Learning Problems 53Deep Reinforcement Learning 56Video Games 57Board Games 59Manipulation of Objects 67Popular Deep Reinforcement Learning Environments 68Three Categories of AI 71Summary 72Part II: Essential Theory Illustrated 73Chapter 5: The (Code) Cart Ahead of the (Theory)Horse 75Prerequisites 75Installation 76A Shallow Network in Keras 76Summary 84Chapter 6: Artificial Neurons Detecting Hot Dogs 85Biological Neuroanatomy 101 85The Perceptron 86Modern Neurons and Activation Functions 91Choosing a Neuron 96Summary 96Key Concepts 97Chapter 7: Artificial Neural Networks 99The Input Layer 99Dense Layers 99A Hot Dog-Detecting Dense Network 101The Softmax Layer of a Fast Food-Classifying Network 106Revisiting Our Shallow Network 108Summary 110Key Concepts 110Chapter 8: Training Deep Networks 111Cost Functions 111Optimization: Learning to Minimize Cost 115Backpropagation 124Tuning Hidden-Layer Count and NeuronCount 125An Intermediate Net in Keras 127Summary 129Key Concepts 130Chapter 9: Improving Deep Networks 131Weight Initialization 131Unstable Gradients 137Model Generalization (Avoiding Overfitting) 140Fancy Optimizers 145A Deep Neural Network inKeras 147Regression 149TensorBoard 152Summary 154Key Concepts 155Part III: Interactive Applications of Deep Learning 157Chapter 10: Machine Vision 159Convolutional Neural Networks 159Pooling Layers 169LeNet-5 in Keras 171AlexNet and VGGNet in Keras 176Residual Networks 179Applications of Machine Vision 182Summary 193Key Concepts 193Chapter 11: Natural Language Processing 195Preprocessing Natural Language Data 195Creating Word Embeddings with word2vec 206The Area under the ROC Curve 217Natural Language Classification with Familiar Networks 222Networks Designed for Sequential Data 240Non-sequential Architectures: The Keras Functional API 251Summary 256Key Concepts 257Chapter 12: Generative Adversarial Networks 259Essential GAN Theory 259The Quick, Draw! Dataset 263The Discriminator Network 266The Generator Network 269The Adversarial Network 272GAN Training 275Summary 281Key Concepts 282Chapter 13: Deep Reinforcement Learning 283Essential Theory of Reinforcement Learning 283Essential Theory of Deep Q-Learning Networks 290Defining a DQN Agent 293Interacting with an OpenAI Gym Environment 300Hyperparameter Optimization with SLM Lab 303Agents Beyond DQN 306Summary 308Key Concepts 309Part IV: You and AI 311Chapter 14: Moving Forward with Your Own Deep Learning Projects 313Ideas for Deep Learning Projects 313Resources for Further Projects 317The Modeling Process, Including Hyperparameter Tuning 318Deep Learning Libraries 321Software 2.0 324Approaching Artificial General Intelligence 326Summary 328Part V: Appendices 331Appendix A: Formal Neural Network Notation 333Appendix B: Backpropagation 335Appendix C: PyTorch 339PyTorch Features 339PyTorch in Practice 341Index 345
£37.79
Pearson Education (US) Supercharged Python
Book SynopsisTable of Contents Chapter 1: Review of the Fundamentals Chapter 2: Advanced String Capabilities Chapter 3: Advanced List Capabilities Chapter 4: Shortcuts, Command Line, and Packages Chapter 5: Formatting Text Precisely Chapter 6: Regular Expressions, Part I Chapter 7: Regular Expressions, Part II Chapter 8: Text and Binary Files Chapter 9: Classes and Magic Methods Chapter 10: Decimal, Money, and Other Classes Chapter 11: The Random and Math Packages Chapter 12: The “numpy” (Numeric Python) Package Chapter 13: Advanced Uses of “numpy” Chapter 14: Multiple Modules and the RPN Example Chapter 15: Getting Financial Data off the Internet Appendix A Python Operator Precedence Table Appendix B Built-In Python Functions Appendix C Set Methods Appendix D Dictionary Methods Appendix E Statement Reference
£30.59
Pearson Education (US) Core Java
Book SynopsisCay S. Horstmann is a professor of computer science at San Jose State University and a Java Champion. He is also the author of Core Java, Volumes I and II , Eleventh Edition (forthcoming from Pearson in 2018), Core Java SE 9 for the Impatient, Second Edition (Addison-Wesley, 2018), and Scala for the Impatient, Second Edition (Addison-Wesley, 2017). He has written more than a dozen other books for professional programmers and computer science students.Table of Contents Preface xix Acknowledgments xxv Chapter 1: An Introduction to Java 1 1.1 Java as a Programming Platform 1 1.2 The Java “White Paper” Buzzwords 2 1.3 Java Applets and the Internet 9 1.4 A Short History of Java 10 1.5 Common Misconceptions about Java 13 Chapter 2: The Java Programming Environment 17 2.1 Installing the Java Development Kit 18 2.2 Using the Command-Line Tools 23 2.3 Using an Integrated Development Environment 29 2.4 JShell 32 Chapter 3: Fundamental Programming Structures in Java 37 3.1 A Simple Java Program 38 3.2 Comments 41 3.3 Data Types 42 3.4 Variables and Constants 48 3.5 Operators 52 3.6 Strings 62 3.7 Input and Output 75 3.8 Control Flow 86 3.9 Big Numbers 105 3.10 Arrays 108 Chapter 4: Objects and Classes 125 4.1 Introduction to Object-Oriented Programming 126 4.2 Using Predefined Classes 131 4.3 Defining Your Own Classes 141 4.4 Static Fields and Methods 156 4.5 Method Parameters 163 4.6 Object Construction 170 4.7 Packages 180 4.8 JAR Files 192 4.9 Documentation Comments 198 4.10 Class Design Hints 204 Chapter 5: Inheritance 207 5.1 Classes, Superclasses, and Subclasses 208 5.2 Object: The Cosmic Superclass 232 5.3 Generic Array Lists 248 5.4 Object Wrappers and Autoboxing 256 5.5 Methods with a Variable Number of Parameters 260 5.6 Enumeration Classes 261 5.7 Reflection 264 5.8 Design Hints for Inheritance 290 Chapter 6: Interfaces, Lambda Expressions, and Inner Classes 295 6.1 Interfaces 296 6.2 Lambda Expressions 322 6.3 Inner Classes 340 6.4 Service Loaders 360 6.5 Proxies 362 Chapter 7: Exceptions, Assertions, and Logging 371 7.1 Dealing with Errors 372 7.2 Catching Exceptions 381 7.3 Tips for Using Exceptions 396 7.4 Using Assertions 399 7.5 Logging 403 7.6 Debugging Tips 425 Chapter 8: Generic Programming 431 8.1 Why Generic Programming? 432 8.2 Defining a Simple Generic Class 434 8.3 Generic Methods 437 8.4 Bounds for Type Variables 438 8.5 Generic Code and the Virtual Machine 441 8.6 Restrictions and Limitations 447 8.7 Inheritance Rules for Generic Types 457 8.8 Wildcard Types 459 8.9 Reflection and Generics 467 Chapter 9: Collections 481 9.1 The Java Collections Framework 482 9.2 Interfaces in the Collections Framework 492 9.3 Concrete Collections 494 9.4 Maps 519 9.5 Views and Wrappers 532 9.6 Algorithms 541 9.7 Legacy Collections 552 Chapter 10: Graphical User Interface Programming 565 10.1 A History of Java User Interface Toolkits 565 10.2 Displaying Frames 567 10.3 Displaying Information in a Component 574 10.4 Event Handling 598 10.5 The Preferences API 624 Chapter 11: User Interface Components with Swing 631 11.1 Swing and the Model-View-Controller Design Pattern 632 11.2 Introduction to Layout Management 636 11.3 Text Input 643 11.4 Choice Components 651 11.5 Menus 671 11.6 Sophisticated Layout Management 690 11.7 Dialog Boxes 706 Chapter 12: Concurrency 733 12.1 What Are Threads? 734 12.2 Thread States 739 12.3 Thread Properties 743 12.4 Synchronization 750 12.5 Thread-Safe Collections 781 12.6 Tasks and Thread Pools 800 12.7 Asynchronous Computations 814 12.8 Processes 831 Appendix: Java Keywords 839 Index 843
£41.79
Pearson Education (US) Java Foundations
Book SynopsisAbout our authors John Lewis is the coauthor of the best-selling introductory Java programming book Java Software Solutions as well as Java Software Structures, Programming with Alice and Java and books for AP computer science. He teaches courses at both Virginia Tech and Radford University. He received his PhD from Virginia Tech. Peter DePasquale is an assistant professor of computer science at the College of New Jersey (TCNJ). He is the author of Addison-Wesley's Java Backpack Reference Guide and Addison-Wesley's C++ Backpack Reference Guide, as well as Programming with Alice and Java. Joe Chase is an associate professor of computer science at Radford University. He is the coauthor of Java Software Structures and Java Software Structures for AP* Computer Science AB.Table of ContentsBrief Contents Data and Expressions Using Classes and Objects Conditionals and Loops Writing Classes Graphical User Interfaces Arrays Inheritance Polymorphism Exceptions Analysis of Algorithms Introduction to Collections–Stacks Linked Structures–Stacks Queues Lists Iterators Recursion Searching and Sorting Trees Binary Search Trees Heaps and Priority Queues Sets and Maps Multi-way Search Trees Graphs Databases Appendix A Glossary Appendix B Number Systems Appendix C The Unicode Character Set Appendix D Java Operators Appendix E Java Modifiers Appendix F JavaFX Graphics Appendix G JavaFX Scene Builder Appendix H Regular Expressions Appendix I Hashing Appendix J Java Syntax
£183.51
Pearson Education (US) Basics of Web Design HTML5 CSS
Book SynopsisTable of Contents1 Internet and Web Basics The Internet and the Web Web Standards and Accessibility Web Browsers and Web Servers Internet Protocols Uniform Resource Identifiers and Domain Names Information on the Web HTML Overview Under the Hood of a Web Page Your First Web Page Review and Apply 2 HTML Basics Heading Element Paragraph Element Line Break and Horizontal Rule Blockquote Element Phrase Element Ordered List Unordered List Description List Special Entity Characters HTML Syntax Validation Structural Elements Practice with Structural Elements More Structural Elements Anchor Element Practice with Hyperlinks E-Mail Hyperlinks Review and Apply 3 Web Design Basics Your Target Audience Website Organization Principles of Visual Design Design to Provide for Accessibility Use of Text Web Color Palette Design for Your Target Audience Choosing a Color Scheme Use of Graphics and Multimedia More Design Considerations Navigation Design Wireframes and Page Layout Fixed and Fluid Layouts Design for the Mobile Web Responsive Web Design Web Design Best Practices Checklist Review and Apply 4 Cascading Style Sheets Basics Cascading Style Sheets Overview CSS Selectors and Declarations CSS Syntax for Color Values Configure Inline CSS Configure Embedded CSS Configure External CSS CSS Selectors: Class, Id, and Descendant Span Element Practice with CSS The Cascade Practice with the Cascade CSS Syntax Validation Review and Apply 5 Graphics & Text Styling Basics Web Graphics Image Element Image Hyperlinks Configure Background Images Position Background Images CSS Multiple Background Images Fonts with CSS CSS Text Properties Practice with Graphics and Text Configure List Markers with CSS The Favorites Icon Image Maps Figure and Figcaption Elements Review and Apply 6 More CSS Basics Width and Height with CSS The Box Model Margin and Padding with CSS Borders with CSS CSS Rounded Corners Center Page Content with CSS CSS Box Shadow and Text Shadow CSS Background Clip and Origin CSS Background Resize and Scale Practice with CSS Properties CSS Opacity CSS RGBA Color CSS HSLA Color CSS Gradients Review and Apply 7 Page Layout Basics Normal Flow Float Clear a Float Overflow CSS Box Sizing Basic Two-Column Layout Vertical Navigation with an Unordered List Horizontal Navigation with an Unordered List CSS Interactivity with Pseudo-Classes Practice with CSS Two-Column Layout CSS for Print CSS Sprites Positioning with CSS Practice with Positioning Fixed Position Navigation Bar Review and Apply 8 Responsive Layout Basics CSS Flexible Box Layout More About Flex Containers Flexbox Image Gallery Configure Flex Items Practice with Flexbox CSS Grid Layout Grid Columns, Rows, and Gap Two-Column Grid Page Layout Progressive Enhancement with Grid Centering with Flexbox and Grid Viewport Meta Tag CSS Media Queries Responsive Layout with Media Queries Responsive Grid Layout with Media Queries Flexible Images with CSS Picture Element Responsive Img Element Attributes Testing Mobile Display Review and Apply 9 Table Basics Table Overview Table Rows, Cells, and Headers Span Rows and Columns Configure an Accessible Table Style a Table with CSS CSS Structural Pseudo-classes Configure Table Sections Review and Apply 10 Form Basics Form Overview Text Box Submit Button and Reset Button Check Box and Radio Button Hidden Field and Password Box Textarea Element Select Element and Option Element Label Element Fieldset Element and Legend Element Style a Form with CSS CSS Grid Layout Form Server-Side Processing Practice with a Form More Text Form Controls Datalist Element Slider and Spinner Controls Calendar and Color-Well Controls More Form Practice Review and Apply 11 Media and Interactivity Basics Plug-ins, Containers, and Codecs Configure Audio and Video Flash and the HTML5 Embed Element Audio Element and Source Element Video Element and Source Element Practice with Video Iframe Element CSS Transform Property CSS Transition Property Practice with Transitions CSS Drop-Down Menu Details Element and Summary Element JavaScript & jQuery HTML5 APIs Review and Apply 12 Web Publishing Basics File Organization Targeting Hyperlinks Register a Domain Name Choose a Web Host Secure Sockets Layer (SSL) Publish with File Transfer Protocol Search Engine Submission Search Engine Optimization Accessibility Testing Usability Testing Review and Apply APPENDIX Answers to Review Questions HTML5 Cheat Sheet CSS Cheat Sheet WCAG 2.1 Quick Reference Landmark Roles with ARIA Index Credits Web Safe Color Palette
£127.56
Pearson Education Introduction to JavaScript Programming
Book SynopsisAbout our author Eric Roberts is the Charles Simonyi Professor of Computer Science, emeritus, at Stanford University. Throughout his career, Roberts was a widely acknowledged leader in computer science education and received numerous national and international awards, including the Outstanding Contribution to Computer Science Education Award from the Association for Computing Machinery's Special Interest Group in Computer Science Education (ACM SIGCSE), the Karl V. Karlstrom Outstanding Educator Award from the ACM, and the Taylor Booth Education Award from the Institute for Electrical and Electronic Engineers Computer Society (IEEE-CS).Table of ContentsTable of Contents A Gentle Introduction 1.1 Introducing Karel 1.2 Teaching Karel to solve problems 1.3 Control statements 1.4 Stepwise refinement 1.5 Algorithms in Karel’s world Summary Review questions Exercises Introducing JavaScript 2.1 Data and types 2.2 Numeric data 2.3 Variables 2.4 Functions 2.5 String data 2.6 Running JavaScript in the browser 2.7 Testing and debugging 2.8 Software maintenance Summary Review questions Exercises Control Statements 3.1 Boolean Data 3.2 The if statement 3.3 The switch statement 3.4 The while statement 3.5 The for statement 3.6 Algorithmic programming 3.7 Avoiding fuzzy standards of truth Summary Review questions Exercises Simple Graphics 4.1 A graphical version of “Hello World” 4.2 Classes, objects, and methods 4.3 Graphical objects 4.4 The graphics window 4.5 Creating graphical applications Summary Review questions Exercises Functions 5.1 A quick review of functions 5.2 Libraries 5.3 A library to support randomness 5.4 The mechanics of function calls 5.5 Recursive functions Summary Review questions Exercises Writing Interactive Programs 6.1 First-class functions 6.2 A simple interactive example 6.3 Controlling properties of objects 6.4 Responding to mouse events 6.5 Timer-based animation 6.6 Expanding the graphics library Summary Review questions Exercises Strings 7.1 Binary representation 7.2 String operations 7.3 Classifying characters 7.4 Common string patterns 7.5 String applications 7.6 Reading from the console Summary Review questions Exercises Arrays 8.1 Introduction to arrays 8.2 Array operations 8.3 Using arrays for tabulation 8.4 Reading text from files 8.5 Multidimensional arrays 8.6 Image processing Summary Review questions Exercises Objects 9.1 Objects in JavaScript 9.2 Using objects as maps 9.3 Representing points 9.4 Rational numbers 9.5 Linking objects together Summary Review questions Exercises Designing Data Structures 10.1 Abstract data types 10.2 Implementing a token scanner 10.3 Efficiency and representation 10.4 Representing real-world data Summary Review questions Exercises Inheritance 11.1 Class hierarchies 11.2 Defining an employee hierarchy 11.3 Extending graphical classes 11.4 Decomposition and inheritance 11.5 Alternatives to inheritance Summary Review questions Exercises JavaScript and the Web 12.1 A simple interactive example 12.2 An expanded look at HTML 12.3 Controlling style using CSS 12.4 Connecting JavaScript and HTML 12.5 Storing data in the index.html file Summary Review questions Exercises
£103.70
Pearson Education (US) HTML and CSS
Book SynopsisTable of Contents Chapter 1 What Are HTML and CSS? Chapter 2 Creating a Website on Your Computer Chapter 3 HTML Syntax Chapter 4 Basic HTML Elements Chapter 5 Links Chapter 6 Structure and Layout with HTML Chapter 7 Media Chapter 8 Tables and Other Structured Data Elements Chapter 9 Web Forms Chapter 10 Advanced and Experimental Features Chapter 11 Introduction to CSS Chapter 12 Targeting Elements Chapter 13 Styling Text Chapter 14 Color in CSS Chapter 15 Using CSS for Page Layout Chapter 16 Layouts with CSS Grid and Flexbox Chapter 17 Responsive Design and Media Queries Chapter 18 CSS Transformations and Animations Chapter 19 CSS Variables Chapter 20 CSS Preprocessors Chapter 21 Getting Your Website Online Chapter 22 Testing Your Website Chapter 23 Improving Website Performance Chapter 24 Web Accessibility Chapter 25 Going Beyond HTML & CSS
£26.99
Pearson Education (US) Begin to Code with JavaScript
Book SynopsisRob Miles spent more than 30 years teaching programming at the University of Hull in the United Kingdom. He now runs a company promoting community uptake of computer technology. He's a Microsoft MVP with a passion for programming and creating new things. If he had any spare time, he'd spend it writing even more code. He loves building devices and then switching them on to see what they do. He reckons that programming is the most creative thing you can learn how to do. He claims to know a lot of really good jokes, but nobody has ever heard him tell one. If you want an insight into the Wacky WorldTM of Rob Miles, you can read his blog at www.robmiles. com and follow him on Twitter via @RobMiles.Table of ContentsPart 1: The world of JavaScript Chapter 1 Running JavaScript Chapter 2 Hypertext Markup Language (HTML) Chapter 3 Cascading Style Sheets (CSS) Part 2: Coding with JavaScript Chapter 4 Working with data Chapter 5 Making decisions in programs Chapter 6 Repeating actions in programs Chapter 7 Creating functions Chapter 8 Storing data Chapter 9 Objects Part 3: Useful JavaScript Chapter 10 Advanced JavaScript Chapter 11 Creating applications Chapter 12 Creating games
£28.49
Pearson Education (US) Learn Enough HTML CSS and Layout to Be Dangerous
Book Synopsis Lee Donahoe is cofounder of Learn Enough and is an entrepreneur, designer, and front-end developer. At the age of 16 his late father handed him a tutorial on HTML, and for more than 25 years since then he has been creating things for the Web. In addition to doing the design and front-end development for Learn Enough, Softcover, and the Ruby on Rails Tutorial, he is also a cofounder and front-end developer for Coveralls, a leading test coverage analysis service, and is tech cofounder and front-end developer for Buck Mason, a Los Angeles based clothing company once featured on ABC's Shark Tank. Lee is a graduate of USC, where he studied economics as well as multimedia and creative technologies. Michael Hartl created the legendary Ruby on Rails Tutorial that helped jumpstart thousands of web development careers. A cofounder and principal author at Learn Enough, Hartl previously earned a Ph.D. in physics at the CTable of ContentsPreface xvii About the Authors xxiii Part I: Hypertext Markup Language 1 Chapter 1: Basic HTML 3 1.1 Introduction 6 1.2 HTML Tags 8 1.3 Starting the Project 12 1.4 The First Tag 17 1.5 An HTML Skeleton 20 Chapter 2: Filling in the Index Page 29 2.1 Headings 29 2.2 Text Formatting 31 2.3 Links 35 2.4 Adding Images 41 Chapter 3: More Pages, More Tags 51 3.1 An HTML Page About HTML 51 3.2 Tables 54 3.3 Divs and Spans 62 3.4 Lists 66 3.5 A Navigation Menu 68 Chapter 4: Inline Styling 73 4.1 Text Styling 74 4.2 Floats 79 4.3 Applying a Margin 82 4.4 More Margin Tricks 85 4.5 Box Styling 88 4.6 Navigation Styling 90 4.7 A Taste of CSS 93 4.8 Conclusion 98 Part II: Cascading Style Sheets and Page Layout 101 Chapter 5: Introduction to CSS 103 5.1 You're a Front-End Developer 106 5.2 CSS Overview and History 109 5.3 Sample Site Setup 116 5.4 Start Stylin' 121 5.5 CSS Selectors 128 Chapter 6: The Style of Style 133 6.1 Naming Things 134 6.2 When and Why 137 6.3 Priority and Specificity 140 6.4 How to Be a Good Styling Citizen 145 Chapter 7: CSS Values: Color and Sizing 157 7.1 CSS Color 157 7.2 Introduction to Sizing 163 7.3 Pixels (and Their Less-Used Cousin, the Point) 164 7.3.1 Exercise 168 7.4 Percentages 169 7.4.1 Percentage Fonts 174 7.4.2 Exercises 174 7.5 em 175 7.6 rem Isn't Just for Dreaming 181 7.7 vh, vw: The New(er) Kids on the Block 184 7.8 Just Make It Look Nice 190 Chapter 8: The Box Model 193 8.1 Inline vs. Block 193 8.2 Margins, Padding, and Borders 199 8.3 Floats 206 8.4 A Little More About the overflow Style 214 8.5 Inline Block 219 8.6 Margins for Boxes 223 8.7 Padding . . . Not Just for Chairs 234 8.8 Fun with Borders 235 Chapter 9: Laying It All Out 251 9.1 Layout Basics 251 9.2 Jekyll 253 9.3 Layouts, Includes, and Pages (Oh My!) 259 9.4 The Layout File 261 9.5 CSS File and Reset 264 9.6 Includes Intro: Head and Header 275 9.7 Advanced Selectors 284 9.8 Positioning 291 9.9 Fixed Header 309 9.10 A Footer, and Includes in Includes 312 Chapter 10: Page Templates and Frontmatter 327 10.1 Template Content 327 10.2 There's No Place Like Home 330 10.3 More Advanced Selectors 342 10.4 Other Pages, Other Folders 356 Chapter 11: Specialty Page Layouts with Flexbox 361 11.1 Having Content Fill a Container 363 11.2 Vertical Flex Centering 371 11.3 Flexbox Style Options and Shorthand 375 11.4 Three-Column Page Layout 381 11.5 A Gallery Stub 386 Chapter 12: Adding a Blog 397 12.1 Adding Blog Posts 398 12.2 Blog Index Content Loop 412 12.3 A Blog Post Page 419 Chapter 13: Mobile Media Queries 429 13.1 Getting Started with Mobile Designs 429 13.2 Mobile Adaptation 438 13.3 Mobile Viewport 449 13.4 Dropdown Menu 453 13.5 Mobile Dropdown Menu 463 Chapter 14: Adding More Little Touches 475 14.1 Custom Fonts 475 14.2 Favicons 488 14.3 Custom Title and Meta Description 490 14.4 Next Steps 497 Chapter 15: CSS Grid 499 15.1 CSS Grid at a High Level 501 15.2 A Simple Grid of Content 504 15.3 minmax, auto-fit, and auto-fill 515 15.4 Grid Lines, Areas, and Layouts 527 15.5 Grid on the Inside 556 15.6 Conclusion 589 Part III: Custom Domains 591 Chapter 16: A Name of Our Own 593 16.1 Custom Domain Registration 594 16.2 Cloudflare Setup 599 16.3 Custom Domains at GitHub Pages 606 Chapter 17: Custom Email 619 17.1 Google Mail 619 17.2 MX Records 622 17.3 Site Analytics 626 17.4 Conclusion 630 Index 635
£28.49
Pearson Education (US) Learn Enough JavaScript to Be Dangerous
Book SynopsisMichael Hartl created the legendary Ruby on Rails Tutorial that helped jumpstart thousands of web development careers. A cofounder and principal author at Learn Enough, Hartl previously earned a Ph.D. in physics at the California Institute of Technology (Caltech), where he received a Lifetime Achievement Award for Excellence in Teaching. He is also an alumnus of Harvard University and the world-renowned Y Combinator entrepreneur program.Trade ReviewPraise for Learn Enough Tutorials "I have nothing but fantastic things to say about @LearnEnough courses. I am just about finished with the #javascript course. I must say, the videos are mandatory because @mhartl will play the novice and share in the joy of having something you wrote actually work!" --Claudia Vizena "I must say, this Learn Enough series is a masterpiece of education. Thank you for this incredible work!" --Michael King "I want to thank you for the amazing job you have done with the tutorials. They are likely the best tutorials I have ever read." --Pedro IatzkyTable of ContentsPreface xiii About the Author xvii Chapter 1: Hello, World! 1 1.1 Introduction to JavaScript 5 1.2 JS in a Web Browser 7 1.3 JS in a REPL 14 1.4 JS in a File 21 1.5 JS in a Shell Script 22 Chapter 2: Strings 25 2.1 String Basics 25 2.2 Concatenation and Interpolation 27 2.3 Printing 33 2.4 Properties, Booleans, and Control Flow 35 2.5 Methods 44 2.6 String Iteration 50 Chapter 3: Arrays 55 3.1 Splitting 55 3.2 Array Access 56 3.3 Array Slicing 58 3.4 More Array Methods 59 3.5 Array Iteration 62 Chapter 4: Other Native Objects 65 4.1 Math and Number 65 4.2 Dates 69 4.3 Regular Expressions 73 4.4 Plain Objects 81 4.5 Application: Unique Words 83 Chapter 5: Functions 91 5.1 Function Definitions 91 5.2 Functions in a File 95 5.3 Method Chaining 104 5.4 Iteration for Each 110 Chapter 6: Functional Programming 115 6.1 Map 116 6.2 Filter 122 6.3 Reduce 126 Chapter 7: Objects and Prototypes 135 7.1 Defining Objects 135 7.2 Prototypes 139 7.3 Modifying Native Objects 147 Chapter 8: Testing and Test-Driven Development 153 8.1 Testing Setup 154 8.2 Initial Test Coverage 159 8.3 Red 164 8.4 Green 172 8.5 Refactor 177 Chapter 9: Events and DOM Manipulation 187 9.1 A Working Palindrome Page 187 9.2 Event Listeners 192 9.3 Dynamic HTML 202 9.4 Form Handling 205 Chapter 10: Shell Scripts with Node.js 215 10.1 Reading from Files 216 10.2 Reading from URLs 218 10.3 DOM Manipulation at the Command Line 224 Chapter 11: Full Sample App: Image Gallery 235 11.1 Prepping the Gallery 235 11.2 Changing the Gallery Image 242 11.3 Setting an Image as Current 250 11.4 Changing the Image Info 252 11.5 Conclusion 259 Index 263
£22.49
Pearson Education (US) Design Thinking for Tech
Book SynopsisGeorge Anderson is a program director for Microsoft and an adjunct professor and guest lecturer for several universities. George holds Stanford Innovation & Entrepreneurship as well as Innovation Leadership credentials, PMI's Wicked Problem Solving and Prosci's Change Practitioner certifications, an MBA with a focus in Human Resource Management, and a PhD in Applied Management and Decision Sciences. As a program director, George assembles and leads global tech teams that help organizations transform themselves. George's architects and consultants provide the technology and business skills necessary to design and develop business-enabling technology solutions, and George and his project managers provide the leadership, governance, and communications necessary to deliver those solutions. In these ways, George's teams solve problems that drive meaningful change and measurable value. George knows first-hand the power of thinking and executing differently tTable of ContentsForeword Preface Prologue PART I: Design Thinking Basics Hour 1: Design Thinking Explained Thinking Slower to Deliver Faster A Process for Progress: Popular Design Thinking Models Our Design Thinking Model for Tech The Battle Between Perfection and Time The What: Techniques and Exercises The How: The Design Thinking Cycle for Progress The When: Ambiguity, Complexity, and Uncertainty The Why: Better Practices and Faster Outcomes The Who: Design Thinking by Technology Role Design Thinking in Action: Real-world Tech Examples What Not to Do: Lessons Learned the Hard Way Summary Workshop Hour 2: A Design Thinking Model for Tech Human-Centered Thinking Design Thinking in Four Phases What Not to Do: Exclusively Left to Right Summary Workshop Hour 3: Design Thinking for Small Audiences Design Thinking for Me Learning More Quickly Thinking and Problem Solving Coping with Ambiguity Prioritizing Next Best Steps for Uncertainty Executing More Effectively What Not to Do: This Isn't for Me Summary Workshop Hour 4: Resilient and Sustainable Teams Design Thinking for Tech Team Alignment Design Thinking for Sustainable Teams Responsibly Operating at Speed What Not to Do: The Archipelago Effect Summary Workshop Hour 5: Visible and Visual Teamwork Making Teamwork Visible and Visual Tools for Visual Collaboration Executing a Design Thinking Exercise What Not to Do: Keeping It All Inside Summary Workbook PART II: Understanding Broadly Hour 6: Understanding the Lay of the Land Listening and Understanding Assessing the Broader Environment Understanding and Articulating Value What Not to Do: Ignore the Culture Fractals Summary Workshop Hour 7: Connecting with the Right People A Framework for Finding and Prioritizing People Exercises for Stakeholder Mapping and Prioritization Exercises and Techniques for Engaging Stakeholders What Not to Do: Stick to the Happy Path Summary Workbook Hour 8: Learning and Empathizing From Stakeholders to Personas Three Types of Empathy A 360-Degree Model for Empathizing A Recipe for Empathizing What Not to Do: Ignore the 20 Percent Summary Workshop Hour 9: Identifying the Right Problem Identifying and Understanding a Problem Three Exercises for Problem Identification Techniques and Exercises for Problem Validation What Not to Do: Jump In! (to the Wrong Problem) Summary Workshop PART III: Thinking Differently Hour 10: Introduction to Thinking Differently Ideation and Thinking for Problem Solving Divergent and Convergent Thinking Warm-ups for Thinking Differently Techniques for Clearing the Mind What Not to Do: Stay Convergent! Summary Workshop Hour 11: Guardrails for Thinking Creatively Constraints and Guardrails Simple Guardrails for Thinking Differently Exercises for Thinking Through Risks Crazy Techniques for Extreme Thinking What Not to Do: Avoid the Silly-Sounding Stuff Summary Workshop Hour 12: Exercises for Increasing Creativity Creativity and Thinking Techniques and Exercises for Creative Thinking What Not to Do: Concluding Thinking Too Early Summary Workshop Hour 13: Exercises for Reducing Uncertainty Next-Step Thinking for Uncertain Situations Reducing Uncertainty and Ambiguity Working Through Uncertainty and What's Next What Not to Do: The Brute-Force Path Summary Workshop Hour 14: Thinking for Problem Solving From Ideas to Potential Solutions Visual Exercises for Problem Solving What Not to Do: Skimp on Brainstorming Summary Workshop PART IV: Delivering Value Hour 15: Cross-Teaming and Communicating for Outcomes Cross-Boundary Teaming for Collaboration Techniques for Working Across Teams Techniques for Communications Challenges What Not to Do: Using Words When a Picture Is Needed Summary Workshop Hour 16: Prototyping and Solutioning by Doing The Prototyping and Solutioning Mindset Making Progress versus Solving the Entire Problem Techniques for Making Planned Progress What Not to Do: Ignoring the Inverse Power Law Summary Workshop Hour 17: Solutioning Small and Fast The Progress Mindset: Showing Up and Starting Small Realizing Value Through Objectives and Key Results Starting Small and Delivering Fast Techniques for Delivering and Executing to Think For a Limited Time Only What Not to Do: The Forever MVP Summary Workshop Hour 18: Delivering Value at Velocity Delivery Techniques for Increasing Value Velocity Team Considerations for Velocity Change Control Considerations for Velocity What Not to Do: Shrink Sprints to Speed Up Summary Workshop PART V: Iterating for Progress Hour 19: Testing for Validation The Testing Mindset Traditional Types of Testing Testing Techniques for Learning and Validating Testing Tools for Feedback What Not to Do: Automate Everything Summary Workshop Hour 20: Feedback for Continuous Improvement Simple Feedback Techniques Strategic Feedback and Reflection Techniques What Not to Do: Wait for Late Feedback Summary Workshop Hour 21: Deploying for Progress Avoiding Perfection Traps Novel Techniques for Making Progress Edge Case Techniques for Deploying and Realizing Value What Not to Do: Deploying Too Soon Summary Workshop Hour 22: Operating at Scale Techniques and Exercises for Effective Scaling Operational Resiliency Techniques Techniques for Sustaining Systems and Value What Not to Do: The Scale versus Features Mandate Summary Workshop Hour 23: Making Change Sticky Change Management and Adoption The Four-Phase Change Process Methods for Creating Awareness Techniques for Providing Purpose Driving Readiness Through Design Thinking Four Techniques for Adopting Change Techniques for Timing Change What Not to Do: Change Management Can Wait Summary Workshop Hour 24: Design Thinking for Project Velocity Project Management Velocity Leadership and Governance Stakeholders and Expectations Development Approach Risk Management Schedule Management Managing Scope Delivery and Quality Communications and Collaboration What Not to Do: No Courage, No Future Summary Workshop Appendix A: Case Study Quiz Answers Appendix B: Summary of Design Thinking Techniques and Exercises Appendix C: Design Thinking in Action (by the Hour) References 9780137933037 TOC 10/10/2022
£30.39
Pearson Education (US) Javascript Absolute Beginners Guide Third Edition
Book SynopsisKirupa Chinnathambi has spent most of his life trying to teach others to love web development as much as he does. In 1999, before blogging was even a word, he started posting tutorials on kirupa.com. In the years since then, he has written hundreds of articles, written a few books (none as good as this one, of course!), and recorded a bunch of videos you can find on YouTube. When he isn't writing or talking about web development, he spends his waking hours helping make developers happy and productive as a Product Manager at Google. In his nonwaking hours, he is probably sleeping, joining Meena in running after their daughter Akira, protecting himself from Pixel (aka a T-rex in an unassuming cat's body)or writing about himself in the third person. You can find him on Twitter, Facebook, LinkedIn, and the interwebs at large. Just search for his name in your favorite search engine.Table of ContentsIntroduction...................1 Parlez-Vous JavaScript? 2 Contacting Me/Getting Help...................... 2 1 Hello, World!... 5 What Is JavaScript?....... 7 Hello, World!.................. 9 Statements, Expressions, and Functions..12 I The Basic Stuff 2 Values and Variables..................... 15 Using Variables............16 More Variable Stuff......18 3 Functions....... 23 What Is a Function?.....26 A Simple Function.......26 Creating a Function That Takes Arguments...........................30 Creating a Function That Returns Data...35 4 Conditional Statements: if, else, and switch............... 39 The If/Else Statement..40 Switch Statements.......49 Deciding Which to Use..............................55 5 Looping with for, while, and do…while!...................... 57 The for Loop................59 The Starting Point........62 Some for Loop Examples..........................64 The Other Loops.........67 6 Commenting Your Code…FTW!.... 71 What Are Comments?.72 Commenting Best Practices......................76 7 Timers............ 79 Delaying with setTimeout..........................80 8 Variable Scope.............................. 85 Global Scope...............86 Local Scope..................88 Miscellaneous Scoping Shenanigans.......89 9 Closures......... 95 Functions Within Functions.......................96 When the Inner Functions Aren't Self-Contained................100 10 Where Should Your Code Live?.. 109 Approach #1: All the Code Lives in Your HTML Document...................113 Approach #2: The Code Lives in a Separate File................114 So, Which Approach to Use?..................118 11 Console Logging Basics.............. 123 Meet the Console......124 Displaying the Console............................126 If You Want to Follow Along...................127 Console Logging 101..............................128 II It's an Object-Oriented World 12 Of Pizza, Types, Primitives, and Objects................... 135 Let's First Talk About Pizza.......................136 From Pizza to JavaScript!.........................139 What Are Objects?....141 The Predefined Objects Roaming Around in JavaScript....142 13 Arrays.......... 145 Creating an Array......146 Accessing Array Values............................147 Adding Items.............149 Removing Items.........151 Finding Items.............152 Merging Arrays..........152 Mapping, Filtering, and Reducing Arrays.............................153 The Old School Way.153 Modifying Each Array Item with map.....154 Getting One Value from an Array of Items...........................157 A Short Foray into Functional Programming........................160 14 Strings......... 161 The Basics...................162 String Properties and Methods...............163 15 Combining Strings and Variables 173 Our Setup...................174 16 When Primitives Behave Like Objects....................... 179 Strings Aren't the Only Problem.............180 Let's Pick on Strings Anyway...................180 Why This Matters.......182 17 Numbers...... 185 Using a Number........186 Operators...................187 Incrementing and Decrementing............188 Hexadecimal and Octal Values...............190 Special Values—Infinity and NaN...........190 The Math Object.......191 Random Numbers.....196 18 Getters and Setters.................... 201 A Tale of Two Properties..........................202 Meet Getters and Setters........................205 19 A Deeper Look at Objects.......... 211 Meet the Object........212 Creating Custom Objects........................222 The this Keyword.......226 20 Using Classes.............................. 231 The Class Syntax and Object Creation..232 Extending Objects.....240 21 Extending Built-in Objects.......... 247 Say Hello to prototype Again, Sort Of!..249 Using a Subclassing Approach................253 Extending Built-in Objects Is Controversial................255 22 Arrow Functions......................... 259 What Are Arrow Functions?.....................260 Putting It All Together..............................263 23 Making Sense of this and More.. 265 The this Keyword 101..............................266 24 Booleans and the Stricter === and !== Operators... 277 The Boolean Object..278 The Boolean Function..............................278 Strict Equality and Inequality Operators281 25 Null and Undefined.................... 283 Null..............................284 Undefined...................284 26 All About JSON (JavaScript Object Notation).......... 287 What Is JSON?...........288 Looking Inside a JSON Object...............292 Reading JSON Data..297 Writing JSON Data?..300 III Working with the DOM 27 JS, the Browser, and the DOM... 303 What HTML, CSS, and JavaScript Do....304 HTML Defines the Structure....................304 Prettify My World, CSS!...........................306 It's JavaScript Time!...307 Meet the Document Object Model........309 28 Finding Elements in the DOM.... 315 Meet the querySelector Family...............316 It Really Is the CSS Selector Syntax........318 29 Modifying DOM Elements.......... 321 DOM Elements Are Objects, Sort Of!....322 Let's Actually Modify DOM Elements.....324 30 Styling Our Content................... 337 Why Would We Set Styles Using JavaScript?..............338 A Tale of Two Styling Approaches..........338 31 Using CSS Custom Properties.... 345 What Are CSS Custom Properties/Variables?................346 Setting Complex Values Easily................348 32 Traversing the DOM................... 353 Finding Your Way Around........................354 Putting It All Together..............................358 33 Creating and Removing DOM Elements.................... 363 Creating Elements.....364 Removing Elements..372 Cloning Elements......374 34 Quickly Adding Many Elements into the DOM......... 381 General Approach.....383 Getting Started..........384 35 In-Browser Developer Tools........ 397 Meet the Developer Tools.......................398 IV Dealing with Events 36 Events.......... 417 What Are Events?......418 Events and JavaScript..............................420 A Simple Example.....423 The Event Arguments and the Event Type.............426 37 Event Bubbling and Capturing... 429 Event Goes Down, Event Goes Up........430 Meet the Phases........434 Who Cares?................437 Event, Interrupted.....438 38 Mouse Events............................. 443 Meet the Mouse Events...........................444 The MouseEvent Properties....................451 Dealing with the Mouse Wheel..............454 39 Keyboard Events........................ 457 Meet the Keyboard Events......................458 Using These Events...459 The Keyboard Event Properties..............460 Some Examples.........461 40 Page Load Events and Other Stuff............................ 467 The Things That Happen During Page Load..........468 The DOMContentLoaded and load Events................471 Scripts and Their Location in the DOM.473 Script Elements: async and defer...........477 41 Loading Script Files Dynamically 481 The Basic Technique.482 Running Our Dynamically Loaded Script First............486 Running Dependent Code After Our Script File Has Loaded........488 42 Handling Events for Multiple Elements..................... 491 How to Do All This....493 V Totally Useful Topics that Only Make Sense Now 43 Using Emojis in HTML, CSS, and JavaScript.............. 501 What Are Emojis Exactly?........................502 Emojis in HTML..........503 44 Making HTTP/Web Requests in JavaScript................ 511 The Example..............513 Meet Fetch.................514 Meet XMLHttpRequest............................520 45 Accessing the Webcam............... 529 The Example..............530 Overview of How This Works..................531 Adding the Code.......532 Examining the Code.535 46 Array and Object Destructuring. 539 Destructuring Examples...........................541 47 Storing Data Using Web Storage.............................. 549 How Web Storage Works........................550 Getting Your Code On.............................552 48 Variable and Function Hoisting.. 559 JavaScript and Compiler Behavior.........560 49 Working with Sets...................... 565 Creating a Set, Part I.566 Adding Items to a Set..............................567 How Checking for Duplicates Works......567 Creating a Set, Part 2569 Checking the Size of Our Set..................570 Deleting Items from a Set.......................571 Checking If an Item Exists.......................572 Looping Through Items in a Set.............572 Entries, Keys, and Values.........................573 50 Conclusion... 577 Glossary............................ 581 9780137959167, TOC, 10/13/2022
£25.49
Pearson Education (US) Ruby on Rails Tutorial
Book SynopsisMichael Hartl created the legendary Ruby on Rails Tutorial that helped jumpstart thousands of web development careers. A cofounder and principal author at Learn Enough, Hartl previously earned a Ph.D. in physics at the California Institute of Technology (Caltech), where he received a Lifetime Achievement Award for Excellence in Teaching. He is also an alumnus of Harvard University and the world-renowned Y Combinator entrepreneur program.Trade ReviewPraise for Michael Hartl's Books and Videos on Ruby on Rails "My former company (CD Baby) was one of the first to loudly switch to Ruby on Rails, and then even more loudly switch back to PHP. (Google me to read about the drama.) This book by Michael Hartl came so highly recommended that I had to try it, and the Ruby on RailsTM Tutorial is what I used to switch back to Rails again."--From the Foreword by Derek Sivers (sivers.org)Formerly: founder of CD Baby; Currently: founder of Thoughts Ltd. "I started working on a project but didn't quite understand some rails concepts. Needed a good tutorial and found lots of recommendations for @mhartl's rails tutorial . . . and man it's so good. The hype def matches the product."--Pratik Tamang, https://twitter.com/codingkrazy "The rails tutorial by @mhartl is the best web dev resource ever written."--Daniel Gamboa, Product Manager, Figment "My first programming book was the Ruby on Rails Tutorial from @mhartl. The best part was it taught me general skills to be an effective developer."--Jack Gray, staknine.com "Michael Hartl's Rails Tutorial book is the #1 (and only, in my opinion) place to start when it comes to books about learning Rails. . . . It's an amazing piece of work and, unusually, walks you through building a Rails app from start to finish with testing. If you want to read just one book and feel like a Rails master by the end of it, pick the Ruby on RailsTM Tutorial."--Peter Cooper, editor, Ruby Inside "Michael Hartl's Ruby on RailsTM Tutorial seamlessly taught me about not only Ruby on Rails, but also the underlying Ruby language, HTML, CSS, a bit of JavaScript, and even some SQL--but most importantly it showed me how to build a web application (Twitter) in a short amount of time."--Mattan Griffel, cofounder & CEO of One Month "Although I'm a Python/Django developer by trade, I can't stress enough how much this book has helped me. As an undergraduate, completely detached from industry, this book showed me how to use version control, how to write tests, and, most importantly--despite the steep learning curve for setting up and getting stuff running--how the end result of perseverance is extremely gratifying. It made me fall in love with technology all over again. This is the book I direct all my friends to who want to start learning programming/building stuff. Thank you, Michael!"--Prakhar Srivastav, software engineer, Xcite.com, Kuwait "It has to be the best-written book of its type I've ever seen, and I can't recommend it enough."--Daniel Hollands, administrator of Birmingham.IO "For those wanting to learn Ruby on Rails, Hartl's Ruby on RailsTM Tutorial is (in my opinion) the best way to do it."--David Young, software developer and author at deepinthecode.com "This is a great tutorial for a lot of reasons, because aside from just teaching Rails, Hartl is also teaching good development practices."--Michael Denomy, full-stack web developer "Without a doubt, the best way I learned Ruby on Rails was by building an actual working app. I used Michael Hartl's Ruby on RailsTM Tutorial, which showed me how to get a very basic Twitter-like app up and running from scratch. I cannot recommend this tutorial enough; getting something up and going fast was key; it beats memorization by a mile."--James Fend, serial entrepreneur, JamesFend.com "The book gives you the theory and practice, while the videos focus on showing you in person how it's done. Highly recommended combo."--Antonio Cangiano, software engineer, IBM "The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text."--Gregory Charles, principal software developer at Fairway TechnologiesTable of ContentsForeword xviiPreface xixAcknowledgments xxvAbout the Author xxvii Chapter 1: From Zero to Deploy 11.1 Up and Running 51.2 The First Application 141.3 Version Control with Git 351.4 Deploying 521.5 Conclusion 611.6 Conventions Used in This Book 62 Chapter 2: A Toy App 652.1 Planning the Application 662.2 The Users Resource 712.3 The Microposts Resource 872.4 Conclusion 104 Chapter 3: Mostly Static Pages 1073.1 Sample App Setup 1073.2 Static Pages 1153.3 Getting Started with Testing 1263.4 Slightly Dynamic Pages 1353.5 Conclusion 1523.6 Advanced Testing Setup 153 Chapter 4: Rails-Flavored Ruby 1594.1 Motivation 1594.2 Strings and Methods 1654.3 Other Data Structures 1774.4 Ruby Classes 1924.5 Conclusion 204 Chapter 5: Filling in the Layout 2075.1 Adding Some Structure 2075.2 Sass and the Asset Pipeline 2325.3 Layout Links 2425.4 User Signup: A First Step 2555.5 Conclusion 260 Chapter 6: Modeling Users 2636.1 User Model 2646.2 User Validations 2796.3 Adding a Secure Password 3036.4 Conclusion 313 Chapter 7: Sign Up 3157.1 Showing Users 3167.2 Signup Form 3377.3 Unsuccessful Signups 3467.4 Successful Signups 3617.5 Professional-Grade Deployment 3747.6 Conclusion 380 Chapter 8: Basic Login 3818.1 Sessions 3818.2 Logging In 3988.3 Logging Out 4378.4 Conclusion 443 Chapter 9: Advanced Login 4459.1 Remember Me 4459.2 "Remember Me" Checkbox 4709.3 Remember Tests 4769.4 Conclusion 489 Chapter 10: Updating, Showing, and Deleting Users 49310.1 Updating Users 49310.2 Authorization 50910.3 Showing All Users 52610.4 Deleting Users 54410.5 Conclusion 556 Chapter 11: Account Activation 55911.1 Account Activations Resource 56011.2 Account Activation Emails 56811.3 Activating the Account 58511.4 Email in Production 61011.5 Conclusion 619 Chapter 12: Password Reset 62112.1 Password Resets Resource 62312.2 Password Reset Emails 63412.3 Resetting the Password 64112.4 Email in Production (Take 2) 65812.5 Conclusion 65912.6 Proof of Expiration Comparison 661 Chapter 13: User Microposts 66313.1 A Micropost Model 66313.2 Showing Microposts 67913.3 Manipulating Microposts 69313.4 Micropost Images 72613.5 Conclusion 752 Chapter 14: Following Users 75514.1 The Relationship Model 75614.2 A Web Interface for Following Users 77414.3 The Status Feed 80514.4 Conclusion 821 Index 825
£34.19
MIT Press Ltd The Little Prover
Book SynopsisAn introduction to writing proofs about computer programs, written in an accessible question-and-answer style, complete with step-by-step examples and a simple proof assistant.The Little Prover introduces inductive proofs as a way to determine facts about computer programs. It is written in an approachable, engaging style of question-and-answer, with the characteristic humor of The Little Schemer (fourth edition, MIT Press). Sometimes the best way to learn something is to sit down and do it; the book takes readers through step-by-step examples showing how to write inductive proofs. The Little Prover assumes only knowledge of recursive programs and lists (as presented in the first three chapters of The Little Schemer) and uses only a few terms beyond what novice programmers already know. The book comes with a simple proof assistant to help readers work through the book and complete solutions to every example.
£34.20
Pearson Education Java For Students
Book SynopsisDouglas Bell and Mike Parr have many years experience teaching programming in the UK. They have written a number of programming books, including the bestselling Java for Students, Visual Basic for Students and C# for Students. They continue to teach and learn about programming with enthusiasm.Trade Review'The best book for my first year programming students'Gary Hill, The University of Northampton 'It is really hard to fault it or find a better book' Ken Chisholm, Edinburgh Napier University 'An excellent rewarding introduction to Java programming’Dr Simon Jones, University of StirlingTable of ContentsDetailed contentsIntroductionGuided tour The background to Java First programs Using graphics methods Variables and calculations Methods and parameters Using objects Selection Repetition Writing classes Inheritance Calculations Array lists Arrays Arrays - two dimensional String manipulation Exceptions Files and console applications Object-oriented design Program style Testing Debugging Threads Interfaces Programming in the large - packages Polymorphism Java in context Appendices: A. Java libraries B. The Abstract Window Toolkit C. Applets D. Glossary E. Rules for names F. Keywords G. Scope rules (visibility) H. Bibliography I. Installing and using Java Index
£78.99
Pearson Education Bulletproof Web Design
Book SynopsisNo matter how visually appealing or packed with content your Web site is, it isn't succeeding if it's not reaching the widest possible audience. If you get this guide, you can be assured it will! By deconstructing a series of real-world Web sites, author and Web designer extraordinaire Dan Cederholm outlines 10 strategies for creating standards-based designs that provide flexibility, readability, and user controlkey components of every successful Web site. Each chapter starts out with an example of what Dan refers to as an unbulletproof conceptan existing site that employs a traditional approach and its associated pitfalls. Dan then deconstructs that approach, noting its downsides and then making the site over using Cascading Style Sheets (CSS). By the end of each chapter, you'll have replaced traditional, bloated, inaccessible page components with lean markup and CSS. The guide culminates with a chapter that pieces together all of the page compone
£36.95
Pearson Education (US) Java Concurrency in Practice
Book SynopsisBrian Goetz is a software consultant with twenty years industry experience, with over 75 articles on Java development. He is one of the primary members of the Java Community Process JSR 166 Expert Group (Concurrency Utilities), and has served on numerous other JCP Expert Groups. Tim Peierls is the very model of a modern multiprocessor, with BoxPop.biz, recording arts, and goings on theatrical. He is one of the primary members of the Java Community Process JSR 166 Expert Group (Concurrency Utilities), and has served on numerous other JCP Expert Groups. Joshua Bloch is a principal engineer at Google and a Jolt Award-winner. He was previously a distinguished engineer at Sun Microsystems and a senior systems designer at Transarc. Josh led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie Mellon UniTable of ContentsListings xiiPreface xviiChapter 1: Introduction 1 1.1 A (very) brief history of concurrency 11.2 Benefits of threads 31.3 Risks of threads 51.4 Threads are everywhere 9 Part I: Fundamentals 13 Chapter 2: Thread Safety 15 2.1 What is thread safety? 172.2 Atomicity 192.3 Locking 232.4 Guarding state with locks 272.5 Liveness and performance 29 Chapter 3: Sharing Objects 33 3.1 Visibility 333.2 Publication and escape 393.3 Thread confinement 423.4 Immutability 463.5 Safepublication 49 Chapter 4: Composing Objects 55 4.1 Designing a thread-safe class 554.2 Instance confinement 584.3 Delegating thread safety 624.4 Adding functionality to existing thread-safe classes 714.5 Documenting synchronization policies 74 Chapter 5: Building Blocks 79 5.1 Synchronized collections 795.2 Concurrent collections 845.3 Blocking queues and the producer-consumer pattern 875.4 Blocking and interruptible methods 925.5 Synchronizers 945.6 Building an efficient, scalable result cache 101 Part II: Structuring Concurrent Applications 111 Chapter 6: Task Execution 113 6.1 Executing tasks in threads 1136.2 The Executor framework 1176.3 Finding exploitable parallelism 123 Chapter 7: Cancellation and Shutdown 135 7.1 Task cancellation 1357.2 Stopping a thread-based service 1507.3 Handling abnormal thread termination 1617.4 JVM shutdown 164 Chapter 8: Applying Thread Pools 167 8.1 Implicit couplings between tasks and execution policies 1678.2 Sizing thread pools 1708.3 Configuring ThreadPoolExecutor 1718.4 Extending ThreadPoolExecutor 1798.5 Parallelizing recursive algorithms 181 Chapter 9: GUI Applications 189 9.1 Why are GUIs single-threaded? 1899.2 Short-running GUI tasks 1929.3 Long-running GUI tasks 1959.4 Shared data models 1989.5 Other forms of single-threaded subsystems 202 Part III: Liveness, Performance, and Testing 203 Chapter 10: Avoiding Liveness Hazards 205 10.1 Deadlock 20510.2 Avoiding and diagnosing deadlocks 21510.3 Other liveness hazards 218 Chapter 11: Performance and Scalability 221 11.1 Thinking about performance 22111.2 Amdahl's law 22511.3 Costs introduced by threads 22911.4 Reducing lock contention 23211.5 Example: Comparing Map performance 24211.6 Reducing context switch overhead 243 Chapter 12: Testing Concurrent Programs 247 12.1 Testing for correctness 24812.2 Testing for performance 26012.3 Avoiding performance testing pitfalls 26612.4 Complementary testing approaches 270 Part IV: Advanced Topics 275 Chapter 13: Explicit Locks 277 13.1 Lock and ReentrantLock 27713.2 Performance considerations 28213.3 Fairness 28313.4 Choosing between synchronized and ReentrantLock 28513.5 Read-write locks 286 Chapter 14: Building Custom Synchronizers 291 14.1 Managing state dependence 29114.2 Using condition queues 29814.3 Explicit condition objects 30614.4 Anatomy of a synchronizer 30814.5 AbstractQueuedSynchronizer 31114.6 AQS in java.util.concurrent synchronizer classes 314 Chapter15: Atomic Variables and Nonblocking Synchronization 319 15.1 Disadvantages of locking 31915.2 Hardware support for concurrency 32115.3 Atomic variable classes 32415.4 Nonblocking algorithms 329 Chapter 16: The Java Memory Model 337 16.1 What is a memory model, and why would I want one? 33716.2 Publication 34416.3 Initialization safety 349 Appendix A: Annotations for Concurrency 353 A.1 Class annotations 353A.2 Field andmethod annotations 353 Bibliography 355Index 359
£40.04
Pearson Education (US) Eloquent Ruby
Book SynopsisRuss Olsen's career spans three decades, during which he has written everything from graphics device drivers to document management applications. These days, he diligently codes GIS, web service security, and process automation solutions. He spends much of his otherwise free time writing and speaking about programming, especially Ruby and Clojure. His first book was the highly regarded Design Patterns In Ruby (Addison-Wesley, 2007). He is also the lurking presence behind the Technology As If People Mattered blog at www.russolsen.com.Trade ReviewR>Eloquent Ruby is like programming in Ruby itself: fun, surprisingly deep, and you'll find yourself wishing it was always done this way. Wherever you are in your Ruby experience from novice to Rails developer, this book is a must read.Table of ContentsForeword xix Preface xxi Acknowledgments xxv About the Author xxvii PART I: The Basics 1 Chapter 1: Write Code That Looks Like Ruby 3 The Very Basic Basics 4 Go Easy on the Comments 6 Camels for Classes, Snakes Everywhere Else 8 Parentheses Are Optional but Are Occasionally Forbidden 9 Folding Up Those Lines 10 Folding Up Those Code Blocks 11 Staying Out of Trouble 12 In the Wild 13 Wrapping Up 15 Chapter 2: Choose the Right Control Structure 17 If, Unless, While, and Until 17 Use the Modifier Forms Where Appropriate 19 Use each, Not for 20 A Case of Programming Logic 21 Staying Out of Trouble 23 In the Wild 25 Wrapping Up 27 Chapter 3: Take Advantage of Ruby’s Smart Collections 29 Literal Shortcuts 29 Instant Arrays and Hashes from Method Calls 30 Running Through Your Collection 33 Beware the Bang! 36 Rely on the Order of Your Hashes 38 In the Wild 38 Staying Out of Trouble 40 Wrapping Up 42 Chapter 4: Take Advantage of Ruby’s Smart Strings 43 Coming Up with a String 44 Another API to Master 47 The String: A Place for Your Lines, Characters, and Bytes 49 In the Wild 50 Staying Out of Trouble 51 Wrapping Up 52 Chapter 5: Find the Right String with Regular Expressions 53 Matching One Character at a Time 54 Sets, Ranges, and Alternatives 55 The Regular Expression Star 57 Regular Expressions in Ruby 58 Beginnings and Endings 60 In the Wild 62 Staying Out of Trouble 63 Wrapping Up 64 Chapter 6: Use Symbols to Stand for Something 65 The Two Faces of Strings 65 Not Quite a String 66 Optimized to Stand for Something 67 In the Wild 69 Staying Out of Trouble 70 Wrapping Up 71 Chapter 7: Treat Everything Like an Object–Because Everything Is 73 A Quick Review of Classes, Instances, and Methods 74 Objects All the Way Down 76 The Importance of Being an Object 77 Public, Private, and Protected 79 In the Wild 81 Staying Out of Trouble 82 Wrapping Up 84 Chapter 8: Embrace Dynamic Typing 85 Shorter Programs, But Not the Way You Think 85 Extreme Decoupling 89 Required Ceremony Versus Programmer-Driven Clarity 92 Staying Out of Trouble 93 In the Wild 94 Wrapping Up 96 Chapter 9: Write Specs! 97 Test::Unit: When Your Documents Just Have to Work 98 A Plethora of Assertions 101 Don’t Test It, Spec It! 101 A Tidy Spec Is a Readable Spec 104 Easy Stubs 105 . . . And Easy Mocks 107 In the Wild 108 Staying Out of Trouble 110 Wrapping Up 113 PART II: Classes, Modules, and Blocks 115 Chapter 10: Construct Your Classes from Short, Focused Methods 117 Compressing Specifications 117 Composing Methods for Humans 121 Composing Ruby Methods 122 One Way Out? 123 Staying Out of Trouble 126 In the Wild 127 Wrapping Up 128 Chapter 11: Define Operators Respectfully 129 Defining Operators in Ruby 129 A Sampling of Operators 131 Operating Across Classes 134 Staying Out of Trouble 135 In the Wild 137 Wrapping Up 139 Chapter 12: Create Classes That Understand Equality 141 An Identifier for Your Documents 141 An Embarrassment of Equality 142 Double Equals for Everyday Use 143 Broadening the Appeal of the == Method 145 Well-Behaved Equality 146 Triple Equals for Case Statements 149 Hash Tables and the eql? Method 150 Building a Well-Behaved Hash Key 152 Staying Out of Trouble 153 In the Wild 154 Wrapping Up 156 Chapter 13: Get the Behavior You Need with Singleton and Class Methods 157 A Stubby Puzzle 158 A Hidden, but Real Class 160 Class Methods: Singletons in Plain Sight 162 In the Wild 164 Staying Out of Trouble 165 Wrapping Up 167 Chapter 14: Use Class Instance Variables 169 A Quick Review of Class Variables 169 Wandering Variables 171 Getting Control of the Data in Your Class 174 Class Instance Variables and Subclasses 175 Adding Some Convenience to Your Class Instance Variables 176 In the Wild 177 Staying Out of Trouble 179 Wrapping Up 179 Chapter 15: Use Modules as Name Spaces 181 A Place for Your Stuff, with a Name 181 A Home for Those Utility Methods 184 Building Modules a Little at a Time 185 Treat Modules Like the Objects That They Are 186 Staying Out of Trouble 189 In the Wild 190 Wrapping Up 191 Chapter 16: Use Modules as Mixins 193 Better Books with Modules 193 Mixin Modules to the Rescue 195 Extending a Module 197 Staying Out of Trouble 198 In the Wild 202 Wrapping Up 205 Chapter 17: Use Blocks to Iterate 207 A Quick Review of Code Blocks 207 One Word after Another 209 As Many Iterators as You Like 210 Iterating over the Ethereal 211 Enumerable: Your Iterator on Steroids 213 Staying Out of Trouble 215 In the Wild 217 Wrapping Up 218 Chapter 18: Execute Around with a Block 219 Add a Little Logging 219 When It Absolutely Must Happen 224 Setting Up Objects with an Initialization Block 225 Dragging Your Scope along with the Block 225 Carrying the Answers Back 227 Staying Out of Trouble 228 In the Wild 229 Wrapping Up 231 Chapter 19: Save Blocks to Execute Later 233 Explicit Blocks 233 The Call Back Problem 234 Banking Blocks 236 Saving Code Blocks for Lazy Initialization 237 Instant Block Objects 239 Staying Out of Trouble 240 In the Wild 243 Wrapping Up 244 PART III: Metaprogramming 247 Chapter 20: Use Hooks to Keep Your Program Informed 249 Waking Up to a New Subclass 250 Modules Want To Be Heard Too 253 Knowing When Your Time Is Up 255 . . . And a Cast of Thousands 256 Staying Out of Trouble 257 In the Wild 259 Wrapping Up 261 Chapter 21: Use method_missing for Flexible Error Handling 263 Meeting Those Missing Methods 264 Handling Document Errors 266 Coping with Constants 267 In the Wild 268 Staying Out of Trouble 270 Wrapping Up 271 Chapter 22: Use method_missing for Delegation 273 The Promise and Pain of Delegation 274 The Trouble with Old-Fashioned Delegation 275 The method_missing Method to the Rescue 277 More Discriminating Delegation 278 Staying Out of Trouble 279 In the Wild 281 Wrapping Up 283 Chapter 23: Use method_missing to Build Flexible APIs 285 Building Form Letters One Word at a Time 286 Magic Methods from method_missing 287 It’s the Users That Count–All of Them 289 Staying Out of Trouble 289 In the Wild 290 Wrapping Up 292 Chapter 24: Update Existing Classes with Monkey Patching 293 Wide-Open Classes 294 Fixing a Broken Class 295 Improving Existing Classes 296 Renaming Methods with alias_method 297 Do Anything to Any Class, Anytime 299 In the Wild 299 Staying Out of Trouble 303 Wrapping Up 303 Chapter 25: Create Self-Modifying Classes 305 Open Classes, Again 305 Put Programming Logic in Your Classes 308 Class Methods That Change Their Class 309 In the Wild 310 Staying Out of Trouble 314 Wrapping Up 315 Chapter 26: Create Classes That Modify Their Subclasses 317 A Document of Paragraphs 317 Subclassing Is (Sometimes) Hard to Do 319 Class Methods That Build Instance Methods 321 Better Method Creation with define_method 324 The Modification Sky Is the Limit 324 In the Wild 327 Staying Out of Trouble 330 Wrapping Up 332 PART IV: Pulling It All Together 333 Chapter 27: Invent Internal DSLs 335 Little Languages for Big Problems 335 Dealing with XML 336 Stepping Over the DSL Line 341 Pulling Out All the Stops 344 In the Wild 345 Staying Out of Trouble 347 Wrapping Up 349 Chapter 28: Build External DSLs for Flexible Syntax 351 The Trouble with the Ripper 352 Internal Is Not the Only DSL 353 Regular Expressions for Heavier Parsing 356 Treetop for Really Big Jobs 358 Staying Out of Trouble 360 In the Wild 362 Wrapping Up 364 Chapter 29: Package Your Programs as Gems 367 Consuming Gems 367 Gem Versions 368 The Nuts and Bolts of Gems 369 Building a Gem 370 Uploading Your Gem to a Repository 374 Automating Gem Creation 375 In the Wild 376 Staying Out of Trouble 377 Wrapping Up 380 Chapter 30: Know Your Ruby Implementation 381 A Fistful of Rubies 381 MRI: An Enlightening Experience for the C Programmer 382 YARV: MRI with a Byte Code Turbocharger 385 JRuby: Bending the “J” in the JVM 387 Rubinius 388 In the Wild 389 Staying Out of Trouble 389 Wrapping Up 390 Chapter 31: Keep an Open Mind to Go with Those Open Classes 391 Appendix: Going Further 393 Index 397
£37.52