Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
About This eBook
Title Page
Copyright Page
Dedication Page
Contents at a Glance
Table of Contents
Acknowledgments
About the Author
We Want to Hear from You!
Reader Services
Introduction: Why I Wrote This Book
Why You Should Read This Book
Your Project
1. “Hello, World!” Writing Your First Program
Choose a Text Editor
Core Features
Making Your Choice
Sublime Text
TextMate
Notepad++
Gedit
Vim
Eclipse
IntelliJ
Xcode
Visual Studio
Create a Project Directory
Start Small: Create a Test File
How HTML and JavaScript Work Together in a Browser
The Value of Small Changes
Build on Your Success
Reference Your JavaScript in manifest.json
Let It Run!
Great Power, Great Responsibility
Summing Up
2. How Software Works
What Is “Software”?
Software Life Cycle
Source Code—Where It All Starts
A Set of Instructions
Programming Languages
From Source Code to 0’s and 1’s
Compiled vs. Interpreted Languages: When Does the Source Code Become Binary?
Runtime Environment
Execution by the Processor
Input and Output
Making Software Useful (and Reusable) with Input
Where Does the Input Come From?
How the Software Gets the Input
Types of Output
GIGO: Garbage In, Garbage Out
State
Add State to Kittenbook
Memory and Variables
Variables
Variable Storage
A Finite Resource
Memory Leaks
Summing Up
3. Getting to Know Your Computer
Your Computer Is Stupid
Your Computer Is Magic
Standing on the Shoulders of Giants
Computer Guts
Processor
Short-Term Memory
Long-Term Memory
Using Your Computer
The File System
The Command Line: Take Control
Summing Up
4. Build Tools
Automate (Almost) Everything
Install Node
Install Grunt
Software That Helps You Create Software
Avoid Mistakes
Work Faster
Tasks to Automate
Compile
Test
Package
Deploy
Build Your Own Build
Gruntfile.js
Use Grunt Plug-ins
Load Grunt Plug-ins
Register Tasks
Watch This!
Summing Up
5. Data (Types), Data (Structures), Data(bases)
Data Types
Why Different Data Types Exist
Primitive Data Types
Composite Data Types
Dynamically and Statically Typed Languages
Data Structures
Set
Stack
Tree
Graph
How to Choose an Effective Data Structure
Databases
Long-Term (Persistent) Storage
Relational Databases
A Brief Introduction to SQL
Summing Up
6. Regular Expressions
Ctrl+F on Steroids: Looking for Patterns
Using Regular Expressions in JavaScript
Repetition
?
+
*
Special Characters and Escaping
{1,10}: Make Your Own Super Powers
Match Anything, Period
Don’t Be Greedy
Understanding Brackets from [A-Za-z]
Lists of Characters
Ranges
Negation
A Pattern for Phone Numbers
I Need My \s
Shortcuts for Brackets
Limitations
Capture the Tag
Advanced Find and Replace
The Beginning and the End (of a Line)
Flags
Global
Ignore Case
Multiline
When Will You Ever Use Regex?
grep
Code Refactoring
Validation
Data Extraction
Summing Up
7. if, for, while, and When
Operators
Comparison Operators
Logical Operators
Unary Operators
Binary Operators
Ternary Operators
“Truthy” and “Falsy”
“Syntactic Sugar”
Looping Through an Array
Looping Through Images
Nested Loops
You Need a Break
Infinite Loops
Take Another Break
When You Don’t Know When to Stop
When
Events
Listeners
Cron Jobs
Timeouts
Catch When Things Go Wrong
Writing Robust Code
Summing Up
8. Functions and Methods
Function Structure
Definition
Invocation
Arguments
Call Stack
Code Encapsulation
Do One Thing Well
Divide and Conquer
A Place for Everything and Everything in Its Place
Code Reuse
Solve the General Problem
Do More with Less
Don’t Repeat Yourself (DRY)
Scope
Global
Local
How Variable Lookups Happen
Summing Up
9. Programming Standards
Coding Conventions
Setting Standards
To Hack or Not to Hack
Pay Now or Pay Later
Writing Maintainable Code
Code Formatting
Keep It Consistent
Whitespace
It Doesn’t Happen on Its Own: Make Rules
Using the Work of Others
Build Faster
Open Source Software
Built by the Community
When to Build It Yourself
Best Practices
Documentation
Planning
Testing
Summing Up
10. Documentation
Document Intentions
Self-Documenting Code
Don’t Document the Obvious
The Danger of Outdated Documentation
Find Bugs Using Documentation
Document for Yourself
How Good Is Your Memory?
Document to Learn
Documentation Beyond Comments
Document for Others
Document Your Decisions
Document Your Resources
Document to Teach
Summing Up
11. Planning
Think Before You Build
Create a Specification
Design an Architecture
Draw Diagrams
Try to Break Your System
Iterative Planning
Design for Extensibility
What Are Your Priorities?
User Experience
Performance
Security
Scalability
Deadlines
The Balancing Act
Identify and Create Constraints
Know What You Can and Can’t Do
Summing Up
12. Testing and Debugging
Manual Testing
Test As You Work
Try Something Crazy
Eat Your Own Dog Food
Automated Testing
Unit Tests
Set Up Tests for Kittenbook
Epic Fail!
Spies Like Us (and We Like Spies)
Integration Tests
Catch Problems Early
Debugging
Errors
Logs
Breakpoints
Inspecting, Watching, and the Console
Stepping Through the Code
Call Stack
Find the Root Cause
Code, Test, Debug, Repeat
Summing Up
13. Learning to Fish: How to Acquire a Lifetime of Programming Knowledge
How to Search
Finding the Right Terms
Working Backward
Identifying Quality Resources
Personal Blogs: Hidden Gems
Where, When, and How to Ask Programming Questions
Where
When
How
Learn by Teaching
Summing Up
14. Building Your Skills
Make kittenbook Your Own
Restyle Facebook
Add New Functionality
Share Your Version of Kittenbook
Find Your Own Project
Solve Your Own Problem
Be Ambitious
Get Help, Give Help
Open Source Projects
GitHub
Finding a Project
Different Ways to Contribute
Create Your Own
Free Online Education
Project Euler
Udacity
Coursera
codecademy
Khan Academy
Tutorials
Paid Education
Read a Book
Udacity and Coursera
Treehouse
Summing Up
15. Advanced Topics
Version Control
Why Use Version Control?
Working with a Team
Subversion
Git
OOP (Object-Oriented Programming)
Classes
Inheritance
Instances
Design Patterns
Pub Sub
Mediator
Singleton
Summing Up
Glossary
Index
Code Snippets
← Prev
Back
Next →
← Prev
Back
Next →