commit
0ce47a3681
330 changed files with 23531 additions and 22908 deletions
@ -0,0 +1,20 @@ |
||||
import { Box, Button, Container, Heading, Link, Text } from '@chakra-ui/react'; |
||||
import { event } from '../lib/gtag'; |
||||
|
||||
export function TeamsBanner() { |
||||
return ( |
||||
<Box bg='teal.500' borderTopWidth={1} py={['45px', '45px', '70px']} textAlign='center'> |
||||
<Container maxW='container.sm'> |
||||
<Heading as='h4' color={'white'} fontSize={['25px', '25px', '35px']} mb={['10px', '10px', '20px']}>Roadmaps for Teams</Heading> |
||||
<Text lineHeight='26px' color={'white'} fontSize={['15px', '15px', '18px']} mb='20px'>We are working on a solution for teams. Help us shape the platform!</Text> |
||||
<Button onClick={() => { |
||||
event({ |
||||
category: 'UpcomingFeatureClick', |
||||
action: `Teams Form Redirect`, |
||||
label: `Click Teams Footer Link` |
||||
}); |
||||
}} target={'_blank'} as={Link} href='https://forms.gle/6X2matbCmjmvYGGt6' _hover={{textDecoration: 'none', bg: 'gray.300'}}>Take a Survey</Button> |
||||
</Container> |
||||
</Box> |
||||
); |
||||
} |
@ -0,0 +1,7 @@ |
||||
# pnpm |
||||
|
||||
PNPM is an alternative package manager for Node. js which stands for “Performant NPM”. The main purpose of PNPM is to hold all the packages at a global (centralized) store and use them if needed by other projects too by creating hard links to it. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://pnpm.io'>Official Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://blog.bitsrc.io/pnpm-javascript-package-manager-4b5abd59dc9'>Meet PNPM: The Faster, More Performant NPM</BadgeLink> |
@ -1,6 +1,7 @@ |
||||
# Prettier |
||||
|
||||
Prettier is an opinionated code formatter with support for JavaScript, HTML, CSS, and more. |
||||
Prettier is an opinionated code formatter with support for JavaScript, HTML, CSS, YAML, Markdown, GraphQL Schemas. By far the biggest reason for adopting Prettier is to stop all the on-going debates over styles. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://prettier.io'>Prettier Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://prettier.io/docs/en/why-prettier.html'>Why Prettier</BadgeLink> |
||||
|
@ -0,0 +1,8 @@ |
||||
# Svelte |
||||
|
||||
Svelte is a javascript framework that unlike Vue and React does not use vertical DOM diffing but instead knows exactly what and where to update when the state changes. It's mainly focused on frontend and building user interfaces. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://svelte.dev/'>Svelte Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Guide' href='https://svelte.dev/docs'>Svelte Documentation</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/playlist?list=PL4cUxeGkcC9hlbrVO_2QFVqVPhlZmz7tO'>Svelte Course Playlist for beginners</BadgeLink> |
@ -0,0 +1 @@ |
||||
# SolidJS |
@ -0,0 +1,8 @@ |
||||
# Mantine |
||||
|
||||
Mantine is a React components library with more than 100 customizable components and 40 hooks to cover you in any situation. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://mantine.dev/'>Mantine Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Docs' href='https://mantine.dev/guides/cra/'>Usage with Create React App</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://blog.logrocket.com/5-mantine-hooks-simplifying-ui-management-react/'>5 Mantine Hooks for UI management</BadgeLink> |
@ -0,0 +1,7 @@ |
||||
# Daisy UI |
||||
|
||||
Component library around Tailwind CSS that comes with several built-in components. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://daisyui.com/'>DaisyUI Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Docs' href='https://daisyui.com/docs/install/'>DaisyUI Documentation</BadgeLink> |
@ -0,0 +1,7 @@ |
||||
# Playwright |
||||
|
||||
Playwright is an open-source test automation library initially developed by Microsoft contributors. It supports programming languages such as Java, Python, C#, and NodeJS. Playwright comes with Apache 2.0 License and is most popular with NodeJS with Javascript/Typescript. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://playwright.dev/'>Playwright Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.browserstack.com/guide/playwright-tutorial'>Playwright Tutorial: Learn Basics and Setup</BadgeLink> |
@ -0,0 +1,7 @@ |
||||
# Vitest |
||||
|
||||
Vitest is a fast Vite-native unit test framework with out-of-box ESM, TypeScript and JSX support. |
||||
Works on React, Vue, Svelte and more projects created with Vite |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://vitest.dev/'>Vitest Website</BadgeLink> |
@ -0,0 +1,7 @@ |
||||
# Remix |
||||
|
||||
Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. People are gonna love using your stuff. |
||||
|
||||
<ResourceGroupTitle>Free Resources</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://remix.run/'>Official Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Docs' href='https://remix.run/docs/en/v1#getting-started'>Official Docs for Getting Started</BadgeLink> |
@ -0,0 +1,7 @@ |
||||
# Remix |
||||
|
||||
Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. People are gonna love using your stuff. |
||||
|
||||
<ResourceGroupTitle>Free Resources</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://remix.run/'>Official Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Docs' href='https://remix.run/docs/en/v1#getting-started'>Official Docs for Getting Started</BadgeLink> |
@ -1 +1,8 @@ |
||||
# Desktop applications |
||||
# Desktop Applications in JavaScript |
||||
|
||||
A while back, developing a desktop app using JavaScript was impossible. But now JavaScript developers can create desktop applications using their knowledge for web development. Here is the list of options to create desktop applications in JavaScript. |
||||
|
||||
* [Electron](https://www.electronjs.org/) |
||||
* [NodeGUI](https://docs.nodegui.org/) |
||||
* [NW.js](https://nwjs.io/) |
||||
* [Meteor](https://www.meteor.com/) |
||||
|
@ -1,7 +1,9 @@ |
||||
# DNS |
||||
|
||||
The Domain Name System (DNS) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet resources. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/'>What is DNS?</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://howdns.works/'>How DNS works (comic)</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=Wj0od2ag5sk'>DNS and How does it Work?</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=7lxgpKh_fRY'>DNS Records</BadgeLink> |
||||
|
@ -1,9 +1,10 @@ |
||||
# PHP |
||||
|
||||
PHP is a server scripting language and a powerful tool for making dynamic and interactive Web pages. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1994. The PHP reference implementation is now produced by The PHP Group. |
||||
PHP is a general purpose scripting language often used for making dynamic and interactive Web pages. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1994. The PHP reference implementation is now produced by The PHP Group and supported by PHP Foundation. PHP supports procedural and object-oriented styles of programming with some elements of functional programming as well. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://php.org/'>PHP Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.w3schools.com/php/'>Learn PHP - W3Schools</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://phptherightway.com/'>PHP - The Right Way</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=2eebptXfEvw'>PHP For Absolute Beginners</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=sVbEyFZKgqk&list=PLr3d3QYzkw2xabQRUpcZ_IBk9W50M9pe-'>Full PHP 8 Tutorial - Learn PHP The Right Way In 2022</BadgeLink> |
||||
|
@ -1 +1,6 @@ |
||||
# Migration strategies |
||||
# Migration Strategies |
||||
|
||||
A migration strategy is a plan for moving data from one location to another, and it is an important step in any database migration. A data migration strategy should include a plan for how to move the data and what to do with it once it arrives at the new location. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink badgeText='Website' colorScheme="yellow" href='https://theecmconsultant.com/data-migration-strategy'>Migration strategies</BadgeLink> |
||||
|
@ -1 +1,14 @@ |
||||
# Observability |
||||
# Observability |
||||
|
||||
In sofware development, observability is the measure of how well we can understand a system from the work it does, and how to make it better. |
||||
|
||||
So what makes a system to be "observable"? It is its ability of producing and collecting metrics, logs and traces in order for us to understand what happens under the hood and identify issues and bottlenecks faster. |
||||
|
||||
You can of course implement all those features by yourself, but there are a lot of softwares out there that can help you with it like Datadog, Sentry and CloudWatch. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Documentation' href='https://docs.datadoghq.com/'>DataDog Docs</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Documentation' href='https://aws.amazon.com/cloudwatch/getting-started/'>AWS CloudWatch Docs</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Documentation' href='https://docs.sentry.io/'>Sentry Docs</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=Wx0SHRb2xcI'>AWS re:Invent 2017: Improving Microservice and Serverless Observability with Monitor</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://newrelic.com/blog/best-practices/observability-instrumentation'>Observability and Instrumentation: What They Are and Why They Matter</BadgeLink> |
@ -1 +1,19 @@ |
||||
# Scalability |
||||
# Building for Scale |
||||
|
||||
Speaking in general terms, scalability is the ability of a system to handle a growing amount of work by adding resources to it. |
||||
|
||||
A software that was conceived with a scalable architecture in mind, is a system that will support higher workloads without any fundamental changes to it, but don't be fooled, this isn't magic. You'll only get so far with smart thinking without adding more sources to it. |
||||
|
||||
For a system to be scalable, there are certain things you must pay attention to, like: |
||||
* Coupling |
||||
* Observability |
||||
* Evolvability |
||||
* Infrastructure |
||||
|
||||
When you think about the infrastructure of a scalable system, you have two main ways of building it: using on-premises resources or leveraging all the tools a cloud provider can give you. |
||||
|
||||
The main difference between on-premises and cloud resources will be FLEXIBILITY, on cloud providers you don't really need to plan ahead, you can upgrade your infrastructure with a couple of clicks, while with on-premises resources you will need a certain level of planning. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.sentinelone.com/blog/scalable-architecture/'>Scalable Architecture: A Definition and How-To Guide</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=gxfERVP18-g'>Scaling Distributed Systems - Software Architecture Introduction</BadgeLink> |
@ -1,3 +1,3 @@ |
||||
# Learn a Language |
||||
|
||||
It doesn't matter what language you pick, but it is important to learn at least one. You will be able to use that language write automation scripts. |
||||
It doesn't matter what language you pick, but it is important to learn at least one. You will be able to use that language to write automation scripts. |
||||
|
@ -1 +1,6 @@ |
||||
# Windows |
||||
# Windows |
||||
|
||||
Windows is a graphical user interface (GUI) based operating system developed by Microsoft. It is a hybrid kernel-based proprietary operating system. According to a survey, till April 2022, windows is the most popular operating system in the world with a 75% market share. |
||||
|
||||
<BadgeLink badgeText='Official Website' colorScheme='blue' href='http://microsoft.com/windows'>Windows Official Site</BadgeLink> |
||||
<BadgeLink badgeText='Official Documentation' colorScheme='blue' href='https://learn.microsoft.com/en-us/windows/'>Windows Documentation for Developers</BadgeLink> |
||||
|
@ -1 +1,8 @@ |
||||
# Terminal multiplexers |
||||
# Terminal multiplexers |
||||
|
||||
Terminal multiplexers are programs that allow us to [multiplex](https://en.wikipedia.org/wiki/Multiplexing) a terminal into several sub-processes or terminals inside a single terminal session, this means that we can have multiple open sessions using a single login session to a local or remote machine. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://en.wikipedia.org/wiki/Terminal_multiplexer'>Terminal Multiplexer</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://linuxcommand.org/lc3_adv_termmux.php'>Terminal Multiplexers</BadgeLink> |
||||
|
@ -1 +1,10 @@ |
||||
# Sar |
||||
# Sar |
||||
|
||||
Short for **S**ystem **A**ctivity **R**eport, it is a command line tool for Unix and Unix-like operating systems that shows a report of different information about the usage and activity of resorces in the operating system. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/sar-command-linux-monitor-system-performance/'>SAR command in Linux to monitor system performance</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://man7.org/linux/man-pages/man1/sar.1.html'>SAR Man Page</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://linux.die.net/man/1/sar'>SAR Man Page 2</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Tutorial' href='https://linuxhint.com/sar_linux_tutorial/'>Sar tutorial for beginners</BadgeLink> |
||||
|
@ -1 +1,10 @@ |
||||
# Vmstat |
||||
# Vmstat |
||||
|
||||
Short for **V**irtual **m**emory **stat**istic reporter, it is a command line tool for Unix and Unix-like operating systems that reports various information about the operating system such as memory, paging, processes, I/O, CPU and disk usage. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/vmstat-command-in-linux-with-examples/'>vmstat command in Linux with Examples</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.redhat.com/sysadmin/linux-commands-vmstat'>Linux commands: exploring virtual memory with vmstat</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://man7.org/linux/man-pages/man8/vmstat.8.html'>VMstat Man Page</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://phoenixnap.com/kb/vmstat-command'>vmstat tutorial</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Dtrace |
||||
# DTrace |
||||
|
||||
DTrace is a comprehensive dynamic tracing framework ported from Solaris. DTrace provides a powerful infrastructure that permits administrators, developers, and service personnel to concisely answer arbitrary questions about the behavior of the operating system and user programs. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://man7.org/linux/man-pages/man1/dtrace.1.html'>df manual</BadgeLink> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://en.wikipedia.org/wiki/DTrace'>Wikipedia - DTrace</BadgeLink> |
||||
|
@ -1 +1,8 @@ |
||||
# Df |
||||
# df |
||||
|
||||
`df` is a standard Unix command used to display the amount of available disk space for file systems on which the invoking user has appropriate read access. df is typically implemented using the statfs or statvfs system calls. |
||||
|
||||
<ResourceGroupTitle>Useful Links</ResourceGroupTitle> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://man7.org/linux/man-pages/man1/df.1.html'>df manual</BadgeLink> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://www.redhat.com/sysadmin/Linux-df-command'>Redhat - Check your disk space use with the Linux df command</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/df-command-linux-examples/'>df command with examples</BadgeLink> |
||||
|
@ -1 +1,8 @@ |
||||
# Du |
||||
# Du |
||||
|
||||
The `du` utility, short for disk usage, displays the file system block usage for each file argument and for each directory in the file hierarchy rooted in each directory argument. If no file is specified, the block usage of the hierarchy rooted in the current directory is displayed. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://man7.org/linux/man-pages/man1/du.1.html'>du manual</BadgeLink> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://www.redhat.com/sysadmin/du-command-options'>Redhat - du and the options you should be using</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://linuxhint.com/linux-du-command-examples/'>Du command with examples</BadgeLink> |
||||
|
@ -1 +1,9 @@ |
||||
# Scp |
||||
# SCP |
||||
|
||||
`SCP` is an acronym for Secure Copy Protocol.It is a command line utility that allows the user to securely copy files and directories between two locations usually between unix or linux systems.The protocol ensures the transmission of files is encrypted to prevent anyone with suspicious intentions from getting sensitive information.`SCP` uses encryption over an `SSH` (Secure Shell) connection, this ensures that the data being transferred is protected from suspicious attacks. |
||||
|
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/'>SCP Linux Command</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.tecmint.com/scp-commands-examples/'>10 SCP command examples</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://phoenixnap.com/kb/linux-scp-command'>SCP command explained</BadgeLink> |
||||
|
@ -1 +1,10 @@ |
||||
# Ci cd |
||||
# CI/CD |
||||
|
||||
CI/CD is a method to frequently deliver apps to customers by introducing automation into the stages of app development. The main concepts attributed to CI/CD are continuous integration, continuous delivery, and continuous deployment. CI/CD is a solution to the problems integrating new code can cause for development and operations teams. |
||||
|
||||
Specifically, CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment. Taken together, these connected practices are often referred to as a "CI/CD pipeline" and are supported by development and operations teams working together in an agile way with either a DevOps or site reliability engineering (SRE) approach. |
||||
|
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment'>CI vs CD</BadgeLink> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://www.redhat.com/en/topics/devops/what-is-ci-cd'>What is CI/CD?</BadgeLink> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://semaphoreci.com/blog/cicd-pipeline'>CI/CD Pipeline: A Gentle Introduction</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=scEDHsr3APg'>DevOps CI/CD Explained in 100 Seconds</BadgeLink> |
||||
|
@ -1 +1,5 @@ |
||||
# Management and monitoring |
||||
# Management and Monitoring |
||||
|
||||
DevOps management and monitoring entails overseeing the entire development process from planning, development, integration and testing, deployment, and operations. It involves a complete and real-time view of the status of applications, services, and infrastructure in the production environment. Features such as real-time streaming, historical replay, and visualizations are critical components of application and service monitoring. |
||||
|
||||
<BadgeLink badgeText='Get Started Guide' colorScheme='blue' href='https://www.atlassian.com/devops/devops-tools/devops-monitoring'>Management and Monitoring Get Started Guide</BadgeLink> |
@ -1,4 +1,6 @@ |
||||
# Typescript Basics |
||||
|
||||
In order to enter into the world of Angular application development, typescript is necessary and it is the primary language here. Typescript is a superset of JavaScript. It comes with design-time support which is useful for type safety and tooling. Since, browsers cannot execute the TypeScript directly, it will be 'Transpiled' into JavaScript using the tsc compiler. |
||||
|
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://medium.com/jspoint/typescript-a-beginners-guide-6956fe8bcf9e'>Typescript a Beginners Guide</BadgeLink> |
||||
<BadgeLink colorScheme='green' badgeText='Compiler' href='https://www.typescriptlang.org/play'>Typescript Playground</BadgeLink> |
||||
<BadgeLink colorScheme='green' badgeText='Visit' href='https://www.typescriptlang.org/play'>TypeScript Playground</BadgeLink> |
||||
|
@ -1 +1,8 @@ |
||||
# Observable pattern |
||||
# Observable Pattern |
||||
|
||||
The observer pattern is a software design pattern in which an object, named the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods. |
||||
|
||||
Angular uses the Observer pattern which simply means — Observable objects are registered, and other objects observe (in Angular using the subscribe method) them and take action when the observable object is acted on in some way. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink badgeText='Read' colorScheme='yellow' href='https://medium.com/fuzzycloud/angular-and-observable-4bf890b2a282'>Angular and Observable</BadgeLink> |
@ -1 +1,12 @@ |
||||
# Observable lifecycle |
||||
# Observable lifecycle |
||||
|
||||
An observable is a function that acts as a wrapper for a data stream. They support to pass messages inside your application. An observable is useless until an observer subscribes to it. An observer is an object which consumes the data emitted by the observable. An observer keeps receiving data values from the observable until the observable is completed, or the observer unsubscribes from the observable. Otherwise observers can receive data values from the observable continuously and asynchronously. So we can perform various operations such as updating the user interface, or passing the JSON response. |
||||
|
||||
There are 4 stages for a life cycle of an observable. |
||||
- Creation |
||||
- Subscription |
||||
- Execution |
||||
- Destruction |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://medium.com/analytics-vidhya/understanding-rxjs-observables-ad5b34d9607f'>Understanding Observable LifeCycle</BadgeLink> |
||||
|
@ -1 +1,42 @@ |
||||
# Operators |
||||
# RxJS Operators |
||||
|
||||
|
||||
RxJS is mostly useful for its operators, even though the Observable is the foundation. Operators are the essential pieces that allow complex asynchronous code to be easily composed in a declarative manner. |
||||
|
||||
Operators are functions. There are two kinds of operators: |
||||
|
||||
**Pipeable Operators** are the kind that can be piped to Observables using the syntax observableInstance.pipe(operator()). These include, filter(...), and mergeMap(...). When called, they do not change the existing Observable instance. Instead, they return a new Observable, whose subscription logic is based on the first Observable. |
||||
|
||||
A Pipeable Operator is essentially a pure function which takes one Observable as input and generates another Observable as output. Subscribing to the output Observable will also subscribe to the input Observable. |
||||
|
||||
**Creation Operators** are the other kind of operator, which can be called as standalone functions to create a new Observable. For example: of(1, 2, 3) creates an observable that will emit 1, 2, and 3, one right after another. Creation operators will be discussed in more detail in a later section. |
||||
|
||||
## Piping |
||||
|
||||
Pipeable operators are functions, so they could be used like ordinary functions: op()(obs) — but in practice, there tend to be many of them convolved together, and quickly become unreadable: op4()(op3()(op2()(op1()(obs)))). For that reason, Observables have a method called .pipe() that accomplishes the same thing while being much easier to read: |
||||
|
||||
```bash |
||||
obs.pipe(op1(), op2(), op3(), op4()); |
||||
``` |
||||
|
||||
## Creation Operators |
||||
|
||||
**What are creation operators?** Distinct from pipeable operators, creation operators are functions that can be used to create an Observable with some common predefined behavior or by joining other Observables. |
||||
|
||||
A typical example of a creation operator would be the interval function. It takes a number (not an Observable) as input argument, and produces an Observable as output: |
||||
|
||||
```bash |
||||
import { interval } from 'rxjs'; |
||||
|
||||
const observable = interval(1000 /* number of milliseconds */); |
||||
``` |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://rxjs.dev/guide/operators#creation-operators-list'>List of creation operators</BadgeLink> |
||||
|
||||
|
||||
## Higher-order Observables |
||||
|
||||
Observables most commonly emit ordinary values like strings and numbers, but surprisingly often, it is necessary to handle Observables of Observables, so-called higher-order Observables. |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://rxjs.dev/guide/operators'>Full RxJS Operators Documentation</BadgeLink> |
||||
|
||||
|
@ -1 +1,5 @@ |
||||
# Rxjs basics |
||||
# RxJS Basics |
||||
|
||||
Reactive Extensions for JavaScript, or RxJS, is a reactive library used to implement reactive programming to deal with async implementation, callbacks, and event-based programs. |
||||
|
||||
The reactive paradigm can be used in many different languages through the use of reactive libraries. These libraries are downloaded APIs that provide functionalities for reactive tools like observers and operators. It can be used in your browser or with Node.js. |
||||
|
@ -1 +1,6 @@ |
||||
# Services |
||||
# Services |
||||
|
||||
Services let you define code or functionalities that are then accessible and reusable in many other components in the Angular project. It also helps you with the abstraction of logic and data that is hosted independently but can be shared across other components. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/tutorial/toh-pt4'>Services</BadgeLink> |
@ -1 +1,7 @@ |
||||
# Routing |
||||
# Routing |
||||
|
||||
Routing in Angular allows the users to create a single-page application with multiple views and allows navigation between them. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/routing-overview'>Angular Routing</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/router'>Common Routing Tasks</BadgeLink> |
@ -1 +1,5 @@ |
||||
# Angular basics |
||||
# Angular Basics |
||||
|
||||
Angular is an strong front-end JavaScript framework which means that it enforces a certain style of application development and project structure that developers need to follow to develop apps with Angular. However, it also offers enough flexibility to allow you to structure your project in an understandable and manageable manner. |
||||
|
||||
In this module, we will have a look at some of the most basic concepts that you need to understand before diving into the framework with more advanced concepts. |
@ -1 +1,7 @@ |
||||
# Schematics |
||||
# Schematics |
||||
|
||||
A schematic is a template-based code generator that supports complex logic. It is a set of instructions for transforming a software project by generating or modifying code. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Official Website' href='https://angular.io/guide/schematics#:~:text=A%20schematic%20is%20a%20template,collections%20and%20installed%20with%20npm.'>Angular Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Official Website' href='https://blog.angular.io/schematics-an-introduction-dc1dfbc2a2b2?gi=ad9571373944'>Angular Blog</BadgeLink> |
||||
|
@ -1 +1,6 @@ |
||||
# Interpolation |
||||
# Interpolation |
||||
|
||||
Interpolation refers to embedding expressions into marked up text. By default, interpolation uses the double curly braces {{ and }} as delimiters. Angular replaces currentCustomer with the string value of the corresponding component property. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='ttps://angular.io/guide/interpolation'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Property binding |
||||
# Property binding |
||||
|
||||
Property binding helps you set values for properties of HTML elements or directives. To bind to an element's property, enclose it in square brackets `[]` which causes Angular to evaluate the right-hand side of the assignment as a dynamic expression. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/property-binding'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Template statements |
||||
# Template statements |
||||
|
||||
Template statements are methods or properties that you can use in your HTML to respond to user events. With template statements, your application can engage users through actions such as displaying dynamic content or submitting forms. Enclose the event in `()` which causes Angular to evaluate the right hand side of the assignment as one or more template statements chained together using semicolon `;`. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/template-statements'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,12 @@ |
||||
# Binding data props attrs events |
||||
# Binding data props attrs events |
||||
|
||||
In an Angular template, a binding creates a live connection between view and the model and keeps them both in sync. |
||||
|
||||
- **property**: helps you set values for properties of HTML elements or directives. |
||||
- **attributes**: helps you set values for attributes of HTML elements directly. |
||||
- **event**: lets you listen for and respond to user actions such as keystrokes, mouse movements, clicks, and touches. |
||||
- **data**: It's a combination of property and event binding and helps you share data between components. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/binding-overview'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Reference vars |
||||
# Reference vars |
||||
|
||||
Template reference variables help you use data from one part of a template in another part of the template. A template variable can refer to a DOM element within a template, component or directive. In the template, use the hash symbol, `#`, to declare a template reference variable. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/template-reference-variables'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Input output |
||||
# Input output |
||||
|
||||
`@Input()` and `@Output()` give a child component a way to communicate with its parent component. `@Input()` lets a parent component update data in the child component. Conversely, `@Output()` lets the child send data to a parent component. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/inputs-outputs'>Angular Official Website</BadgeLink> |
||||
|
@ -1 +1,5 @@ |
||||
# Templates |
||||
# Templates |
||||
|
||||
A template is a form of HTML that tells Angular how to render the component. |
||||
|
||||
<BadgeLink href="https://angular.io/guide/architecture-components" colorScheme="yellow" badgeText="Read">Introduction to Components and Templates</BadgeLink> |
||||
|
@ -1 +1,10 @@ |
||||
# Builtin directives |
||||
# Builtin directives |
||||
|
||||
SKDirectives are classes that add additional behavior to elements in your Angular applications. Use Angular's built-in directives to manage forms, lists, styles, and what users see. |
||||
|
||||
`NgClass` Adds and removes a set of CSS classes. | `NgStyle` Adds and removes a set of HTML styles. | `NgModel` Adds two-way data binding to an HTML form element. |
||||
|
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/built-in-directives'>Understanding BuiltIn Directives</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Web' href='https://thinkster.io/tutorials/angular-2-directives'>BuiltIn Directives Types</BadgeLink> |
@ -1 +1,10 @@ |
||||
# Builtin pipes |
||||
# Builtin pipes |
||||
|
||||
Use pipes to transform strings, currency amounts, dates, and other data for display. Pipes are simple functions to use in template expressions to accept an input value and return a transformed value. Pipes are useful because you can use them throughout your application , some common pipes are |
||||
|
||||
`DatePipe` | `UpperCasePipe` | `LowerCasePipe` | `CurrencyPipe` | `DecimalPipe` | `PercentPipe` |
||||
|
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/pipes'>Understanding BuiltIn Pipes</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Web' href='https://codecraft.tv/courses/angular/pipes/built-in-pipes/'>BuiltIn Pipes - exampls</BadgeLink> |
@ -1 +1,7 @@ |
||||
# Change detection |
||||
# Change detection |
||||
|
||||
Change detection is the process through which Angular checks to see whether your application state has changed, and if any DOM needs to be updated. At a high level, Angular walks your components from top to bottom, looking for changes. Angular runs its change detection mechanism periodically so that changes to the data model are reflected in an application’s view. Change detection can be triggered either manually or through an asynchronous event |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/guide/change-detection'>Understanding Change detection</BadgeLink> |
||||
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=f8sA-i6gkGQ'>4 Runtime Performance Optimizations ( Change detection )</BadgeLink> |
@ -1 +1,8 @@ |
||||
# Router outlets |
||||
# Router outlets |
||||
|
||||
The router-outlet is a directive that's available from the @angular/router package and is used by the router to mark where in a template, a matched component should be inserted. |
||||
|
||||
Thanks to the router outlet, your app will have multiple views/pages and the app template acts like a shell of your application. Any element, you add to the shell will be rendered in each view, only the part marked by the router outlet will be changed between views. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/RouterOutle'>Understanding Router Outlets</BadgeLink> |
||||
|
@ -1 +1,12 @@ |
||||
# Guards |
||||
# Route Guards |
||||
|
||||
Angular route guards are interfaces provided by Angular which, when implemented, allow us to control the accessibility of a route based on conditions provided in class implementation of that interface. |
||||
|
||||
Some types of angular guards are `CanActivate`, `CanActivateChild`, `CanLoad`, `CanDeactivate` and `Resolve`. |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router'>Angular Official Website</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/CanActivate'>Can Activate Guard</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/CanActivateChild'>Can Activate Child</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/CanDeactivate'>Can Deactivate</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/CanLoad'>Angular Can Load</BadgeLink> |
||||
<BadgeLink colorScheme='blue' badgeText='Official Website' href='https://angular.io/api/router/CanMatch'>Can Match</BadgeLink> |
||||
|
@ -1 +1,6 @@ |
||||
# Library |
||||
# Library |
||||
|
||||
Use the Angular CLI and the npm package manager to build and publish your library as an npm package. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Official Website' href='https://angular.io/guide/creating-libraries'>Angular Website</BadgeLink> |
||||
|
@ -1 +1,3 @@ |
||||
# Creating a custom x |
||||
# Creating a custom X |
||||
|
||||
Learn how to create custom pipes, libraries and directives in Angular. |
||||
|
@ -1 +1,7 @@ |
||||
# Angular universal |
||||
# Angular universal |
||||
|
||||
Angular Universal also known as server-side rendering is tool which allows server to pre-render Angular application while user hits your website for first time. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Official Website' href='https://angular.io/guide/universal'>Angular Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Github Repository' href='https://github.com/angular/universal'>Github Repository</BadgeLink> |
||||
|
@ -1 +1,6 @@ |
||||
# Angular ssr |
||||
# SSR in Angular |
||||
|
||||
A normal Angular application executes in the browser, rendering pages in the DOM in response to user actions. Angular Universal executes on the server, generating static application pages that later get bootstrapped on the client. This means that the application generally renders more quickly, giving users a chance to view the application layout before it becomes fully interactive. |
||||
|
||||
<BadgeLink colorScheme='blue' badgeText='Official Docs' href='https://angular.io/guide/universal'>Angular Universal</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://web.dev/rendering-on-the-web/'>Rendering on the Web</BadgeLink> |
||||
|
@ -1 +1,7 @@ |
||||
# Scully |
||||
# Scully |
||||
|
||||
Scully is the best static site generator for Angular projects looking to embrace the Jamstack. It will use your application and will create a static index. html for each of your pages/routes. |
||||
|
||||
<ResourceGroupTitle>Free Content</ResourceGroupTitle> |
||||
<BadgeLink colorScheme='yellow' badgeText='Official Website' href='https://scully.io/'>Scully Website</BadgeLink> |
||||
<BadgeLink colorScheme='yellow' badgeText='Github Repository' href='https://github.com/scullyio/scully'>Github Repository</BadgeLink> |
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue