Categories
Bibliography JavaScript Software Engineering

B07LCM8RG2 ISBN-13: 978-0134757599

See: Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler)) 2nd Edition

Fair Use Source:

Categories
Bibliography DevOps DevSecOps-Security-Privacy JavaScript Software Engineering

B07V78WH7V

See: Web Security for Developers: Real Threats, Practical Defense Illustrated Edition

Fair Use Source:

Categories
Cloud DevOps DevSecOps-Security-Privacy Linux Software Engineering

DevOps toolchain

See also: CloudOps, toolchain

“A DevOps toolchain is a set or combination of tools that aid in the delivery, development, and management of software applications throughout the systems development life cycle, as coordinated by an organization that uses DevOps practices.

Generally, DevOps tools fit into one or more activities, which supports specific DevOps initiatives: Plan, Create, Verify, Package, Release, Configure, Monitor, and Version Control.[1][2]” (WP)

Toolchains

“In software, a toolchain is the set of programming tools that is used to perform a complex software development task or to create a software product, which is typically another computer program or a set of related programs. In general, the tools forming a toolchain are executed consecutively so the output or resulting environment state of each tool becomes the input or starting environment for the next one, but the term is also used when referring to a set of related tools that are not necessarily executed consecutively.[3][4][5]

As DevOps is a set of practices that emphasizes the collaboration and communication of both software developers and other information technology (IT) professionals, while automating the process of software delivery and infrastructure changes, its implementation can include the definition of the series of tools used at various stages of the lifecycle; because DevOps is a cultural shift and collaboration between development and operations, there is no one product that can be considered a single DevOps tool. Instead a collection of tools, potentially from a variety of vendors, are used in one or more stages of the lifecycle.[6][7]” (WP)

Stages of DevOps

Further information: DevOps

Plan

Plan is composed of two things: “define” and “plan”.[8] This activity refers to the business value and application requirements. Specifically “Plan” activities include:

  • Production metrics, objects and feedback
  • Requirements
  • Business metrics
  • Update release metrics
  • Release plan, timing and business case
  • Security policy and requirement

A combination of the IT personnel will be involved in these activities: business application owners, software developmentsoftware architects, continual release management, security officers and the organization responsible for managing the production of IT infrastructure.

Create

Create is composed of the building (see also build automation), coding, and configuring of the software development process.[8] The specific activities are:

Tools and vendors in this category often overlap with other categories. Because DevOps is about breaking down silos, this is reflective in the activities and product solutions.[clarification needed]

Verify

Verify is directly associated with ensuring the quality of the software release; activities designed to ensure code quality is maintained and the highest quality is deployed to production.[8] The main activities in this are:

Solutions for verify related activities generally fall under four main categories: Test automation , Static analysis , Test Lab, and Security.

Packaging

Packaging refers to the activities involved once the release is ready for deployment, often also referred to as staging or Preproduction / “preprod”.[8] This often includes tasks and activities such as:

  • Approval/preapprovals
  • Package configuration
  • Triggered releases
  • Release staging and holding

Release

Release related activities include schedule, orchestration, provisioning and deploying software into production and targeted environment.[9] The specific Release activities include:

  • Release coordination
  • Deploying and promoting applications
  • Fallbacks and recovery
  • Scheduled/timed releases

Solutions that cover this aspect of the toolchain include application release automation, deployment automation and release management.

Configure

Configure activities fall under the operation side of DevOps. Once software is deployed, there may be additional IT infrastructure provisioning and configuration activities required.[8] Specific activities including:

  • Infrastructure storage, database and network provisioning and configuring
  • Application provision and configuration.

The main types of solutions that facilitate these activities are continuous configuration automationconfiguration management, and infrastructure as code tools.[10]

Monitor

Monitoring is an important link in a DevOps toolchain. It allows IT organization to identify specific issues of specific releases and to understand the impact on end-users.[8] A summary of Monitor related activities are:

  • Performance of IT infrastructure
  • End-user response and experience
  • Production metrics and statistics

Information from monitoring activities often impacts Plan activities required for changes and for new release cycles.

Version Control

