diff --git a/public/roadmap-content/angular.json b/public/roadmap-content/angular.json index 00ecac08d..f76727988 100644 --- a/public/roadmap-content/angular.json +++ b/public/roadmap-content/angular.json @@ -677,8 +677,19 @@ }, "ys5untkSppGMFK-VsfuRt": { "title": "@else if", - "description": "", - "links": [] + "description": "With the new control flow syntax, you gain `@else if` conditional blocks, something that is not possible with `@ngIf`. This addition makes the control flow syntax close to what we would write with just plain JavaScript.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Angular Official Docs - @if", + "url": "https://angular.dev/api/core/@if", + "type": "article" + }, + { + "title": "Angular @if: Complete Guide", + "url": "https://blog.angular-university.io/angular-if/", + "type": "article" + } + ] }, "2kYS9w1UzQFZ1zhf01m9L": { "title": "@for", @@ -693,13 +704,35 @@ }, "nZuim4Fjq6jYOXcRTAEay": { "title": "@switch", - "description": "", - "links": [] + "description": "The `@switch` blocks displays content selected by one of the cases matching against the conditional expression. The value of the conditional expression is compared to the case expression using the `===` operator. `@switch` does not have fallthrough, so you do not need an equivalent to a break or return statement.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Angular Official Docs - @switch", + "url": "https://angular.dev/guide/templates/control-flow#switch-block---selection", + "type": "article" + }, + { + "title": "Angular @switch: Complete Guide", + "url": "https://blog.angular-university.io/angular-switch/", + "type": "article" + } + ] }, "cHC2MH50CbUSMRZV4QGJI": { "title": "@case", - "description": "", - "links": [] + "description": "If no `@case` matches the `@switch` condition and there is no `@default` block, nothing is shown. Otherwise, the content inside the `@case` that matches the condition will be displayed.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Angular Official Docs - @switch", + "url": "https://angular.dev/guide/templates/control-flow#switch-block---selection", + "type": "article" + }, + { + "title": "Angular @switch: Complete Guide", + "url": "https://blog.angular-university.io/angular-switch/", + "type": "article" + } + ] }, "h4MMn0_qUN3YXEdMUJOyd": { "title": "@default", @@ -1749,8 +1782,19 @@ }, "Ax-s_xw3FO3Ocv-AnLbQD": { "title": "Build Environments", - "description": "", - "links": [] + "description": "You can define different named build configurations for your project, such as `development` and `production`, with different defaults. Each named configuration can have defaults for any of the options that apply to the various builder targets, such as `build`, `serve`, and `test`. The Angular CLI can replace files for each environment if you pass a `--configuration` flag with the named configuration when running a CLI command.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Angular Official Docs - Build environments", + "url": "https://angular.dev/tools/cli/environments#using-environment-specific-variables-in-your-app", + "type": "article" + }, + { + "title": "Building an Angular application in various environments using Angular CLI and server", + "url": "https://medium.com/yavar/building-an-angular-application-in-various-environments-using-angular-cli-and-server-18f94067154b", + "type": "article" + } + ] }, "TeWEy9I-hU6SH02Sy2S2S": { "title": "CLI Builders", diff --git a/public/roadmap-content/devops.json b/public/roadmap-content/devops.json index fc5efcfa2..24d8f990c 100644 --- a/public/roadmap-content/devops.json +++ b/public/roadmap-content/devops.json @@ -1037,6 +1037,11 @@ "title": "Docker", "description": "Docker is a platform for working with containerized applications. Among its features are a daemon and client for managing and interacting with containers, registries for storing images, and a desktop application to package all these features together.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "Visit Dedicated Docker Roadmap", + "url": "https://roadmap.sh/docker", + "type": "article" + }, { "title": "Docker Documentation", "url": "https://docs.docker.com/", diff --git a/public/roadmap-content/game-developer.json b/public/roadmap-content/game-developer.json index c21859226..551cff591 100644 --- a/public/roadmap-content/game-developer.json +++ b/public/roadmap-content/game-developer.json @@ -772,8 +772,14 @@ }, "sz1047M8_kScjth84yPwU": { "title": "Decision Tree Learning", - "description": "`Decision Tree Learning` is an important concept in game development, particularly in the development of artificial intelligence for game characters. It is a kind of machine learning method that is based on using decision tree models to predict or classify information. A decision tree is a flowchart-like model, where each internal node denotes a test on an attribute, each branch represents an outcome of that test, and each leaf node holds a class label (decision made after testing all attributes). By applying decision tree learning models, computer-controlled characters can make decisions based on different conditions or states. They play a key role in creating complex and interactive gameplay experiences, by enabling game characters to adapt to the player's actions and the ever-changing game environment.", - "links": [] + "description": "`Decision Tree Learning` is an important concept in game development, particularly in the development of artificial intelligence for game characters. It is a kind of machine learning method that is based on using decision tree models to predict or classify information. A decision tree is a flowchart-like model, where each internal node denotes a test on an attribute, each branch represents an outcome of that test, and each leaf node holds a class label (decision made after testing all attributes). By applying decision tree learning models, computer-controlled characters can make decisions based on different conditions or states. They play a key role in creating complex and interactive gameplay experiences, by enabling game characters to adapt to the player's actions and the ever-changing game environment.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Decision trees - A friendly introduction", + "url": "https://www.youtube.com/watch?v=HkyWAhr9v8g", + "type": "video" + } + ] }, "ltkEyfuDxExs7knqs79ya": { "title": "Deep Learning", diff --git a/public/roadmap-content/javascript.json b/public/roadmap-content/javascript.json index 83462bf77..af012226e 100644 --- a/public/roadmap-content/javascript.json +++ b/public/roadmap-content/javascript.json @@ -4,7 +4,7 @@ "description": "JavaScript, often abbreviated JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. It lets us add interactivity to pages e.g. you might have seen sliders, alerts, click interactions, popups, etc on different websites -- all of that is built using JavaScript. Apart from being used in the browser, it is also used in other non-browser environments as well such as Node.js for writing server-side code in JavaScript, Electron for writing desktop applications, React Native for mobile applications, and so on.\n\nVisit the following resources to learn more:", "links": [ { - "title": "You Dont Know JS Yet (book series)", + "title": "You Don't Know JS Yet (book series)", "url": "https://github.com/getify/You-Dont-Know-JS", "type": "opensource" }, @@ -200,7 +200,7 @@ "type": "article" }, { - "title": "Understanding hoisting ", + "title": "Understanding Hoisting", "url": "https://www.digitalocean.com/community/tutorials/understanding-hoisting-in-javascript", "type": "article" }, @@ -307,7 +307,7 @@ }, "q85z6x1Lc-yLWepwtIT2_": { "title": "const", - "description": "Constants are block-scoped, much like variables declared using the `let` keyword. The value of a constant can't be changed through reassignment (i.e. by using the assignment operator), and it can't be redeclared (i.e. through a variable declaration). However, if a constant is an object or array its properties or items can be updated or removed.\n\nVisit the following resources to learn more:", + "description": "Constants are block-scoped, much like variables declared using the `let` keyword. The value of a constant can't be changed through reassignment (i.e. by using the assignment operator), and it can't be re-declared (i.e. through a variable declaration). However, if a constant is an object or array its properties or items can be updated or removed.\n\nVisit the following resources to learn more:", "links": [ { "title": "JavaScript Constants - CodeGuage", @@ -360,7 +360,7 @@ }, "oC4o6GLEES_nUgCJu9Q6I": { "title": "Global", - "description": "Variables declared Globally (outside any function) have Global Scope. Global variables can be accessed from anywhere in a JavaScript program. Variables declared with `var`, `let` and `const` are quite similar when declared outside a block.\n\n### Note:\n\nIf you assign a value to a variable that has not been declared i.e `potato = true` it will automatically become a _GLOBAL_ variable.\n\nVisit the following resources to learn more:", + "description": "Variables declared Globally (outside any function) have Global Scope. Global variables can be accessed from anywhere in a JavaScript program. Variables declared with `var`, `let` and `const` are quite similar when declared outside a block.\n\nNote\n----\n\nIf you assign a value to a variable that has not been declared i.e `potato = true` it will automatically become a _GLOBAL_ variable.\n\nVisit the following resources to learn more:", "links": [ { "title": "JavaScript Scope", @@ -445,7 +445,7 @@ }, "GZ_SXsWmP7AsXRTc4WUMw": { "title": "number", - "description": "The `Number` data type in JavaScript represents floating-point numbers, such as 37 or -9.25. The `Number` constructor provides constants and methods to work with numbers, and values of other types can be converted to numbers using the `Number()` function.\n\n### Example\n\n let num1 = 255; // integer\n let num2 = 255.0; // floating-point number with no fractional part\n let num3 = 0xff; // hexadecimal notation\n let num4 = 0b11111111; // binary notation\n let num5 = 0.255e3; // exponential notation\n \n console.log(num1 === num2); // true\n console.log(num1 === num3); // true\n console.log(num1 === num4); // true\n console.log(num1 === num5); // true\n \n\nIn this example:\n\n* `255` and `255.0` are equivalent, as JavaScript treats both as the same number.\n* `0xff` represents `255` in hexadecimal notation.\n* `0b11111111` represents `255` in binary notation.\n* `0.255e3` is `255` in exponential notation.\n* All these different representations are equal to `255` in JavaScript.", + "description": "The `Number` data type in JavaScript represents floating-point numbers, such as 37 or -9.25. The `Number` constructor provides constants and methods to work with numbers, and values of other types can be converted to numbers using the `Number()` function.\n\nExample\n-------\n\n let num1 = 255; // integer\n let num2 = 255.0; // floating-point number with no fractional part\n let num3 = 0xff; // hexadecimal notation\n let num4 = 0b11111111; // binary notation\n let num5 = 0.255e3; // exponential notation\n \n console.log(num1 === num2); // true\n console.log(num1 === num3); // true\n console.log(num1 === num4); // true\n console.log(num1 === num5); // true\n \n\nIn this example:\n\n* `255` and `255.0` are equivalent, as JavaScript treats both as the same number.\n* `0xff` represents `255` in hexadecimal notation.\n* `0b11111111` represents `255` in binary notation.\n* `0.255e3` is `255` in exponential notation.\n* All these different representations are equal to `255` in JavaScript.", "links": [] }, "6lUF0neW1piiP1RsaVxEX": { @@ -580,12 +580,12 @@ "description": "You can use the typeOf operator to find the data type of a JavaScript variable. It returns a string indicating the type of provided operand's value.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Typeof Reference", + "title": "typeof Reference", "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof", "type": "article" }, { - "title": "Typeof Live Examples", + "title": "typeof Live Examples", "url": "https://www.w3schools.com/js/tryit.asp?filename=tryjs_typeof_all", "type": "article" } @@ -695,7 +695,7 @@ "type": "article" }, { - "title": "What you need to know about Javascripts Implicit Coercion", + "title": "What you need to know about JavaScript Implicit Coercion", "url": "https://dev.to/promisetochi/what-you-need-to-know-about-javascripts-implicit-coercion-e23", "type": "article" } @@ -1245,7 +1245,7 @@ }, "-z-4VTaC3tOThqChgyoMs": { "title": "Error Objects", - "description": "When a runtime error occurs, a new `Error` object is created and thrown. With this `Error` object, we can determine the type of the Error and handle it according to its type.\n\nTypes of Errors:\n----------------\n\nBesides error constructors, Javascript also has other core Error constructors.\n\n* [@article@AggregateError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError)\n* [@article@EvalError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError)\n* [@article@InternalError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError)\n* [@article@RangeError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError)\n* [@article@ReferenceError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)\n* [@article@SyntaxError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)\n\nExample\n-------\n\n try {\n willGiveErrorSometime();\n } catch (error) {\n if (error instanceof RangeError) {\n rangeErrorHandler(error);\n } else if (error instanceof ReferenceError) {\n referenceErrorHandle(error);\n } else {\n errorHandler(error);\n }\n }\n \n\nVisit the following resources to learn more:", + "description": "When a runtime error occurs, a new `Error` object is created and thrown. With this `Error` object, we can determine the type of the Error and handle it according to its type.\n\nTypes of Errors\n---------------\n\nBesides error constructors, Javascript also has other core Error constructors. Like\n\n* AggregateError - A collection of errors thrown simultaneously.\n* EvalError - An error occurred during the evaluation of a JavaScript expression.\n* InternalError - An internal JavaScript error, often indicating a bug in the engine.\n* RangeError - A value is outside the allowed range for a given operation.\n* ReferenceError - A variable or object is referenced before it's declared or doesn't exist.\n* SyntaxError - The code contains incorrect syntax, preventing it from being parsed.\n\nExample\n-------\n\n try {\n willGiveErrorSometime();\n } catch (error) {\n if (error instanceof RangeError) {\n rangeErrorHandler(error);\n } else if (error instanceof ReferenceError) {\n referenceErrorHandle(error);\n } else {\n errorHandler(error);\n }\n }\n \n\nVisit the following resources to learn more:", "links": [ { "title": "Error Object - MDN", @@ -1256,6 +1256,36 @@ "title": "Control flow & Error handling - MDN", "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling", "type": "article" + }, + { + "title": "AggregateError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError", + "type": "article" + }, + { + "title": "EvalError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError", + "type": "article" + }, + { + "title": "InternalError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError", + "type": "article" + }, + { + "title": "RangeError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError", + "type": "article" + }, + { + "title": "ReferenceError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError", + "type": "article" + }, + { + "title": "SyntaxError", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError", + "type": "article" } ] }, @@ -1480,7 +1510,7 @@ }, "fr0NChxMXLpJizyMhXcXS": { "title": "Arrow Functions", - "description": "Arrow Function is a new way of creating functions with the '=>' operator with a shorter syntax.\n\nVisit the following resources to learn more:", + "description": "Arrow Function is a new way of creating functions with the '=>' operator with a shorter syntax.\n\nExample\n-------\n\n const sayHello = () => {\n console.log(`Hello from Arrow Function !`);\n }\n \n\nVisit the following resources to learn more:", "links": [ { "title": "MDN - Arrow Function Expressions", @@ -1496,7 +1526,7 @@ }, "YZlCoPvZuX5MmpLOTj5d4": { "title": "IIFEs", - "description": "Immediately-Invoked Function Expression is a function that is executed immediately after it is created.\n\nVisit the following resources to learn more:", + "description": "Immediately-Invoked Function Expression is a function that is executed immediately after it is created.\n\nExample\n-------\n\n // An Async IIFE\n ( async() => {\n \n const x = 1;\n const y = 9;\n \n console.log(`Hello, The Answer is ${x+y}`);\n \n })();\n \n\nVisit the following resources to learn more:", "links": [ { "title": "IIFE — MDN Docs", @@ -1782,15 +1812,15 @@ "description": "The `call()` method allows you to invoke a function with a given `this` value, and arguments provided individually.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Understanding Explicit Binding in JavaScript: Call, Bind, and Apply Methods", - "url": "https://medium.com/@amitsharma_24072/understanding-explicit-binding-in-javascript-call-bind-and-apply-methods-7b6ed0107628", + "title": "Call Method - MDN Docs", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call", "type": "article" } ] }, "-BtF34cEzI6J8sZCDRlRE": { "title": "apply", - "description": "The apply() method of Function instances calls this function with a given this value, and arguments provided as an array (or an array-like object).\n\n const numbers = [5, 6, 2, 3, 7];\n \n const max = Math.max.apply(null, numbers);\n \n console.log(max);\n // Expected output: 7\n \n const min = Math.min.apply(null, numbers);\n \n console.log(min);\n // Expected output: 2\n \n\nVisit the following resources to learn more:", + "description": "The apply() method of Function instances calls this function with a given this value, and arguments provided as an array (or an array-like object).\n\nVisit the following resources to learn more:", "links": [ { "title": "apply() - MDN", @@ -1801,8 +1831,19 @@ }, "dbercnxXVTJXMpYSDNGb2": { "title": "bind", - "description": "", - "links": [] + "description": "The `bind()` method creates a new function with a given `this` value and arguments provided as an array. The original function is not called immediately but can be called later with the `new` keyword or as a normal function call.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Understanding Explicit Binding in JavaScript: Call, Bind, and Apply Methods", + "url": "https://medium.com/@amitsharma_24072/understanding-explicit-binding-in-javascript-call-bind-and-apply-methods-7b6ed0107628", + "type": "article" + }, + { + "title": "Javascript Function Bind()", + "url": "https://www.w3schools.com/js/js_function_bind.asp", + "type": "article" + } + ] }, "sFOqx6_7poVIVuXhJVY0E": { "title": "Asynchronous JavaScript", @@ -1947,7 +1988,7 @@ }, "PJSdqvh5OBwPCNpn3q_S5": { "title": "Callback Hell", - "description": "The callback hell is when we try to write asynchronous JavaScript in a way where execution happens visually from top to bottom, creating a code that has a pyramid shape with many }) at the end.\n\nVisit the following resources to learn more:", + "description": "The callback hell is when we try to write asynchronous JavaScript in a way where execution happens visually from top to bottom, creating a code that has a pyramid shape with many **})** at the end.\n\nVisit the following resources to learn more:", "links": [ { "title": "Callbacks in Callbacks - Pyramid of Doom", @@ -2010,7 +2051,7 @@ }, "kL5rfWxXe4J44ENru1uJS": { "title": "Fetch", - "description": "The fetch() method in JavaScript is used to request to the server and load the information on the webpages. The request can be of any APIs that return the data of the format JSON or XML. This method returns a promise.\n\nVisit the following resources to learn more:", + "description": "The `fetch()` method in JavaScript is used to request to the server and load the information on the webpages. The request can be of any APIs that return the data of the format JSON or XML. This method returns a promise.\n\nVisit the following resources to learn more:", "links": [ { "title": "Fetch MDN Docs", @@ -2125,7 +2166,7 @@ }, "4EXeGkOpfAViB9Uo4zL6O": { "title": "CommonJS", - "description": "CommonJS modules are the original way to package JavaScript code for Node.js. Node.js also supports the ESModules standard used by browsers and other JavaScript runtimes, but CJS is still widely used in backend Node.js applications. Sometimes these modules will be written with a .cjs extension.\n\nVisit the following resources to learn more:", + "description": "CommonJS modules are the original way to package JavaScript code for Node.js. Node.js also supports the ESModules standard used by browsers and other JavaScript run-times, but CJS is still widely used in backend Node.js applications. Sometimes these modules will be written with a .cjs extension.\n\nVisit the following resources to learn more:", "links": [ { "title": "How the CJS Module System Works", @@ -2209,7 +2250,7 @@ }, "bhuGtcyqPFKu-900aESYz": { "title": "DOM APIs", - "description": "With HTML DOM, JavaScript can access and change all the elements of an HTML document such as its attributes, CSS styles, remove elements, add and create new elements on the page. Web API means application programming inteface for the web. All browsers have a set og built-in Web APIs to support complex operations, and to help accessing data. Like Geolocation API, Web Storage, Web History and others.\n\nVisit the following resources to learn more:", + "description": "With HTML DOM, JavaScript can access and change all the elements of an HTML document such as its attributes, CSS styles, remove elements, add and create new elements on the page. Web API means application programming interface for the web. All browsers have a set of built-in Web APIs to support complex operations, and to help accessing data. Like Geo-location API, Web Storage, Web History and others.\n\nVisit the following resources to learn more:", "links": [ { "title": "DOM- MDN Docs", @@ -2241,11 +2282,16 @@ }, "rc5WzBBOm2cus-rQl8EOE": { "title": "Using Browser DevTools", - "description": "These are a set of tools built into the browser to aid frontend developers diagnose and solve various issues in their applications — such as JavaScript and logical bugs, CSS styling issues or even just making quick temporary alterations to the DOM.\n\nTo enter the dev tools, right click and click **Inspect** (or press `ctrl+shift+c`/`cmd+opt+c`) to enter the Elements panel. Here you can debug CSS and HTML issues. If you want to see logged messages or interact with javascript, enter the **Console** tab from the tabs above (or press `ctrl+shift+j` or `F12` /`cmd+opt+j` to enter it directly). Another very useful feature in the Chrome dev tools is the Lighthouse (for checking performance).\n\nNOTE: This isn't a chrome-specific feature, and most browsers (Chromium based or otherwise) will have their own, largely-similar set of devtools.\n\nVisit the following resources to learn more:", + "description": "These are a set of tools built into the browser to aid frontend developers diagnose and solve various issues in their applications — such as JavaScript and logical bugs, CSS styling issues or even just making quick temporary alterations to the DOM.\n\nTo enter the dev tools, right click and click **Inspect** (or press `ctrl+shift+c`/`cmd+opt+c`) to enter the Elements panel. Here you can debug CSS and HTML issues. If you want to see logged messages or interact with javascript, enter the **Console** tab from the tabs above (or press `ctrl+shift+j` or `F12` / `cmd+opt+j` to enter it directly). Another very useful feature in the Chrome dev tools is the Lighthouse (for checking performance).\n\nNOTE: This isn't a chrome-specific feature, and most browsers (Chromium based or otherwise) will have their own, largely-similar set of devtools.\n\nVisit the following resources to learn more:", "links": [ { "title": "Official Docs", - "url": "https://developer.chrome.com/docs/devtools/overview/", + "url": "https://developer.chrome.com/docs/devtools/", + "type": "article" + }, + { + "title": "Debug JavaScript with Chrome Dev Tools", + "url": "https://developer.chrome.com/docs/devtools/javascript/", "type": "article" }, { @@ -2276,7 +2322,7 @@ "type": "article" }, { - "title": "Effective Javascript Debugging ", + "title": "Effective Javascript Debugging", "url": "https://medium.com/swlh/effective-javascript-debugging-memory-leaks-75059b2436f6", "type": "article" }, @@ -2299,7 +2345,7 @@ }, "ECxISKUAU7js_JsfSHzud": { "title": "Debugging Performance", - "description": "Enter the dev tools and check out the Lighthouse tab. This is essentially a series of tests which analyses the currently open website on a bunch of metrics related to performance, page speed, accessibility, etc. Feel free to run the tests by clicking the **Analyse Page Load** button (you might want to do this in an incognito tab to avoid errors arising from extensions you're using). Once you have the results, take your time and read through them (and do click through to the reference pages mentioned alongside each test result to know more about it!)\n\nVisit the following resources to learn more:", + "description": "Enter the dev tools and check out the Lighthouse tab. This is essentially a series of tests which analyses the currently open website on a bunch of metrics related to performance, page speed, accessibility, etc. Feel free to run the tests by clicking the **Analyze Page Load** button (you might want to do this in an incognito tab to avoid errors arising from extensions you're using). Once you have the results, take your time and read through them (and do click through to the reference pages mentioned alongside each test result to know more about it!)\n\nVisit the following resources to learn more:", "links": [ { "title": "Analyze runtime performance", diff --git a/public/roadmap-content/sql.json b/public/roadmap-content/sql.json index 7d25e47f1..ddf79ea9c 100644 --- a/public/roadmap-content/sql.json +++ b/public/roadmap-content/sql.json @@ -132,8 +132,14 @@ }, "eu9dJFi6gBPMBdy08Y5Bb": { "title": "UPDATE", - "description": "", - "links": [] + "description": "The `UPDATE` statement is used to modify existing data in a given table. \nIt can be done so with the query\n\n UPDATE table_name\n SET column1 = value1, column2 = value2, ...\n WHERE condition;\n \n\n* _Keep in mind that **SET** and **WHERE** are also commands to assign a new value(SET) only if the condition is met(WHERE)_\n\nOmitting the `WHERE` clause will update **all** rows in the table.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "W3Schools SQL UPDATE Statement Doc", + "url": "https://www.w3schools.com/sql/sql_update.asp", + "type": "article" + } + ] }, "ddtVaA4Ls6qRj-7OtTSIH": { "title": "DELETE", @@ -265,7 +271,7 @@ }, "4UQQYbjzwVxZOAxBuXKQS": { "title": "JOINs", - "description": "SQL `JOINs` are clauses used to combine rows from two or more tables based on a related column between them. They allow retrieval of data from multiple tables in a single query, enabling complex data analysis and reporting. The main types of `JOINs` include `INNER JOIN` (returns matching rows from both tables), `LEFT JOIN` (returns all rows from the left table and matching rows from the right), `RIGHT JOIN` (opposite of `LEFT JOIN`), and `FULL JOIN` (returns all rows when there's a match in either table). `JOINs` are fundamental to relational database operations, facilitating data integration and exploration across related datasets.\n\nLearn more from the following resources:", + "description": "SQL `JOINs` are clauses used to combine rows from two or more tables based on a related column between them. They allow retrieval of data from multiple tables in a single query, enabling complex data analysis and reporting. The main types of `JOINs` include:\n\n* `INNER JOIN` (returns matching rows from both tables)\n* `LEFT JOIN` (returns all rows from the left table and matching rows from the right)\n* `RIGHT JOIN` (opposite of `LEFT JOIN`)\n* `FULL JOIN` (returns all rows when there's a match in either table)\n\n`JOINs` are fundamental to relational database operations, facilitating data integration and exploration across related datasets.\n\nLearn more from the following resources:", "links": [ { "title": "SQL JOINs Cheat Sheet",