Code Monkey home page Code Monkey logo

all_development_notes_2015-2017's Introduction

<title>_Programming Memorized < 2017</title> <style> body, td { font-family: Tahoma; font-size: 10pt; } </style>

ASA - Cisco Adaptive Security Appliance (ASA) Software

CED - Certified Ethical Hacker (CEH) is a qualification obtained by assessing the security of computer systems, using penetration testing techniques. The code for the CEH exam is 312-50, and the certification is in Version 9 as of 2016. [1][2]

Penetration tests are employed by organizations that hire certified ethical hackers to penetrate networks and computer systems with the purpose of finding and fixing security vulnerabilities. While unauthorized hacking, also known as Black Hat hacking, is illegal, penetration testing done at the request of the owner of the targeted systems is not.[citation needed]

CAPM - Certified Associate in Project Management

This credential, granted by the Project Management Institute, is designed for newer project managers who can demonstrate an understanding of the basics, terminology, and processes of effective project management.

AWS CSA - AWS Certified Solutions Architect – Associate

As more organizations adopt Amazon Elastic Compute Cloud (EC2), there is increasing need for qualified technicians. Introduced in 2013, the AWS Certified Solutions Architect – Associate is becoming a valuable — and valued — certification. To go for this certification, Amazon recommends that you have at least one year of hands-on experience with AWS, plus knowledge of at least one high-level programming language. AWS certifications are reported to be “challenging” and real-world experience of how AWS services work and interact is essential to passing the certification exam.

CCNP Security - Cisco Certified Network Professional – Security

The certification focuses on the skills related to securing Cisco-based networks, including identity management, authentication, authorization, firewalls, anti-malware programs, and security policy development. Professionals with the CCNP – Security credential are typically employed in IT security groups and systems administration.

VCP6-DCV - VMware Certified Professional 6 – Data Center Virtualization (VCP6-DCV)

This credential is for IT professionals who work in data centers that have moved to, or are transitioning to, private clouds. Candidates for VCP6-DCV certification need a thorough understanding of networking (DNS, routing, database connectivity, etc.), as well as a minimum of six months experience in configuring, deploying, and managing VMware vSphere 6 environments. Candidates who are new to VMware technology are expected to pass two exams — the vSphere 6 Foundations exam and the VMware Certified Professional 6 – Data Center Virtualization (VCP6-DCV) exam. vSphere 6 Foundations is a 90-minute on-line exam with 65 single and multiple choice questions. The VCP6-DCV exam is a proctored test taken at a local VMware-authorized testing center. This exam is 100-minutes long, with 85 single and multiple choice questions. VMware certifications are no longer valid for life! You’ll have to recertify every two years by taking the then current exam. — so look forward to vSphere 7 or 8 or maybe 9 in 2018!

CISM - Certified Information Security Manager

The CISM credential is granted by ISACA, an independent, nonprofit, association. CISM is focused primarily on information security management and on professionals such as information security professionals or chief information officers. The CISM certification demonstrates that the holder can develop and manage an information security program in line with the goals of the organization.

CISA - Certified Information Systems Auditor

This certification, as the name suggests, is targeted at practicing IT auditors, rather than those professionals who are involved in the security of systems, networks, and information. The CISA certification is granted by ISACA, the same body that grants the Certified Information Security Manager (CISM) credential.

CISSP - Certified Information Systems Security Professional

The CISSP is granted by the non-profit security consortium known as (ISC)2. Whereas the CISM credential is aimed at management professionals, CISSP is more technical and covers a broader and deeper range of topics. Introduced in 1994, the CISSP is a respected, vendor-neutral security certification. Candidates for CISSP would have roles such as security consultants, security auditors/analysts, security managers, network architects, etc.

MCSE - Microsoft Certified Solutions Expert – Private Cloud

With the popularity of Microsoft private cloud computing, Microsoft’s MCSE – Private Cloud is gaining respect as a required credential for server admins, systems programmers and network managers. After reports of cheating on MSCE exams, Microsoft has “raised the bar” by replacing multiple-choice questions with more difficult performance-related scenario questions and also by increasing the number of exams required.

PMP - Project Management Professional (PMP)

The PMP is another certification granted by the Project Management Institute. They claim that it’s “the gold standard of project management certification” — but maybe they’re biased! The PMP demands some serious, real-world experience as a project manager before you can even apply to take the certification exam. If you don’t have a four-year degree, you’ll need to have 7,500 hours leading and directing projects, plus 35 hours of project management education! If you are the proud graduate of a four-year school, then you’ll only need 4,500 hours as a project leader or manager and, of course, 35 hours of project management education!

CCIE - CCI Cisco Certified Internetwork Expert

Here’s our vote for #1 toughest certification! It’s Cisco’s top level certification and a highly valued “badge of competency” in the industry. Less than 3% of Cisco certified engineers obtain the CCIE certification, which translates to less than 1% of the networking professionals worldwide. Certainly, it’s not easy to become a CCIE. And once you become one, you must re-certify every two years or your CCIE will be suspended!

===

GNS3

Network Simulation/Emulation Application for prototyping without hardwar. Lots of graphing functionality with actual spects from real hardware running current OSes. "The software that empowers network professionals." GNS3 provides an effective way to get hands on with core networking topics and concepts. Apply what you are learning today. Start your free week today! http://cbt.gg/2ftwhwB

Long short-term memory (LSTM)

is a recurrent neural network (RNN) architecture (an artificial neural network) proposed in 1997 by Sepp Hochreiter and Jürgen Schmidhuber[2] and further improved in 2000 by Felix Gers et al.[3] Like most RNNs, a LSTM network is universal in the sense that given enough network units it can compute anything a conventional computer can compute, provided it has the proper weight matrix, which may be viewed as its program. Unlike traditional RNNs, an LSTM network is well-suited to learn from experience to classify, process and predict time series when there are time lags of unknown size and bound between important events. Relative insensitivity to gap length gives an advantage to LSTM over alternative RNNs and hidden Markov models and other sequence learning methods in numerous applications. Among other successes, LSTM achieved the best known results in natural language text compression,[4] unsegmented connected handwriting recognition,[5] and in 2009 won the ICDAR handwriting competition. LSTM networks have also been used for automatic speech recognition, and were a major component of a network that in 2013 achieved a record 17.7% phoneme error rate on the classic TIMIT natural speech dataset.[6] As of 2016, major technology companies including Google, Apple, Microsoft, and Baidu are using LSTM networks as fundamental components in new products.[7][8] For example, Google uses LSTM for speech recognition on the smartphone,[9][10] for the smart assistant Allo,[11] and for Google Translate.[12][13] Apple uses LSTM for the "Quicktype" function on the iPhone[14][15] and for Siri.[16] Amazon uses LSTM for Amazon Alexa.[17]

LDAP (Lightweight Directory Access Protocol)

is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet.

===

* A finite-state machine (FSM) or finite-state automaton (FSA, plural: automata), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number of states at any given time. The FSM can change from one state to another in response to some external inputs; the change from one state to another is called a transition. A FSM is defined by a list of its states, its initial state, and the conditions for each transition.
* In theoretical computer science and formal language theory, a regular language (also called a rational language[1][2]) is a formal language that can be expressed using a regular expression, in the strict sense of the latter notion used in theoretical computer science (as opposed to many regular expressions engines provided by modern programming languages, which are augmented with features that allow recognition of languages that cannot be expressed by a classic regular expression).
* In formal language theory, a context-free language (CFL) is a language generated by a context-free grammar (CFG).
* Context-free languages have many applications in programming languages, in particular, most arithmetic expressions are generated by context-free grammars.
* In theoretical computer science, a context-sensitive language is a formal language that can be defined by a context-sensitive grammar (and equivalently by a noncontracting grammar). Context-sensitive is one of the four types of grammars in the Chomsky hierarchy.
* In mathematics, logic and computer science, a formal language is called recursively enumerable (also recognizable, partially decidable, semidecidable, Turing-acceptable or Turing-recognizable) if it is a recursively enumerable subset in the set of all possible words over the alphabet of the language, i.e., if there exists a Turing machine which will enumerate all valid strings of the language.
* Pushdown automata are used in theories about what can be computed by machines. They are more capable than finite-state machines but less capable than Turing machines. Deterministic pushdown automata can recognize all deterministic context-free languages while nondeterministic ones can recognize all context-free languages, with the former often used in parser design.
* The busy beaver game consists of designing a halting, binary-alphabet Turing machine which writes the most 1s on the tape, using only a limited set of states. The rules for the 2-state game are as follows:
* the machine must have two states in addition to the halting state, and
* the tape starts with 0s only.
* A Turing machine is an abstract machine[1] that manipulates symbols on a strip of tape according to a table of rules; to be more exact, it is a mathematical model of computation that defines such a device.[2] Despite the model's simplicity, given any computer algorithm, a Turing machine can be constructed that is capable of simulating that algorithm's logic.[3]
* Operation. A linear bounded automaton is a nondeterministic Turing machine that satisfies the following three conditions: Its input alphabet includes two special symbols, serving as left and right endmarkers.
* In the theory of computation, a Mealy machine is a finite-state machine whose output values are determined both by its current state and the current inputs. (This is in contrast to a Moore machine, whose output values are determined solely by its current state.) A Mealy machine is a deterministic finite-state transducer: for each state and input, at most one transition is possible.
* A machine is a tool containing one or more parts that uses energy to perform an intended action. Machines are usually powered by chemical, thermal, or electrical means, and are often motorized. Historically, a power tool also required moving parts to classify as a machine. However, the advent of electronics has led to the development of power tools without moving parts that are considered machines.[1]
* In the theory of computation, a Moore machine is a finite-state machine whose output values are determined only by its current state. This is in contrast to a Mealy machine, whose output values are determined both by its current state and by the values of its inputs. The Moore machine is named after Edward F. Moore, who presented the concept in a 1956 paper, “Gedanken-experiments on Sequential Machines.”[1]
* Automata theory is the study of abstract machines and automata, as well as the computational problems that can be solved using them. It is a theory in theoretical computer science and discrete mathematics (a subject of study in both mathematics and computer science). The word automata (the plural of automaton) comes from the Greek word αὐτόματα, which means "self-acting".
* The Ackermann function is the simplest example of a well-defined total function which is computable but not primitive recursive, providing a counterexample to the belief in the early 1900s that every computable function was also primitive recursive (Dötzel 1991). ... The Ackermann function is defined for integer and by. (1 ...
* In formal language theory, a string is defined as a finite sequence of members of an underlying base set; this set is called the alphabet of a string or collection of strings.[1][2] The members of the set are called symbols, and are typically thought of as representing letters, characters, or digits.[1][2] For example, a common alphabet is {0,1}, the binary alphabet, and a binary string is a string drawn from the alphabet {0,1}. An infinite sequence of letters may be constructed from elements of an alphabet as well.
* In the theory of computation, a branch of theoretical computer science, a deterministic finite automaton (DFA)—also known as a deterministic finite acceptor (DFA) and a deterministic finite state machine (DFSM)—is a finite-state machine that accepts and rejects strings of symbols and only produces a unique computation (or run) of the automaton for each input string.[1] Deterministic refers to the uniqueness of the computation. In search of the simplest models to capture finite-state machines, McCulloch and Pitts were among the first researchers to introduce a concept similar to finite automata in 1943.[2][3]
* In theoretical computer science, a transition system is a concept used in the study of computation. It is used to describe the potential behavior of discrete systems. It consists of states and transitions between states, which may be labeled with labels chosen from a set; the same label may appear on more than one transition. If the label set is a singleton, the system is essentially unlabeled, and a simpler definition that omits the labels is possible.
* An NFA, similar to a DFA, consumes a string of input symbols. For each input symbol, it transitions to a new state until all input symbols have been consumed. Unlike a DFA, it is non-deterministic, i.e., for some state and input symbol, the next state may be nothing or one or two or more possible states.
* 

* In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code.
* linguistics, syntax (/ˈsɪnˌtæks/[1][2]) is the set of rules, principles, and processes that govern the structure of sentences in a given language, specifically word order and punctuation. The term syntax is also used to refer to the study of such principles and processes.[3] The goal of many syntacticians is to discover the syntactic rules common to all languages. Syntax is not compulsory for all the languages that exist. In Arabian, there is not any rule to declare the order of the sentences.
* In mathematics, syntax refers to the rules governing the behavior of mathematical systems, such as formal languages used in logic. (See logical syntax.)
* Semiotics (from Greek: σημειωτικός, "simiotikos") (also called semiotic studies; not to be confused with the Saussurean tradition called semiology which is a subset of semiotics) is the study of meaning-making, the study of sign processes and meaningful communication.[1] This includes the study of signs and sign processes (semiosis), indication, designation, likeness, analogy, allegory, metonymy, metaphor, symbolism, signification, and communication.
* Metonymy (/mᵻˈtɒnᵻmi/ mi-TONN-ə-mee)[1] is a figure of speech in which a thing or concept is referred to by the name of something closely associated with that thing or concept.[2] The words metonymy and metonym come from the Greek: μετωνῠμία, metōnymía, ("a change of name"), from μετά, metá, ("after, beyond"), and -ωνυμία, -ōnymía, a suffix that names figures of speech, from ὄνῠμα, ónyma or ὄνομα, ónoma, ("name").[3]
* Semantics (from Ancient Greek: σημαντικός sēmantikos, "significant")[1][2] is primarily the linguistic, and also philosophical, study of meaning—in language, programming languages, formal logics, and semiotics. It focuses on the relationship between signifiers—like words, phrases, signs, and symbols—and what they stand for, their denotation.
* Language is the ability to acquire and use complex systems of communication, particularly the human ability to do so, and a language is any specific example of such a system. The scientific study of language is called linguistics. Questions concerning the philosophy of language, such as whether words can represent experience, have been debated since Gorgias and Plato in Ancient Greece. Thinkers such as Rousseau have argued that language originated from emotions while others like Kant have held that it originated from rational and logical thought. 20th-century philosophers such as Wittgenstein argued that philosophy is really the study of language. Major figures in linguistics include Ferdinand de Saussure and Noam Chomsky.
* Production system (computer science), a program used to provide some form of artificial intelligence
* In mathematics, computer science, and linguistics, a formal language is a set of strings of symbols together with a set of rules that are specific to it.
* The alphabet of a formal language is the set of symbols, letters, or tokens from which the strings of the language may be formed.[1] The strings formed from this alphabet are called words, and the words that belong to a particular formal language are sometimes called well-formed words or well-formed formulas. A formal language is often defined by means of a formal grammar such as a regular grammar or context-free grammar, also called its formation rule.
* SPARQL (pronounced "sparkle", a recursive acronym for SPARQL Protocol and RDF Query Language) is an RDF query language, that is, a semantic query language for databases, able to retrieve and manipulate data stored in Resource Description Framework (RDF) format.
* Resource Description Framework (RDF) format.
* In computer science, a graph is an abstract data type that is meant to implement the undirected graph and directed graph concepts from mathematics, specifically the field of graph theory.
* A graph data structure consists of a finite (and possibly mutable) set of vertices or nodes or points, together with a set of unordered pairs of these vertices for an undirected graph or a set of ordered pairs for a directed graph. These pairs are known as edges, arcs, or lines for an undirected graph and as arrows, directed edges, directed arcs, or directed lines for a directed graph. The vertices may be part of the graph structure, or may be external entities represented by integer indices or references.
* In computer science, graph traversal (also known as graph search) refers to the process of visiting (checking and/or updating) each vertex in a graph. Such traversals are classified by the order in which the vertices are visited. Tree traversal is a special case of graph traversal.
* Breadth-first search (BFS) is an algorithm for traversing or searching tree or graph data structures. It starts at the tree root (or some arbitrary node of a graph, sometimes referred to as a 'search key'[1]) and explores the neighbor nodes first, before moving to the next level neighbors.
* Depth-first search (DFS) is an algorithm for traversing or searching tree or graph data structures. One starts at the root (selecting some arbitrary node as the root in the case of a graph) and explores as far as possible along each branch before backtracking.
* In mathematics, topology (from the Greek τόπος, place, and λόγος, study) is concerned with the properties of space that are preserved under continuous deformations, such as stretching, crumpling and bending, but not tearing or gluing. This can be studied by considering a collection of subsets, called open sets, that satisfy certain properties, turning the given set into what is known as a topological space. Important topological properties include connectedness and compactness.[1]
* In mathematics, a manifold is a topological space that locally resembles Euclidean space near each point. More precisely, each point of an n-dimensional manifold has a neighbourhood that is homeomorphic to the Euclidean space of dimension n. In this more precise terminology, a manifold is referred to as an n-manifold.
* One-dimensional manifolds include lines and circles, but not figure eights (because they have crossing points that are not locally homeomorphic to Euclidean 1-space). Two-dimensional manifolds are also called surfaces. Examples include the plane, the sphere, and the torus, which can all be embedded (formed without self-intersections) in three dimensional real space, but also the Klein bottle and real projective plane, which will always self-intersect when immersed in three-dimensional real space.
* A parse tree or parsing tree[1] or derivation tree or concrete syntax tree is an ordered, rooted tree that represents the syntactic structure of a string according to some context-free grammar. The term parse tree itself is used primarily in computational linguistics; in theoretical syntax, the term syntax tree is more common.
* A parser is a software component that takes input data (frequently text) and builds a data structure – often some kind of parse tree, abstract syntax tree or other hierarchical structure – giving a structural representation of the input, checking for correct syntax in the process. The parsing may be preceded or followed by other steps, or these may be combined into a single step. The parser is often preceded by a separate lexical analyser, which creates tokens from the sequence of input characters; alternatively, these can be combined in scannerless parsing. Parsers may be programmed by hand or may be automatically or semi-automatically generated by a parser generator. Parsing is complementary to templating, which produces formatted output. These may be applied to different domains, but often appear together, such as the scanf/printf pair, or the input (front end parsing) and output (back end code generation) stages of a compiler.
* A compiler is a computer program (or a set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language), with the latter often having a binary form known as object code.[1] The most common reason for converting source code is to create an executable program.
* In mathematics and mathematical logic, Boolean algebra is the branch of algebra in which the values of the variables are the truth values true and false, usually denoted 1 and 0 respectively. Instead of elementary algebra where the values of the variables are numbers, and the prime operations are addition and multiplication, the main operations of Boolean algebra are the conjunction and denoted as ∧, the disjunction or denoted as ∨, and the negation not denoted as ¬. It is thus a formalism for describing logical relations in the same way that ordinary algebra describes numeric relations.
* In computer science, the Boolean Satisfiability Problem (sometimes called Propositional Satisfiability Problem and abbreviated as SATISFIABILITY or SAT) is the problem of determining if there exists an interpretation that satisfies a given Boolean formula.
* The P versus NP problem is a major unsolved problem in computer science. Informally speaking, it asks whether every problem whose solution can be quickly verified by a computer can also be quickly solved by a computer.
* In the field of artificial intelligence, the most difficult problems are informally known as AI-complete or AI-hard, implying that the difficulty of these computational problems is equivalent to that of solving the central artificial intelligence problem—making computers as intelligent as people, or strong AI.[1] To call a problem AI-complete reflects an attitude that it would not be solved by a simple specific algorithm.
* Constraint satisfaction problems (CSPs) are mathematical problems defined as a set of objects whose state must satisfy a number of constraints or limitations. CSPs represent the entities in a problem as a homogeneous collection of finite constraints over variables, which is solved by constraint satisfaction methods. CSPs are the subject of intense research in both artificial intelligence and operations research, since the regularity in their formulation provides a common basis to analyze and solve problems of many seemingly unrelated families. CSPs often exhibit high complexity, requiring a combination of heuristics and combinatorial search methods to be solved in a reasonable time. The Boolean satisfiability problem (SAT), the satisfiability modulo theories (SMT) and answer set programming (ASP) can be roughly thought of as certain forms of the constraint satisfaction problem.
* Andrey Nikolaevich Kolmogorov was a 20th-century Russian mathematician who made significant contributions to the mathematics of probability theory, topology, intuitionistic logic, turbulence, classical ... Wikipedia
* Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm.
* In algorithmic information theory (a subfield of computer science and mathematics), the Kolmogorov complexity of an object, such as a piece of text, is the length of the shortest computer program (in a predetermined programming language) that produces the object as output. It is a measure of the computational resources needed to specify the object, and is also known as descriptive complexity, Kolmogorov–Chaitin complexity, algorithmic entropy, or program-size complexity. It is named after Andrey Kolmogorov, who first published on the subject in 1963.[1][2]
* Information theory studies the quantification, storage, and communication of information. It was originally proposed by Claude E. Shannon in 1948 to find fundamental limits on signal processing and communication operations such as data compression, in a landmark paper entitled "A Mathematical Theory of Communication".
* In signal processing, data compression, source coding,[1] or bit-rate reduction involves encoding information using fewer bits than the original representation.[2] Compression can be either lossy or lossless. Lossless compression reduces bits by identifying and eliminating statistical redundancy. No information is lost in lossless compression. Lossy compression reduces bits by removing unnecessary or less important information.[3] The process of reducing the size of a data file is referred to as data compression. In the context of data transmission, it is called source coding (encoding done at the source of the data before it is stored or transmitted) in opposition to channel coding.[4]
* In statistical mechanics, entropy (usual symbol S) is related to the number of microscopic configurations Ω that a thermodynamic system can have when in a state as specified by some macroscopic variables. Specifically, assuming for simplicity that each of the microscopic configurations is equally probable, the entropy of the system is the natural logarithm of that number of configurations, multiplied by the Boltzmann constant kB. Formally,
* Lazy Algorithm (Instance-based Learning ) Lazy learning (Atkeson, Moore, and Schaal, 1997), also known as just-in-time learning (Cybenko, 1996). It defers processing of the examples until an explicit request for information is received.
* Scheduling is important as an internal process in computer science, wherein a schedule is a list of actions from a set of transactions in databases, and scheduling is the way various processes are assigned in computer multitasking and multiprocessing operating system design. This kind of scheduling is incorporated into the computer program, and the user may be completely unaware of what tasks are being carried out and when. Scheduling operations and issues in computing may include:
* The operation of a network scheduler or packet scheduler, an arbiter program that manages the movement of certain pieces of information in the computer.
* Open-shop scheduling, Job Shop Scheduling, Flow Shop Scheduling Problem, optimization problems in computer science.
* I/O scheduling, the order in which I/O requests are submitted to a block device in operating systems.
* Job scheduler, an enterprise software application in charge of unattended background executions.
* Information retrieval (IR) is the activity of obtaining information resources relevant to an information need from a collection of information resources. Searches can be based on full-text or other content-based indexing. Information retrieval is the science of searching for information in a document, searching for documents themselves, and also searching for metadata that describe data, and for databases of texts, images or sounds.
* Knowledge organization (KO) (or "organization of knowledge", "organization of information" or "information organization") is a branch of Library and Information Science (LIS) concerned with activities such as document description, indexing and classification performed in libraries, databases, archives, etc. These activities are done by librarians, archivists, subject specialists as well as by computer algorithms. KO as a field of study is concerned with the nature and quality of such knowledge organizing processes (KOP) (such as taxonomy and ontology) as well as the knowledge organizing systems (KOS) used to organize documents, document representations and concepts.
* Backtracking is a general algorithm for finding all (or some) solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons each partial candidate c ("backtracks") as soon as it determines that c cannot possibly be completed to a ...
* A greedy algorithm is an algorithmic paradigm that follows the problem solving heuristic of making the locally optimal choice at each stage[1] with the hope of finding a global optimum. In many problems, a greedy strategy does not in general produce an optimal solution, but nonetheless a greedy heuristic may yield locally optimal solutions that approximate a global optimal solution in a reasonable time.
* In combinatorics, a branch of mathematics, a matroid /ˈmeɪtrɔɪd/ is a structure that abstracts and generalizes the notion of linear independence in vector spaces. There are many equivalent ways to define a matroid, the most significant being in terms of independent sets, bases, circuits, closed sets or flats, closure operators, and rank functions.
* An algorithmic paradigm, algorithm design paradigm, algorithmic technique, or algorithmic strategy is a generic method or approach which underlies the design of a class of algorithms. It is an abstraction higher than the notion of an algorithm, just as an algorithm is an abstraction higher than a computer program. [1][2] Examples of algorithmic paradigms include the greedy algorithm in optimization problems, dynamic programming, prune and search, and divide and conquer algorithms. More specialized algorithmic paradigms used in parameterized complexity include kernelization and iterative compression. In computational geometry, additional algorithmic paradigms include sweep line algorithms, rotating calipers, and randomized incremental construction.
* It means that the algorithm is both big-O and big-Omega in the given function.
* For example, if it is Ө(n), then there is some constant K, such that your function (run-time, whatever), is larger than n*K for sufficiently large n, and some other constant k such that your function is smaller than n*k for sufficiently large n.
* In computer science, A* (pronounced as "A star") is a computer algorithm that is widely used in pathfinding and graph traversal, the process of plotting an efficiently directed path between multiple points, called nodes. It enjoys widespread use due to its performance and accuracy. However, in practical travel-routing systems, it is generally outperformed by algorithms which can pre-process the graph to attain better performance,[1] although other work has found A* to be superior to other approaches.[2]
* Iterative deepening A* (IDA*) is a graph traversal and path search algorithm that can find the shortest path between a designated start node and any member of a set of goal nodes in a weighted graph. It is a variant of iterative deepening depth-first search that borrows the idea to use a heuristic function to evaluate the remaining cost to get to the goal from the A* search algorithm. Since it is a depth-first search algorithm, its memory usage is lower than in A*, but unlike ordinary iterative deepening search, it concentrates on exploring the most promising nodes and thus does not go to the same depth everywhere in the search tree. Unlike A*, IDA* does not utilize dynamic programming and therefore often ends up exploring the same nodes many times.
* SMA* or Simplified Memory Bounded A* is a shortest path algorithm based on the A* algorithm. The main advantage of SMA* is that it uses a bounded memory, while the A* algorithm might need exponential memory. All other characteristics of SMA* are inherited from A*.
* Means-Ends Analysis[1] (MEA) is a problem solving technique used commonly in Artificial Intelligence (AI) for limiting search in AI programs.
* It is also a technique used at least since the 1950s as a creativity tool, most frequently mentioned in engineering books on design methods. MEA is also related to Means-Ends Chain Approach used commonly in consumer behavior analysis.[2] It is also a way to clarify one's thoughts when embarking on a mathematical proof.
* In computer science, a search algorithm is an algorithm that retrieves information stored within some data structure, or calculated in the search space of a problem domain. Data structures can include linked lists, arrays, search trees, hash tables, or various other storage methods. The appropriate search algorithm often depends on the data structure being searched. Searching also encompasses algorithms that query the data structure, such as the SQL SELECT command.[1][2]
* Alpha–beta pruning is a search algorithm that seeks to decrease the number of nodes that are evaluated by the minimax algorithm in its search tree. It is an adversarial search algorithm used commonly for machine playing of two-player games (Tic-tac-toe, Chess, Go, etc.). It stops completely evaluating a move when at least one possibility has been found that proves the move to be worse than a previously examined move. Such moves need not be evaluated further. When applied to a standard minimax tree, it returns the same move as minimax would, but prunes away branches that cannot possibly influence the final decision.[1]
* A minimax algorithm[4] is a recursive algorithm for choosing the next move in an n-player game, usually a two-player game. A value is associated with each position or state of the game. This value is computed by means of a position evaluation function and it indicates how good it would be for a player to reach that position. The player then makes the move that maximizes the minimum value of the position resulting from the opponent's possible following moves. If it is A's turn to move, A gives a value to each of his legal moves.
* Branch and bound (BB, B&B, or BnB) is an algorithm design paradigm for discrete and combinatorial optimization problems, as well as mathematical optimization. A branch-and-bound algorithm consists of a systematic enumeration of candidate solutions by means of state space search: the set of candidate solutions is thought of as forming a rooted tree with the full set at the root. The algorithm explores branches of this tree, which represent subsets of the solution set. Before enumerating the candidate solutions of a branch, the branch is checked against upper and lower estimated bounds on the optimal solution, and is discarded if it cannot produce a better solution than the best one found so far by the algorithm.
* In computer science, beam search is a heuristic search algorithm that explores a graph by expanding the most promising node in a limited set. Beam search is an optimization of best-first search that reduces its memory requirements. Best-first search is a graph search which orders all partial solutions (states) according to some heuristic which attempts to predict how close a partial solution is to a complete solution (goal state). But in beam search, only a predetermined number of best partial solutions are kept as candidates.[1]
* Kruskal's algorithm is a minimum-spanning-tree algorithm which finds an edge of the least possible weight that connects any two trees in the forest. It is a greedy algorithm in graph theory as it finds a minimum spanning tree for a connected weighted graph adding increasing cost arcs at each step.
* Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later.[1][2]
* In computer science, Prim's algorithm is a greedy algorithm that finds a minimum spanning tree for a weighted undirected graph. This means it finds a subset of the edges that forms a tree that includes every vertex, where the total weight of all the edges in the tree is minimized.


Installing CouchDB on Ubuntu 14.04

Apache CouchDB, like Redis, Cassandra, and MongoDB, is a NoSQL database. CouchDB stores data as JSON documents which are non-relational in nature. This allows users of CouchDB to store data in ways that look very similar to their real world counterparts.



Programming Languages
commonly used features in a side-by-side format

Scripting Languages I:Node.js, PHP, Python, Ruby
Scripting Languages II:Perl, Lua, Groovy
GUI Scripting:JavaScript, Smalltalk, Tcl, AutoHotkey
Command Line Interpreters:POSIX Shell, Cmd.exe, PowerShell
Forth and PostScript:Forth, PostScript
Prolog, Erlang, Elixir: Prolog, Erlang, Elixir
Lisp Dialects:Common Lisp, Racket, Clojure, Emacs Lisp
C and Go:C, Go
OO C Style Languages:C++, Objective-C, Java, C#
Rust, Swift, Scala:Rust, Swift, Scala
TypeScript, Dart:

TypeScript, Dart
Pascal Style Languages:Pascal, Ada, PL/pgSQL
ML Dialects and Haskell:SML, OCaml, F#, Haskell
Numerical Analysis & Statistics:MATLAB, R, NumPy, Julia
Computer Algebra Software I:Mathematica, Maple, Maxima, Sage, SymPy
Computer Algebra Software II:Magma, GAP, Singular, Pari/GP
Gnuplot and GLPK:Gnuplot, GLPK
Fortran and APL:Fortran, APL

Programming Tools

Unix Shells:Bash, Fish, Ksh, Tcsh, Zsh
Text Mode Editors:Vim, Emacs, Nano
Version Control:Git, Mercurial
Build Tools:Make, Rake, Ant, Sbt
Terminal Multiplexers: Screen, Tmux
Relational Databases:PostgreSQL, MySQL, SQLite
Relational Data and JSON Tools:SQL, Awk, Pig, Jq
Lightweight Markup:Markdown, reStructuredText, MediaWiki, AsciiDoc, Org-mode
2D Vector Graphics:PostScript, Processing, SVG



Map vs Dictionary vs Associative Array vs Hash Map = SAME FUCKING THING
Two terms for the same thing

"Map" is used by Java, C++
"Dictionary" is used by .Net, Python
"Associative array" is used by Javascript, PHP

"Map" is the correct mathematical term, but it is avoided because it has separate meaning in functional programming.
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.


In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument. Currying is related to, but not the same as, partial application.


In programming language theory, lazy evaluation, or call-by-need[1] is an evaluation strategy which delays the evaluation of an expression until its value is needed (non-strict evaluation) and which also avoids repeated evaluations (sharing).[2][3] The sharing can reduce the running time of certain functions by an exponential factor over other non-strict evaluation strategies, such as call-by-name.[citation needed]


In computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually has to be exact. The patterns generally have the form of either sequences or tree structures. Uses of pattern matching include outputting the locations (if any) of a pattern within a token sequence, to output some component of the matched pattern, and to substitute the matching pattern with some other token sequence (i.e., search and replace).


In computer programming, more so functional programming and type theory, an algebraic data type is a kind of composite type, i.e., a type formed by combining other types.
Two common classes of algebraic types are product types (i.e., tuples and records) and sum types, also called tagged or disjoint unions or variant types.[1]


In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.

For example, many programming languages provide special syntax for referencing and updating array elements. Abstractly, an array reference is a procedure of two arguments: an array and a subscript vector, which could be expressed as get_array(Array, vector(i,j)). Instead, many languages provide syntax like Array[i,j]. Similarly an array element update is a procedure of three arguments, something like set_array(Array, vector(i,j), value), but many languages provide syntax like Array[i,j] = value.



In programming, operator overloading, sometimes termed operator ad hoc polymorphism, is a specific case of polymorphism, where different operators have different implementations depending on their arguments. Operator overloading is generally defined by a programming language, a programmer, or both.

Operator overloading is syntactic sugar, and is used because it allows programming using notation nearer to the target domain[1] and allows user-defined types a similar level of syntactic support as types built into a language. It is common, for example, in scientific computing, where it allows computing representations of mathematical objects to be manipulated with the same syntax as on paper.

Operator overloading does not change the expressive power of a language (with functions), as it can be emulated using function calls. For example, consider variables a, b, c of some user-defined type, such as matrices:

a + b * c


Multiline string literals[edit]

In many languages, string literals can contain literal newlines, spanning several lines. Alternatively, newlines can be escaped, most often as \n. For example:

echo 'foo
bar'

and

echo -e "foo\nbar"



In object-oriented programming, a protocol or interface is a common means for unrelated objects to communicate with each other. These are definitions of methods and values which the objects agree upon in order to co-operate.[1]

For example, in Java (where protocols are termed interfaces), the Comparable interface specifies a method compareTo() which implementing classes should implement. This means that a separate sorting method, for example, can sort any object which implements the Comparable interface, without having to know anything about the inner nature of the class (except that two of these objects can be compared by means of compareTo()).



Exception handling in software[edit]

Software exception handling and the support provided by software tools differs somewhat from what is understood under exception in hardware, but similar concepts are involved. In programming language mechanisms for exception handling, the term exception is typically used in a specific sense to denote a data structure storing information about an exceptional condition. One mechanism to transfer control, or raise an exception, is known as a throw. The exception is said to be thrown. Execution is transferred to a "catch".



Go
(often referred to as golang) is a free and open source[12] programming language created at Google[13] in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.[10] It is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing,[3] memory safety features and CSP-style concurrent programming features added.[14]

Dart
is a general-purpose programming language originally developed by Google and later approved as a standard by Ecma (ECMA-408).[4] It is used to build web, server and mobile applications, and for Internet of Things (IoT) devices.[5] It is open-source software under a permissive free software license (modified BSD license).

Lisp
(historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.[3] Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today. Only Fortran is older, by one year.[4][5] Lisp has changed since its early days, and many dialects have existed over its history. Today, the best known general-purpose Lisp dialects are Common Lisp and Scheme.

Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, and the self-hosting compiler.[6]


Haskell
/ˈhæskəl/[26] is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing.[27] It is named after logician Haskell Curry.[1] The latest standard of Haskell is Haskell 2010. As of May 2016, a group is working on the next version, Haskell 2020.[28]

Haskell features a type system with type inference[29] and lazy evaluation.[30] Type classes first appeared in the Haskell programming language.[31] Its main implementation is the Glasgow Haskell Compiler.

Haskell is based on the semantics, but not the syntax, of the language Miranda, which served to focus the efforts of the initial Haskell working group.[32] Haskell is used widely in academia[33][34] and also used in industry.[35]

Prolog
is a general-purpose logic programming language associated with artificial intelligence and computational linguistics.[1][2][3]

Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations.[4]

The language was first conceived by a group around Alain Colmerauer in Marseille, France, in the early 1970s and the first Prolog system was developed in 1972 by Colmerauer with Philippe Roussel.[5][6]

Scala
(/ˈskɑːlɑː/ skah-lah)[9] is a general-purpose programming language. Scala has full support for functional programming and a strong static type system. Designed to be concise,[10] many of Scala's design decisions were inspired by criticism of Java's shortcomings.[8]

Scala source code is intended to be compiled to Java bytecode, so that the resulting executable code runs on a Java virtual machine. Java libraries may be used directly in Scala code and vice versa (language interoperability).[11] Like Java, Scala is object-oriented, and uses a curly-brace syntax reminiscent of the C programming language. Unlike Java, Scala has many features of functional programming languages like Scheme, Standard ML and Haskell, including currying, type inference, immutability, lazy evaluation, and pattern matching. It also has an advanced type system supporting algebraic data types, covariance and contravariance, higher-order types (but not higher-rank types), and anonymous types. Other features of Scala not present in Java include operator overloading, optional parameters, named parameters, raw strings, and no checked exceptions.

The name Scala is a portmanteau of scalable and language, signifying that it is designed to grow with the demands of its users.[12]

Lua (/ˈlə/ loo, from Portuguese: lua [ˈlu.(w)ɐ] meaning moon) is a lightweight multi-paradigm programming language designed primarily for embedded systems and clients.[1] Lua is cross-platform since it is written in ANSI C,[2] and has a relatively simple C API.[3]

Lua was originally designed in 1993 as a language for extending software applications to meet the increasing demand for customization at the time. It provided the basic facilities of most procedural programming languages, but more complicated or domain-specific features were not included; rather, it included mechanisms for extending the language, allowing programmers to implement such features. As Lua was intended to be a general embeddable extension language, the designers of Lua focused on improving its speed, portability, extensibility, and ease-of-use in development.



Programming Throwdown Summaries



The V8 JavaScript Engine is an open source JavaScript engine developed by The Chromium Project for the Google Chrome web browser.[5] It has seen use in many other projects, such as Couchbase, MongoDB and Node.jsthat are used server side. As of 2012, the head programmer is Lars Bak.[6] The first version of the V8 engine was released at the same time as the first version of Chrome, September 2, 2008.


MIS (management information systems) is the department controlling hardware and software systems used for business-critical decision-making within an enterprise.

Bitmasks
By performing binary operations on the mask and the state one could achieve the following:

The AND operator extracts a subset of the bits in the state
  • The OR operator sets a subset of the bits in the state
  • The XOR operator toggles a subset of the bits in the state
If we want to set a particular value to true, we could do this by using the OR operator and the following bit mask:
Mask:   10000000b
Value:  00000101b
---- OR ---------
Result: 10000101b

Or one could select a particular value from the state by using the AND operator:

Mask:   00000100b
Value:  00000101b
---- AND ---------
Result: 00000100b
I suggest you to take some deeper look into it and get familiar with the jargon. A good start may be this link.

S.O.L.I.D STANDS FOR:
When expanded the acronyms might seem complicated, but they are pretty simple to grasp.

S – Single-responsiblity principle
A class should have one and only one reason to change, meaning that a class should have only one job.
Read: Linux commands do one job really well, then they are piped. Or, think Gulp.

O – Open-closed principle
Objects or entities should be open for extension, but closed for modification.
Think NPM... don't touch the packages... make calls to them... extend them.

- L – Liskov substitution principle
"Let q(x) be a property provable about objects of x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T."
All this is stating is that every subclass/derived class should be substitutable for their base/parent class.

- I – Interface segregation principle
A client should never be forced to implement an interface that it doesn’t use or clients shouldn’t be forced to depend on methods they do not use.
Think MVC -- Very basic shit.

- D – Dependency Inversion Principle
Entities must depend on abstractions not on concretions. It states that the high level module must not depend on the low level module, but they should depend on abstractions.


Counting sort
is a very time-efficient (and somewhat space-inefficient) algorithm for sorting that avoids comparisons and exploits the O(1)O(1) time insertions and lookups in a list.

The idea is simple: if you're sorting integers and you know they all fall in the range 1..1001..100, you can generate a sorted list this way:

  • Allocate a list num_counts where the indices represent numbers from our input list and the values represent how many times the index number appears. Start each value at 0.
  • In one pass of the input list, update num_counts as you go, so that at the end the values in num_counts are correct.
  • Allocate a list sorted_list where we'll store our sorted numbers.
  • In one in-order pass of num_counts put each number, the correct number of times, into sorted_list.

A problem has overlapping subproblems
if finding its solution involves solving the samesubproblem multiple times.
As an example, let's look at the fibonacci squence (the series where each number is the sum of the two previous ones—0,1,1,2,3,5,8...).
Our function ends up recursively calling fib(2) three times. So the problem of finding the nnth fibonacci number has overlapping subproblems.

Memoization
ensures that a function doesn't run for the same inputs more than once by keeping a record of the results for given inputs (usually in a dictionary).
For example, a simple recursive function for computing the nnth fibonacci number:

Big O notation
is the language we use for articulating how long an algorithm takes to run. It's how we compare the efficiency of different approaches to a problem.
With big O notation we express the runtime in terms of—brace yourself—how quickly it grows relative to the input, as the input gets arbitrarily large. how quickly the runtime grows—, relative to the input—, as the input gets arbitrarily large

Big O notation is like math except it's an awesome, not-boring kind of math where you get to wave your hands through the details and just focus on what's basically happening.


Going bottom-up
is a way to avoid recursion, saving the memory cost that recursion incurs when it builds up the call stack.

Put simply, a bottom-up algorithm "starts from the beginning," while a recursive algorithm often "starts from the end and works backwards."

For example, if we wanted to multiply all the numbers in the range 1...n1...n, we could use this cute, top-down, recursive one-liner:

  def product_1_to_n(n):
    # we assume n >= 1
    return n * product_1_to_n(n-1) if n > 1 else 1

This approach has a problem: it builds up a call stack of size O(n)O(n), which makes our total memory cost O(n)O(n). This makes it vulnerable to a stack overflow error, where the call stack gets too big and runs out of space.

To avoid this, we can instead go bottom-up:

  def product_1_to_n(n):
    # we assume n >= 1
result <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">=</span> <span style="box-sizing: border-box; color: rgb(1, 145, 200);">1</span>
<span style="box-sizing: border-box; color: rgb(0, 91, 154);">for</span> num <span style="box-sizing: border-box; color: rgb(0, 91, 154);">in</span> range<span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(1, 145, 200);">1</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">,</span> n<span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">+</span><span style="box-sizing: border-box; color: rgb(1, 145, 200);">1</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">:</span>
    result <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">*=</span> num

<span style="box-sizing: border-box; color: rgb(0, 91, 154);">return</span> result</code></pre></div><div style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div>This approach uses <span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(1)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box;">1</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> space (<span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(n)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic;">n</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> time).</div><div><br/></div></div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;"><b>A closure</b></span></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">is a function that accesses a variable &quot;outside&quot; itself. For example:</span></span></span></div></div><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251); color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;"><span style="box-sizing: border-box; color: rgb(0, 91, 154);">var</span> message <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">=</span> <span style="box-sizing: border-box; color: rgb(105, 174, 201);">'The British are coming.'</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span><span style="box-sizing: border-box; color: rgb(0, 91, 154);">function</span> <span style="box-sizing: border-box; color: rgb(0, 91, 154);">sayMessage</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">{</span>
<span style="box-sizing: border-box; color: rgb(0, 91, 154);">alert</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span>message<span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span> <span style="box-sizing: border-box; color: rgb(181, 181, 181);">// here we have access to message,</span>
<span style="box-sizing: border-box; color: rgb(181, 181, 181);">// even though it's declared outside this function!</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">}</span></code></pre><span style="box-sizing: border-box; position: absolute; top: 5px; right: 7px; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-weight: 300; color: rgb(153, 153, 153); cursor: default; font-size: 11px !important;">JavaScript</span></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">We'd say that <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">message</span></span> is &quot;closed over&quot; by <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box;">sayMessage</span></span>()</span>.</p><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">One useful thing to do with a closure is to create something like an &quot;instance variable&quot; that can change over time and can affect the behavior of a function.</p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251); color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;"><span style="box-sizing: border-box; color: rgb(181, 181, 181);">// function for getting the id of a dom element,</span><span style="box-sizing: border-box; color: rgb(181, 181, 181);">// giving it a new, unique id if it doesn't have an id yet</span><span style="box-sizing: border-box; color: rgb(0, 91, 154);">var</span> getUniqueId <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">=</span> <span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(0, 91, 154);">function</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">{</span>
<span style="box-sizing: border-box; color: rgb(0, 91, 154);">var</span> nextGeneratedId <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">=</span> <span style="box-sizing: border-box; color: rgb(1, 145, 200);">0</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span>
<span style="box-sizing: border-box; color: rgb(0, 91, 154);">return</span> <span style="box-sizing: border-box; color: rgb(0, 91, 154);">function</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span>element<span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span> <span style="box-sizing: border-box; color: rgb(153, 153, 153);">{</span>
    <span style="box-sizing: border-box; color: rgb(0, 91, 154);">if</span> <span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">!</span>element<span style="box-sizing: border-box; color: rgb(153, 153, 153);">.</span>id<span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span> <span style="box-sizing: border-box; color: rgb(153, 153, 153);">{</span>
        element<span style="box-sizing: border-box; color: rgb(153, 153, 153);">.</span>id <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">=</span> <span style="box-sizing: border-box; color: rgb(105, 174, 201);">'generated-uid-'</span> <span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">+</span> nextGeneratedId<span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span>
        nextGeneratedId<span style="box-sizing: border-box; color: rgb(0, 91, 154); background: none;">++</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span>
    <span style="box-sizing: border-box; color: rgb(153, 153, 153);">}</span>
    <span style="box-sizing: border-box; color: rgb(0, 91, 154);">return</span> element<span style="box-sizing: border-box; color: rgb(153, 153, 153);">.</span>id<span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span>
<span style="box-sizing: border-box; color: rgb(153, 153, 153);">}</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">}</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">(</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">)</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">;</span></code></pre><span style="box-sizing: border-box; position: absolute; top: 5px; right: 7px; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-weight: 300; color: rgb(153, 153, 153); cursor: default; font-size: 11px !important;">JavaScript</span></div><div style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">Why did we put <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">nextGeneratedId</span></span> in an immediately-executed anonymous function?</strong> It makes <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">nextGeneratedId</span></span> private, which prevents accidental changes from the outside world:</div></div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">Array slicing</strong></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">involves taking a subset from an array and </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">allocating a new array with those elements</strong><span style="font-family: Lora, Georgia, serif;">.</span></span></span></div></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px;"><span style="box-sizing: border-box; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">In <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">Python</span></span> you can create a new <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span> of the elements in <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">my_list</span></span>, from <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">start_index</span></span> to <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">end_index</span></span>(exclusive), like this:</span></p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251);"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;">my_list<span style="box-sizing: border-box; color: rgb(153, 153, 153);">[</span>start_index<span style="box-sizing: border-box; color: rgb(153, 153, 153);">:</span>end_index<span style="box-sizing: border-box; color: rgb(153, 153, 153);">]</span></code></pre><span style="box-sizing: border-box; position: absolute; top: 5px; right: 7px; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-weight: 300; color: rgb(153, 153, 153); cursor: default; font-size: 11px !important;">Python</span></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px;"><span style="box-sizing: border-box; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">You can also get everything <em style="box-sizing: border-box;">after</em> <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">start_index</span></span> by just omitting <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">end_index</span></span>:</span></p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: auto; position: relative; background: rgb(251, 251, 251);"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;">my_list<span style="box-sizing: border-box; color: rgb(153, 153, 153);">[</span>start_index<span style="box-sizing: border-box; color: rgb(153, 153, 153);">:</span><span style="box-sizing: border-box; color: rgb(153, 153, 153);">]</span></code></pre><span style="box-sizing: border-box; position: absolute; top: 5px; right: 7px; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-weight: 300; color: rgb(153, 153, 153); cursor: default; font-size: 11px !important;">Python</span></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px;"><span style="box-sizing: border-box; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">Careful: there's a hidden time and space cost here!</strong> It's tempting to think of slicing as just &quot;getting elements,&quot; but in reality you are:</span></p><ol style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding-bottom: 10px;"><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;">allocating a new <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span></li><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;"><em style="box-sizing: border-box;">copying</em> the elements from the original <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span> to the new <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span></li></ol><div style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px;"><div>This takes <span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(n)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic;">n</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> time and <span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(n)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic;">n</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> space, where <span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">n</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic;">n</span></span></span></span></span> is the number of elements in the <em style="box-sizing: border-box;">resulting</em> <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span>.</div></div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">A </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">hash function</strong> </span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">takes data (like a string, or a file’s contents) and outputs a <em style="box-sizing: border-box;">hash</em>, a fixed-size string or number.</span></span></span></div></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">For example, here’s the MD5 hash (MD5 is a common hash function) for a file simply containing “cake”:</p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251); color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;">DF7CE038E2FA96EDF39206F898DF134D</code></pre></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">And here’s the hash for the same file after it was edited to be “cakes”:</p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251); color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;">0E9091167610558FDAE6F69BD6716771</code></pre></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">Notice the hash is <em style="box-sizing: border-box;">completely</em> different, even though the files were similar. Here's the hash for a long film I have on my hard drive:</p><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background: rgb(251, 251, 251); color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 0px; display: block; padding: 10px 18px; margin: 0.5em 0px; color: rgb(105, 104, 103); word-break: normal; word-wrap: break-word; background: transparent; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(91, 192, 222); border-image: initial; border-radius: 4px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; tab-size: 4; hyphens: none; width: 680px;">  <code style="box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 12px; padding: 0px; color: rgb(105, 104, 103); background-color: transparent; border-radius: 0px; white-space: pre; text-shadow: white 0px 1px; direction: ltr; text-align: left; word-spacing: normal; word-break: normal; tab-size: 4; hyphens: none; width: auto; display: inline-block; margin-top: 3px; font-weight: 300;">664f67364296d08f31aec6fea4e9b83f</code></pre></div><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">The hash is the same length as my other hashes, but this time it represents a much bigger file—461Mb.</p><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">We can think of a hash as a &quot;fingerprint.&quot; We can trust that a given file will always have the same hash, but we can't go from the hash back to the original file. Sometimes we have to worry about multiple files having the same hash value, which is called a <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">hash collision</strong>.</p><p style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;">Some uses for hashing:</p><ol style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box;">Dictionaries</span></span></strong>. Suppose we want <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">a list</span></span>-like data structure with constant-time lookups, but we want to look up values based on arbitrary &quot;keys,&quot; not just sequential &quot;indices.&quot; We could allocate <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">a list</span></span>, and use a hash function to translate keys into <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">list</span></span> indices. That's the basic idea behind <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">a dictionary</span></span>!</li><li style="box-sizing: border-box;"><span style="font-size: 15px;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">Preventing man-in-the-middle attacks</strong><span style="font-family: Lora, Georgia, serif;">. Ever notice those things that say &quot;hash&quot; or &quot;md5&quot; or &quot;sha1&quot; on download sites? The site is telling you, &quot;We hashed this file on our end and got this result. When you finish the download, try hashing the file and confirming you get the same result. If not, your internet service provider or someone else might have injected malware or tracking software into your download!&quot;</span></span></li></ol></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;"><br/></span></span></span></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">A </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">mutable</strong></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">object can be changed after it's created, and an </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">immutable</strong><span style="font-family: Lora, Georgia, serif;"> object can't.</span></span></span></div></div><div style="box-sizing: border-box; margin: 0px 0px 10px; font-family: Lora, Georgia, serif; font-size: 15px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div>For example, let's look at <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">lists</strong> and <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">tuples</strong> in Python. Lists are mutable and tuples are immutable:</div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">An </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">in-place</strong> </span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">algorithm operates <em style="box-sizing: border-box;">directly</em> on its input and <em style="box-sizing: border-box;">changes</em> it, instead of creating and returning a <em style="box-sizing: border-box;">new</em> object. This is sometimes called </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">destructive</strong><span style="font-family: Lora, Georgia, serif;">, since the original input is &quot;destroyed&quot; when it's edited to create the new output.</span></span></span></div></div><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">Careful: &quot;In-place&quot; does <em style="box-sizing: border-box;">not</em> mean &quot;without creating any additional variables&quot;!</strong></span><span style="font-family: Lora, Georgia, serif;"><span style="font-size: 15px;"> Rather, it means &quot;without creating a new copy of the input.&quot; In general, an in-place function will only create additional variables that are <span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(1)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box;">1</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> space.</span></span></span></div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">A </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">triangular series</strong></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">is a series of numbers where each number could be the row of an equilateral triangle.</span></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">So 1, 2, 3, 4, 5 is a triangular series, because you could stack the numbers like this:</span></span></span></div></div><div style="box-sizing: border-box; display: block; text-align: center; margin-bottom: 10px; padding-bottom: 10px; overflow: auto; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;"><img alt="Rows of 1, 2, 3, 4, and 5 circles to show how numbers in a triangular series can be stacked to form a triangle." height="102" src="https://www.interviewcake.com/images/svgs/triangular_series__triangle_of_stacked_circles.svg?bust=138" style="box-sizing: border-box; border: 0px; vertical-align: middle; height: auto;" width="120"></img></div><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px; color: rgb(85, 85, 85); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">Their sum is 15, which makes 15 a </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">triangular number</strong></span></div><div><span style="font-family: Lora, Georgia, serif;"><span style="font-size: 15px;">.<span style="color: rgb(85, 85, 85);">A triangular series <em style="box-sizing: border-box;">always</em> starts with 1 and increases by 1 with each number.</span></span></span></div></div><hr/><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">A dynamic array automatically doubles its size when you try to make an insertion and there is no more space left.</strong><span style="font-family: Lora, Georgia, serif;"> It's a great data structure for implementing a stack, so let's do that. Let's say we have a dynamic array that has these functions:</span></span></span></div></div><ul style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding-bottom: 10px; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;"><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;"><span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box;">pop</span></span>()</span>: return the last item in the dynamic array, and decrement the <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">last</span></span> counter to point to the previous index.</li><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;"><span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">push(item)</span></span>: increment the <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">last</span></span> index, and put the <span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">item</span></span> there. If there's no more space in our array, allocate a new array with double the size and copy over all of our elements.</li></ul></div><hr/><div><span style="font-size: 20px;"><span style="font-family: Lora, Georgia, serif;"><span style="color: rgb(85, 85, 85);">A <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">hash table</strong></span></span></span></div><div><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;"><span style="color: rgb(85, 85, 85);">(also called a <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">hash</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">hash map</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">map</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">unordered map</strong> or <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">dictionary</strong>) is a data structure that pairs keys to values.</span></span></span></div><div><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;"><span style="color: rgb(85, 85, 85);">Hash tables can be thought of as arrays, if you think of array indices as keys!</span></span></span></div></div><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background-color: rgb(251, 251, 251); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-position: initial initial; background-repeat: initial initial;"><div><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;"><span style="color: rgb(85, 85, 85);"><br/></span></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">Hash tables:</span></span></span></div></div><ul style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding-bottom: 10px; color: rgb(85, 85, 85); font-family: &quot;Open Sans&quot;, Helvetica, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247); text-decoration-style: initial; text-decoration-color: initial;"><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;">take <em style="box-sizing: border-box;">on average</em> <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-size: 11.805px;"><span style="box-sizing: border-box; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 1.21em; font-family: KaTeX_Main; white-space: nowrap;"><span style="box-sizing: border-box; clip: rect(1px 1px 1px 1px); overflow: hidden; position: absolute !important; padding: 0px !important; border: 0px !important; height: 1px !important; width: 1px !important;">O(1)</span><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; display: inline-block;"><span style="box-sizing: border-box; font-family: KaTeX_Math; font-style: italic; margin-right: 0.02778em;">O</span><span style="box-sizing: border-box;">(</span><span style="box-sizing: border-box;">1</span><span style="box-sizing: border-box;">)</span></span></span></span></span></span></span> time for insertions and lookups</strong></li><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;">are <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">unordered</strong> (the keys are not guaranteed to stay in the same order)</li><li style="box-sizing: border-box; font-family: Lora, Georgia, serif; font-size: 15px;">can use <strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">many types of objects as keys</strong> (<span style="box-sizing: border-box;"><span style="box-sizing: border-box;">commonly strings</span></span>)</li></ul></div></div><hr/><div><span style="font-size: 21px;"><span style="color: rgb(85, 85, 85);"><span style="font-family: Lora, Georgia, serif;">A </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">linked list</strong></span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">is a low-level data structure. It stores an <em style="box-sizing: border-box;">ordered</em> list of items in individual &quot;node&quot; <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">objects</span></span> that have pointers to other nodes.</span></span></span></div></div><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">In a </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">singly linked list</strong><span style="font-family: Lora, Georgia, serif;">, the nodes each have one pointer to the next node.</span></span></span></div><div><br/></div><div></div><div><br/></div><div style="box-sizing: border-box; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px;"><div><span style="color: rgb(85, 85, 85);"><span style="font-family: Lora, Georgia, serif;"><span style="font-size: 15px;">Doubly linked lists allow us to traverse our list <em style="box-sizing: border-box;">backwards</em>. In a <em style="box-sizing: border-box;">singly</em> linked list, if you just had a pointer to a node in the <em style="box-sizing: border-box;">middle</em> of a list, there would be <em style="box-sizing: border-box;">no way</em> to know what its previous node was. Not a problem in a doubly linked list.</span></span></span></div></div></div><div></div></div><hr/><div><span style="font-size: 21px;"><span style="color: rgb(85, 85, 85);"><span style="font-family: Lora, Georgia, serif;">A </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">binary tree</strong> </span></span></div><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">is a </span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">tree</strong><span style="font-family: Lora, Georgia, serif;"> where every node has two or fewer children. The children are usually called </span><span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">left</span></span><span style="font-family: Lora, Georgia, serif;"> and </span><span style="box-sizing: border-box; font-family: Inconsolata, &quot;Droid Mono&quot;, &quot;Courier New&quot;;"><span style="box-sizing: border-box;">right</span></span><span style="font-family: Lora, Georgia, serif;">.</span></span></span></div></div><div style="box-sizing: border-box; padding-bottom: 0px; margin-bottom: 18px; display: block; width: 680px; position: relative; background-color: rgb(251, 251, 251); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-position: initial initial; background-repeat: initial initial;"><div style="box-sizing: border-box; margin: 0px 0px 10px; padding-bottom: 10px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(247, 247, 247);"><div><span style="color: rgb(85, 85, 85);"><span style="font-size: 15px;"><span style="font-family: Lora, Georgia, serif;">That particular example is special because every level of the tree is completely full. There are no &quot;gaps.&quot; We call this kind of tree &quot;</span><strong style="box-sizing: border-box; font-weight: bold; font-family: &quot;Open Sans&quot;, Helvetica, sans-serif;">perfect</strong><span style="font-family: Lora, Georgia, serif;">.&quot;</span></span></span></div></div></div><div></div><hr/><div><b>Diffie-Hellman public key cryptography</b></div><div>is used by all major VPN gateway's today, supporting Diffie-Hellman groups 1,2 and 5. DH group 1 consists of a 768 bit key,group 2 consists of 1024 bit key and group 5 comes with 1536 bit key. Group 5 is the strongest and most secure.</div><hr/><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="color: rgb(37, 37, 37);"><span style="font-size: 24px;"><b>Reflection</b></span></span></span></span></div><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="color: rgb(37, 37, 37);">is the ability of a </span><a href="https://en.wikipedia.org/wiki/Computer_program" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Computer program">computer program</a><span style="color: rgb(37, 37, 37);"> to examine, </span><a href="https://en.wikipedia.org/wiki/Introspection_(computer_science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Introspection (computer science)">introspect</a><span style="color: rgb(37, 37, 37);">, and modify its own structure and behavior at </span><a href="https://en.wikipedia.org/wiki/Run_time_(program_lifecycle_phase)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Run time (program lifecycle phase)">runtime</a><span style="color: rgb(37, 37, 37);">.<sup style="unicode-bidi: isolate; white-space: nowrap; font-size: 11.2px; font-weight: normal; font-style: normal;"><a href="https://en.wikipedia.org/wiki/Reflection_(computer_programming)#cite_note-1" style="text-decoration: none; color: rgb(11, 0, 128); background: none; white-space: nowrap;">[1</a>]</sup></span></span></span></div><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="color: rgb(37, 37, 37);"><br/></span></span></span></div><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="font-family: sans-serif;"><span style="color: rgb(37, 37, 37);">The earliest computers were programmed in their native </span><a href="https://en.wikipedia.org/wiki/Assembly_language" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Assembly language">assembly language</a><span style="color: rgb(37, 37, 37);">, which were inherently reflective as these original architectures could be programmed by defining instructions as data and using </span><a href="https://en.wikipedia.org/wiki/Self-modifying_code" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Self-modifying code">self-modifying code</a><span style="color: rgb(37, 37, 37);">. As programming moved to compiled higher-level languages such as </span><a href="https://en.wikipedia.org/wiki/ALGOL" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="ALGOL">Algol</a><span style="color: rgb(37, 37, 37);">, </span><a href="https://en.wikipedia.org/wiki/Cobol" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Cobol">Cobol</a><span style="color: rgb(37, 37, 37);">, and </span><a href="https://en.wikipedia.org/wiki/Fortran" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Fortran">Fortran</a><span style="color: rgb(37, 37, 37);"> (but also </span><a href="https://en.wikipedia.org/wiki/Pascal_(programming_language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Pascal (programming language)">Pascal</a><span style="color: rgb(37, 37, 37);"> and </span><a href="https://en.wikipedia.org/wiki/C_(programming_language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="C (programming language)">C</a><span style="color: rgb(37, 37, 37);"> and many other languages), this reflective ability largely disappeared until programming languages with reflection built into their type systems appeared.<sup style="font-size: 11.2px; white-space: nowrap;">[<i><a href="https://en.wikipedia.org/wiki/Wikipedia:Citation_needed" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (July 2015)">citation needed</span></a></i>]</sup></span></span></span></span></div></div><div style="margin: 0.5em 0px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);font-family:&quot;Helvetica Neue&quot;, Arial, sans;font-size:16px;"><div><span style="font-size: 14px;"><span style="font-family: sans-serif;"><span style="color: rgb(37, 37, 37);"><br/></span></span></span></div><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="color: rgb(37, 37, 37);">Reflection can be used for observing and modifying program execution at runtime. A reflection-oriented program component can monitor the execution of an enclosure of code and can modify itself according to a desired goal related to that enclosure. This is typically accomplished by dynamically assigning program code at runtime.</span></span></span></div><div><span style="font-size: 14px;"><span style="font-family: sans-serif;"><span style="color: rgb(37, 37, 37);"><br/></span></span></span></div><div><span style="font-family: sans-serif;"><span style="font-size: 14px;"><span style="color: rgb(37, 37, 37);">In object-oriented programming languages such as </span><a href="https://en.wikipedia.org/wiki/Java_(programming_language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Java (programming language)">Java</a></span></span><span style="color: rgb(37, 37, 37);"><span style="font-family: sans-serif;"><span style="font-size: 14px;">, reflection allows <i>inspection</i> of classes, interfaces, fields and methods at runtime without knowing the names of the interfaces, fields, methods at compile time. It also allows <i>instantiation</i> of new objects and <i>invocation</i> of methods.</span></span></span></div></div><div style="margin: 0.5em 0px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><div style="margin: 0.5em 0px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><div style="margin: 0.5em 0px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><div><b><br/></b></div></div></div></div></div><div><hr/></div><div><b><span style="font-size: 21px;">Unix command-line interface programs and shell builtins</span></b></div><div><br/></div><div><b>File system   </b></div><div>cat | chmod | chown | chgrp | cksum | cmp | cp | dd | du | df | file | fsck | fuser | ln | ls | mkdir | mount | mv | pax | pwd | rm | rmdir | split | tee | touch | type | umask</div><div><b>Processes   </b></div><div>at | bg | chroot | cron | fg | kill | killall | nice | pgrep | pkill | ps | pstree | time | top</div><div><b>User environment   </b></div><div>clear | env | exit | finger | history | logname | mesg | passwd | su | sudo | uptime | talk | tput | uname | w | wall | who | whoami | write</div><div><b>Text processing   </b></div><div>awk | banner | basename | comm | csplit | cut | diff | dirname | ed | ex | fmt | fold | head | iconv | join | less | more | nl | paste | printf | sed | sort | spell | strings | tail | tr | uniq | vi | wc | xargs | yes</div><div><b>Shell builtins   </b></div><div>alias | cd | echo | test | unset | wait</div><div><b>Networking   </b></div><div>dig | host | ifconfig | inetd | netcat | netstat | nslookup | ping | rdate | rlogin | route | ssh | traceroute</div><div><b>Searching   </b></div><div>find | grep | locate | whatis | whereis</div><div><b>Documentation   </b></div><div>apropos | help | man</div><div><b>Miscellaneous   </b></div><div>bc | dc | cal | expr | lp | od | sleep | true | and | false</div><div><br/></div><div><p style="margin: 0.5em 0px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">In computing, a <b>shell builtin</b> is a <a href="https://en.wikipedia.org/wiki/Command_(computing)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Command (computing)">command</a> or a <a href="https://en.wikipedia.org/wiki/Subroutine" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Subroutine">function</a>, called from a <a href="https://en.wikipedia.org/wiki/Shell_(computing)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Shell (computing)">shell</a>, that is executed directly in the shell itself, instead of an external executable <a href="https://en.wikipedia.org/wiki/Computer_program" style="text-decoration: none; color: rgb(11, 0, 128); background: none;" title="Computer program">program</a> which the shell would load and execute.<sup style="unicode-bidi: isolate; white-space: nowrap; font-size: 11.2px; font-weight: normal; font-style: normal;"><a href="https://en.wikipedia.org/wiki/Shell_builtin#cite_note-1" style="text-decoration: none; color: rgb(11, 0, 128); background: none; white-space: nowrap;">[1]</a></sup></p></div><div><br/></div><div><hr/></div><div><b>WHICH CLI COMMAND</b></div><div>For example to find the location of the Firefox web browser use the following command:</div><div><b>which firefox</b></div><div><br/></div><div>The output will be something like this:</div><div><b>/usr/bin/firefox</b></div><div><b><br/></b></div><div><hr/></div><div><b>Atom: CTRL - M</b></div><div>GO TO MATCHING BRACKET</div><div><br/></div><div><hr/></div><div><b>Why put jQuery in the footer?</b></div><div>Event Listeners should go in the footer! Otherwise, the target is not loaded on the page! Obviously... the listener can't find the element!</div><div><br/></div><div><hr/></div><div><b>COMPLEXITY THEORY</b></div><div><img src="_Programming Memorized  2017_files/Image.png" type="image/png" style="height: auto;"/></div><div><span style="color: rgb(15, 15, 15);"><span style="font-size: 14px;"><span style="font-family: Georgia, Arial, sans-serif;"><u><b><br/></b></u></span></span></span></div><div><span style="color: rgb(15, 15, 15);"><span style="font-size: 14px;"><span style="font-family: Georgia, Arial, sans-serif;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; font-weight: bold;"><u style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent;">git reset</u></strong></span></span></span></div></div><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: rgb(255, 255, 255); color: rgb(15, 15, 15); font-family: Georgia, Arial, sans-serif; font-size: 13.92px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><font style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; font-size: 10.5pt;">As with all things in git, git reset can be used in a number of ways. So here is the most common usage in day to day usage:</font></p><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: rgb(255, 255, 255); color: rgb(15, 15, 15); font-family: Georgia, Arial, sans-serif; font-size: 13.92px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; font-weight: bold;">git reset</strong> : Clears your index, leaves your working directory untouched. (simply unstaging everything)</p><div style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><span style="color: rgb(15, 15, 15);"><span style="font-size: 14px;"><span style="font-family: Georgia, Arial, sans-serif;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; font-weight: bold;">git reset --hard</strong> : Clears your index, reverts all changes in your working directory to the last commit. (the same thing as svn revert would do)</span></span></span></div><div><span style="color: rgb(15, 15, 15);"><span style="font-size: 14px;"><span style="font-family: Georgia, Arial, sans-serif;"><br/></span></span></span></div><div style="margin: 0px 0px 1em; padding: 5px; border: 0px; width: auto; max-height: 600px; overflow: auto; background-color: rgb(239, 240, 241); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><span style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif;"><span style="color: rgb(36, 39, 41);"><code style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; background-color: rgb(239, 240, 241);">$ git log --oneline</code></span></span></div></div></div></div><div><hr/></div><div><b>The Transmission Control Protocol (TCP)</b> is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonly referred to as TCP/IP.</div><div><b><br/></b></div><div><hr/></div><div><b>Chai</b></div><div>is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.</div><div><br/></div><div><span style="color: rgb(77, 77, 77); font-family: Helvetica, sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none;"><b>Jasmine</b></span></div><div><span style="color: rgb(77, 77, 77); font-family: Helvetica, sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none;">is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.</span></div><div><br/></div><div><b>Mocha</b></div><div>is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Hosted on GitHub.</div><div><br/></div><div><b>behavior-driven development (BDD)</b></div><div>is a software development process that emerged from test-driven development (TDD).</div><div><br/></div><div><hr/></div><div><b>Asynchronous module definition (AMD)</b> is a specification for the programming language JavaScript. It defines an application programming interface (API) that defines code modules and their dependencies, and loads them asynchronously if desired.</div><div><br/></div><div>Sometimes we might have a number that does fit in 32 or 64 bits, but if we add to it (or multiply it by something, or do another operation) the result might not fit in the original 32 or 64 bits. This is called an integer overflow.</div><div><b><br/></b></div><div><hr/></div><div><b>Bitwise Comparison</b></div><div>The NOT bitwise operation takes one set of bits, and for each bit returns 00 if the bit is 11, and 11 if the bit is 00.</div><div>~ 1 # 0~ 0 # 1</div><div><br/></div><div>The XOR bitwise operation (or exclusive or) takes two sets of bits, and for each pair (the two bits at the same index in each bit set) returns 11 only if one but not both of the bits is 11. Otherwise, it returns 00.</div><div>1 ^ 1 # 01 ^ 0 # 10 ^ 1 # 10 ^ 0 # 0</div><div><br/></div><div>The AND bitwise operation takes two sets of bits and for each pair of bits (the two bits at the same index in each set) returns 11 if both bits are 11. Otherwise, it returns 00.</div><div>1 &amp; 1 # 11 &amp; 0 # 00 &amp; 1 # 00 &amp; 0 # 0</div><div><br/></div><div>The OR bitwise operation takes two sets of bits and for each pair of bits (the two bits at the same index in each set) returns 11 if either of the bits are 11. Otherwise, it returns 00.</div><div>1 | 1 # 11 | 0 # 10 | 1 # 10 | 0 # 0</div><div><br/></div><div><hr/></div><div><b>Noto Sans</b></div><div>Beautiful and free fonts for all languages</div><div>When text is rendered by a computer, sometimes characters are displayed as “tofu”. They are little boxes to indicate your device doesn’t have a font to display the text.</div><div><br/></div><div>Google has been developing a font family called Noto, which aims to support all languages with a harmonious look and feel. Noto is Google’s answer to tofu. The name noto is to convey the idea that Google’s goal is to see “no more tofu”. Noto has multiple styles and weights, and is freely available to all. The comprehensive set of fonts and tools used in our development is available in our GitHub repositories.</div><div><br/></div><div><hr/></div><div><b>A dynamic array</b></div><div>automatically doubles its size when you try to make an insertion and there is no more space left. It's a great data structure for implementing a stack, so let's do that. Let's say we have a dynamic array that has these functions:</div><div><br/></div><div>- pop(): return the last item in the dynamic array, and decrement the last counter to point to the previous index.</div><div>- push(item): increment the last index, and put the item there. If there's no more space in our array, allocate a new array with double the size and copy over all of our elements.</div><div><br/></div><div>What is the time cost of mm calls to push() and pop() on our stack?</div><div><b><br/></b></div><div><b>Stack Data Structure</b></div><div>A stack is like a stack of plates. It's &quot;last in, first out&quot; (LIFO), which means the item that was put in the stack most recently is the first item that comes out.</div><div><br/></div><div>Stacks have two main methods:</div><div>- push() : adds an item</div><div>- pop() : removes and returns the top item</div><div><br/></div><div>They can also include some utility methods:</div><div>- peek() : returns the item on the top of the stack, without removing it.</div><div>- is_empty() : returns True if the stack is empty, False otherwise</div><div><b><br/></b></div><div><b>Queue Data Structure</b></div><div>A queue is like a line at the movie theater. It's &quot;first in, first out&quot; (FIFO), which means that the item that was put in the queue longest ago is the first item that comes out. &quot;First come, first served.&quot;</div><div><br/></div><div>Queues have two main methods:</div><div>- enqueue() : adds an item</div><div>- dequeue() : removes and returns the next item in line</div><div><br/></div><div>They can also include some utility methods:</div><div>- peek() : returns the item at the front of the queue, without removing it.</div><div>- is_empty() : returns True if the queue is empty, False otherwise</div><div><br/></div><div><hr/></div><div><b>What is Eclipse? Tools and IDEs</b></div><div>Eclipse provides IDEs and platforms for nearly every language and architecture. We are famous for our Java IDE, C/C++, JavaScript and PHP IDEs built on extensible platforms for creating desktop, Web and cloud IDEs. These platforms deliver the most extensive collection of add-on tools available for software developers.</div><div><b><br/></b></div><div><hr/></div><div><b>In information technology, SOHO </b>is a term for the small office or home office environment and business culture. A number of organizations, businesses, and publications now exist to support people who work or have businesses in this environment. The term &quot;virtual office&quot; is sometimes used as a synonym. (</div><div><br/></div><div><b>IPSec</b> is an <b>Internet Engineering Task Force (IETF)</b> standard suite of protocols that provides data authentication, integrity, and confidentiality as data is transferred between communication points across IP networks. IPSec provides data security at the IP packet level.</div><div><br/></div><div><hr/></div><div><b>About TensorFlow</b></div><div>TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google's Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.</div><div><br/></div><div><hr/></div><div>div p:only-child {</div><div>  color: red;</div><div>}</div><div><hr/></div><div><b>13. X[href^=&quot;http&quot;]</b></div><div><br/></div><div>a[href^=&quot;http&quot;] {</div><div>  background: url(path/to/external/icon.png) no-repeat;</div><div>  padding-left: 10px;</div><div>}</div><div><br/></div><div>Ever wonder how some websites are able to display a little icon next to the links which are external? I'm sure you've seen these before; they're nice reminders that the link will direct you to an entirely different website. This is a cinch with the carat symbol. It's most commonly used in regular expressions to designate the beginning of a string. If we want to target all anchor tags that have a href which begins with http, we could use a selector similar to the snippet shown above.</div><div><br/></div><div>Notice that we're not searching for http://; that's unnecessary, and doesn't account for the urls that begin with https://.</div><div><br/></div></div><div style="margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><div style="box-sizing: inherit; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><hr/></div><div><b>20. X:not(selector)</b></div><div>div:not(#container) {</div><div>  color: blue;</div><div>}</div><div><hr/></div><div><span style="font-size: 15px;"><span style="font-family: Verdana, sans-serif;">A script that will be run asynchronously as soon as it is available:</span></span></div></div><div style="box-sizing: inherit; font-family: Consolas, &quot;courier new&quot;; font-size: 16px; width: auto; background-color: rgb(255, 255, 255); padding: 8px 12px; border-left: 4px solid rgb(76, 175, 80); word-wrap: break-word; margin: 20px 0px; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><span style="box-sizing: inherit; color: brown;"><span style="box-sizing: inherit; color: mediumblue;">&lt;</span>script<span style="box-sizing: inherit; color: red;"> src<span style="box-sizing: inherit; color: mediumblue;">=&quot;demo_async.js&quot;</span> async</span><span style="box-sizing: inherit; color: mediumblue;">&gt;</span></span><span style="box-sizing: inherit; color: brown;"><span style="box-sizing: inherit; color: mediumblue;">&lt;</span>/script<span style="box-sizing: inherit; color: mediumblue;">&gt;</span></span></div></div><div><hr/></div><div><b>Postman</b></div><div>Postman is the most efficient way to test, develop and document APIs. Now available on Mac too!</div><div style="box-sizing: border-box; font-size: 11pt; font-weight: normal; color: rgb(51, 51, 51); font-family: &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><span style="box-sizing: border-box;">Postman lets you create complex requests, go back in time and view results in a beautiful way.</span></div><div style="box-sizing: border-box; margin-top: 20px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><div>Faster, easier API development</div><div>A Complete Toolchain for API Development</div><div>Mirrors Your Existing API Development Workflow</div></div><div><hr/></div><div>IntelliJ IDEA (pronounced /ɪnˈtɛlɪdʒeɪ aɪˈdɪə/) is a Java integrated development environment (IDE) for developing computer software. It is developed by JetBrains (formerly known as IntelliJ), and is available as an Apache 2 Licensed community edition,[2] and in a proprietary commercial edition. Both can be used for commercial development.[3]</div><div><hr/></div><div><b>What is Chocolatey?</b></div><div>Chocolatey is kind of like apt-get, but for Windows (with Windows comes limitations). It is a machine level package manager that is built on top of nuget command line and the nuget infrastructure.</div><div>More behind the name</div><div>&quot;Okay, machine package manager, that's nice. What does that mean though?&quot; It means you can simply install software with a few keystrokes and go get coffee while your co-workers are downloading and running an install manually (and I do mean something like an MSI).</div><div>How about updates? Wouldn't it be nice to update nearly everything on your machine with a few simple keystrokes? We think so, too. Chocolatey does that. <b>choco upgrade all -y</b></div><div><b>What is NuGet?</b></div><div>NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.</div><div><hr/></div><div><b>Yarn Package Manager: An Improvement over npm</b></div><div>Yarn is the newest package manager on the block with speed and improvements over npm.</div><div>Tech giants like facebook and google decided to team up and make a better package management tool, they called it Yarn. This tool will take packages from NpmJS or Bower registries, it also <b>runs dependency installs parallel</b> to each other.</div><div>If you've installed a package before, <b>yarn creates a cached copy</b> which facilitates offline package installs.</div><div>Out of the box, <b>yarn offers flat dependency structure</b> as compared to npm's nested structure.</div><div><hr/></div><div><b>SEE ALL ACTIVE PORTS</b></div><div>netstat -a -b</div><div><hr/></div><div><b>APK</b></div><div>Android Application Package</div><div><b>ENUM</b></div><div>In computer programming, an <b>enumerated type</b> (also called <b>enumeration</b>, <b>enum</b>, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type.</div><div>Java Enum. Enum in java is <b>a data type that contains fixed set of constants</b>. It can be used for days of the week (SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY and SATURDAY) , directions (NORTH, SOUTH, EAST and WEST) etc. The java enum constants are static and final implicitly. It is available from JDK 1.5.</div><div><hr/></div><div><span style="font-size: 21px;"><b>Google Web Fundamentals</b></span></div><div><b>Getting Started</b></div><div>    <i>Your First Progressive Web App</i></div><div>        Debugging Service Workers</div><div>        Your First Offline Web App</div><div>        Your First Web Push Notification</div><div>        Find and Fix Web App Performance Issues</div><div>        Start Your Site with Web Starter Kit</div><div>        Your First Multi-Device Site</div><div>    <i>What Makes a Good Mobile Site?</i></div><div><i>    Service Workers: an Introduction</i></div><div><i>    JavaScript Promises: an Introduction</i></div><div><i>    JavaScript Async Functions</i></div><div><i>    Shadow DOM v1: Self-Contained Web Components</i></div><div><i>    Custom Elements v1: Reusable Web Components</i></div><div><b>Performance     </b></div><div>    <i>Measure Performance with the RAIL Model</i></div><div><i>    Optimizing Content Efficiency     </i></div><div>        Eliminating Unnecessary Downloads</div><div>        Optimizing Encoding and Transfer Size of Text-based Assets</div><div>        Image Optimization</div><div>        Web Font Optimization</div><div>        HTTP Caching</div><div><i>    Critical Rendering Path     </i></div><div>        Constructing the Object Model </div><div>        Render-Tree Construction,&lt;wbr Layout,&lt;wbr and Paint </div><div>        Render-Blocking CSS </div><div>        Adding Interactivity with JavaScript </div><div>        Measuring the Critical Rendering Path </div><div>        Analyzing Critical Rendering Path Performance</div><div>        Optimizing the Critical Rendering Path </div><div>        PageSpeed Rules and Recommendations</div><div><i>    Rendering Performance</i></div><div>        Optimizing JavaScript Execution</div><div>        Reduce the Scope and Complexity of Style Calculations</div><div>        Avoid Large,&lt;wbr Complex Layouts and Layout Thrashing</div><div>        Simplify Paint Complexity and Reduce Paint Areas</div><div>        Stick to Compositor-Only Properties and Manage Layer Count</div><div>        Debounce Your Input Handlers</div><div><i>    Understanding Low Bandwidth and High Latency</i></div><div><i>    Introduction to HTTP/2</i></div><div><i>    The PRPL Pattern</i></div><div><b>Architecture     </b></div><div>        The App Shell Model</div><div><b>Instant &amp; Offline Loading   </b></div><div>        Offline UX Considerations</div><div>        The Offline Cookbook</div><div><i>    Web Storage     </i></div><div>        Offline Storage for PWAs</div><div>        The Service Worker Lifecycle</div><div><i>    Service Worker Registration</i></div><div><b>Security and Identity     </b></div><div>        Content Security Policy</div><div><i>    Encrypting Data In Transit     </i></div><div>        Why HTTPS</div><div>        Important Security Terminology</div><div>        Enabling HTTPS on Your Servers</div><div><i>    Preventing Mixed Content     </i></div><div>        What is Mixed Content?</div><div>        Preventing Mixed Content</div><div><i>    Credential Management API     </i></div><div>        Retrieve Credentials</div><div>        Store Credentials</div><div><i>    Design &amp; UI</i></div><div><i>    Basics of UX</i></div><div><i>    Responsive Web Design     </i></div><div>        Responsive Web Design Basics</div><div>        Responsive Web Design Patterns</div><div>        Multi-Device Content</div><div><i>    User Input     </i></div><div>        Create Amazing Forms</div><div>        Add Touch To Your Site</div><div><i>    Icons &amp; Browser Colors</i></div><div><i>    Animations     </i></div><div>        CSS Versus JavaScript</div><div>        The Basics of Easing</div><div>        Custom Easing</div><div>        Animating Between Views</div><div>        Choosing the Right Easing</div><div>        Animating Modal Views</div><div>        Asymmetric Animation Timing</div><div>        Animations and Performance</div><div><b>Engage &amp; Retain Users     </b></div><div><i>    The Web App Manifest</i></div><div><i>    Web Push Notifications     </i></div><div>        What Makes a Good Notification</div><div>        Requesting Permission and Subscribing Users</div><div>        Sending Messages</div><div>        Handling Messages</div><div>        Video: Web Push Notifications (I/O 2016)</div><div><i>    App Install Banners</i></div><div><b>Discovery &amp; Monetization     </b></div><div><i>    Search Optimization</i></div><div><i>    Social Discovery</i></div><div><i>    Handling Payments     </i></div><div>        Payment Request API - an Integration Guide</div><div>        Integrating Android Pay into Payment Request</div><div><b>Accessing Native Hardware     </b></div><div><i>    User Location</i></div><div><i>    Device Orientation &amp; Motion</i></div><div><i>    Recording Audio from the User</i></div><div><i>    Capturing an Image from the User</i></div><div><i>    Making Fullscreen Experiences</i></div><div><i>    Click to Call</i></div><div><b>Accessibility     </b></div><div><i>    Focus     </i></div><div><i>    Introduction to Focus</i></div><div><i>    DOM Order Matters</i></div><div><i>    Using tabindex</i></div><div><i>    Semantics Built-in     </i></div><div><i>    Introduction to Semantics</i></div><div><i>    The Accessibility Tree</i></div><div><i>    Text Alternatives for Images</i></div><div><i>    Navigating Content</i></div><div><i>    Semantics and ARIA     </i></div><div><i>    Introduction to ARIA</i></div><div><i>    ARIA Labels and Relationships</i></div><div><i>    Hiding and Updating Content</i></div><div><i>    Accessible Styles</i></div><div><b>VR</b></div><div><i>    Status and Considerations</i></div><div><i>    Getting Started with WebVR</i></div><div><i>    Adding Input to a WebVR Scene</i></div><div><hr/></div><div><b>Try/Catch</b></div><div><img src="_Programming Memorized  2017_files/Image [1].png" type="image/png" style="height:auto;" width="250"/></div><div><hr/></div><div><b>In engineering, a corner case/edge case</b> (or pathological case) involves a problem or situation that occurs only outside of normal operating parameters—specifically one that manifests itself when multiple environmental variables or conditions are simultaneously at extreme levels, even though each parameter is within the specified ...</div><div><hr/></div><div><span style="color: rgb(36, 39, 41);"><span style="font-size: 15px;"><span style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;"><b>What does 'e' mean as a function argument?</b></span></span></span></div><div><hr/></div><div><span style="color: rgb(36, 39, 41);"><span style="font-size: 15px;"><span style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;">Using </span></span><code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); white-space: pre-wrap;">e</code><span style="font-size: 15px;"><span style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;"> is just a short for </span></span><code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); white-space: pre-wrap;">event</code><span style="font-size: 15px;"><span style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;">. You can pass any variable name you desire.</span></span></span></div></div><pre style="margin: 0px 0px 1em; padding: 5px; border: 0px; font-size: 13px; width: auto; max-height: 600px; overflow: auto; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); display: block; color: rgb(57, 51, 24); word-wrap: normal; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><code style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; background-color: rgb(239, 240, 241); white-space: inherit;"><span style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; color: rgb(133, 140, 147);">// would work just the same</span><span style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; color: rgb(48, 51, 54);">

$('#myTable').click(function(e) { var clicked = $(e.target);});



n Javascript, these note formats will be CODE HIGHLIGHTED!
// TODO
// NOTE


Local Storage "Not ideal for production", but for speed reasons
User preferences, like the list of cities a user has subscribed to, should be stored locally using IndexedDB or another fast storage mechanism. To simplify this code lab as much as possible, we've used localStorage, which is not ideal for production apps because it is a blocking, synchronous storage mechanism that is potentially very slow on some devices.


What is a Progressive Web App?
  • Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.
  • Responsive - Fits any form factor: desktop, mobile, tablet, or whatever is next.
  • Connectivity independent - Enhanced with service workers to work offline or on low-quality networks.
  • App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model.
  • Fresh - Always up-to-date thanks to the service worker update process.
  • Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.
  • Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it.
  • Re-engageable - Makes re-engagement easy through features like push notifications.
  • Installable - Allows users to "keep" apps they find most useful on their home screen without the hassle of an app store.
  • Linkable - Easily share via URL, does not require complex installation.


This is basically a foreach loop
for(var i = 0; i < bookmarks.length; i++){ }


Loose Equality (==)

var num = 0;var obj = new String("0");var str = "0";

console.log(num == num); // true
console.log(obj == obj); // true
console.log(str == str); // true

console.log(num == obj); // true
console.log(num == str); // true
console.log(obj == str); // true
console.log(null == undefined); // true

// both false, except in rare cases
console.log(obj == null);
console.log(obj == undefined);

Identity equality (===)

var num = 0;var obj = new String("0");var str = "0";

console.log(num === num); // true
console.log(obj === obj); // true
console.log(str === str); // true

console.log(num === obj); // false
console.log(num === str); // false
console.log(obj === str); // false
console.log(null === undefined); // false
console.log(obj === null); // false
console.log(obj === undefined); // false

HFS+ = Mac OS Extended
It's the same file system format.


Megabit vs Megabyte
is 1/8 as big as a Megabyte, meaning that to download a 1MB file in 1 second you would need a connection of 8Mbps.


Remote Procedure Call (RPC)
is a protocol that one program can use to request aservice from a program located in another computer in a network without having to understand network details. (A procedure call is also sometimes known as a function call or a subroutine call.) RPC uses the client/server model.


MMask recovery
stick weather disease praise eye fat strike grocery hurt raccoon twin correct

Ethereum
is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference.

These apps run on a custom built blockchain, an enormously powerful shared global infrastructure that can move value around and represent the ownership of property. This enables developers to create markets, store registries of debts or promises, move funds in accordance with instructions given long in the past (like a will or a futures contract) and many other things that have not been invented yet, all without a middle man or counterparty risk.


A read–eval–print loop (REPL),
also known as an interactive toplevel or language shell, is a simple, interactive computer programming environment that takes single user inputs (i.e. single expressions), evaluates them, and returns the result to the user; a program written in a REPL environment is executed piecewise.

Apache Spark™ is a fast and general engine for large-scale data processing.
  • Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk.
  • Apache Spark has an advanced DAG execution engine that supports cyclic data flow and in-memory computing.
  • Combine SQL, streaming, and complex analytics.
  • Spark powers a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application.
  • Spark runs on Hadoop, Mesos, standalone, or in the cloud. It can access diverse data sources including HDFS, Cassandra, HBase, and S3.


CSS nth-of-type
p:nth-of-type(odd) {
background: red;}

p:nth-of-type(even) {
background: blue;}

Using a formula (an + b). Description: a represents a cycle size, n is a counter (starts at 0), and b is an offset value.

Here, we specify a background color for all p elements whose index is a multiple of 3:
p:nth-of-type(3n+0) {
background: red;
}


Windows Explorer great shortcuts
  • Win + E – Opens Windows Explorer
  • Alt + Up – Switches to the parent folder in the hierarchy
  • Alt P – Toggles the Preview pane
  • Alt+Enter – Opens Properties for the selected object
  • F2 – Allows you to rename selection
  • Shift + Del – Deletes selection directly i.e. without moving it to Recycle Bin


Data Binding
Data binding means that you do not have to query the database to affect the DOM. The data is "on-the-wire".
In computing, reactive programming is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automatically propagate changes through the data flow.

Virtual DOM
Rather than touching the DOM directly, we’re building an abstract version of it. That’s it. We working with some kind of lightweight copy of our DOM. We can change it as we want and then save to our real DOM tree. While saving we should compare, find difference and change (re-render) what should be changed.

It is much faster than working directly with DOM, because it doesn’t require all the heavyweight parts that go into a real DOM. It works great, but only if we are working with it in a right way. There are two problems to solve: When re-render the DOM and How to do it efficiently.


What is Meteor?
Meteor is a full-stack JavaScript platform for developing modern web and mobile applications. Meteor includes a key set of technologies for building connected-client reactive applications, a build tool, and a curated set of packages from the Node.js and general JavaScript community.

  • Meteor allows you to develop in one language, JavaScript, in all environments: application server, web browser, and mobile device.
  • Meteor uses data on the wire, meaning the server sends data, not HTML, and the client renders it.
  • Meteor embraces the ecosystem, bringing the best parts of the extremely active JavaScript community to you in a careful and considered way.
  • Meteor provides full stack reactivity, allowing your UI to seamlessly reflect the true state of the world with minimal development effort.

Jekyll
Jekyll is a blog-aware, static site generator in Ruby
Think of Jekyll as a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind GitHub Pages, which you can use to host sites right from your GitHub repositories.


Bourbon Sass
- Bourbon – “A simple and lightweight mixin library for Sass.”
- Neat – “A lightweight semantic grid framework for Sass and Bourbon.”
- Bitters – “Scaffold styles, variables and structure for Bourbon projects.”
- Refills – “…prepackaged patterns and components, built on top of Bourbon, Bitters, and Neat.”


What Is Auth0
Add authentication to your web and mobile apps in under 10 minutes
“Using Auth0, we'll offer users a richer experience through their social profile and personalized information.”

Unify employee access to all your apps with effortless SSO.
“With Auth0, we can plan and integrate identity architecture early, saving critical time and ensuring security.”

Let enterprise customers log in with their own corporate credentials.
“Integrating with Auth0 as a hub for customer SSO simplifies development, allowing our customer base to exponentially grow.”

Unify employee access to all your apps with effortless SSO.
“With Auth0, we can plan and integrate identity architecture early, saving critical time and ensuring security.”


Why Lodash?
Lodash makes JavaScript easier by taking the hassle out of working with arrays, numbers, objects, strings, etc.Lodash’s modular methods are great for:
- Iterating arrays, objects, & strings
- Manipulating & testing values
- Creating composite functions


Flux
Application Architecture for Building User Interfaces.
Flux is the application architecture that Facebook uses for building client-side web applications. It complements React's composable view components by utilizing a unidirectional data flow. It's more of a pattern rather than a formal framework, and you can start using Flux immediately without a lot of new code.


Redux.js
Predictable state container for JavaScript apps
Redux helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as live code editing combined with a time traveling debugger.


Isomorphic Javascript
TL;DR: JavaScript rendered on the server AND the client. In a nutshell, you are rendering your application markup on the server & piping it down as the complete html to the browser. (Sidenote: Isomorphism is also a mathematical term that means something different, but whatever.Jun 10, 2015


Ethereum
is an open source public blockchain-based distributed computing platform, featuring smart contract functionality.[1][2] It provides a decentralized virtual machine, the Ethereum Virtual Machine (EVM), that can execute peer-to-peer contracts using a token called ether.


Chrome Developer Tools
You can open the console with ESC


SPDX License List
The SPDX License List is a list of commonly found licenses and exceptions used for open source and other collaborative software. The purpose of the SPDX License List is to enable easy and efficient identification of such licenses and exceptions in an SPDX document (or elsewhere). The SPDX License List includes a standardized short identifier, full name for each license, vetted license text, other basic information, and a canonical permanent URL for each license and exception. By providing a short identifier, users can efficiently refer to a license without having to redundantly reproduce the full license. License exceptions can be used with the License Expression Syntax operator, "WITH" to create a license with an exception.


Selenium automates browsers.
That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well. Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.


Zend Framework (Not very popular)
An open source, object-oriented web application framework implemented in PHP 5
Zend Framework 2 is an open source framework for developing web applications and services using PHP 5.3+. Zend Framework 2 uses 100% object-oriented code and utilises most of the new features of PHP 5.3, namely namespaces, late static binding, lambda functions and closures.


Ternary operator in Javascript
var newMood = this.state.mood == 'good' ? 'bad' : 'good';
If condition is true, the operator returns the value of expr1; otherwise, it returns the value of expr2. For example, to display a different message based on the value of the isMember variable, you could use this statement:

Range
(-1..-5).to_a #=> []
(-5..-1).to_a #=> [-5, -4, -3, -2, -1]
('a'..'e').to_a #=> ["a", "b", "c", "d", "e"]
('a'...'e').to_a #=> ["a", "b", "c", "d"]


Ionic (Based on Angular--yuck)
A beautiful front-end framework for developing hybrid mobile apps in HTML5. Best friends with AngularJS. Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components for building highly interactive apps. Built with Sass and optimized for AngularJS.


Meteor (This seems like a good option but is not terrible popular either)
An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework

A Meteor application is a mix of JavaScript that runs inside a client web browser, JavaScript that runs on the Meteor server inside a Node.js container, and all the supporting HTML fragments, CSS rules, and static assets.


GO (Probably worth learning)
An open source programming language that makes it easy to build simple, reliable, and efficient software

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.





Internet of things opportunities.
Python may become popular for the Internet of things, as new platforms such as Raspberry Pi are based on it, Carbonnelle says. Raspberry Pi's documentation cites the language as "a wonderful and powerful programming language that's easy to use (easy to read and write) and with Raspberry Pi lets you connect your project to the real world."


That's a pretty broad question. A more relevant question might be, Why is Python good for x? However, I'll do my best here.

As far as "very high level" interpreted languages go, Python is on-par with PHP, Ruby, Perl, etc. in term of performance and capabilities. In my experience, the big win for Python is code readability. Since the syntax is so strict, certain stylistic practices are encouraged (i.e. easy to do) and others are discouraged (i.e. hard to do). This leads to very consistent code across different projects and programmers. As a result, when Python projects scale, it is easy for many developers to get in the mix without huge managerial overhead.

A second reason is popularity. There are certain circles that prefer Python for one reason or another. In the math community for example, there is quite a lot of existing code that can be leveraged. Also, Google has developed several open source projects in Python. So if you want to use them, learning Python is a good idea.

And finally there's the issue of preference. Some people simply like the "Pythonic" way of doing things and the language makes sense to them.

I write Python, Ruby and PHP regularly and in the end they all get the job done.


Some of the most important reasons to learn C++ are:
  • Understanding memory management and pointer usage.
  • Inventing your own class hierarchy instead of relying on pre-packaged libraries from your language vendor.
  • Learning how to use templates and generic programming principles.


In computing, ANSI escape codes (or escape sequences) are a method using in-band signaling to control the formatting, color, and other output options on video text terminals. To encode this formatting information, certain sequences of bytes are embedded into the text, which the terminal looks for and interprets as commands, not as character codes.
ANSI codes were introduced in the 1970s and became widespread in the minicomputer/mainframe market by the early 1980s. They were used by the nascent bulletin board system market to offer improved displays compared to earlier systems lacking cursor movement, leading to even more widespread use.

POSIX is a family of standards, specified by the IEEE, to clarify and make uniform the application programming interfaces (and ancillary issues, such as commandline shell utilities) provided by Unix-y operating systems. When you write your programs to rely on POSIX standards, you can be pretty sure to be able to port them easily among a large family of Unix derivatives (including Linux, but not limited to it!); if and when you use some Linux API that's not standardized as part of Posix, you will have a harder time if and when you want to port that program or library to other Unix-y systems (e.g., MacOSX) in the future.


Type inference
refers to the automatic deduction of the data type of an expression in a programming language. If some, but not all, type annotations are already present, it is termed type reconstruction.
It is a feature present in some strongly statically typed languages. It is often characteristic of functional programming languages in general. The ability to infer types automatically makes many programming tasks easier, leaving the programmer free to omit type annotations while still permitting type checking.

strongly typed or weakly typed (loosely typed).
These terms do not have a precise definition, but in general, a strongly typed language is more likely to generate an error or refuse to compile if the argument passed to a function does not closely match the expected type. On the other hand, a very weakly typed language may produce unpredictable results or may perform implicit type conversion.[1] A different but related concept is latent typing.


functional programming
is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions[1] or declarations[2] instead of statements. In functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f(x) each time. Eliminating side effects, i.e. changes in state that do not depend on the function inputs, can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming.


a mutator method is a method used to control changes to a variable. They are also widely known as setter methods. Often a setter is accompanied by a getter medhod (also known as an accessor), which returns the value of the private member variable.


Cross-Site Request Forgery (CSRF)
is a type of attack that occurs when a malicious web site, email, blog, instant message, or program causes a user's web browser to perform an unwanted action on a trusted site for which the user is currently authenticated.Nov 1, 2016

Bread - analogous to CRUD
(Browse, Read, Edit, Add, Delete)

A Yellow Screen of Death
(also called YSoD) occurs when an ASP.NET web application encounters a problem and crashes. It also appears on the browser Mozilla Firefox when there are errors in reading the .xml web format.


pointer
In computer science, a pointer is a programming language object, whose value refers to (or "points to") another value stored elsewhere in the computer memory using its memory address. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number.

Pointers to data significantly improve performance for repetitive operations such as traversing strings, lookup tables, control tables and tree structures. In particular, it is often much cheaper in time and space to copy and dereference pointers than it is to copy and access the data to which the pointers point.


Big O Notation
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. It is a member of a family of notations invented by Paul Bachmann, Edmund Landau, and others, collectively called Bachmann–Landau notation or asymptotic notation.


Long short-term memory (LSTM)
is a recurrent neural network (RNN) architecture (an artificial neural network) proposed in 1997 by Sepp Hochreiter and Jürgen Schmidhuber.[2] Like most RNNs, an LSTM network is universal in the sense that given enough network units it can compute anything a conventional computer can compute, provided it has the proper weight matrix, which may be viewed as its program. Unlike traditional RNNs, an LSTM network is well-suited to learn from experience to classify, process and predict time series when there are very long time lags of unknown size between important events. This is one of the main reasons why LSTM outperforms alternative RNNs and hidden Markov models and other sequence learning methods in numerous applications.


A database is an array of arrays.


Behavior-Driven Development (BDD)
combines the general techniques and principles of TDD with ideas from domain-driven design. BDD is a design activity where you build pieces of functionality incrementally guided by the expected behavior.

ATDD stands for Acceptance Test Driven Development,
it is also less commonly designated as Storytest Driven Development (STDD). It is a technique used to bring customers into the test design process before coding has begun. It is a collaborative practice where users, testers, and developers define automated acceptance criteria. ATDD helps to ensure that all project members understand precisely what needs to be done and implemented.

Test-driven development (TDD)
is a technique of using automated unit tests to drive the design of software and force decoupling of dependencies. The result of using this practice is a comprehensive suite of unit tests that can be run at any time to provide feedback that the software is still working.

Polymorphism
In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a single interface to entities of different types.[1] A polymorphic type is one whose operations can also be applied to values of some other type, or types.</div>

lexical scope,
a name always refers to its (more or less) local lexical environment. This is a property of the program text and is made independent of the runtime call stack by the language implementation. Because this matching only requires analysis of the static program text, this type of scoping is also called static scoping. Lexical scoping is standard in all ALGOL-based languages such as Pascal, Modula2 and Ada as well as in modern functional languages such as ML and Haskell.

closures
(also lexical closures or function closures) are techniques for implementing lexically scoped name binding in languages with first-class functions.A closure—unlike a plain function—allows the function to access those captured variables through the closure's copies of their values or references, even when the function is invoked outside their scope.


Ternary Operator
var headline = ( <h1> {age >= drinkingAge ? 'Buy Drink' : 'Do Teen Stuff' } </h1> );


The Elastic Stack

Kibana
Visualize your data. Navigate the Elastic Stack.Kibana gives shape to your data and is the extensible user interface for configuring and managing all aspects of the Elastic Stack.
Elasticsearch
Search, analyze, and store your data. Elasticsearch is a distributed, JSON-based search and analytics engine designed for horizontal scalability, maximum reliability, and easy management.
Beats
Beats is a platform for lightweight shippers that send data from edge machines to Logstash and Elasticsearch.
Logstash
Logstash is a dynamic data collection pipeline with an extensible plugin ecosystem and strong Elasticsearch synergy.


A MapReduce
job usually splits the input data-set into independent chunks which are processed by the map tasks in a completely parallel manner. The framework sorts the outputs of the maps, which are then input to the reduce tasks. Typically both the input and the output of the job are stored in a file-system.Aug 4, 2013

Apache Hadoop™
was born out of a need to process an avalanche of big data. The web was generating more and more information on a daily basis, and it was becoming very difficult to index over one billion pages of content. In order to cope, Google invented a new style of data processing known as MapReduce. A year after Google published a white paper describing the MapReduce framework, Doug Cutting and Mike Cafarella, inspired by the white paper, created Hadoop to apply these concepts to an open-source software framework to support distribution for the Nutch search engine project. Given the original case, Hadoop was designed with a simple write-once storage infrastructure.
ETL (Extract, Transform and Load)
is a process in data warehousing responsible for pulling data out of the source systems and placing it into a data warehouse.



A NoSQL
(often interpreted as Not only SQL) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Motivations for this approach include simplicity of design, horizontal scaling, and finer control over availability.

MongoDB is
an open source, document-oriented database designed with both scalability and developer agility in mind. Instead of storing your data in tables and rows as you would with a relational database, in MongoDB you store JSON-like documents with dynamic schemas.

Cassandra -
Introduction. Apache Cassandra is a highly scalable, high-performance distributed database designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. It is a type of NoSQL database.

Apache CouchDB
is open source database software that focuses on ease of use and having an architecture that "completely embraces the Web".[2] It has a document-oriented NoSQL database architecture and is implemented in the concurrency-oriented language Erlang; it uses JSON to store data, JavaScript as its query language using MapReduce, and HTTP for an API.[2]


Relational Databases (SQL)Non-relational Databases (NoSQL)
OracleMongoDB
MySQLCouchDB
SQL ServerBigTable


Perl
is a script programming language that is similar in syntax to the C language and that includes a number of popular UNIX facilities such as sed, awk, and tr. Perl is an interpreted language that can optionally be compiled just before execution into either C code or cross-platform bytecode.
Software developers call Perl the "Duct Tape of the Internet" because the programming language lends itself to quick, easy fixes of data problems.
Perl is a high-level programming language that excels at sophisticated text file processing and, among other uses, can generate Hyper Text Markup Language output for Web pages. It includes interfaces to incorporate databases, making

Cygwin is:
  • a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
  • a DLL (cygwin1.dll) which provides substantial POSIX API functionality
Cygwin is not:
  • a way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows.
  • a way to magically make native Windows apps aware of UNIX® functionality like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.

tmux
is a software application that can be used to multiplex several virtual consoles, allowing a user to access multiple separate terminal sessions inside a single terminal window or remote terminal session. It is useful for dealing with multiple programs from a command-line interface, and for separating programs from the Unix shell that started the program.[2] It provides much of the same functionality as GNU Screen, but it is distributed under a BSD license.

GNU Screen
is a terminal multiplexer, a software application that can be used to multiplex several virtual consoles, allowing a user to access multiple separate login sessions inside a single terminal window, or detach and reattach sessions from a terminal. It is useful for dealing with multiple programs from a command line interface, and for separating programs from the session of the Unix shell that started the program, particularly so a remote process continues running even when the user is disconnected.


Ionic
The top open source framework for building amazing mobile apps. Beautiful, free and open source mobile SDK for developing native and progressive web apps with ease. Know how to build websites? Then you already know how to build mobile apps. Ionic Framework offers the best web and native app components for building highly interactive native and progressive web apps with Angular, JS, TS, HTML5.


Apache Cordova
Unity for mobile apps. Mobile apps with HTML, CSS & JS, Target multiple platforms with one code base, Free and open source

Perf Tools
A miscellaneous collection of in-development and unsupported performance analysis tools for Linux ftrace and perf_events (aka the "perf" command). Both ftrace and perf are core Linux tracing tools, included in the kernel source. ... These are intended for Linux 3.2 and newer kernels.

TDD, QA Positions are easier to get... interested?

RSpec
Behaviour Driven Development for Ruby. Making TDD Productive and Fun.

Cucumber
At a glance, Cucumber might just look like another tool for running automated tests. But it’s more than that.

QUnit
is a powerful, easy-to-use JavaScript unit testing framework. It's used by the jQuery, jQuery UI and jQuery Mobile projects and is capable of testing any generic JavaScript code, including itself!

test-unit (Test::Unit) is unit testing framework for Ruby, based on xUnit principles. These were originally designed by Kent Beck, creator of extreme programming software development methodology, for Smalltalk's SUnit. It allows writing tests, checking results and automated testing in Ruby.

Capybara
Tired of clicking around in your browser trying to make sure your applications work as expected? Capybara is a library written in the Rubyprogramming language which makes it easy to simulate how a user interacts with your application. Capybara can talk with many different drivers which execute your tests through the same clean and simple interface. You can seamlessly choose between Selenium, Webkit or pure Ruby drivers.
Tackle the asynchronous web with Capybara's powerful synchronization features. Capybara automatically waits for your content to appear on the page, you never have to issue any manual sleeps.

Optimizing CSS and JS for production
Developers have two tasks to perform when we try to optimize CSS and JavaScript files for production: minification and concatenation.

One problem developers face when automating this process is that it's difficult to concatenate your scripts in the correct order.


Globbing (Regular Expressions for Filenames)
.scss: The * pattern is a wildcard that matches any pattern in the current directory. In this case, we’re matching any files ending with .scss in the root folder (project).

**/.scss: This is a more extreme version of the pattern that matches any file ending with .scss in the root folder and any child directories.

!not-me.scss: The ! indicates that Gulp should exclude the pattern from its matches, which is useful if you had to exclude a file from a matched pattern. In this case, not-me.scss would be excluded from the match.

.+(scss|sass): The plus + and parentheses ()allows Gulp to match multiple patterns, with different patterns separated by the pipe | character. In this case, Gulp will match any file ending with .scss or .sass in the root folder.


USE WEBPACK 2

Synchronous Javascript
Javascript is always synchronous and single-threaded meaning if you're executing aJavascript block of code on a page then no other Javascript on that page will currently be executed. Javascript is only asynchronous in the sense that it can make, for example, AJAX calls.

Asynchronous Javascript
The result of the query will then be stored by the "callback" function sometime afterwards. The main difference is with asynchronous programming, you don't stop execution otherwise. You can continue executing other code while the 'request' is being made.




Cheat Sheets General Purpose
Apache Cheat Sheet.pdfBootstrap Cheat Sheet.pdfClean-Code-V2.4.pdfHTML5 Cheat Sheet.pdfHTTP Cheat Sheet.pdfJavascript Cheat Sheet.pdfObject Oriented Design Cheat Sheet.pdf


Try, Catch
The try block contains code that may provoke an error, while the catch block contains the code that handles some or all errors. If an error occurs in the try block, program control is passed to the catch block. The value of exception is the value of the error that occurred in the try block.

try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}


PHP Methods/Functions used in REST API CRUD
- PDOStatement::bindParam ( mixed $parameter , mixed $variable )
- final public mixed SolrParams::getParam ([ string $param_name ] )
- DOMElement::getAttribute() - Returns value of attribute
- DOMElement::hasAttribute() - Checks to see if attribute exists
- DOMElement::setAttribute() - Adds new attribute
- DOMElement::removeAttribute() - Removes attribute
- Exception::getMessage ( void )
- PDOStatement::execute ([ array $input_parameters ] )
- PDOStatement::fetch()


PHP Data Objects= PDO

object->method in PHP is same as object.method or object.property
The object operator, “->”, is used in object scope to access methods and properties of an object. It’s meaning is to say that what is on the right of the operator is a member of the object instantiated into the variable on the left side of the operator. Instantiated is the key term here.
Scope Resolution Operator (::)
The Scope Resolution Operator (also called Paamayim Nekudotayim) or in simpler terms, the double colon, is a token that allows access tostatic, constant, and overridden properties or methods of a class.
Example: echo parent::CONST_VALUE . "\n";


HTML5 Video
<video width="480" controls poster="https://archive.org/download/WebmVp8Vorbis/webmvp8.gif" >
Your browser doesn't support HTML5 video tag.
</video>


GRUNT ≈ GULP: BUILD TOOLS (lint, transpile, process, minify, unit test, etc)
WEBPACK ≈ Package Bundler
KOALA ≈ SCOUT ≈ COMPASS ≈ CODEKIT: SCSS, LESS PREPROCESSORS

Grunt: It is used to actually compile your scss files to css.grunt-contrib-watch: This is a task that you can run, so that we can watch our folder, whenever a file changes we can configure this task to run other tasks, say compile our Sass files.Jul 4, 2013



headless browser
is a web browser without a graphical user interface. Headlessbrowsers provide automated control of a web page in an environment similar to popular web browsers, but are executed via a command-line interface or using network communication.

PhantomJS
is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

Jekyll
is a simple, blog-aware, static site generator for personal, project, or organization sites.
Instead of using databases, Jekyll takes the content, renders Markdown or Textile and Liquid templates,[4] and produces a complete, static website ready to be served by Apache HTTP Server, Nginx or another web server.[5] Jekyll is the engine behind GitHub Pages. Jekyll is flexible and supports front-end frameworks such as Bootstrap,[7] Semantic UI and many others.

Apache Ant
is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.


Immutable
Immutable data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

Memoization
In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again.


Software-defined networking (SDN)
is an approach to computer networking that allows network administrators to manage network services through abstraction of lower-level functionality. SDN is meant to address the fact that the static architecture of traditional networks doesn't support the dynamic, scalable computing and storage needs of more modern computing environments such as data centers

CoreOS
is a powerful Linux distribution built to make large, scalable deployments on varied infrastructure simple to manage. Based on a build of Chrome OS, CoreOSmaintains a lightweight host system and uses Docker containers for all applications.

Kubernetes
(commonly referred to as "k8s") is an open source container cluster manager originally designed by Google and donated to the Cloud Native Computing Foundation. It aims to provide a "platform for automating deployment, scaling, and operations of application containers across clusters of hosts".

Etcd
One of the fundamental components that Kubernetes needs to function is a globally available configuration store. The etcd project, developed by the CoreOS team, is a lightweight, distributed key-value store that can be distributed across multiple nodes.

Docker
is an open-source project that automates the deployment of Linux applications inside software containers. Quote of features from Docker web pages: ...Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Linux.

CoreOS, Apache Mesos, Mesosphere, DC/OS
Data Center Operating Systems

Kubernetes, Swarm, Marathon, Rancher
Container Orchastration Engines


Apache Chronos is the “cron” for your Mesosphere DC/OS. It is a highly-available distributed job scheduler, providing the most robust way to run batch jobs in your datacenter. Chronos schedules jobs across the Mesos cluster and manages dependencies between jobs in an intelligent way.
Apache Aurora is a Mesosphere framework for long-running services and cron jobs.
Metronome: Cron Service for DC/OS


Contrail: Cloud networking and service orchestration powered by open technology.
Meteor: Build Apps with JavaScript
Meteor is a complete platform for building web and mobile apps in pure JavaScript.


Webpack
can't handle all Task Running shit: SCSS/SASS, Minification, Transpiling, PostCSS, AutoPrefixer--BUT don't sweat, focus on learning concepts and producing projects.
concat, uglify(minification), sass(scss), autoprefixer(css post), babel(transpiler)

LOL, just use what works for you.
"Right now, I have a near frictionless CSS workflow. I write in Sass, compile with Libsass and get vendor prefixes added with PostCSS/Autoprefixer via Gulp/Grunt. Why would I want to upset that?"

SMACSS—Scalable and Modular Architecture for CSS
It's a book and a methodology for writing CSS (created by Jonathan Snook), but its most significant and influential aspect is its organizational system, which is designed to provide a set of buckets into which CSS should be organized.

Object oriented CSS (OOCSS)
is a methodology of writing reusable CSS that is fast, scalable and maintainable. It’s the first of the popular CSS “systems” (SMACSS & BEM are two other popular systems) that aim at making CSS more modular and scaleable.

Atomic CSS (ACSS)
Atoms (input), Molecules (label, input, button), Organisms (Set of molecules, e.g. a header, Templates (Wireframe), Pages (actual site with data & images.

Harp
The static web server with built-in preprocessing.
Harp serves Jade, Markdown, EJS, CoffeeScript, Sass, LESS and Stylus as HTML, CSS & JavaScript—no configuration necessary. Harpautomatically preprocesses code and serves it to the browser as HTML, CSS, and JavaScript. Now you can focus on writing instead of wrangling.

PostCSS
is a tool for transforming styles with JS plugins. These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more.PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba, and JetBrains.

Handlebars.js
This is a complete tutorial, and indeed a reference, on Handlebars.js templating and, principally, JavaScript templating.Handlebars.js is a client-side (though it can be used on the server, too) templating engine for


Test-driven development (TDD)
is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. "Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming."

Redux
is a predictable state container for JavaScript apps. (If you're looking for a WordPress framework, check out Redux Framework.) It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as live code editing combined with a time traveling debugger.


Web Components
consists of several separate technologies. You can think of Web Components as reusable user interface widgets that are created using open Web technology. They are part of the browser, and so they do not need external libraries like jQuery or Dojo. An existing Web Component can be used without writing code, simply by adding an import statement to an HTML page. Web Components use new or still-developing standard browser capabilities.

RamdaJS, UnderscoreJS, lodash
FUNCTIONAL PROGRAMMING JS LIBRARIES (e.g. sorting data)
Ramda is very like underscore and lodash, but there are some cool differences.

KnockoutJS
is basically a library written in JavaScript that is based on MVVM pattern that helps developers building rich and responsive websites. This separates the application's Model (stored data), View (UI) and View Model (JavascriptRepresentation of model). KO is an abbreviation used for KnockoutJS.

Progressive web apps
Progressive web apps could be the next big thing for the mobile web. Originally proposed by Google in 2015, they have already attracted a lot of attention because of the relative ease of development and the almost instant wins for the application’s user experience.

AMP
Accelerated Mobile Pages

What is a service worker?
A service worker is a script that your browser runs in the background, separate from a web page, opening the door to features that don't need a web page or user interaction. Today, they already include features like push notifications and background sync. In the future service workers will support other things like periodic sync or geofencing.


Industry-standard routing
It’s natural to want to add pages (e.g. /about) to your application, and routing makes this possible.


Vagrant
Development environments made easy.
Create and configure lightweight, reproducible, and portable development environments.

What is a Provisioning Script?
The Vagrant Shell provisioner allows you to upload and execute a script within the guest machine.
Shell provisioning is ideal for users new to Vagrant who want to get up and running quickly and provides a strong alternative for users who are not comfortable with a full configuration management system such as Chef or Puppet. For POSIX-like machines, the shell provisioner executes scripts with SSH. For Windows guest machines that are configured to use WinRM, the shell provisioner executes PowerShell and Batch scripts over WinRM.

Posix
- a set of formal descriptions that provide a standard

all_development_notes_2015-2017's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.