Version Control is an important link in a DevOps toolchain and a component of software configuration management. Version Control is the management of changes to documents, computer programs, large web sites, and other collections of information.[8] A summary of Version Control related activities are:

  • Non-linear development
  • Distributed development
  • Compatibility with existent systems and protocols
  • Toolkit-based design

Information from Version Control often supports Release activities required for changes and for new release cycles.

See also

References

  1. ^ Edwards, Damon. “Integrating DevOps tools into a Service Delivery Platform”dev2ops.org.
  2. ^ Seroter, Richard. “Exploring the ENTIRE DevOps Toolchain for (Cloud) Teams”infoq.com.
  3. ^ “Toolchain Overview”nongnu.org. 2012-01-03. Retrieved 2013-10-21.
  4. ^ “Toolchains”elinux.org. 2013-09-08. Retrieved 2013-10-21.
  5. ^ Imran, Saed; Buchheit, Martin; Hollunder, Bernhard; Schreier, Ulf (2015-10-29). Tool Chains in Agile ALM Environments: A Short IntroductionLecture Notes in Computer Science9416. pp. 371–380. doi:10.1007/978-3-319-26138-6_40ISBN 978-3-319-26137-9.
  6. ^ Loukides, Mike (2012-06-07). “What is DevOps?”.
  7. ^ Garner Market Trends: DevOps – Not a Market, but Tool-Centric Philosophy That supports a Continuous Delivery Value Chain (Report). Gartner. 18 February 2015.
  8. a b c d e f g Avoid Failure by Developing a Toolchain that Enables DevOps (Report). Gartner. 16 March 2016.
  9. ^ Best Practices in Change, Configuration and Release Management (Report). Gartner. 14 July 2010.
  10. ^ Roger S. Pressman (2009). Software Engineering: A Practitioner’s Approach (7th International ed.). New York: McGraw-Hill.

Categories

Sources:

Fair Use Sources:

Categories
Bibliography JavaScript Software Engineering

MDN JavaScript Reference Mozilla Developer Network Developer.Mozilla.org – MDN Web Docs

See also: JavaScript Reference Materials, JavaScript, JavaScript Bibliography and Bibliography of JavaScript Libraries and Web Frameworks

MDN JavaScript Reference Mozilla Developer Network Developer.Mozilla.org (MDNJsR)

MDN Web Docs.svg
Type of siteWiki
Available inEnglish
Chinese
French
Japanese
Other locales are unmaintained as of December 14, 2020[1]
OwnerMozilla
URLdeveloper.mozilla.org
CommercialNo
RegistrationOptional, required to edit content
Launched2005; 16 years ago
Current statusOnline
Content licenseCC-BY-SA v2.5+ et al.
Written inReact
SCSSJSXJavaScriptPython

MDN Web Docs, previously Mozilla Developer Network and formerly Mozilla Developer Center, is a documentation repository and learning resource for web developers used by MozillaMicrosoftGoogle, and Samsung. The project was started by Mozilla in 2005[2] as a unified place for documentation about open web standards, Mozilla’s own projects, and developer guides.[3] In 2017, Microsoft, Google, and Samsung announced that they would shut down their own documentation projects and move all their documentation to MDN Web Docs.[4]

MDN Web Docs content is maintained by Mozilla and Google employees and volunteers (community of developers and technical writers). Topics include HTML5JavaScriptCSSWeb APIsDjangoNode.jsWebExtensionsMathML, and others.[5]

MDN JavaScript Reference Mozilla Developer Network Developer.Mozilla.org (MDNJsR)

History

In 2005, Mozilla Corporation started the project under the name Mozilla Developer Center.[2] Mozilla Corporation still funds servers and employs staff working on the projects.

The initial content for the website was provided by DevEdge, for which the Mozilla Foundation was granted a license by AOL.[6][2] The site now contains a mix of content migrated from DevEdge and mozilla.org, as well as original and more up-to-date content.[7][8] Documentation was also migrated from XULPlanet.com.

On Oct 3, 2016, Brave browser added Mozilla Developer Network as one of its default search engines options.[9]

In 2017, MDN Web Docs became the unified documentation of web technology for Google, Samsung, Microsoft, and Mozilla.[10][4] Microsoft started redirecting pages from MSDN to MDN.[11]

