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]
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.
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.
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.
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!
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.
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.
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.
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.
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!
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!
===
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
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]
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.
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 | |
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 |
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" is used by Java, C++
"Dictionary" is used by .Net, Python
"Associative array" is used by Javascript, PHP
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
.
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
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".
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 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.
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]
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.
Lua (/ˈluːə/ 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]
- The OR operator sets a subset of the bits in the state
- The XOR operator toggles a subset of the bits in the state
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
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.
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 "outside" 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: "Open Sans", 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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">message</span></span> is "closed over" by <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><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 "instance variable" 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: "Open Sans", 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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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: "Open Sans", Helvetica, sans-serif;">Why did we put <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><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, "Droid Mono", "Courier New";"><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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">my_list</span></span>, from <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">start_index</span></span> to <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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: "Open Sans", 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, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">start_index</span></span> by just omitting <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", Helvetica, sans-serif;">Careful: there's a hidden time and space cost here!</strong> It's tempting to think of slicing as just "getting elements," 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: "Open Sans", 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: "Open Sans", 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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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: "Open Sans", 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, "Andale Mono", "Ubuntu Mono", 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, "Andale Mono", "Ubuntu Mono", 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 "fingerprint." 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: "Open Sans", 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: "Open Sans", 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 "keys," not just sequential "indices." 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: "Open Sans", Helvetica, sans-serif;">Preventing man-in-the-middle attacks</strong><span style="font-family: Lora, Georgia, serif;">. Ever notice those things that say "hash" or "md5" or "sha1" on download sites? The site is telling you, "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!"</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: "Open Sans", 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: "Open Sans", 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: "Open Sans", Helvetica, sans-serif;">lists</strong> and <strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", 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: "Open Sans", 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: "Open Sans", Helvetica, sans-serif;">destructive</strong><span style="font-family: Lora, Georgia, serif;">, since the original input is "destroyed" 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: "Open Sans", Helvetica, sans-serif;">Careful: "In-place" does <em style="box-sizing: border-box;">not</em> mean "without creating any additional variables"!</strong></span><span style="font-family: Lora, Georgia, serif;"><span style="font-size: 15px;"> Rather, it means "without creating a new copy of the input." 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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, "Droid Mono", "Courier New";"><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, "Droid Mono", "Courier New";"><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, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">push(item)</span></span>: increment the <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><span style="box-sizing: border-box;">last</span></span> index, and put the <span style="box-sizing: border-box; font-family: Inconsolata, "Droid Mono", "Courier New";"><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: "Open Sans", 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: "Open Sans", Helvetica, sans-serif;">hash</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", Helvetica, sans-serif;">hash map</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", Helvetica, sans-serif;">map</strong>, <strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", Helvetica, sans-serif;">unordered map</strong> or <strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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 "node" <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: "Open Sans", 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: "Open Sans", 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: "Open Sans", 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, "Droid Mono", "Courier New";"><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, "Droid Mono", "Courier New";"><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 "gaps." We call this kind of tree "</span><strong style="box-sizing: border-box; font-weight: bold; font-family: "Open Sans", Helvetica, sans-serif;">perfect</strong><span style="font-family: Lora, Georgia, serif;">."</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:"Helvetica Neue", 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, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", 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 & 1 # 11 & 0 # 00 & 1 # 00 & 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 "last in, first out" (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 "first in, first out" (FIFO), which means that the item that was put in the queue longest ago is the first item that comes out. "First come, first served."</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 "virtual office" 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^="http"]</b></div><div><br/></div><div>a[href^="http"] {</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, "courier new"; 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;"><</span>script<span style="box-sizing: inherit; color: red;"> src<span style="box-sizing: inherit; color: mediumblue;">="demo_async.js"</span> async</span><span style="box-sizing: inherit; color: mediumblue;">></span></span><span style="box-sizing: inherit; color: brown;"><span style="box-sizing: inherit; color: mediumblue;"><</span>/script<span style="box-sizing: inherit; color: mediumblue;">></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: "Open Sans", "Helvetica Neue", 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>"Okay, machine package manager, that's nice. What does that mean though?" 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,<wbr Layout,<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,<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 & 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 & 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 & 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 & 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 & 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 & 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, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", 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, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", 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, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", 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, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", 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);});
- 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.
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);
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
- 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.
- 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
- 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.
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:- 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.
Relational Databases (SQL) | Non-relational Databases (NoSQL) |
Oracle | MongoDB |
MySQL | CouchDB |
SQL Server | BigTable |
- 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
- 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.
/about
) to your application, and routing makes this possible.