In 2019, Mozilla started Beta testing a new reader site for MDN Web Docs written in React (instead of jQuery; some jQuery functionality was replaced with Cheerio library).[12] The new site was launched on December 14, 2020.[13] Since December 14, 2020, all editable content is stored in a git repository hosted on GitHub, where contributors open pull requests and discuss changes.[1]

On January 25 2021,[14] Open Web Docs organization was launched as a non-profit fiscal entity to collect funds for MDN development.[15] As of February 2021, OWD top financial contributors are MicrosoftGoogle, Coil, and Igalia.[16]

See also

References

  1. a b “An update on MDN Web Docs’ localization strategy – Mozilla Hacks – the Web developer blog”Mozilla Hacks – the Web developer blog. Retrieved 2021-02-01.
  2. a b c Mitchell Baker (2005-02-23). “DevMo and DevEdge updates”. Retrieved 2008-05-31.
  3. ^ Willison, Simon (2005-09-15). “The Mozilla Developer Center”SitePoint. Retrieved 2012-08-19.
  4. a b Tung, Liam (2017-10-19). “Developers rejoice: Microsoft, Google, Mozilla are putting all their web API docs in one place”ZDNet.
  5. ^ Ten Things Developers should know about the Mozilla Developer Network (MDN)
  6. ^ “About”. Mozilla Developer Center. Archived from the original on 2007-10-20. Retrieved 2009-01-30.
  7. ^ “DevEdge”. Mozilla Developer Center. Archived from the originalon 2007-10-26. Retrieved 2009-01-30.
  8. ^ Deb Richardson (2006-02-10). “Digging through the DevEdge archives”mozilla.dev.mdc. Google Groups. Retrieved 2008-05-31.
  9. ^ “Brave Browser 0.12.3 Release Note”Github. Retrieved 16 August2017.
  10. ^ Knox, Dru (2017-10-18). “Building unified documentation for the web”Chromium Blog.
  11. ^ Erika Doyle Navara (2017-10-18). “Documenting the Web together”Windows Blogs.
  12. ^ R, Bhagyashree (2019-07-17). “Mozilla’s MDN Web Docs gets new React-powered frontend, which is now in Beta”Packt Hub. Retrieved 2019-07-18.
  13. ^ “Welcome Yari: MDN Web Docs has a new platform – Mozilla Hacks – the Web developer blog”Mozilla Hacks – the Web developer blog. Retrieved 2021-02-01.
  14. ^ “OWD Steering Committee call, 2021-01-20”GitHub. 2021-01-20. Archived from the original on 2021-02-01. Retrieved 2021-02-01. OWD will go public on Monday, January 25th.
  15. ^ “Welcoming Open Web Docs to the MDN family – Mozilla Hacks – the Web developer blog”Mozilla Hacks – the Web developer blog. Retrieved 2021-02-01.
  16. ^ “Open Web Docs – Open Collective”opencollective.com. Retrieved 2021-02-01

Categories


https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference

https://github.com/mdn

JavaScript Reference

This part of the JavaScript section on MDN serves as a repository of facts about the JavaScript language.

About the JavaScript reference

The JavaScript reference serves as a repository of facts about the JavaScript language. The entire language is described here in detail. As you write JavaScript code, you’ll refer to these pages often (thus the title “JavaScript reference”). If you’re learning JavaScript, or need help understanding some of its capabilities or features, check out the JavaScript guide.

The JavaScript language is intended to be used within some larger environment, be it a browser, server-side scripts, or similar. For the most part, this reference attempts to be environment-agnostic and does not target a web browser environment.

Where to find JavaScript information

JavaScript documentation of core language features (pure ECMAScript, for the most part) includes the following:

If you are new to JavaScript, start with the guide. Once you have a firm grasp of the fundamentals, you can use the reference to get more details on individual objects and language constructs.

Structure of the reference

In the JavaScript reference you can find the following chapters:Standard built-in objectsThis chapter documents all the JavaScript standard built-in objects, along with their methods and properties.Statements and declarationsJavaScript applications consist of statements with an appropriate syntax. A single statement may span multiple lines. Multiple statements may occur on a single line if each statement is separated by a semicolon. This isn’t a keyword, but a group of keywords.Expressions and operatorsThis chapter documents all the JavaScript language operators, expressions and keywords.FunctionsChapter about JavaScript functions.ClassesChapter about JavaScript classes introduced in ECMAScript 2015.ErrorsChapter about specific errors, exceptions and warnings thrown by JavaScript.New in JavaScriptChapter about JavaScript version history.

More reference pages

Fair Use Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/About

Built-ins

JavaScript standard built-in objects, along with their methods and properties.

Value properties

Function properties

Fundamental objects

Error objects

Numbers & dates

Text processing

Indexed Collections

Keyed collections

Structured data

Control abstraction

Reflection

Internationalization

WebAssembly

Statements

JavaScript statements and declarations

Control flow

Declarations

Functions and classes

Iterations

Other

Expressions and operators

JavaScript expressions and operators

Primary expressions

Left-hand-side expressions

Increment & decrement

Unary operators

Arithmetic operators

Relational operators

Equality operators

Bitwise shift operators

Binary bitwise operators

Binary logical operators

Conditional (ternary) operator

Assignment operators

Functions

This chapter documents how to work with JavaScript functions to develop your applications.

Additional reference pages

Sources:

Fair Use Sources:

Categories
JavaScript Software Engineering

Deno Runtime for JavaScript and TypeScript

See also: JavaScript, JavaScript Bibliography and Bibliography of JavaScript Libraries and Web Frameworks

Deno.svg
Original author(s)Ryan Dahl
Developer(s)Various
Initial releaseMay 13, 2018; 2 years ago[1]
Stable release1.8.0[2]  / 2 March 2021; 3 days ago
Repositorygithub.com/denoland/deno
Written inTypeScriptJavaScriptRustC++(V8 bindings)
Operating systemLinuxmacOSMicrosoft Windows
TypeRuntime environment
LicenseMIT License[3][4]
Websitedeno.land 

Deno is a runtime for JavaScript and TypeScript that is based on the V8 JavaScript engine and the Rust programming language. It was created by Ryan Dahl, original creator of Node.js, and is focused on productivity.[5] It was announced by Dahl in 2018 during his talk “10 Things I Regret About Node.js”.[6] Deno explicitly takes on the role of both runtime and package manager within a single executable, rather than requiring a separate package-management program.[7][8]” (WP)

History

“Deno was announced on JSConf EU 2018 by Ryan Dahl in his talk “10 Things I Regret About Node.js”.[6] In his talk, Dahl mentioned his regrets about the initial design decisions with Node.js, focusing on his choices of not using promises in API design, usage of the legacy GYP building system, node_modules and package.json, leaving out file extensions, magical module resolution with index.js and breaking the sandboxed environment of V8.[9] He eventually presented the prototype of Deno, aiming to achieve system call bindings through message passing with serialization tools such as Protocol Buffers, and to provide command line flags for access control.” (WP)

“Deno was initially written in Go and used Protocol Buffers for serialization between privileged (Go, with system call access) and unprivileged (V8) sides.[10] However, Go was soon replaced with Rust due to concerns of double runtime and garbage collection pressure.[11] Tokio is introduced in place of libuv as the asynchronous event-driven platform,[12] and FlatBuffers is adopted for faster, “zero-copy” serialization and deserialization[13] but later in August 2019, FlatBuffers were finally removed[14] after publishing benchmarks that measured a significant overhead of serialization in April 2019.[15]” (WP)

“A standard library, modeled after Go’s standard library, was created in November 2018 to provide extensive tools and utilities, partially solving Node.js’ dependency tree explosion problem.[16]” (WP)

“The official Deno 1.0 was released on May 13, 2020.[17]” (WP)

Overview

“Deno aims to be a productive scripting environment for the modern programmer.[7] Similar to Node.js, Deno emphasizes event-driven architecture, providing a set of non-blocking core I/O utilities, along with their blocking versions. Deno could be used to create web servers, perform scientific computations, etc. Deno is open source software under the MIT License.[18]” (WP)

Comparison with Node.js

“Deno and Node.js are both runtimes built on Google’s V8 JavaScript engine, the same engine used in Google Chrome. They both have internal event loops and provide command-line interfaces for running scripts and a wide range of system utilities.” (WP)

“Deno mainly deviates from Node.js in the following aspects:[7]” (WP)

  1. Uses ES Module as the default module system, instead of CommonJS.
  2. Uses URLs for loading local or remote dependencies, similar to browsers.
  3. Includes a built-in package manager for resource fetching, thus no need for npm.
  4. Supports TypeScript out of the box, using a snapshotted TypeScript compiler with caching mechanisms.
  5. Aims for better compatibility with browsers with a wide range of Web APIs.
  6. Allows file system and network access in order to run sandboxed code.
  7. Redesigns API to utilize promises, ES6 and TypeScript features.
  8. Minimizes core API size, while providing a large standard library with no external dependencies.
  9. Using message passing channels for invoking privileged system APIs and using bindings.” (WP)

Releases

VersionLatest micro versionRelease dateDate of last micro versionDescription
0.1.00.1.122018-08-232018-11-12Rust rewrite and V8 snapshot
0.2.00.2.112018-11-272019-02-08Mildly usable
0.3.00.3.102019-02-182019-04-25Instead of importing a “deno” module, there is now a global variable called “Deno”
0.4.00.4.02019-05-032019-05-03
0.5.00.5.02019-05-112019-05-11
0.6.00.6.02019-05-202019-05-20
0.7.00.7.02019-05-292019-05-29
0.8.00.8.02019-06-082019-06-08
0.9.00.9.02019-06-152019-06-15
0.10.00.10.02019-06-252019-06-25
0.11.00.11.02019-07-062019-07-06
0.12.00.12.02019-07-162019-07-16
0.13.00.13.02019-07-312019-07-31
0.14.00.14.02019-08-092019-08-09
0.15.00.15.02019-08-132019-08-13
0.16.00.16.02019-08-222019-08-22
0.17.00.17.02019-09-042019-09-04
0.18.00.18.02019-09-132019-09-13
0.19.00.19.02019-09-242019-09-24
0.20.00.20.02019-10-062019-10-06
0.21.00.21.02019-10-192019-10-19
0.22.00.22.02019-10-282019-10-28
0.23.00.23.02019-11-042019-11-04
0.24.00.24.02019-11-142019-11-14
0.25.00.25.02019-11-262019-11-26
0.26.00.26.02019-12-052019-12-05
0.27.00.27.02019-12-182019-12-18
0.28.00.28.12020-01-022020-01-03
0.29.00.29.02020-01-092020-01-09
0.30.00.30.02020-01-172020-01-17
0.31.00.31.02020-01-242020-01-24
0.32.00.32.02020-02-032020-02-03
0.33.00.33.02020-02-132020-02-13
0.34.00.34.02020-02-202020-02-20
0.35.00.35.02020-02-282020-02-28
0.36.00.36.02020-03-112020-03-11
0.37.00.37.12020-03-232020-03-23
0.38.00.38.02020-03-282020-03-28
0.39.00.39.02020-04-032020-04-03
0.40.00.40.02020-04-082020-04-08
0.41.00.41.02020-04-162020-04-16
0.42.00.42.02020-04-292020-04-29
1.0.01.0.52020-05-132020-06-03
1.1.01.1.32020-06-122020-07-03
1.2.01.2.32020-07-132020-08-08
1.3.01.3.32020-08-132020-09-04
1.4.01.4.62020-09-132020-10-10
1.5.01.5.42020-10-272020-11-23Faster tree-shaking and bundling, refactored REPL
1.6.01.6.32020-12-082020-12-30Compile standalone binaries via “deno compile”, support TypeScript 4.1, experimental support for Mac ARM64
1.7.01.7.52021-02-052021-02-19Cross compilation and 60% smaller binaries for deno compile, a DNS resolver API, support for data URLs in import statements and web workers
1.8.01.8.02021-03-022021-03-02Experimental support for WebGPU API, built-in internationalization APIs enabled, support for fetching private modules, revamped coverage tooling, support for TypeScript 4.2
Legend:Old versionLatest versionFuture release

Via the official Releases[19] page

Example

“This runs a basic Deno script without any file system or network permissions (sandbox mode):” (WP)

deno run main.ts

Explicit flags are required to enable permissions:

deno run --allow-read --allow-net main.ts

To inspect the dependency tree of the script, use the info subcommand:

deno info main.ts

A basic Hello, World! program in Deno looks just like it would in Node.js:

console.log("Hello, World!");

A global Deno namespace exposes APIs that are not available in the browser. A Unix cat program could be implemented as follows:

/* cat.ts */

/* Deno APIs are exposed through the `Deno` namespace. */
const { stdout, open, copy, args } = Deno;

// Top-level await is supported
for (let i = 0; i < args.length; i++) {
    const filename = args[i]; // Obtains command-line arguments.
    const file = await open(filename); // Opens the corresponding file for reading.
    await copy(file, stdout); // Performs a zero-copy asynchronous copy from `file` to `stdout`.
}

The Deno.copy function used above works much like Go’s io.Copy, where stdout (standard output) is the destination Writer, and file is the source Reader. To run this program, we need to enable read permission to the filesystem:

deno run --allow-read cat.ts myfile

The following Deno script implements a basic HTTP server:

// Imports `serve` from the remote Deno standard library, using URL.
import { serve } from "https://deno.land/std@v0.21.0/http/server.ts";

// `serve` function returns an asynchronous iterator, yielding a stream of requests
for await (const req of serve({ port: 8000 })) {
    req.respond({ body: "Hello, World!\n" });
}

When running this program, Deno will automatically download and cache the remote standard library files, and compile the code. Similarly, we can run a standard library script (such as a file server) directly without explicitly downloading, by providing the URL as the input filename (-A turns on all permissions):” (WP)

$ deno run -A https://deno.land/std/http/file_server.ts
Download https://deno.land/std/http/file_server.ts
Compile https://deno.land/std/http/file_server.ts
...
HTTP server listening on http://0.0.0.0:4500/

References

  1. ^ “Contributors, denoland/deno, Github”. Retrieved 5 July 2019.
  2. ^ “Release v1.8.0”. Retrieved 3 March 2021.
  3. ^ “deno/LICENSE at master”GitHub. Retrieved 5 July 2019.
  4. ^ “The MIT License”Open Source Initiative. 17 September 2018. Retrieved 17 September 2018.
  5. ^ “Deno: Secure V8 TypeScript Runtime from Original Node.js Creator”InfoQ. Retrieved 2019-05-17.
  6. a b JSConf (2018-06-06), 10 Things I Regret About Node.js – Ryan Dahl – JSConf EU 2018, retrieved 2019-05-17
  7. a b c “Deno Manual”deno.land. Retrieved 2019-05-17.
  8. ^ Paul Krill (2018-06-21). “Ryan Dahl’s Node.js regrets lead to Deno”InfoWorld.
  9. ^ Dahl, Ryan (2018-06-06). “Design mistakes in Node” (PDF). Github.
  10. ^ “denoland/deno, branch “golang””Github.
  11. ^ “Suggestion: Look into porting to Rust and using Tokio”GitHub.
  12. ^ “Tokio – The asynchronous run-time for the Rust programming language”Tokio.rs.
  13. ^ “Protobuf seems like a lot of overhead for this use case?”Github.
  14. ^ “Remove flatbuffers”GitHub.
  15. ^ “Replace flatbuffers”GitHub.
  16. ^ “denoland/deno_std: deno standard modules”Github.
  17. ^ “Deno 1.0”deno.land. Retrieved 2020-05-14.
  18. ^ “Deno Is Ready for Production”InfoQ. Retrieved 2020-07-01.
  19. ^ “Releases”. 2020-12-30. Retrieved 2021-01-14.

External links

Categories

(WP)

Sources:

Fair Use Sources:

Categories
Angular Framework Bibliography JavaScript React Software Engineering Vue.js Framework

Bibliography of JavaScript Libraries and Web Frameworks

See also: React.js Bibliography, JavaScript, JavaScript Bibliography, JavaScript Reference Materials

Fair Use Source:

Sources:

Fair Use Sources: